Commit Graph

609 Commits (e6c3de2f466a72d05ebe816b65d5b3eff60fc48c)

Author SHA1 Message Date
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
zakuro a3455b8433
cgen: execute defer stmts in LIFO order (#9528) 2021-03-30 09:35:19 +02:00
Ned Palacios b319068151
ast, parser: implement simple AST poisoning (#9525) 2021-03-30 09:33:29 +02:00
zakuro 6f5259571d
cgen: use overloaded eq op in auto eq method (#9475) 2021-03-26 19:46:54 +02:00
yuyi d8108a58d8
cgen: minor cleanup in for_in_stmt() (#9471) 2021-03-26 08:21:01 +02:00
Uwe Krüger 257eadd2e1
gc: add `-gc boehm_leak` for leak detection (#9464) 2021-03-25 16:52:33 +01:00
zakuro 837cada30c
cgen: minor cleanup infix_expr (#9445) 2021-03-24 23:21:54 +02:00
Delyan Angelov f8f74d8587
builtin: add panic_optional_not_set and use it in cgen for fncall()? in main 2021-03-24 14:13:58 +02:00
spaceface 392666e475
cgen: fix treating errors as values inside if expressions (#9440) 2021-03-23 22:45:08 +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
Alexander Medvednikov 0c055a1ce9 all: s.contains(s2) instead of `in` 2021-03-23 11:38:56 +03:00
Alexander Medvednikov e86c6e024c autofree: fix frees before returns 2021-03-23 11:04:59 +03:00
zakuro 0258482caf
cgen: auto eq method for sumtype (#9408) 2021-03-22 06:39:07 +01:00
Alexander Medvednikov 4d77f3810f gc: enable on macos and add leak detection fns 2021-03-21 05:31:10 +03:00
Delyan Angelov 8810af76df
all: support `-gc boehm` on systems with libgc-dev installed (#9382) 2021-03-20 14:16:36 +01:00
yuyi ead0dff55a
cgen: fix return if_guard expr (#9375) 2021-03-20 03:53:47 +01:00
Delyan Angelov a386be6505
v.table: correct `table.types` to `table.type_symbols` 2021-03-19 22:51:52 +02:00
Delyan Angelov 4a12546971
cgen,fmt: improve sizeof(), fix `type PPType = &&Type` 2021-03-19 22:49:46 +02:00
Delyan Angelov 00651c8deb
builtin: free all elements in a `[]string` with -autofree too 2021-03-18 21:10:42 +02:00
Alexander Medvednikov 4e62bc0b81 autofree: fix free before return 2021-03-18 05:41:50 +03:00
Delyan Angelov e8df8bc8c3
ci: fix for `-autofree vlib/v/tests/option_test.v` 2021-03-17 14:44:45 +02:00
Delyan Angelov 99cc02685b
cgen: implement IError.free() and use it for the builtin `none` const 2021-03-17 12:38:24 +02:00
Delyan Angelov ae401bd930
ci: fix the `./v -g -autofree -o v2 cmd/v` step 2021-03-17 09:48:56 +02:00
crthpl fafb035fb5
all: reimplement inline assembly (#8645) 2021-03-17 01:43:17 +01:00
ka-weihe 2991cad4e8
map: fix delete in for-in (#9336) 2021-03-17 01:42:33 +01:00
Alexander Medvednikov 149151b1e8 cgen: minor vfmt 2021-03-17 03:41:52 +03:00
Alexander Medvednikov 091a1bab27 autofree: free global map consts and some vweb fixes 2021-03-17 01:33:35 +01:00
yuyi 2d2e4610e7
cgen: make use of mut_rec in method consistent (#9308) 2021-03-15 12:22:52 +02:00
yuyi 945769a4f6
all: implement reference receiver optimization for big structs (#9268) 2021-03-14 18:11:21 +01:00
yuyi c0779e8455
cgen: fix return_statement generated redundant `;` (#9299) 2021-03-14 14:58:17 +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
yuyi 5a6b321656
cgen: format if_guard_expr generated c codes (#9290) 2021-03-14 01:54:05 +01:00
spaceface e9797c618a
all: implement error interfaces (#9291) 2021-03-13 18:13:50 +01:00
Alexander Medvednikov f86233c41f autofree: fix [manualfree] 2021-03-13 18:43:02 +03:00
spaceface be409b52e9
builtin: prepare for error interfaces (#9043) 2021-03-12 20:05:05 +02:00
Delyan Angelov c474106511
cgen: fix match expression with complex boolean conditions 2021-03-12 19:55:33 +02:00
StunxFS 8de6511056
cgen: minor optimization to `for ch in "StringLiteral"` (#9240) 2021-03-11 15:01:53 +02:00
spaceface 7d0cba5e96
v.ast: remove the `stmt.position()` method (#9233) 2021-03-11 14:50:02 +02:00
Delyan Angelov 6628bbc690
cgen: use the new __offsetof_ptr macro 2021-03-11 13:14:36 +02:00
zakuro 791dec7b01
v: support `$if prod` (#9228) 2021-03-10 19:26:34 +02:00
Swastik Baranwal 8d84206a8c
cgen: fix match for one branch (#9234) 2021-03-10 18:44:32 +02:00
spaceface eefdad21c7
cgen: cleanup interface/sumtype casts (#9221) 2021-03-10 18:41:11 +02:00
spaceface f1469a8761
checker: allow accessing fields common to all sumtype members (#9201) 2021-03-09 19:16:18 +02:00
yuyi c4b0fdcbaf
cgen: fix for_in fixed_array of fixed_array literal (#9206) 2021-03-09 16:18:07 +02:00
zakuro 00399b49ab
v.util: add util.tabs() (#9211) 2021-03-09 13:03:25 +02:00
yuyi 568faeed77
cgen: add `expr_string() and remove redundant codes (#9188) 2021-03-08 12:46:39 +02:00
yuyi 82085b0140
cgen: fix for_in map of fixed_array (#9133) 2021-03-07 11:41:08 +02:00
Delyan Angelov 849cde245c
v: support dump(expr) (#9160) 2021-03-06 18:09:28 +01:00
yuyi c802515e71
cgen: minor optimization in gen_code buffer init (#9143) 2021-03-06 12:03:38 +02:00
yuyi cbbfb460a7
cgen: fix for_in fixed_array (#9129) 2021-03-05 15:35:09 +03:00
Delyan Angelov 0f042124cb
tests: support `fn test_fn() ? { opt()? }` 2021-03-05 14:18:21 +02:00
yuyi f4c03e8ed8
cgen: minor optimization in for_in_array (#9127) 2021-03-05 07:58:09 +02:00
yuyi 6097045b46
cgen: minor cleanup of cgen.v (#9108) 2021-03-04 14:40:57 +02:00
yuyi 7c893895d8
cgen: minor cleanup in infix_expr() (#9086) 2021-03-04 12:50:18 +02:00
yuyi 5f9af3f594
cgen: fix for_in array of fixed_array (fix #9098) (#9099) 2021-03-04 12:39:39 +02:00
yuyi 822d20d2cc
cgen: minor simplification of struct zero init (#9085) 2021-03-03 16:03:50 +01:00
yuyi 6825b4cb30
cgen: format if_expr generated c codes (#9084) 2021-03-03 14:33:00 +02:00
yuyi 97f9abcf82
cgen: fix anon_fn in containers (#9077) 2021-03-03 10:12:08 +02:00
Uwe Krüger dd475f4e37
checker/cgen: enable `IfGuardExpr` for `a[k]` and `<-ch` (#9065) 2021-03-03 10:10:38 +02:00
yuyi 62ccd740f0
cgen: minor perf fix in index_expr() (#9054) 2021-03-02 12:28:26 +01:00
yuyi 81dbd72412
cgen: fix anon_fn in containers (fix #8965) (#9049) 2021-03-02 10:26:27 +02:00
Joe Conigliaro 01735c67c6
cgen: fix duplicate method wrapper from interface method call. closes #9018 2021-03-02 19:15:49 +11:00
spaceface 2b53992c01
checker, cgen: allow implementing an interface with an embedded struct (#9042) 2021-03-01 21:47:00 +01:00
yuyi 65900e55e3
cgen: fix if_expr of multi-stmts optional (#9039) 2021-03-01 21:39:04 +01:00
yuyi 6d77594409
cgen: merge cc_type and cc_type2 (#9036) 2021-03-01 21:36:58 +01:00
yuyi f9c8d3d25c
cgen: fix return if true { 0 } else { none } (fix #9005) (#9030) 2021-03-01 13:56:07 +01:00
spaceface b712af56fd
all: bring back `panic(err.msg)` -> `panic(err)` (#9022) 2021-03-01 00:18:14 +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 d63b7bc35a
all: update repo to use the new error handling syntax (#8950) 2021-02-28 23:20:21 +03: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
Uwe Krüger f67bff1696
all: support `thread` handles and `wait()` for functions returning optionals (#8990) 2021-02-27 10:16:55 +02:00
spaceface 51fae95339
cgen: move the condition of an iterator to a temp var (#8989) 2021-02-26 21:51:01 +01:00
Delyan Angelov 1a8ff9d7dd
v.gen.c: ensure that @continue is escaped in the generated C code 2021-02-26 10:22:35 +02:00
yuyi c7587c0760
cgen: minor cleanup in for_in_stmt() (#8962) 2021-02-25 13:24:42 +01:00
yuyi c762d150c6
cgen: fix anon_fn redefinition (#8961) 2021-02-25 12:16:35 +01:00
yuyi 3c94a79375
cgen: minor cleanup in gen_assert_xxx() (#8943) 2021-02-24 19:35:11 +01:00
yuyi 1dd1be4400
cgen: fix if_expr with array.map (fix #8925) (#8937) 2021-02-24 15:06:29 +02:00
yuyi 05a08530ff
cgen: implement for_stmt of multi_init_vars or multi_assign_vars (#8917) 2021-02-24 14:58:45 +02:00
yuyi 302baaa7b4
cgen: fix error of match in fn_call (#8900) 2021-02-23 09:53:07 +02:00
Uwe Krüger 5674d46965
table,cgen: fix bug preventing `t := []thread{}` to compile (#8913) 2021-02-23 09:37:29 +02:00
spaceface 8033203ef6
builtin: add an Option2 struct (#8890) 2021-02-22 18:44:15 +02:00
Delyan Angelov 7c97b0b24d
gitly: fix compilation with -autofree 2021-02-22 17:00:48 +02:00
Uwe Krüger 5306b2788c
all: extend `wait()` method to array of `thread` handles (#8840) 2021-02-22 15:08:52 +02:00
spaceface 1658c4789f
cgen: fix `match`ing interface types (#8889) 2021-02-22 14:55:43 +02:00
Nick Treleaven 15daeaeafa
cgen: add fixed array bounds checking for non-literal index (#8832) 2021-02-22 14:54:24 +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
Joe Conigliaro 0470baafa6
cgen: fix duplicate optional generation for struct field 2021-02-22 00:00:39 +11:00
yuyi 6e46f3850c
ast: change `expr.is_mut_ident()` to `expr.is_auto_deref_var()` (#8869) 2021-02-21 12:15:36 +02:00
yuyi e106dc3ad5
cgen: fix match_return with complex expr stmts (#8876) 2021-02-21 11:47:46 +02:00
Delyan Angelov 5a333b0fdc
gen,parser: allow enums as map keys 2021-02-20 19:39:25 +02:00
yuyi e8abda189a
cgen: minor optimization in match_expr() (#8848) 2021-02-20 15:51:40 +02:00
yuyi a119affeba
cgen: check unknown sizeof type (#8815) 2021-02-18 09:38:57 +02:00
Delyan Angelov 2002d20249
io: remove unused Zzz_CoerceInterfaceTableGeneration struct; add test for `x := Enum{}` 2021-02-17 01:37:05 +02:00
Delyan Angelov 995e1c84a2
ci: fix `./v -cc gcc -cflags "-Werror" vlib/io/os_file_reader_test.v` 2021-02-17 01:08:28 +02:00
Delyan Angelov fb09333a73
ci: fix interface table generation for vlib/io/os_file_reader_test.v with -cflags "-Werror" 2021-02-16 23:36:44 +02:00
Delyan Angelov 843de10442
parser,gen: fix `arr << map[key] using map_get_and_set_1, leading to double free 2021-02-16 16:39:31 +02:00
yuyi 982e35909d
cgen: fix `mut` var in `for` loop reads as address (fix #8548) (#8745) 2021-02-16 13:24:19 +01:00
yuyi a9c2045dbd
cgen: fix var name clash of array/map (fix #1994) (#8765) 2021-02-15 15:51:57 +02:00
spaceface e3649ec4d3
all: implement `type_name()` for interfaces too (#8767) 2021-02-15 15:29:44 +02:00
Delyan Angelov 0b60510c9c
cgen: cleanup generating helper comments with -skip-unused 2021-02-13 10:31:48 +02:00
yuyi 67c6f24c84
cgen: format match_expr (#8692) 2021-02-12 03:37:31 +01:00
yuyi 3164e29651
all: fix fn_or_for_in mut value (part 1) (#8671) 2021-02-12 02:03:11 +02:00
zakuro f371803a32
cgen: move comp_if_to_ifdef to comptime.v (#8668) 2021-02-11 01:22:49 +01:00
yuyi 95c3ef3a6a
cgen: minor cleanup in stmt() (#8659) 2021-02-09 23:00:43 +01:00
Uwe Krüger f3c5f24c17
allow `lock` expression to return multiple objects (#8657) 2021-02-09 17:09:10 +02:00
Delyan Angelov 5308b63a01
ci: fix the `-cflags "-Werror"` job, by explicit casting to `void**` 2021-02-09 14:22:51 +02:00
Delyan Angelov 3d2afcf02e
cgen: fix gohandle_name generation (use .cname) 2021-02-09 12:55:05 +02:00
Alexander Medvednikov bfee8a528c cgen: add "case" to c_reserved 2021-02-09 03:49:19 +01:00
Swastik Baranwal 09cff69919
all: allow using aliases as keys in map (#8589) 2021-02-08 18:51:05 +01:00
Lukas Neubert 5abd49d9bc
cgen: cast default struct field value to correct SumType/interface (#8619) 2021-02-08 17:33:05 +02:00
Nick Treleaven e2ff2a5405
parser: deprecate `{var |` struct update (#8618) 2021-02-08 17:03:05 +02:00
zakuro e5839effbc
checker/cgen: allow `<<` operator for aliases (#8561) 2021-02-08 01:41:47 +01:00
Uwe Krüger 118ca1240e
all: allow `shared` element types for `struct` and arrays (#8631) 2021-02-08 00:28:29 +01:00
Lukas Neubert 7f4c582f1a
fmt: unwrap long infix exprs inside parenthesis if necessary (#8609) 2021-02-07 23:10:39 +01:00
yuyi 81e8c3bc1b
cgen: minor optimization in infix_expr (#8625) 2021-02-07 17:22:54 +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
Uwe Krüger 5343f1374b
all: allow functions to return `shared` object (#8606) 2021-02-06 19:41:52 +01:00
zakuro fe9d062b41
gen: fix bug where unreached defer is executed (#8594) 2021-02-06 18:40:39 +02:00
Swastik Baranwal 9b839b3b7d
cgen: fix gen of `>` operator overloading (#8600) 2021-02-06 12:59:20 +02:00
Uwe Krüger ab279dace7
cgen: support `shared` initialization from call returning optional (#8593) 2021-02-06 03:07:05 +01:00
Delyan Angelov e5c9fcb7e9
ci: fix building vdoc, vls, etc 2021-02-05 09:27:14 +02:00
Alexander Medvednikov 1084b43ffb all: ast walker for marking unused fns 2021-02-05 08:05:35 +01:00
Delyan Angelov 119dfc0bb0
all: support map[f32]string and map[f64]string (float map keys) too (#8556) 2021-02-04 23:59:49 +01:00
Louis Schmieder 97c0ef3505
orm: struct field support (#8517) 2021-02-04 20:28:33 +01:00
Uwe Krüger 112c652ace
cgen: auto initialize `chan` that are struct elements (#8541) 2021-02-04 00:07:20 +01:00
Uwe Krüger f013e65670
checker/cgen: support lock expressions `x := rlock s { s.get() }` (#8540) 2021-02-03 23:56:58 +01:00
Uwe Krüger cee00a3551
cgen: create enclosing block on C side for V `lock` blocks (#8538) 2021-02-03 23:25:01 +01:00
Uwe Krüger 2424e2cb02
cgen: fix for `rlock`/`lock` handling (#8536) 2021-02-03 17:33:18 +01:00
Swastik Baranwal 7ec116d588
all: only allow defining `==` and `<` and auto generate `!=`, `>`, `>=` and `<=` (#8520) 2021-02-03 15:18:38 +01:00
Uwe Krüger 9dcf673216
all: make `lock` and `rlock` dead lock free :-) (#8534) 2021-02-03 15:16:52 +01:00
yuyi 7875164d91
cgen: add gen_alias_equlity_fn (#8514) 2021-02-02 18:37:57 +01:00
joe-conigliaro ffedbe4b81
cgen: move cgen from v.gen to v.gen.c (#8515) 2021-02-02 15:41:51 +01:00