Commit Graph

585 Commits (846ddfd728d672ff38d339bb0d1af1e9d374e58a)

Author SHA1 Message Date
05st 3e52d54586
cgen: fix match expr when evaluating to sumtype (#12237) 2021-10-20 11:52:11 +03:00
ChAoS_UnItY ab350d52ec
cgen: support RangeExpr while emitting enum switch case (#12226) 2021-10-19 17:02:22 +03:00
ChAoS_UnItY 53c2e262f1
cgen & jsgen: generate when possible a `switch` from `match x {` (#12216) 2021-10-18 10:59:52 +03:00
05st fd3a10ab43
checker: fix mut check bypass with for in loops (#12208) 2021-10-17 06:41:39 +03:00
yuyi 27cd21e459
cgen: fix infix ops, for cross assignments of types with overloaded operators (#12192) 2021-10-15 11:32:58 +03:00
yuyi 05885059bd
cgen: remove the extra generated parentheses of single in_expr (fix #12158) (#12168) 2021-10-14 11:38:16 +03:00
ChAoS_UnItY d0c961ebc0
transformer: eliminate unreachable branches in IfExpr and fold more expressions and statements (#12135)
* v: fix using constant as length in fixed array

* format test file

* v/trasnformer: discard unreachable if branches

* transform more expressions and statements

* replace IfExpr with EmptyExpr when all branches were eliminated

* fix typo

* fix gens

* only allows branch elimination on if expression statement

* fix native gen

* fix handling of multi branch ifs in the native backend, also allow for `if true {}`

Co-authored-by: KyleLin921021 <43753315+KyleLin921021@users.noreply.github.com>
Co-authored-by: Delyan Angelov <delian66@gmail.com>
2021-10-11 14:29:17 +03:00
05st e69df54a36
cgen: fix multi-return in if/match exprs (#12139) 2021-10-11 02:45:01 +03:00
yuyi 3c7c11e55b
cgen: fix sumtype with none type (fix #12101) (#12102) 2021-10-09 03:32:37 +03:00
Delyan Angelov e53682320c
v.gen.c: fix compiling `go f(x)` for `x` of the same struct in different .v files with parallel cgen 2021-10-06 22:12:21 +03:00
yuyi f1742a6f62
v.ast: change 'type.to_ptr()' to 'type.ref()' (#12086) 2021-10-06 20:49:39 +03:00
Wertzui123 77c18f4435
cgen: fix alphabetic order of ast statement generation (#12080) 2021-10-06 14:32:42 +03:00
Delyan Angelov aa8915bdf6
v.gen.c: fix `[console]` handling for `sokol` programs on windows with parallel cgen 2021-10-05 23:57:14 +03:00
Delyan Angelov 6d2c1f7e2c
v.gen.c: enable again parallel cgen for `-g`, make `-g` more robust 2021-10-05 21:51:49 +03:00
crthpl 7cf9c198fe
asm: add segment addressing and fix [10] (#12068) 2021-10-05 18:57:15 +03:00
Delyan Angelov 92f2e5bad2
v.gen.c: fix compilation with `-prod`, for files using `$embed_file()` (regression after parallel cgen in 85b58b0) 2021-10-05 15:06:17 +03:00
05st 7555b337b9
cgen: fix expr_as_cast for int/float literals (#12067) 2021-10-05 09:53:05 +03:00
yuyi e94e08475d
cgen: format shared structs (#12062) 2021-10-04 18:27:38 +03:00
yuyi 82e6d6e51d
cgen: fix threads array wait without go calls (fix #12009) (#12050) 2021-10-03 18:24:44 +03:00
yuyi 10caf4a84a
cgen: cleanup generated thread wait code (#12048) 2021-10-03 10:52:29 +03:00
05st cc4af235f3
cgen: fix if-expression code generation if it evaluates to propagating optional / or block (#12032) 2021-10-02 14:30:04 +03:00
Delyan Angelov 149517ced4
v.builder,v.gen: time Builder.front_stages.parse_files, Builder.resolve_deps, Gen.sort_structs 2021-09-30 20:49:19 +03:00
Alexander Medvednikov d4b3c65c45 cgen: a minor optimization; checker: a c2v fix 2021-09-30 12:51:53 +03:00
yuyi f2c710d306
cgen: fix fn mut args with interface type (#12012) 2021-09-29 13:54:23 +03:00
Delyan Angelov 24c1d552d7
ci: vfmt vlib/v/gen/c/cgen.v 2021-09-29 08:58:27 +03:00
André Diego Piske 8dde9d4a7b
cgen: fixes for ... in with index (#11995) 2021-09-28 19:35:07 +03:00
yuyi 5d3795e876
cgen: fix the C codegen error for '_ = map[key]' (fix #11999) (#12000) 2021-09-28 18:45:50 +03:00
Delyan Angelov d07a96ede8
v.gen.c: fix `v examples/hello_world.v` on FreeBSD 2021-09-28 12:00:34 +03:00
crthpl 85b58b03a3
cgen: parallelize (#10844) 2021-09-28 10:28:04 +03:00
yuyi 4c01627e00
cgen: cleanup stmt_path_pos processing (#11983) 2021-09-26 15:51:18 +03:00
yuyi d93737dd34
cgen: fix assign map get to blank (fix #11508) (#11982) 2021-09-26 13:07:51 +03:00
Delyan Angelov ece5fa183c
fast.v: freebsd fixes 2021-09-23 13:48:41 +03:00
Alexander Medvednikov 27f5c35bde autofree: test returning optionals 2021-09-23 09:18:01 +03:00
Alexander Medvednikov 7b60367512 autofree: free reference types with -experimental for now 2021-09-23 04:35:09 +03:00
Delyan Angelov bf2569a9a8
all: support `mut volatile x := 123` declarations (#11940) 2021-09-22 13:06:30 +03:00
Alexander Ivanov b9720f5d9e
cgen: fix struct init with multiple branches, fixes #11564 (#11570) 2021-09-22 00:46:07 +03:00
yuyi 108a01d65f
fmt: fix unnecessary line break in array init (fix #11448) (#11562) 2021-09-21 16:20:09 +03:00
Enzo b2ecca3966
all: remove `size_t` (#11478) 2021-09-21 02:12:38 +03:00
El Koulali András 9c4507d115
cgen: fix illegal character encoding with rune consts above 127 (#11550) 2021-09-20 10:45:42 +03:00
05st f9f4867c25
tmpl: fix $tmpl comptime operation only working in return statement (#11541) 2021-09-19 23:22:26 +03:00
Alexander Medvednikov 219a764a83 autofree: only free user reference types 2021-09-18 06:32:25 +03:00
Alexander Medvednikov 6d47dd22df autofree: free references 2021-09-18 04:19:16 +03:00
yuyi 467afad065
cgen: use `if foo in [TypeA, TypeB]` in cgen.v (#11518) 2021-09-16 19:26:53 +03:00
yuyi d5e00b0920
checker, cgen: fix generic arrays sum() (#11502) 2021-09-16 07:08:28 +03:00
yuyi 9554470985
checker, cgen: fix generic operator overload of 'cmp' (#11489) 2021-09-14 16:20:02 +03:00
Alexander Medvednikov ae41d1d3c6 builtin, cgen: more -nofloat fixes 2021-09-13 19:06:19 +03:00
Alexander Medvednikov 5c4385a472 cgen: nofloat for kernel code 2021-09-10 20:54:48 +03:00
Enzo cc8ee5fb84
all: introduce `isize` and `usize` (#11437) 2021-09-08 05:53:39 +03:00
yuyi 6084c0fc54
checker, cgen: fix complex generic sumtype (fix #11392) (#11400) 2021-09-06 03:15:53 +03:00
yuyi 87934ecf39
cgen: fix variable name are 'array' or 'string' (fix #10991 #11343) (#11378) 2021-09-04 19:51:45 +03:00
Enzo d1974f500f
cgen: cleanup `Gen.cc_type` (#11357) 2021-08-31 23:55:37 +03:00
Daniel Däschle ac442abc11
checker: allow noreturn in match expr (#11126) 2021-08-29 11:57:11 +03:00
yuyi a440b43630
checker, cgen: fix generic struct with non_generic interface (#11240) 2021-08-20 01:13:48 +03:00
spaceface 67e8031a08
cgen: fix interface parameters in fn type aliases (#11247) 2021-08-20 01:12:31 +03:00
spaceface 09e854c064
cgen: small interface conversion fix (#11229) 2021-08-18 13:47:57 +03:00
spaceface 7d9969ac17
all: support runtime interface conversions (#11212) 2021-08-17 21:00:27 +03:00
yuyi 8521e227b4
cgen: fix if expr of multi stmts (#11208) 2021-08-16 21:48:58 +03:00
yuyi 90b052b1db
v.gen.c: fix error of if_expr in infix_expr (#11200) 2021-08-16 11:23:19 +03:00
Delyan Angelov f67e5d12e5
v.gen.c: fix v_typeof_interface_idx codegen (add `static `) 2021-08-15 09:15:33 +03:00
Delyan Angelov deb26b92b9
cgen: support `typeof(x).idx`, as well as `iface.type_idx()` (#11178) 2021-08-14 17:22:25 +03:00
Delyan Angelov 900c37aa65
v.gen.c: support `T.typ` - an int for the type index of the generic type `T` (#11175) 2021-08-14 08:48:25 +03:00
Delyan Angelov 34d39ccb64
builtin: fix leak in rune.str(), fix leaks in most assert x == y statements in tests (#11091) 2021-08-13 18:37:34 +03:00
Enzo 9d4d0a9894
v.gen.c: generate the closure helper for the choosen target platform, not the current one (#11134) 2021-08-11 14:09:40 +03:00
Enzo da53f818df
all: initial support for closures (x64 / linux-only) (#11114) 2021-08-10 21:27:15 +03:00
yuyi 11794039e2
v.gen.c: fix fn variadic of reference param (#11115) 2021-08-10 10:36:11 +03:00
yuyi 1f3f7705a2
cgen: fix struct_init with fixed array field (#11099) 2021-08-08 10:54:52 +03:00
Daniel Däschle 3b116d2455
cgen: support embedded struct fields on sumtype common fields (#11084) 2021-08-06 21:26:19 +03:00
zakuro 490dec222f
fmt: keep char literal, `'` (#11060) 2021-08-06 06:21:28 +03:00
Daniel Däschle 91ade5bf8c
cgen: fix shared field init (#11061) 2021-08-06 05:11:03 +03:00
Enzo 44bacfc931
cgen: fix optional generation order (#11070) 2021-08-06 03:57:34 +03:00
Enzo 7346aeca5f
cgen: refactor array sort generation (#11067) 2021-08-06 03:55:48 +03:00
Louis Schmieder 0bb587c8c2
checker: fix defer ident handling & fix defer optional error message (#10975) 2021-07-30 20:29:06 +03:00
Uwe Krüger a7c2aaf35b
cgen: initialize globals directly for simple cases (#11002) 2021-07-30 19:20:45 +03:00
Delyan Angelov f67922782e
ci: fix tools using `import math`, for `const x = i64(-9223372036854775807-1)` fails 2021-07-30 17:56:46 +03:00
Delyan Angelov 06d1422a05
ast,checker,cgen: support simple `const x = u16(0x53)` without using _vinit() 2021-07-30 17:22:27 +03:00
Daniel Däschle 6fa8e4269e
checker: force interface init (#10910) 2021-07-30 03:18:20 +03:00
Uwe Krüger 08aa6c08f6
all: more improvements for global variables (#10986) 2021-07-29 10:57:31 +03:00
Delyan Angelov 7a9b326200
ci: fix -cstrict rebuilding of V with clang 2021-07-29 09:54:52 +03:00
Uwe Krüger 45ad48d76a
cgen: properly handle initialization expression for globals (#10981) 2021-07-28 08:11:55 +03:00
Uwe Krüger abd17ddb6a
cgen: initialize globals with default initializer when none is given. (#10979) 2021-07-27 20:14:30 +03:00
Delyan Angelov 6134c4870b
v.util: extract v.util.version, use it to speed up building `v repl`, `v up` and `v doctor` 2021-07-27 12:59:56 +03:00
Delyan Angelov b44f81528f
v.gen.c: fix codegen for `const a = u64(5) + 5` 2021-07-26 08:06:59 +03:00
Uwe Krüger 55c5b9ce7b
cgen: panic with error message when `go` command fails (#10943) 2021-07-25 01:13:34 +03:00
Delyan Angelov 6313ed6a79
checker,cgen: fix `-os cross` support for `$if !solaris { #include <sys/ptrace.h> }` 2021-07-23 16:24:42 +03:00
yuyi f5776eb259
cgen: fix multiple assign array index (#10926) 2021-07-23 15:46:18 +03:00
Louis Schmieder 26db3b0995
orm: redesign orm (re-write it in V) (#10353) 2021-07-23 12:33:55 +03:00
Daniel Däschle 091ce6cc08
cgen: fix several sort declarations (#10919) 2021-07-23 08:55:55 +03:00
Daniel Däschle 2c0c211c79
all: implement accessing embedded field and method of aggregate (#10907) 2021-07-23 01:14:39 +03:00
Daniel Däschle 054bd67490
cgen: don't change field name of c structs (#10894) 2021-07-22 01:37:49 +03:00
Uwe Krüger 713a079684
cgen: properly support `typeof()`, sizeof(), ... in compile time `for` (#10896) 2021-07-21 23:43:30 +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
Delyan Angelov 24c59881f5 v.gen.c: do not use precomputed const values in -usecache mode (fix `v test-all` on M1) 2021-07-20 17:52:07 +03:00
Delyan Angelov 2c9f6899ba
v.gen.c: fix `v -cstrict -o vtmp_werror cmd/v` on Apple M1 2021-07-20 16:09:47 +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
Daniel Däschle 60b705b4c4
checker, gen: implement basic struct embed direct field init support (#10871) 2021-07-20 15:06:06 +03:00
Daniel Däschle ad3835b598
parser: deprecate short struct init (#10842) 2021-07-20 11:17:08 +03:00
Enzo 1db354c360
v.gen.c: fix codegen ordering problem with interfaces with interface fields (#10862) 2021-07-19 19:57:12 +03:00
Delyan Angelov 83b0a80ff4
ci: fix MSVC build (delay const string initialiastion to _vinit) 2021-07-19 08:20:09 +03:00
Delyan Angelov 241a7b760d
strconv,checker,cgen: fix -cstrict compilation of hello_world.v 2021-07-19 01:08:48 +03:00
Delyan Angelov 48546d0f45
all: do compile time const evaluation for `const x = "abc" + "xyz"` and `const x = 16 * 1024 + 5` (fix const prealloc_block_size) 2021-07-18 22:59:18 +03:00
Delyan Angelov 568aa742b2
v.parser: improve conditions for debugging ast.CastExpr parsing 2021-07-17 17:49:29 +03:00
crthpl ec47cda386
cgen: fix other generic pointer cases (#10834) 2021-07-17 11:51:42 +03:00
spaceface ebc34c237b
cgen: fix generating invalid Option decls for generic interfaces (#10817) 2021-07-15 22:15:25 +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 ed78e638b3
cgen: fix if_expr with array methods cond (#10786) 2021-07-13 19:51:49 +03:00
yuyi 2a9d6fef9f
cgen: fix initialization errors with fixed array aliases (#10784) 2021-07-13 10:51:54 +03:00
Delyan Angelov 13917dc095
Revert "cgen: fix g.typ() not adding correct number of * for generic types (#10687)"
This reverts commit bfafdb69c9.
2021-07-08 22:15:44 +03:00
crthpl bfafdb69c9
cgen: fix g.typ() not adding correct number of * for generic types (#10687) 2021-07-08 21:28:40 +03:00
yuyi fb9b2e873c
checker: fix generic fn with assign reference generic struct (fix #10681) (#10695) 2021-07-08 16:50:25 +03:00
yuyi 6436d9a827
cgen: fix error of generic array typedef (#10679) 2021-07-07 12:42:53 +03:00
crthpl d14de5fdaf
all: fix generic functions with pointer args (#10686) 2021-07-07 11:51:05 +03:00
yuyi 9f8c3cc159
cgen: fix fn return array of interface (#10677) 2021-07-06 16:33:26 +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
yuyi 59d80e2758
cgen: fix interface fn return with struct_init (#10675) 2021-07-06 10:14:13 +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
yuyi f246d73d6e
cgen: fix generic fn return mut parameter (#10662) 2021-07-04 18:36:37 +03:00
Daniel Däschle 0f9537ece5
all: remove ustring (#10630) 2021-07-03 20:14:09 +03:00
yuyi 5a4a1997e7
cgen: fix empty struct initilization (#10651) 2021-07-03 20:11:56 +03:00
Alexander Medvednikov 41e88423aa Revert "builtin: use == 0 instead of isnil()"
This reverts commit 8650ec6916.
2021-07-01 06:21:03 +03:00
Daniel Däschle 3881e97a40
vlib: remove ustring usage (#10618) 2021-06-30 22:30:28 +03:00
Daniel Däschle 6838030ab5
builtin: add string.runes() (#10611) 2021-06-30 09:17:38 +03:00
yuyi 04221475d1
cgen: fix go call interface method (fix #10520) (#10602) 2021-06-29 11:16:15 +03:00
yuyi 4af4f2b5a5
cgen: fix `go fn(mut x Interface){ println(x) }(x)` (#10585) 2021-06-28 16:31:11 +03:00
Delyan Angelov 8650ec6916
builtin: use == 0 instead of isnil()
Do not rely on C inlining that may not happen for a *very* frequently
called fn in lower level code.
2021-06-28 10:59:14 +03:00
yuyi 67d1b72e36
cgen: fix interface with nested fields (fix #10077) (#10589) 2021-06-28 10:24:05 +03:00
spaceface 4bed4afef7
cgen: fix clash in generated variant and method names (#10581) 2021-06-27 19:05:32 +03:00
Alexander Medvednikov 02f4f635cf cgen: remove debug comments before for loops 2021-06-26 02:06:02 +03:00
yuyi e8a1e9d88f
cgen: fix interface only declare with optional method (#10546) 2021-06-23 15:14:08 +03:00
crthpl 500b48788e
parser, cgen: fix basic asm registers, fix numbered labels in addressing, support indirect branching (#10545) 2021-06-23 14:20:07 +03:00
Delyan Angelov a588e50b47
v.gen.c: remove unused g_str_buf 2021-06-23 12:22:04 +03:00
Uwe Krüger 72358833e0
time: use `Duration(C.INT64_MAX)` as infinite (#10539) 2021-06-22 12:17:44 +03:00
Delyan Angelov 79df7f51c3
v: deprecate `[if ident]` in favour of `[if ident ?]` 2021-06-22 10:30:14 +03:00
yuyi 6dbe8a8a2c
cgen: fix for in mut reference selector val (fix #10524) (#10536) 2021-06-21 19:25:18 +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
yuyi 6c8182cc25
cgen: fix assigning literal fixed arrays to map values (#10525) 2021-06-20 13:36:01 +03:00
Enzo 44d0305ca9
checker,gen: remove automatic string to C string conversion (#10144) 2021-06-20 09:30:08 +03:00
yuyi afc81277be
v.gen.c: fix assigning a fixed array variable to a map value (#10523) 2021-06-20 08:09:24 +03:00
yuyi 2298063129
checker: fix nested if smartcast selector exprs (fix #10372 #10379) (#10502) 2021-06-18 14:49:15 +03:00
Enzo 05f0f3e180
v.gen.c: refactor infix expression (#10485) 2021-06-18 14:27:52 +03:00
crthpl 4abb1a8b7b
cgen: fix unknown labels in addressing (#10503) 2021-06-18 13:03:38 +03:00
crthpl 4688c75389
cgen, parser: fix several assembly bugs (#10498) 2021-06-18 01:20:46 +03:00
yuyi 1dca06495d
checker: implement if smartcast multi conds (part 1) (#10477) 2021-06-16 19:16:15 +03:00
Delyan Angelov e518cdbe7f
ci: fix msvc compilation of interface code 2021-06-16 12:15:16 +03:00
Delyan Angelov 862c4cf371
v.checker,v.gen: allow for `&IAbc(voidptr(0))` where IAbc contains fields 2021-06-16 10:48:50 +03:00
Uwe Krüger f3408a2484
gc: use optimized mode by default (#10466) 2021-06-15 15:43:00 +03:00
yuyi bdc8586ddd
checker, cgen: fix `for in mut val` (#10444) 2021-06-15 04:43:10 +03:00
Uwe Krüger a8437584aa
gc: extend optimized mode to channel buffers (#10443) 2021-06-14 18:12:47 +03:00
Emily Hudson 535dcac8fa
net: ipv6 support, merge unix+ip;[pack:x] attribute (#9904) 2021-06-13 23:53:38 +03:00
yuyi a6eba7a9b4
cgen: simplify match_expr_classic() (#10424) 2021-06-13 06:27:31 +03:00
Uwe Krüger 5ee1ded3fb
gc: extend optimized mode to maps (#10426) 2021-06-13 06:26:43 +03:00
Uwe Krüger 2ac39d9112
all: new function `isreftype(T)` to know if `T` contains pointers (#10438) 2021-06-13 06:26:13 +03:00
yuyi 0e34ce2759
cgen: format generated code in match_expr() (#10397) 2021-06-12 21:14:08 +03:00
yuyi f26626117d
cgen: fix match struct type cond (#10421) 2021-06-11 11:58:25 +03:00
yuyi 9d852e22b2
cgen: fix match array or map cond (#10411) 2021-06-10 21:33:35 +03:00
Uwe Krüger 0e2c86310a
GC-boehm: extend optimized mode to all `array` methods (#10406) 2021-06-10 21:26:17 +03:00
Enzo 14519bbf5c
cgen: clean up interface methods generation (#10400) 2021-06-09 22:44:18 +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 cd464010d4
cgen: fix match with multi sumtype exprs (#10377) 2021-06-07 14:16:30 +03:00
crthpl 8a497080b3
cgen: fix assembly in generic fns (#10370) 2021-06-07 10:53:33 +03:00
yuyi 329a6c974e
table, checker, cgen: implement generic fn infering fixed array (#10352) 2021-06-06 01:11:08 +03:00
Delyan Angelov 55ef849cd2
v.markused: trim unused map fns for programs that do not use them 2021-06-05 17:30:25 +03:00
yuyi b0bafa6376
cgen: fix or_block in for declaration (#10317) 2021-06-03 01:18:52 +03:00
Delyan Angelov 5400a765a4
tests: make `fn test_fn() ? { return error(fail) }` count as a fail 2021-06-02 19:14:37 +03:00
zakuro 0afeba5588
cgen: fix C error with clang, when declaring a fn type with an alias type argument (#10297) 2021-06-01 12:37:27 +03:00
yuyi cb19079d53
all: move cur_concrete_types to Table (#10269) 2021-05-31 17:14:45 +03:00
yuyi 9fc5b9dc54
cgen: fix match in map or expr (#10283) 2021-05-31 17:10:33 +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
Lukas Neubert 5b9256ba0b
cgen: write alias typedefs just before interfaces (#10272) 2021-05-31 12:26:06 +03:00
yuyi 8785599094
checker, cgen: fix optional with if expr (#10242) 2021-05-29 10:00:12 +03:00
Alexander Medvednikov ca8158ac41 parser: handle casts in match expressions; c2v: minor fixes 2021-05-28 17:59:43 +03:00
Delyan Angelov 2b62dca000
v: support for `$if threads {}, depending on whether `go ` was used at all (#10227) 2021-05-27 18:36:07 +03:00
yuyi 7c0cd2f41d
checker, cgen: fix match with complex sumtype exprs (#10215) 2021-05-27 10:13:50 +03:00
penguindark 2dd1d3fcbb
all: string interpolation code cleaning (#10204) 2021-05-26 09:30:08 +03:00
Joe Conigliaro 560301dbfe
cgen: dont preallocate zero length with capacity of 1 2021-05-26 14:51:20 +10:00
Enzo 39c376bb5b
builtin,gen: use operator overloading on ustring (#10197) 2021-05-25 14:51:48 +03:00
Enzo 886f69bfcf
all: use operator overloading on strings (p. 2) (#10183) 2021-05-24 11:38:31 +03:00
penguindark d8d05e0106
all: new string interpolation in pure V (#10181) 2021-05-24 05:20:45 +03:00
yuyi eb5ac23988
checker: fix match expr with if expr (fix #10177 #10178) (#10179) 2021-05-23 17:59:57 +03:00
Delyan Angelov bc01de2181
ast: mark ast.File{} with `[heap]`, and use []&ast.File consistently 2021-05-22 19:06:55 +03:00
Delyan Angelov da090f91d8
cgen: fix using and auto printing `x := [16]&Type{}` 2021-05-20 15:59:02 +03:00
Delyan Angelov 2086e6f1c1
builtin, cgen: implement chunked allocation of 16MB blocks with -prealloc (#10130) 2021-05-19 10:35:56 +03:00
Delyan Angelov 1305ca662f
cgen: do not use L'x' for ASCII values (enable compilation with simpler C compilers) 2021-05-15 10:36:26 +03:00
Uwe Krüger 7bfd89567b
shared: support `lock` on SelectorExpression (#10105) 2021-05-15 04:34:27 +03:00
zakuro a9435f3c25
cgen: fix `cannot take rvalue` error of interface (#10040) 2021-05-13 17:54:48 +03:00
Delyan Angelov 1086b4ac5e
io: mark the mutability requirements of the Writer interface explicitly; swap the io.cp/2 parameter order to be like os.cp/2 (#10091) 2021-05-13 13:06:42 +03:00
crthpl 8361f714dd
cgen: fix deadlock when returning/breaking in `lock` (#10079) 2021-05-12 11:44:47 +03:00
Delyan Angelov 066374bae4
v.gen.c: implement `-d trace_autofree` for conditional tracing comments about autofree 2021-05-11 19:29:06 +03:00
Delyan Angelov d463817f80
Revert "Revert "cgen: fix generics with generics fn type parameter (#10078)""
This reverts commit d3de91ee86.
2021-05-11 11:14:58 +03:00
Delyan Angelov d3de91ee86
Revert "cgen: fix generics with generics fn type parameter (#10078)"
This reverts commit e310513a5f.
2021-05-11 10:59:55 +03:00
Alexander Medvednikov dc034d9b16 vweb: make thread safe; checker: `$if T is Interface {` 2021-05-11 09:30:18 +03:00
yuyi e310513a5f
cgen: fix generics with generics fn type parameter (#10078) 2021-05-11 09:24:23 +03:00
yuyi dcf4d73c87
cgen: format generated struct definition c codes (#10074) 2021-05-10 20:27:52 +03:00
El Koulali András 3e5a5754f3
cgen: fix constants with multi-statement C initializations (#10058) 2021-05-09 03:25:44 +03:00
Delyan Angelov 2eafea6308
v: reduce the memory usage of the compiler (analysed with heaptrack) 2021-05-06 11:44:48 +03:00
Delyan Angelov d3f2d6f6df
cgen: speed up c_name/1 by using a map lookup, instead of a linear search in []string{} 2021-05-03 12:58:40 +03:00
Delyan Angelov 4b818fa2be
v: implement interface embedding (#9935) 2021-05-02 03:00:47 +03:00
yuyi d236d6a473
parser, cgen: fix generics fn typeof name (fix #7357) (#9939) 2021-04-30 13:40:36 +03:00
Louis Schmieder fb685eee18
orm: support arrays (#9936) 2021-04-30 09:13:26 +03:00
ka-weihe 6795b02e24
cgen: fix enum in map (#9912) 2021-04-28 22:11:32 +03:00
yuyi 9f1ac39770
checker: fix generics with anon generics fn argument (fix #9859) (#9897)
* checker: fix generics with anon generics fn argument

* cgen: fix typedef of generics anon fn

* fix check generics argument types
2021-04-27 15:25:42 +03:00
Don Park aebb551e93
cgen: do full struct initialisation for V structs, fixes invalid data from `map[string]Struct{}['unknown']` (#9878) 2021-04-27 08:18:48 +03:00
Uwe Krüger 787a63dab6
cgen: execute `defer` block *after* return expression is evaluated (#9893) 2021-04-27 01:42:16 +03:00
Delyan Angelov 5e0ff5c524
cgen: cleanup g.type_default 2021-04-26 11:55:29 +03:00
Uwe Krüger 3c0a368af3
all: automatically move (some) referenced objects to heap (#9873) 2021-04-25 21:40:38 +03:00
zakuro a0835ac139
checker/cgen: implement in expression for alias of array/map (#9871) 2021-04-25 18:17:54 +03:00
yuyi 8ccdae6188
all: cleanup generics call_expr (#9856) 2021-04-24 09:44:15 +03:00
yuyi dd2002cc57
cgen: fix generics with multi generics struct receiver (#9853) 2021-04-23 15:17:57 +03:00
yuyi 7b8957b25e
cgen: minor simplification in cc_type() (#9833) 2021-04-21 12:23:21 +03:00
spaceface 73352583e7
ci: fix all `-cstrict` warnings with gcc and clang (#9792) 2021-04-19 15:38:48 +03:00
yuyi 75d1b54f7b
cgen: fix empty struct init using macro (#9787) 2021-04-18 16:34:25 +03:00
Delyan Angelov 5817aa47d8
Revert "cgen: fix empty struct init (#9769)"
This reverts commit 0cc04850d7.
2021-04-17 19:19:25 +03:00
yuyi 0cc04850d7
cgen: fix empty struct init (#9769) 2021-04-17 02:39:52 +03:00
Delyan Angelov 0b3d1656f0
cgen: improve -g info for `{...}` and `goto label` 2021-04-16 19:13:40 +03:00
Uwe Krüger 80bd2974b4
cgen: fix iteration over `shared` map (#9763) 2021-04-16 14:49:14 +03:00
ka-weihe 25a9d30a70
channels: fix C warnings (#9732) 2021-04-15 01:44:39 +02:00
yuyi 1250ce4353
cgen: fix generics with embed generics (fix #8694) (#9724) 2021-04-15 01:44:11 +02:00
crthpl 0099458c0a
all: small asm fixes and number labels (#9730) 2021-04-15 01:30:23 +02:00
crthpl 14434cc86a
all: bare metal support (fix `-freestanding`) (#9624) 2021-04-14 07:50:50 +02:00
Uwe Krüger 10bf974cda
all: gc: provide optimized mode (#9716) 2021-04-14 00:40:26 +02:00
Delyan Angelov 1ef718c1e1
cgen: fix `return if cond { x,y } else { a,b }` generation 2021-04-13 11:52:18 +03:00
Enzo 5a1a1b7c12
all: merge GoExpr and GoStmt (#9685) 2021-04-11 23:56:25 +02:00
Henrixounez 6cfd53bf57
cgen: generate interfaces after all other typedefs (#9680) 2021-04-12 00:43:19 +03:00
Uwe Krüger 954c436d28
checker/cgen: auto initialize `shared` elements of structs (#9669) 2021-04-11 10:30:23 +03:00
yuyi a2a18ef92c
v: simplify handling of function generic parameters (#9673) 2021-04-11 09:02:57 +03:00
Uwe Krüger 78c6e35bde
checker/cgen: fix `v := rlock m { m[key] or { default_val } }` (#9666) 2021-04-10 16:57:18 +02:00
Louis Schmieder 64391efa4d
orm: add mysql support (#9630)
* add mysql to orm

* fix got to big packet error

* format sql.v

* format example

* custom sql types

* add mysql table cration

* add documentation

* format sql.v

* fix markdown

* start implementing select_expr for mysql

* remove orm.c

* format sql.v

* finish mysql expr

* remove c

* remove unessecary files

* change to c implementation

* remove c

* added str interpolation for idents

* fix string insert

* fix compilation problems

* fix gitly compilation

* fix typing mistake

* add link to orm docs
2021-04-10 17:38:27 +03:00
yuyi 9f093203a4
cgen: fix generics struct_init (#9661) 2021-04-10 17:33:15 +03:00
yuyi 1bcc45f914
cgen: minor cleanup of return_stmt (#9664) 2021-04-10 11:55:34 +03:00
ka-weihe 5273214ec2
map: rename methods (#9657) 2021-04-10 04:00:29 +02:00
Uwe Krüger b346dd9464
cgen: fix blank identifier in IfGard (`if _ := <-ch { ... }`, etc) (#9650) 2021-04-09 17:18:36 +02:00
Uwe Krüger 0c710ce470
cgen: register `Option_void` when used for `chan <- x or {...}` (#9648) 2021-04-09 17:18:02 +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
spaceface 4feb09fa5b
checker, cgen: add sumtype-like smartcasting capabilites to interfaces (#9256) 2021-04-09 11:00:05 +03:00
Alexander Medvednikov dbaa91810f autofree: fix optional returns 2021-04-06 17:14:11 +03:00
Delyan Angelov 87a16bbfe9
ci: fix -autofree cmd/v compilation job regression 2021-04-06 15:21:18 +03:00
Delyan Angelov 4cde74f120
checker: make the compiler stricter when checking pointers 2021-04-05 10:02:47 +03:00
Alexander Medvednikov 92fa9bbea9 cgen: fix [packed] 2021-04-05 08:02:19 +03:00
Alexander Medvednikov 77d8336db9 cgen: [packed] struct attribute 2021-04-05 06:49:43 +03:00
Alexander Medvednikov 31f8d5542c cgen: remove a "return var" comment 2021-04-03 14:18:00 +03:00
Daniel Däschle 6a5f49afb1
all: support `?Type(none)` (#9567) 2021-04-02 16:34:48 +02:00
yuyi c11356be21
cgen: minor optimization of fixed array copy (#9554) 2021-04-02 01:58:20 +02:00
Alexander Medvednikov 7385f8e56b all: a massive merge of ast and table modules 2021-04-02 01:57:09 +03:00
crthpl 8d5e310189
asm: make fixed labels possible as displacement (#9549) 2021-04-01 09:58:33 +03:00
yuyi 63f835c4ce
cgen: fix the alias of fixed_array (fix #9537) (#9544) 2021-03-31 18:51:03 +02:00
Alexander Medvednikov 6f318be96c checker: do not allow nil sum types init 2021-03-31 11:13:52 +03:00
Swastik Baranwal b40d06ec1e
cgen: fix operator overloading for array/map aliases (#9529) 2021-03-30 11:39:54 +02:00
Uwe Krüger 97f43d6a97
gc: make generational mode of Boehm-GC available (#9514) 2021-03-30 09:36:22 +02:00