Commit Graph

826 Commits (76c67952e6052cd5f0a846eec7d80f88fee71cc5)

Author SHA1 Message Date
yuyi 8764a3a973
checker: check errors of cast to byte (#12961) 2021-12-25 11:34:15 +02:00
yuyi a83786d867
checker: minor cleanup in cast_expr() (#12954) 2021-12-24 11:38:27 +02:00
Delyan Angelov db1175e455
parser: handle `[noreturn]` on methods too 2021-12-22 19:58:37 +02:00
yuyi cd0b581445
ast: rename 'table.get_type_symbol()' to 'table.sym()' and more related calls (#12898) 2021-12-19 18:25:18 +02:00
spaceface 65f12f3217
checker: fix invalid cast warning for flag enums (#12848) 2021-12-15 16:58:25 +02:00
yuyi 36fbd3c4fa
checker: check sumtype as mismatched type (#12743) 2021-12-07 01:31:47 +03:00
Leo Developer ace63594bf
all: support `$embed_file('embed.vv', .zlib)` (#12654) 2021-12-04 19:43:19 +02:00
Alexander Medvednikov be5446bfa4 checker: update enum test 2021-12-03 09:07:33 +03:00
Alexander Medvednikov 209747d03e checker: update enum test 2021-12-03 08:43:03 +03:00
Delyan Angelov f5d283721e
checker: add more `string(x)` checks, with more detailed replacement suggestions 2021-12-01 11:28:00 +02:00
Delyan Angelov 47aa2b1f93
all: fix casting of `string(MyString('abc'))` and `byte(MyByte(123))`; improve TypeSymbol handling (#12617) 2021-12-01 09:50:53 +02:00
pancake 8ac7739db8
parser: forbid empty match statements 'match cond.op {else {}}' (#12618) 2021-11-30 09:32:48 +02:00
Delyan Angelov 6d97b0a407
checker: improve checking of a << b, when a and b are numbers (#12589) 2021-11-29 03:48:49 +03:00
Leo Developer 9c88317ca6
checker: add a warning if start value is higher than end value (#12602) 2021-11-28 18:46:52 +02:00
Delyan Angelov deaeffc4db
checker: add a check for unused `x << y` expressions (where x != array) (#12586) 2021-11-27 07:38:35 +02:00
yuyi fbe2b5cb58
checker: check argument type error of the generics fn declaration (#12539) 2021-11-22 22:39:20 +02:00
yuyi f37eb6a932
checker: check invalid fn parameter name (#12540) 2021-11-22 16:51:58 +02:00
Delyan Angelov fa995ca537
checker: add an error for `x.method({})` calls, when method expects a struct 2021-11-19 13:30:45 +02:00
zakuro 26fbf1885d
checker: report error for test functions that have parameters (#12500) 2021-11-18 08:33:28 +03:00
yuyi 1370516f53
checker: check struct field using 'any' type (#12489) 2021-11-17 11:42:05 +02:00
yuyi 2984751a57
checker: fix the argument mismatch of fn call (#12479) 2021-11-16 17:19:02 +02:00
yuyi 9565adf597
checker: check invalid map variable name (#12474) 2021-11-16 08:42:49 +02:00
yuyi 460f4523aa
checker: check array pop immutable (#12458) 2021-11-14 21:00:22 +02:00
yuyi 73e25ccb3c
checker: check generic struct field fn args type mismatch (#12379) 2021-11-04 10:18:36 +02:00
yuyi 4bafc5042b
checker: check generic struct field fn args error (#12373) 2021-11-03 10:20:39 +02:00
Lucas Jenß 51f5841b6e
checker: do not deref non-pointer types in `fn_signature_using_aliases` (#12340) 2021-11-01 02:26:15 +03:00
Lucas Jenß f801ef5e17
checker: disallow `mut` keyword in right-hand side of assignment (#12318) 2021-10-29 12:03:05 +03:00
Delyan Angelov 0ff23eeb74
ci: fix failing assign_expr_channel_push.out 2021-10-27 22:54:41 +03:00
Lucas Jenß 43fbc68f1e
checker: disallow `<-` (channel push) on right-hand side of assignment (fix #12309) (#12321) 2021-10-27 17:53:50 +03:00
Delyan Angelov 45c1c1ab41
ci: fix import_symbol_private_err.vv and its .out file (time.since is no longer private) 2021-10-24 22:06:32 +03:00
yuyi 6aca360507
parser: fix checking unexpected name (#12233) 2021-10-19 12:27:59 +03:00
05st fd3a10ab43
checker: fix mut check bypass with for in loops (#12208) 2021-10-17 06:41:39 +03:00
yuyi c9b2f878b3
parser, checker: optimize checking generic struct type mismatch (#12179) 2021-10-15 00:11:31 +03:00
Delyan Angelov 9fabf9f20c
checker: check for `x := Abc { f: fn () ? {} }` mismatch, when `f` is `fn ()` 2021-10-11 19:20:41 +03:00
Alexander Ivanov 0386f2bbea
checker: add an interface check for mutability, fixes #1081, fixes #7038 (#11963) 2021-10-11 15:41:31 +03:00
yuyi 1831eccd5e
checker: check generic struct using in non-generic fn (#12136) 2021-10-11 02:46:44 +03:00
yuyi 83bc9b35b1
ast: fix checking generic fn call with fntype arg mismatch (#12132) 2021-10-10 11:14:19 +03:00
yuyi 093cab6f56
checker: check generics struct init that types mismatch (fix #12115) (#12120) 2021-10-09 15:03:37 +03:00
yuyi 0d53705776
v.checker: check fn returning void type (fix #12076) (#12078) 2021-10-06 21:04:33 +03:00
05st 86a5e72c74
v.checker: fix return type checking being skipped for mutable method receivers (#12043) 2021-10-02 23:26:46 +03:00
Alexander Ivanov cb149bfa00
checker: show errors for index calls to values which are not functions, fixes #11539 (#12024) 2021-10-01 15:17:02 +03:00
Louis Schmieder f9ceb12e22
checker: fix orm cast check (#12018) 2021-09-30 00:43:08 +03:00
Alexander Ivanov 4d0f835548
checker: fix detection of invalid insertions, fixes #3600 (#11945) 2021-09-23 11:59:43 +03:00
Rémi e76be4ba37
checker: temporary error for optional struct fields (#11293) (#11534) 2021-09-18 23:22:24 +03:00
Delyan Angelov 5bc6cc9512
v.checker: fix spurious warning for `if x := map_of_sumtypes[k] {}` 2021-09-15 15:42:28 +03:00
Daniel Däschle be0c54caf9
checker: require or block for sumtype map (#11089) 2021-09-10 16:07:39 +03:00
Delyan Angelov 4faa0f8487
v.checker: add checks for `.free()` methods 2021-09-09 09:54:06 +03:00
yuyi 3fd2dd45a4
checker: do now allow type name shadowing (#11401) 2021-09-05 18:34:21 +03:00
yuyi 48e65a7bb2
checker: check type in match range (fix #11337) (#11389) 2021-09-05 04:50:43 +03:00
yuyi 5181031480
builtin: check array.sort_with_compare() arg mismatch (#11385) 2021-09-04 15:02:05 +03:00
yuyi 923ef733c0
checker: disallow array sort with fancy args for now (#11388) 2021-09-04 14:34:29 +03:00
yuyi 67ab5b858b
checker: fix checking fn prototype mismatch (#11369) 2021-09-03 12:26:46 +03:00
Delyan Angelov f41939f005
ci: fix deprecations.out (time is now > 2021/08/28 00:00:00) 2021-08-28 13:02:59 +03:00
yuyi e90a624738
checker: fix generic fn infer variadic parameter with arrays (#11324) 2021-08-28 10:32:51 +03:00
yuyi f257a23313
checker: check non-generic struct init (#11300) 2021-08-25 14:40:40 +03:00
yuyi 96398efd2b
checker: check array insert/prepend arguments (#11295) 2021-08-24 20:28:05 +03:00
yuyi 0d81d0c0c6
table, checker: fix sumtype array appending aggregate type values (fix #11197) (#11258) 2021-08-21 17:18:01 +03:00
yuyi 3d22dc1608
all: fix formating Foo<A,B> to Foo<A, B> (#11225) 2021-08-18 17:17:21 +03:00
yuyi e07678d6f3
checker: check using redundant parentheses (#11228) 2021-08-18 13:49:50 +03:00
yuyi c51f83efba
checker: fix match expr type mismatch (#11220) 2021-08-18 08:52:01 +03:00
yuyi 579aa7b1b5
v.checker: fix multi insts of generics fn with generic struct (#11161) 2021-08-12 22:58:02 +03:00
Delyan Angelov a64a4d932c
v.checker: turn `interface field ... must be initialized` to a notice temporarily 2021-08-11 16:39:41 +03:00
Enzo da53f818df
all: initial support for closures (x64 / linux-only) (#11114) 2021-08-10 21:27:15 +03:00
Daniel Däschle a64b191ce5
checker: forbid multiple pointer yields (#11105) 2021-08-09 02:11:53 +03:00
Daniel Däschle 9af65d8830
checker: protect against assigning to a typeless variable (#11094) 2021-08-07 18:09:07 +03:00
yuyi 11784279ba
checker: check fn_call().sort() (fix #11040) (#11056) 2021-08-04 21:23:22 +03:00
Delyan Angelov f9c279d11d
v.checker: make calling a deprecated fn an error, 180 days (6 months) after its deprecation date (#10682) 2021-08-04 17:41:00 +03:00
Daniel Däschle 800c0e5092
vlib: remove deprecated map{} usages as well as deprecated functions (#11035) 2021-08-04 12:44:41 +03:00
Alexander Medvednikov 80976e640c vweb: remove init_server() from all examples, tutorials, and tests 2021-08-03 16:03:16 +03:00
Florian Blasius 69f31d8d5c
checker: check int literal to enum cast (fix #10125) (#10348) 2021-08-02 07:12:29 +03:00
Uwe Krüger 6068777e03
parser/checker: deduce type of global from initialization expression (#11005) 2021-07-31 16:35:19 +03:00
Louis Schmieder 0bb587c8c2
checker: fix defer ident handling & fix defer optional error message (#10975) 2021-07-30 20:29:06 +03:00
Delyan Angelov c31397e17d tests: fix `v test-self` running locally 2021-07-30 09:26:05 +03:00
Alexander Medvednikov ec92964bb0 checker: make interface init check a warning for now 2021-07-30 03:32:02 +03:00
Louis Schmieder 7c504920e1
checker: fix negative values for unsigned integers (#10976) 2021-07-30 03:27:59 +03:00
Daniel Däschle 6fa8e4269e
checker: force interface init (#10910) 2021-07-30 03:18:20 +03:00
yuyi 57f30668e3
v.checker: fix `a.map(voidfn(it))` (#10985) 2021-07-29 11:43:56 +03:00
Delyan Angelov 0bcb955258
checker: fix regression of anon fns that have loops with break/continue 2021-07-25 10:46:31 +03:00
zakuro 3979e5c5ff
v.parser: show better position for sort struct init warning (#10939) 2021-07-24 20:41:59 +03:00
Daniel Däschle 3be8ef3b5a
checker: check duplicated field and method (only for fields that are anon-fns for now) (#10927) 2021-07-24 16:06:09 +03:00
Louis Schmieder 1999850f88
checker: disallow labels in defer statements (#10901) 2021-07-23 22:35:05 +03:00
Daniel Däschle a2de3ffcdb
checker: check if condition optional (#10921) 2021-07-23 08:52:51 +03:00
Daniel Däschle f40090e8ff
checker: fix break inside anon fn (#10914) 2021-07-23 01:13:36 +03:00
Daniel Däschle 12884e9eb7
checker: disallow invalid pointer arithmetic (#10888) 2021-07-21 23:39:49 +03:00
shadow 591af866ba
checker: prohibit returning a fixed array (#10882) 2021-07-21 11:39:22 +03:00
Daniel Däschle f6402eae10
checker: check `match` with type alias (#10863) 2021-07-20 15:06:36 +03:00
Daniel Däschle ad3835b598
parser: deprecate short struct init (#10842) 2021-07-20 11:17:08 +03:00
yuyi cf82bd3407
checker: fix fixed array with const unint type size (fix #10826) (#10853) 2021-07-19 12:44:03 +03:00
shadowninja55 eb65ad078d
checker: prohibit passing non-lvalue as `voidptr` (#10838) 2021-07-18 15:04:16 +03:00
yuyi 8b8f496762
checker: fix generics fn return generic interface (fix #10818) (#10831) 2021-07-18 08:55:19 +03:00
shadowninja55 0d587d3580
checker: prohibit using non-lvalue as mut receiver (#10790) 2021-07-16 13:03:40 +03:00
shadowninja55 7c0be629ab
checker: prohibit fixed array to fixed array assignment where elem_typ is a pointer (#10775) 2021-07-15 08:38:03 +03:00
spaceface 6e942bf4c2
v: initial support for generic interfaces and sumtypes (#10795) 2021-07-15 08:29:13 +03:00
shadowninja55 de6918b8c9
checker: fix hex literal overflow check (#10782) 2021-07-14 22:33:02 +03:00
crthpl 5089eb4a84
parser: fix pointer cast expressions hack (#10777) 2021-07-13 12:01:24 +03:00
shadowninja55 7694afa44c
checker: check that `mut` args are lvalues (#10779) 2021-07-13 08:06:39 +03:00
shadowninja55 02f0a30555
checker: ensure hex character literals don't overflow in strings (#10725) 2021-07-12 22:37:31 +03:00
yuyi 938e9b61b5
parser: check undefined variables in assign_stmt (#10755) 2021-07-11 19:09:35 +03:00
yuyi c65bfc122d
checker: check assigning array_init with no type (#10757) 2021-07-11 18:52:01 +03:00
yuyi 71e8237483
parser: check undefined variables in array inits (#10746) 2021-07-11 03:49:07 +03:00
shadowninja55 a1088275b9
checker: prohibit illegal types in string interpolation literals (#10705) 2021-07-10 00:00:12 +03:00
shadowninja55 aa5b609d95
checker: check integer literals (#10706) 2021-07-09 14:02:10 +03:00
Alexander Medvednikov 9ba6c23d5c checker: casted => cast 2021-07-08 05:11:12 +03:00
shadowninja55 806d6172cb
checker: prohibit casting `void` (#10690) 2021-07-07 21:59:58 +03:00
shadowninja55 f070222124
checker: prohibit option and `IError` in multi-return (#10689) 2021-07-07 11:57:10 +03:00
yuyi c4b5805890
checker: check generic method call args mismatch (#10669) 2021-07-05 10:14:00 +03:00
Delyan Angelov 972542d6ee
checker: `[noreturn]` part 2 (cleanup) (#10667) 2021-07-05 05:05:37 +03:00
shadowninja55 da9c75f2ca
checker: string != IError (#10665) 2021-07-05 05:05:08 +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 b0b4b8e65b
checker: fix missing check generic fn call args (fix #10649) (#10657) 2021-07-04 19:15:15 +03:00
shadowninja55 8c43d2450f
vweb: prohibit invalid parameter types in vweb app methods (#10631) 2021-07-04 18:37:09 +03:00
Delyan Angelov a33a2ba095
checker: check for `x := []Interface{len: 9}` without `init:` 2021-07-02 08:37:49 +03:00
yuyi 1e896c7020
checker: check optional interface type mismatch (#10617) 2021-06-30 08:54:28 +03:00
shadowninja55 f029f7e897
checker: prohibit `char.str()`, add tests (#10615) 2021-06-30 08:16:31 +03:00
shadowninja55 06a6a8e199
checker: check for empty branches in match expressions (#10593) 2021-06-28 19:32:28 +03:00
shadowninja55 ea3983a91b
checker: require .sort() body for some types (#10550) 2021-06-27 17:17:03 +03:00
shadowninja55 eb5afb7403
checker: prohibit selective const imports (#10574) 2021-06-26 18:09:52 +03:00
Delyan Angelov 19dca026a9
checker: bugfix for `__global ( cpu_get_id fn () u64 ) ... cpu_get_id()`
Support new vlib/v/checker/tests/globals_run/ folder, for .vv files
that will be run with `-enable-globals run`, and the results will be
compared with their matching `.run.out` files.

Add regression tests.
2021-06-26 01:23:50 +03:00
yuyi 4bfe76123a
generics: fix generic fn type mismatch of returning a generic struct (#10553) 2021-06-24 12:47:36 +03:00
Delyan Angelov dd6591b2f5
ci: fix `[if xyz ?]` usages 2021-06-22 10:46:43 +03:00
yuyi da4b6b934d
checker: fix map assign array of interface values (#10532) 2021-06-21 19:24:42 +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 c58b04bcbf
checker: implement if smartcast multi conds (part 2) (#10487) 2021-06-17 12:27:31 +03:00
yuyi 1dca06495d
checker: implement if smartcast multi conds (part 1) (#10477) 2021-06-16 19:16:15 +03:00
yuyi ffcc6cf6d2
checker: fix `for in mut val` for floats (#10470) 2021-06-16 04:04:31 +03:00
yuyi bdc8586ddd
checker, cgen: fix `for in mut val` (#10444) 2021-06-15 04:43:10 +03:00
pancake 3b6045865b
checker: improve error message when using fields as methods (#10367) 2021-06-12 15:15:25 +03:00
Alexander Medvednikov 6761697088 checker: do not allow dereferencing function calls on the left side of an = 2021-06-11 16:07:41 +03:00
yuyi 7878bad95e
checker: check array type mismatch of array append (#10405) 2021-06-10 21:34:36 +03:00
shadowninja55 10b9ea3258
checker: add an error for assigning to array slices `a[..2] = [0, 0]` (#10412) 2021-06-10 19:18:14 +03:00
Delyan Angelov 115edff7e9
v.checker: restrict `x T` in `fn test<T>(x T){ unsafe{ println(x[0]) }`, but allow `x &T` 2021-06-09 12:07:08 +03:00
Delyan Angelov f351ff037e
Revert "checker: check generic type indexing error (#10345)"
This reverts commit 103c777ad6.

Passing references to values should be allowed, and is already used in vinix:
`pub fn cas<T>(_here &T, _ifthis T, writethis T) bool {`
2021-06-09 11:46:17 +03:00
yuyi 103c777ad6
checker: check generic type indexing error (#10345) 2021-06-08 17:23:44 +03:00
yuyi 0615f2e236
checker: check generic method receivers with no type parameter (#10374) 2021-06-07 12:11:29 +03:00
Lukas Neubert 3f00ff465b
checker: check or block inside println calls (#10354) 2021-06-05 23:01:58 +03:00
Lukas Neubert dc431a3c47
checker: prevent enum value duplication check bypass (#10287) 2021-06-05 12:28:17 +03:00
Ehsan Afzali 672bb6ca7f
parser: fix required function members in struct (#10299) 2021-06-03 02:55:58 +03:00
yuyi 1747e546bf
parser, checker: check assert optional (#10319) 2021-06-02 20:38:26 +03:00
Lukas Neubert 09e3099580
checker: error on direct map alias init (#10282) 2021-05-31 12:14:37 +03:00
Delyan Angelov b29bc9cdce
checker: fix panic on `fn abc()?{ return error() }` 2021-05-29 23:46:56 +03:00
yuyi 6e493ca8ca
checker: check index_expr or_expr types mismatch (#10224) 2021-05-28 11:40:59 +03:00
yuyi 0e6f0c1de0
checker: check generic struct init without type parameter (#10193) 2021-05-25 06:15:05 +03:00
yuyi eb5ac23988
checker: fix match expr with if expr (fix #10177 #10178) (#10179) 2021-05-23 17:59:57 +03:00
Lukas Neubert f7cd95472a
checker: clarify duplicate import error (#10150) 2021-05-21 06:12:38 +03:00
yuyi 492d264d08
checker: fix generic structs init (#10134) 2021-05-20 09:18:51 +03:00
crthpl 0d44c8857e
checker: fix position of unknown type errors (#10110) 2021-05-16 04:51:23 +03:00
Uwe Krüger 7bfd89567b
shared: support `lock` on SelectorExpression (#10105) 2021-05-15 04:34:27 +03:00
Alexander Medvednikov 0f28ff4c8d tests: a minor grammar fix 2021-05-11 09:47:09 +03:00
Alexander Medvednikov dc034d9b16 vweb: make thread safe; checker: `$if T is Interface {` 2021-05-11 09:30:18 +03:00
Delyan Angelov 21f207e781
v.checker: use more concise error messages (remove please) 2021-05-08 22:32:18 +03:00