Commit Graph

202 Commits (17bba712bd950294387220f87d3456f37b388161)

Author SHA1 Message Date
Delyan Angelov db5e0f2117
v.gen.c: fix cgen regression after f457b94 (prevented vinix builds), add tests 2021-07-25 23:31:23 +03:00
yuyi ab20b8c53a
cgen: fix generics interface with multi generic structs (#10950) 2021-07-25 15:54:22 +03:00
Delyan Angelov 45a15755b8
v.builder: implement -show-callgraph 2021-07-24 13:32:56 +03:00
Daniel Däschle aebb028349
gen: fix C keyword escape to _v_ instead of just v_ (#10876) 2021-07-21 11:46:04 +03:00
Uwe Krüger f457b94fe4
cgen: properly support reference args in receivers and arithmetic op methods (#10873) 2021-07-20 15:08:32 +03:00
Uwe Krüger de39bba7bd
v.gen.c: fix calling pointer receiver on function return result (#10866) 2021-07-20 08:30:07 +03:00
yuyi 8e99a018df
checker, cgen: fix generics interface method (#10858) 2021-07-19 13:29:46 +03:00
yuyi ddaac5af92
checker: fix generics with multi generic struct types (#10808) 2021-07-15 17:39:55 +03:00
spaceface 6e942bf4c2
v: initial support for generic interfaces and sumtypes (#10795) 2021-07-15 08:29:13 +03:00
yuyi 7687b28d8d
cgen: remove Gen.write_expr_to_string() (#10804) 2021-07-15 08:15:28 +03:00
yuyi fe1cf2ea26
cgen: fix error of the map literals method call (#10791) 2021-07-14 22:03:47 +03:00
yuyi 310bb1a8a6
cgen: fix generics with variadic generic args (#10700) 2021-07-09 12:09:30 +03:00
crthpl d14de5fdaf
all: fix generic functions with pointer args (#10686) 2021-07-07 11:51:05 +03:00
Delyan Angelov 6dde9f76c6
cgen: reset g.tmp_count at the start of each fn (minimise v.c commit delta) 2021-07-06 14:50:30 +03:00
Lukas Neubert 9e61321d4c
cgen: fix VUNREACHABLE inside ternary (#10672) 2021-07-05 18:26:01 +03:00
Delyan Angelov 972542d6ee
checker: `[noreturn]` part 2 (cleanup) (#10667) 2021-07-05 05:05:37 +03:00
Delyan Angelov 6aecda3be8
all: support `[noreturn] fn abc() { for{} }`, mark panic/1 and exit/1with it too. (#10654) 2021-07-04 20:24:19 +03:00
shadowninja55 f45f30a9c2
checker, cgen: fix aliased array methods (#10603) 2021-06-29 12:14:37 +03:00
Uwe Krüger 8f2f377cb1
v.checker,v.gen.c: extend auto heap mechanism to objects used as interfaces (#10529) 2021-06-21 07:10:10 +03:00
Uwe Krüger f32a76b268
all: promote value type function arguments to heap if necessary (#10528) 2021-06-20 18:40:24 +03:00
Enzo 44d0305ca9
checker,gen: remove automatic string to C string conversion (#10144) 2021-06-20 09:30:08 +03:00
Enzo 05f0f3e180
v.gen.c: refactor infix expression (#10485) 2021-06-18 14:27:52 +03:00
yuyi a98d644637
cgen: fix fn mut args of array (#10493) 2021-06-18 02:51:55 +03:00
yuyi c3b9336f21
cgen: fix generic method receiver typeof name error (#10469) 2021-06-16 04:03:50 +03:00
Uwe Krüger f3408a2484
gc: use optimized mode by default (#10466) 2021-06-15 15:43:00 +03:00
crthpl 6576d876fc
cgen: support a `[_naked]` fn attribute (#10418) 2021-06-11 11:03:39 +03:00
Uwe Krüger 0e2c86310a
GC-boehm: extend optimized mode to all `array` methods (#10406) 2021-06-10 21:26:17 +03:00
Uwe Krüger 811a3e1d38
builtin: optimize `array.repeat()` (#10396) 2021-06-09 12:52:30 +03:00
Uwe Krüger a2243054a5
builtin: fix memory corruption in array `.clone()` and `.repeat()` (#10394) 2021-06-08 23:23:28 +03:00
yuyi cb19079d53
all: move cur_concrete_types to Table (#10269) 2021-05-31 17:14:45 +03:00
Louis Schmieder 38796521fa
all: allow defer use from other scope (#10284) 2021-05-31 14:43:44 +03:00
Delyan Angelov eac1e25c5d
strings: simplify Builder (#10263) 2021-05-31 14:21:06 +03:00
Joe Conigliaro 5e26273529
cgen: use __new_array instead of __new_array_with_default for empty vargs 2021-05-26 15:48:48 +10:00
Enzo 906b207e58
checker: deprecate using V strings in C function calls (#10140) 2021-05-20 09:17:44 +03:00
spaceface 9ddf1ec327
cgen: fix accessing fields in propagated optional subexpressions (#10136) 2021-05-19 21:28:17 +03:00
crthpl 8361f714dd
cgen: fix deadlock when returning/breaking in `lock` (#10079) 2021-05-12 11:44:47 +03:00
Alexander Medvednikov dc034d9b16 vweb: make thread safe; checker: `$if T is Interface {` 2021-05-11 09:30:18 +03:00
El Koulali András 3e5a5754f3
cgen: fix constants with multi-statement C initializations (#10058) 2021-05-09 03:25:44 +03:00
yuyi 3dfbd2351b
checker,cgen: fix generics with generic_fn type parameter (#10022) 2021-05-08 14:06:56 +03:00
spaceface ef63491a8c
cgen: fix calling function-pointer fields on interfaces (#9948) 2021-05-01 16:45:53 +03:00
yuyi 3877522ee3
table,checker,cgen: fix generics with recursive generics struct (#9862) 2021-04-26 20:05:10 +03:00
Uwe Krüger 3c0a368af3
all: automatically move (some) referenced objects to heap (#9873) 2021-04-25 21:40:38 +03:00
yuyi 8ccdae6188
all: cleanup generics call_expr (#9856) 2021-04-24 09:44:15 +03:00
Alexander Medvednikov c7a6d28e13 all: improve unused variable warning (fix `x = 1`, `x += 1` etc) 2021-04-23 13:33:48 +03:00
yuyi 431d806dcf
ast, parser: cleanup of generic structs (#9839) 2021-04-22 18:21:01 +03:00
yuyi d02822f456
ast.table: simplify resolve_generic_by_names/types() (#9834) 2021-04-21 12:22:42 +03:00
yuyi 466dc4540b
all: minor cleanup of generics (#9744) 2021-04-15 11:00:23 +03:00
yuyi 1250ce4353
cgen: fix generics with embed generics (fix #8694) (#9724) 2021-04-15 01:44:11 +02:00
Uwe Krüger 10bf974cda
all: gc: provide optimized mode (#9716) 2021-04-14 00:40:26 +02:00
yuyi a2a18ef92c
v: simplify handling of function generic parameters (#9673) 2021-04-11 09:02:57 +03:00
ka-weihe 5273214ec2
map: rename methods (#9657) 2021-04-10 04:00:29 +02:00
Delyan Angelov 820fe626e7
v.gen.c: reduce slightly the generated C lines with -skip-unused (3940 -> 3699 for hello_world.v) 2021-04-09 17:56:36 +03:00
Uwe Krüger 84fa1ae444
boehm-gc: support a `[keep_args_alive]` tag for C functions (#9641) 2021-04-09 13:13:49 +03:00
spaceface 4feb09fa5b
checker, cgen: add sumtype-like smartcasting capabilites to interfaces (#9256) 2021-04-09 11:00:05 +03:00
ka-weihe bca9409192
map: wrap up delete fix (#9626) 2021-04-07 14:12:12 +02:00
Alexander Medvednikov ff9837386a Revert "map: wrap up delete fix (#9601)"
This reverts commit cbcc0d34b5.
2021-04-07 03:40:43 +03:00
ka-weihe cbcc0d34b5
map: wrap up delete fix (#9601) 2021-04-06 15:57:08 +02:00
ka-weihe 337e447cfb
map: fix delete (part 1) (#9579) 2021-04-04 01:11:47 +02:00
Alexander Medvednikov 7385f8e56b all: a massive merge of ast and table modules 2021-04-02 01:57:09 +03:00
Delyan Angelov f29ca6b8df
cgen: show the original malloc call on a detected leak 2021-03-25 20:45:39 +02:00
Delyan Angelov 8abfe2f5a2
cgen: -autofree fixes for []string{} having literals, comming from defailt string stuct field values 2021-03-23 18:54:37 +02:00
yuyi 246c09db96
checker: fix generics in big_struct (fix #9373) (#9383) 2021-03-20 17:29:13 +01:00
Miccah 7222ee476b
all: implement array .any and .all (#9347) 2021-03-18 15:24:16 +01:00
Enzo 4b6244c9c1
gen: fix generic variadic (#9333) 2021-03-17 00:18:43 +02:00
Delyan Angelov 69f1e7c9c3
v: fixes for `v -autofree -o v2 cmd/v` 2021-03-14 09:37:38 +02:00
spaceface 9ed9e7aff0
builtin: cleanup option names (part 1) (#9293) 2021-03-14 01:54:46 +01:00
spaceface e9797c618a
all: implement error interfaces (#9291) 2021-03-13 18:13:50 +01:00
spaceface f1469a8761
checker: allow accessing fields common to all sumtype members (#9201) 2021-03-09 19:16:18 +02:00
zakuro 00399b49ab
v.util: add util.tabs() (#9211) 2021-03-09 13:03:25 +02:00
joe-conigliaro 2d73411396
checker: define missing C fn args & check C & JS args (#8770) 2021-03-05 17:41:11 +03:00
yuyi 6d77594409
cgen: merge cc_type and cc_type2 (#9036) 2021-03-01 21:36:58 +01:00
Uwe Krüger e937d6249c
cgen: fix various issues concerning optionals (#9021) 2021-02-28 23:21:03 +01:00
spaceface d7252f4474
builtin: allow passing any argument type to `panic` (#9020) 2021-02-28 22:57:18 +01:00
spaceface b9a381f101
all: migrate to the new Option (p. 1) (#8924) 2021-02-28 22:24:29 +03:00
Alexander Medvednikov be4a2e17d3 cgen: always use tmp vars in return_statement() 2021-02-27 20:00:19 +03:00
Alexander Medvednikov d39866d4f7 cgen: optionals/autofree fixes 2021-02-27 17:11:30 +03:00
Emily Hudson 79edff5c6c
gen: correct indirection difference between reciever and object (#8903) 2021-02-22 20:41:25 +02:00
Uwe Krüger 5306b2788c
all: extend `wait()` method to array of `thread` handles (#8840) 2021-02-22 15:08:52 +02:00
Nick Treleaven 59446d7051
cgen: use `(void)` parameter list instead of `()` for type safety (#8898) 2021-02-22 14:48:32 +02:00
zakuro f54c1a5cc2
all: add strings.Builder.write_string and use write_string instead of write (#8892) 2021-02-22 13:18:11 +02:00
Uwe Krüger 0520b755f4
checker/cgen: support `print*()`, `.str()` and '$x' for `shared` (#8771) 2021-02-16 12:40:13 +01:00
spaceface fe007f9b16
gen: fix type_name for sumtype/interface pointers (#8769) 2021-02-15 17:35:31 +02:00
spaceface e3649ec4d3
all: implement `type_name()` for interfaces too (#8767) 2021-02-15 15:29:44 +02:00
Delyan Angelov eaaac220be
checker: make -skip-unused more conservative to make `v test vlib/builtin` pass 2021-02-13 15:47:17 +02:00
Delyan Angelov 0b60510c9c
cgen: cleanup generating helper comments with -skip-unused 2021-02-13 10:31:48 +02:00
yuyi 3164e29651
all: fix fn_or_for_in mut value (part 1) (#8671) 2021-02-12 02:03:11 +02:00
Nick Treleaven 84a16d8684
map: add `move` method (#8660) 2021-02-12 02:02:33 +02:00
Alexander Medvednikov 035a163454 json: encode_pretty (p. 2) + tests 2021-02-10 10:17:29 +01:00
Alexander Medvednikov f67e4ab57c json: encode_pretty (p. 1) 2021-02-10 10:13:06 +01:00
Lukas Neubert 7f4c582f1a
fmt: unwrap long infix exprs inside parenthesis if necessary (#8609) 2021-02-07 23:10:39 +01:00
Delyan Angelov d77bb2f606
all: improve -skip-unused, track consts, walk all AST nodes, support tests 2021-02-07 02:51:45 +02:00
zakuro fe9d062b41
gen: fix bug where unreached defer is executed (#8594) 2021-02-06 18:40:39 +02:00
Delyan Angelov 167773dd1c
checker: make -skip-unused process a list of root functions, not just main.main 2021-02-06 09:41:24 +02:00
Delyan Angelov 8f160ee3ed
ci: run vfmt over vlib/v/gen/c/fn.v 2021-02-05 11:18:29 +02:00
Delyan Angelov 40fff7b56a
v.pref: support `v -skip-unused run examples/hello_world.v` 2021-02-05 11:12:28 +02:00
Delyan Angelov 80697ec7f3
table: .is_used => .usages (a counter, instead of a boolean flag) 2021-02-05 10:03:17 +02:00
Alexander Medvednikov 5a183d23a9 cgen: disable the new [if xxx] logic for now 2021-02-05 08:16:16 +01:00
Alexander Medvednikov 1084b43ffb all: ast walker for marking unused fns 2021-02-05 08:05:35 +01:00
Swastik Baranwal 7ec116d588
all: only allow defining `==` and `<` and auto generate `!=`, `>`, `>=` and `<=` (#8520) 2021-02-03 15:18:38 +01:00
zakuro 4b99d6af95
cgen: fix bug with duplicate defer generation (#8503) 2021-02-03 11:40:21 +02:00
Uwe Krüger df0520b43a
checker,cgen: make `shared` behave like `mut` inside `lock` - and like non-mut inside `rlock` (#8526) 2021-02-03 01:20:19 +02:00
joe-conigliaro ffedbe4b81
cgen: move cgen from v.gen to v.gen.c (#8515) 2021-02-02 15:41:51 +01:00