Commit Graph

1138 Commits (7a5722c885f003a2a393bdb77e655e7c8f3d9af6)

Author SHA1 Message Date
Alexander Medvednikov 3d4ab7de1e checker: update tests 2020-10-15 12:39:32 +02:00
Alexander Medvednikov 7da1afa140 all: switch to the new fn arg syntax everywhere; add lots of vfmt -verify tests 2020-10-15 12:32:28 +02:00
Alexander Medvednikov 982056894e fmt: use `f(x int, y int)` instead of `f(x, y int)` 2020-10-15 12:00:46 +02:00
Swastik Baranwal 314fae7446
checker: add more checks for hash_stmt (#6615) 2020-10-15 11:58:01 +03:00
Alexander Medvednikov ea09bd5e45 checker/fmt: `for mut val` fixes 2020-10-14 12:50:19 +02:00
Alexander Medvednikov a07f31feae all: `for mut val in vals {` (part 1) 2020-10-13 16:27:30 +02:00
Nick Treleaven 78bcda14c4
checker: infer T from parameter of type `[]T` (#6611) 2020-10-13 15:15:25 +03:00
Nick Treleaven b677ad9ca5
checker: fix panic on match expression without results (#6597) 2020-10-10 15:42:40 +02:00
Enzo 6038264a4c
gen: fix slicing mutable arguments (#6596) 2020-10-10 12:03:23 +02:00
Delyan Angelov e862fad917 parser: support `mut static x := y` in -translated mode 2020-10-09 22:24:21 +03:00
Nick Treleaven 36706126fd
checker - improve error for `as` casting on non-sum type (#6587) 2020-10-09 16:12:12 +02:00
Nick Treleaven f734f8167b
checker: improve error message for match branch type mismatch (#6588) 2020-10-09 16:11:11 +02:00
Nick Treleaven 92630a2821
checker: error if assigning to a function (#6581) 2020-10-09 00:48:39 +02:00
Swastik Baranwal aea52af9ae
checker: add is_mut check for disallowing taking address of map's key and array's element outside unsafe (#6573) 2020-10-08 09:37:18 +03:00
Nick Treleaven f7decfe399
checker: infer generic type T from matching fn call argument (#6298) 2020-10-06 15:34:02 +02:00
Alexander Medvednikov d2d3289a2a all: mark pref.Preferences field as immutable 2020-10-06 06:24:50 +02:00
Swastik Baranwal d77669da80
test: add tests for disallowing map/array get element/key address (#6568) 2020-10-05 18:40:51 +03:00
Swastik Baranwal 5f07b255bd
checker: disallow address of array and map index outside unsafe (#6557) 2020-10-05 13:08:30 +02:00
Delyan Angelov 0c174104fc checker: allow &=,|=,^=,%= on an integer number type aliases 2020-10-04 15:29:09 +03:00
Delyan Angelov 628b136e85 checker: allow casting from floats/enums to byte 2020-10-04 14:46:24 +03:00
Swastik Baranwal 7e13518cc2
parser: disallow match expr at certain places (#6490) 2020-10-03 16:30:58 +03:00
Henrixounez c9574ae7d7
syntax: new global variable declaration syntax (#6540) 2020-10-03 07:03:44 +02:00
Swastik Baranwal c8a884f57f
checker: fix typos in chan (#6539) 2020-10-03 06:59:30 +02:00
Nick Treleaven 7c86b03505
checker: don't error if last statement in match branch produces a value (#6523) 2020-10-02 09:33:04 +02:00
Henrixounez 8152b86652
checker: detect correct len expression for multidimensional array init (#6521) 2020-10-02 03:12:33 +02:00
Henrixounez a57e01fee7
parser: dont allow single letter enums (#6526) 2020-10-01 23:29:49 +03:00
Henrixounez 0f1ed1ca09
scanner: add an error for unfinished string literals (#6519) 2020-10-01 16:40:59 +03:00
Delyan Angelov 11b16a63cf checker: add a suggestion for misspelled struct field name errors 2020-10-01 15:36:47 +03:00
Enzo 324d547cdb
parser: allow multiple types in match branch (#6505) 2020-10-01 01:07:36 +02:00
Nick Treleaven 18be7b115a
checker: disallow most statements in if/match expression branches (#6509) 2020-09-30 16:06:22 +02:00
Delyan Angelov dc954bbb03 all: use `macos` consistently in os.user_os and the compiler 2020-09-29 22:32:20 +03:00
Daniel Däschle 06cade6c31
all: change .ReturnType and .Type to .return_type and .typ (#6494) 2020-09-28 06:13:38 +02:00
Delyan Angelov cfdf66c129 ci: run vfmt over checker.v 2020-09-27 17:08:28 +03:00
Delyan Angelov a6d525eb92 ci: fix `is not a variable and cannot be locked` failing tests 2020-09-27 16:32:46 +03:00
Delyan Angelov 7c6695317c Revert "ci: fix building v from vc"
This reverts commit b3f503e0ce.
2020-09-27 10:36:26 +03:00
Delyan Angelov b3f503e0ce ci: fix building v from vc 2020-09-27 10:34:11 +03:00
Alexander Medvednikov 3d5292b63f tcp/udp: fix mutability 2020-09-27 03:40:59 +02:00
Alexander Medvednikov fca344d1fb all: fn args => params 2020-09-27 03:32:56 +02:00
Alexander Medvednikov e2c7126d11 checker: verify mutability of method args 2020-09-27 03:14:24 +02:00
Nick Treleaven fbae0a7274
checker: warn if fn looks like a test fn but filename doesn't end in `_test.v` (#6469) 2020-09-25 19:26:11 +03:00
Daniel Däschle abc98c273c
parser: require assign on type alias (#6477) 2020-09-25 12:02:32 +02:00
spaceface777 0b95d72354
checker: comp. if branch logic fix (#6473) 2020-09-25 12:48:27 +03:00
Daniel Däschle e384dea8ac
checker: add error for amp on literals (#6467) 2020-09-24 21:13:46 +02:00
Daniel Däschle 4f09ddccb4
cgen: implement sum type str gen (#6454) 2020-09-23 20:51:51 +02:00
Nick Treleaven 2886b1c67d
checker: require binary operands for &&, || (#6449) 2020-09-23 20:48:25 +02:00
Uwe Krüger 9c0758639b
cgen: fix `for match {...} {` and `for select {...} {` (#6441) 2020-09-23 06:05:12 +02:00
Alexander Medvednikov 624f22e27e all: mutability check (part 1); enable mutable sumtype args 2020-09-22 05:28:29 +02:00
Swastik Baranwal 077b597bd8
scanner/parser: change error msgs for `\0` and `\x00` and add error for r`byte` and c`byte` (#6436) 2020-09-21 17:34:24 +03:00
Uwe Krüger 0f1c484ad1
parser/checker: `if select { ... } {` (#6434) 2020-09-21 07:34:04 +02:00
Henrixounez e429a77de2
gen: named imported structs operator overloading and str methods (#6433) 2020-09-20 19:51:14 +02:00
Henrixounez 5086fd537c
checker: prompt error on implicit int overflow by literal (#6410) 2020-09-20 16:29:01 +02:00
Uwe Krüger 4ae88c69ac
sync/select: allow push of literals and calculated expressions (#6429) 2020-09-20 03:50:09 +02:00
Nick Treleaven 9958881cbe
parser: support parsing unsafe (as first token) as UnsafeExpr (#6032) 2020-09-19 19:18:36 +03:00
Henrixounez 4b0e7fc979
checker: check if imported struct is public (#6425) 2020-09-19 18:16:43 +03:00
Uwe Krüger 31a52cdf21
cgen: implement channel `select` block code generation (#6424) 2020-09-19 02:14:35 +02:00
Enzo 3126ae305c
checker: verify use of blank identifier (#6412) 2020-09-18 23:47:50 +02:00
Henrixounez c02a0f90df
checker: prompt error on script expression while inside a file with main (#6400) 2020-09-18 01:14:14 +02:00
Nick Treleaven 14743458e5
checker: tweak error messages for `or` block; use proper type names (#6377) 2020-09-18 01:09:00 +02:00
Nick Treleaven 69c592e0d6
checker: disallow infix op on an optional type (#6406) 2020-09-18 01:03:55 +02:00
Henrixounez 99574e465d
scanner: allow escape on null character (#6404) 2020-09-18 01:02:06 +02:00
Enzo a1e127ae46
checker: check type in `is` InfixExpr (#6407) 2020-09-18 01:01:05 +02:00
spaceface777 ff92c3409d
ast: merge `IfExpr` and `CompIf` (#6011) 2020-09-18 00:58:54 +02:00
Henrixounez 608df40058
checker: fix error declaration on a value (#6390) 2020-09-16 22:01:15 +02:00
Uwe Krüger 1bc9063573
parser: implement parsing of `select` block (#6379) 2020-09-16 15:34:57 +02:00
Alexander Medvednikov 68948c7947 checker: vfmt checker.v 2020-09-13 16:21:40 +02:00
Vasilis Katsifolis 43942057a4
checker: fix a type check that caused a C error #6238 (#6358) 2020-09-13 15:19:53 +02:00
Alexander Medvednikov b74c1805d7 cgen/autofree: fix and simplify optionals 2020-09-12 16:40:52 +02:00
Delyan Angelov 37311883c1 tests: add optional_method_err.vv 2020-09-12 13:12:06 +03:00
Delyan Angelov 0801f88d0a tests: cleanup vlib/v/checker/tests/run ; add unused_variable_warning.vv 2020-09-12 12:33:17 +03:00
Daniel Däschle ce62f997f3
all: better type error positions (#6345) 2020-09-11 14:37:14 +02:00
Alexander Medvednikov 62a692b29c checker: make the "unnecessary default" error a warning for now 2020-09-11 13:59:28 +02:00
Alexander Medvednikov bc8aab4775 checker: fix := test 2020-09-09 17:59:51 +02:00
Alexander Medvednikov 3956ea4665 Revert "checker: fix := test"
This reverts commit 818220de45.
2020-09-09 17:55:48 +02:00
Alexander Medvednikov 818220de45 checker: fix := test 2020-09-09 17:50:14 +02:00
Daniel Däschle 3a146a6dbe
checker: fix error pos on default value (#6338) 2020-09-09 15:34:41 +02:00
Alexander Medvednikov 925f1781b3 checker: default field fixes 2020-09-09 14:05:56 +02:00
Alexander Medvednikov e018509ba6 checker: test for unnecessary default struct field values 2020-09-09 13:59:52 +02:00
Swastik Baranwal ea2b2ebc07
checker: modify error messages for ptrs (#6325) 2020-09-09 10:07:58 +02:00
Nick Treleaven 49c322f120
checker: simplify argument qualifier errors (#6321) 2020-09-08 19:34:17 +02:00
Uwe Krüger 2cb711ee15
checker/channels: check `mut`/`&` state of transmitted objects (#6315) 2020-09-06 21:24:41 +02:00
Alexander Medvednikov 3410705974 autofree: lots of fixes 2020-09-05 12:00:35 +02:00
Xavier B 8ef55bd8c9
checker: add checks for map key/value types (#6283) 2020-09-04 23:59:54 +02:00
Uwe Krüger b8617ace53
checker: do not allow aliases of `chan` types (#6294) 2020-09-03 02:03:31 +02:00
spaceface777 35cbca96e1
checker: implement `[required]` struct field attribute (#6276) 2020-08-31 23:15:40 +02:00
spaceface777 bd304f1141
checker: check number of fields in short struct inits (#6280) 2020-08-31 22:17:59 +02:00
Nick Treleaven 5d3d14da53
cgen: support `typeof(expr).name` (#6253) 2020-08-30 08:56:18 +02:00
Uwe Krüger fe8286c53c
checker: implement implicit conversions/promotions to `rune` (#6249) 2020-08-29 01:59:07 +02:00
Nick Treleaven 7dbae14e19
checker: error on `mut name =` (#6247) 2020-08-28 20:07:32 +03:00
Swastik Baranwal 39bf02ea68
checker: add error for arr1 <,>,>=,<= arr2 (#6243) 2020-08-28 11:08:07 +03:00
spaceface777 d663f57d43
parser: move flag logic to checker (#6239) 2020-08-28 09:24:04 +03:00
Delyan Angelov 8b3990225a v.checker: run vfmt over vlib/v/checker/checker.v 2020-08-27 12:09:08 +03:00
Delyan Angelov f73506be49 tests: fix some byte->rune errors 2020-08-27 12:08:05 +03:00
Xavier B 3e9dc578de
checker: disallow interfaces inside sum types (#6232) 2020-08-27 08:33:59 +02:00
Alexander Medvednikov 6921d46185 all: rune type for `` literals 2020-08-27 06:46:37 +02:00
Delyan Angelov 99dd72efea tests: add another test for 47f59d3 2020-08-26 11:46:29 +03:00
Delyan Angelov 47f59d3fb6 v.scanner: fix error line numbers when comments end with CRLF 2020-08-26 11:39:32 +03:00
Uwe Krüger 393b46a6dd
channels: make `ch.len` and `ch.cap` available as properties (#6221) 2020-08-26 06:41:51 +02:00
Delyan Angelov 86dfd3902f tests: use .vv files directly in compiler_errors_test.v 2020-08-25 18:14:06 +03:00
Nick Treleaven 479bfa28de
cgen: implement fixed array `.len` property (#6212) 2020-08-25 08:48:28 +02:00
Nick Treleaven acc5c95f0d
checker: error with `*expr` if not a pointer (#6211) 2020-08-24 17:19:17 +02:00
Alexander Medvednikov d547f74cb0 checker/cgen: interface smart casts 2020-08-24 11:10:26 +02:00
Swastik Baranwal b2e79dbebd
parser: add an error for `import mod.sub as mod` and `import mod as mod` (#6194) 2020-08-23 02:12:25 +02:00
Uwe Krüger 61df70fdf5
all: enable `x = <-ch or {...}` (#6195) 2020-08-23 02:12:05 +02:00
Daniel Däschle fcc61a981d
all: TypeSymbol.source_name (#6187) 2020-08-22 12:29:15 +02:00
Delyan Angelov 06967d9297 sort: require a mutable receiver 2020-08-21 21:19:37 +03:00
Daniel Däschle 0c183da116
checker: fix sort return type (#6182) 2020-08-20 17:29:40 +03:00
Nick Treleaven 217f04e311
checker: disallow casting to bool, use `some_int != 0` instead (#6138) 2020-08-19 14:37:55 +02:00
joe-conigliaro c599a4c7de
checker: remove pos+1 on innermost call 2020-08-18 07:39:40 +10:00
Uwe Krüger 0d7cc8829a
cgen: implement channel `push()`/`pop()` using `<-` operator (#6154) 2020-08-17 23:35:36 +02:00
Daniel Däschle b5c1ea44dc
all: fix mutability after if-smartcast (#6129) 2020-08-17 21:11:11 +02:00
Swastik Baranwal 46b4e2a0cd
checker: check`match` types (#6149) 2020-08-17 20:19:21 +02:00
Uwe Krüger 9a5f040f72
all: handle `<-` arrow token for channel operations (#6152) 2020-08-17 20:12:00 +02:00
Nick Treleaven 6ba6a22a77
checker: prevent from casting non-struct to struct (#6143) 2020-08-17 11:19:44 +02:00
Alexander Medvednikov b2059c481a checker: fix an incorrect name test 2020-08-16 19:24:00 +02:00
Alexander Medvednikov f965ddae49 parser: handle several errors in types; cgen: objC includes 2020-08-16 19:16:59 +02:00
Enzo a02593204f
checker: forbid aliasing an alias (#6118) 2020-08-16 04:53:16 +02:00
Uwe Krüger 9602a25a0b
all: add builtin channel type `chan elem_type` (#6126) 2020-08-14 21:18:42 +02:00
Daniel Däschle b2fee21ef3
checker: check struct casting (#5864) 2020-08-14 14:57:08 +02:00
Nick Treleaven 6016f28171
cgen: fix assigning ArrayInit to fixed array: `a = [3]int` (#6115) 2020-08-14 13:57:00 +02:00
Alexander Medvednikov fc1f41fc84 checker: fix a string error test 2020-08-13 23:33:18 +02:00
Alexander Medvednikov 88cde776e7 checker: more clear string error 2020-08-13 23:21:15 +02:00
Delyan Angelov da7adb5b1b ci: fix failing tests for compiler_errors_test.v 2020-08-13 13:16:41 +03:00
Alexander Medvednikov e5e31f7210 sort: handle `.sort(a.field > b.field)` 2020-08-12 06:11:40 +02:00
Alexander Medvednikov 4bc0dde413 all: new `.sort(a < b)` syntax 2020-08-12 05:54:51 +02:00
Alexander Medvednikov 9800cf1e7b checker: improve array errors; gg: remove unused imports 2020-08-12 03:54:17 +02:00
Swastik Baranwal 9fdb1701e0
checker: add a check for str[i] = `a` (#6107) 2020-08-11 17:41:54 +02:00
Alexander Medvednikov c5aa2bfa51 tests: fix a match test 2020-08-11 16:26:52 +02:00
Alexander Medvednikov 1a9dba0005 checker: make << shifts work with custom number types 2020-08-11 01:05:34 +02:00
Alexander Medvednikov 2dd82748e0 checker: simplify << error message 2020-08-11 01:01:33 +02:00
Alexander Medvednikov 6d72209363 checker: minor c2v fixes 2020-08-11 00:51:15 +02:00
Alexander Medvednikov 11113e43e7 checker: a minor perf fix 2020-08-10 23:59:42 +02:00
Nick Treleaven d8d82a0be4
checker: make `has_return` fn more efficient (#6103) 2020-08-10 23:59:08 +02:00
Alexander Medvednikov 88988817d0 parser: minor `match` simplification 2020-08-10 19:54:38 +02:00
Delyan Angelov 36eae1c175
builtin: x.vstring() instead of string(x) (#6102) 2020-08-10 18:05:26 +02:00
Alexander Medvednikov c65dbe51d6 parser: c2v fixes 2020-08-09 03:58:14 +02:00
Nick Treleaven 6cc8815931
parser: support [unsafe] instead of [unsafe_fn] (#6066) 2020-08-08 16:24:05 +02:00
Alexander Medvednikov ea76a33b43 remove freetype references everywhere 2020-08-06 17:23:57 +02:00
Enzo f238890fe9
compiler: move attributes to declarations (#6026) 2020-08-04 20:10:22 +02:00
Nick Treleaven 7f447bb82f
ast: use Block instead of UnsafeStmt (#5981) 2020-08-02 14:06:44 +03:00
Alexander Medvednikov a1593e7db8 checker: 1 line v fmt fix 2020-08-01 23:41:32 +02:00
Swastik Baranwal d56d622a43
checker: add checks for byte casting (#5917) 2020-08-01 23:17:00 +02:00
spaceface777 4f37202b72
checker: allow struct fields starting with capitals in builtin (#5998) 2020-08-01 23:01:40 +02:00
Delyan Angelov 91c9c0c917 checker: fix unknown_method_suggest_name.out test result too 2020-07-30 19:37:36 +03:00
Delyan Angelov f300f787f3 checker: add suggestions for method mispellings and unknown types 2020-07-30 18:48:16 +03:00
Alexander Medvednikov f269cbdc94 Revert "parser: Support `unsafe(expr)` (#5973)"
This reverts commit 19c226fcf8.
2020-07-29 21:41:47 +02:00
Delyan Angelov 9c9533dad9
checker: add error for `fn f() Struct { return &Struct{} }` (#6019) 2020-07-29 21:40:43 +02:00
Swastik Baranwal 4500e7131e
checker: add a checker error for fn calls on left side of an assignment (#5993) 2020-07-29 18:33:00 +03:00
Delyan Angelov 9c028bb299 checker: fix passing enum to a method expecting string 2020-07-28 13:50:40 +03:00
Nick Treleaven 19c226fcf8
parser: Support `unsafe(expr)` (#5973) 2020-07-28 11:20:52 +03:00
joe-conigliaro 61c1c4a690
checker: add error for invalid sum type cast `MySt{1}` 2020-07-28 01:04:04 +10:00
Alexander Medvednikov 3d19167628 http: fix cookies (part 2) 2020-07-26 22:01:25 +02:00
Delyan Angelov 9e652c4f40 ci: fix remaining failing tests. Do mut ptr check only outside unsafe{} blocks. 2020-07-26 10:59:07 +03:00
Delyan Angelov 9d056168ae ci: fix failing tests 2020-07-26 10:48:24 +03:00
Alexander Medvednikov 6796b93abd tests: fix compiler_errors_test.v 2020-07-25 22:20:10 +02:00
Alexander Medvednikov 7c86156be5 checker: fix unsafe tests 2020-07-25 18:58:23 +02:00
Alexander Medvednikov 34907f7605 checker: do not allow assigning immutable refs to mutable vars 2020-07-25 18:32:36 +02:00
Louis Schmieder b58b15993c
gen: compile time for (methods and fields) (#5957) 2020-07-25 00:02:44 +02:00
Lukas Neubert 2ccb28a93e
checker: run vfmt over checker.v (#5965) 2020-07-24 20:12:01 +03:00
Alexander Medvednikov 632e27a4a9 all: fix a big mutability bug and update all mutable vars 2020-07-23 23:16:36 +02:00
Uwe Krüger 6586a9a657
fmt: give braced sub expressions a higher priority (#5941) 2020-07-23 00:32:34 +02:00
Ryan Willis 938e71b468
v: fix for `import cli { Command }` 2020-07-22 20:33:43 +03:00
Nick Treleaven ee349691f9
v/checker: Warn about pointer indexing outside unsafe {} (#5918) 2020-07-22 20:28:53 +03:00
joe-conigliaro d46a89b90d
parser/checker/fmt: optimize scope lookups by storing object with ident & add if expr smartcast support to vfmt (#5935) 2020-07-23 02:10:31 +10:00
spaceface777 f4251dded0
checker: suggest using `:=` when assigning to undefined variable (#5911) 2020-07-21 19:49:53 +03:00
Alexander Medvednikov 059722f211 checker: minor vfmt run 2020-07-20 22:30:09 +02:00
Nick Treleaven 15ca64d81d
tests: rename pointer_arithmetic_should_be_checked.vv -> unsafe_required.vv (#5897) 2020-07-20 23:04:22 +03:00
Nick Treleaven a74cbf55c7
checker: warn if C.m* or C.s* functions are called outside unsafe blocks (#5869) 2020-07-20 20:06:41 +03:00
Nick Treleaven e6fc8eb015
checker: check that array slicing indexes are valid (#5892) 2020-07-20 19:52:03 +03:00
Delyan Angelov fb4c3ff31a tests: split unsafe.v to vlib/v/tests/unsafe_test.v and a checker output .vv&.out test 2020-07-20 16:53:27 +03:00
Enzo 8a855ccae1
fmt,vet: handle `var in [single_value]` (#5882) 2020-07-19 19:58:34 +02:00
Ryan Willis 1114fd28d0
all: import individual symbols feature (#5872) 2020-07-18 21:34:38 +02:00
XeGrox e5a508c0d7
checker: fix inability to access aliased struct fields (#5861) 2020-07-18 13:58:16 +02:00
Nick Treleaven 105a0e015e
checker: warn if unsafe method called outside unsafe block (#5863) 2020-07-17 19:14:12 +02:00
Enzo 90d9040e6e
all: make comment expressions + fix vfmt array init (#5851) 2020-07-17 19:13:22 +02:00
Uwe Krüger ea322bdd97
checker, cgen: fix call of generic function returning normal type (#5865) 2020-07-17 18:28:45 +02:00
spaceface777 3583302ad4
parser: force `...` rather than `..` in matches for inclusive ranges (#5852) 2020-07-17 11:30:21 +03:00
Alexander Medvednikov 9b2cbdacc6 vfmt: verify 2020-07-16 19:46:03 +02:00
Alexander Medvednikov e4fac6ff97 autofree: fix scope position 2020-07-16 19:40:14 +02:00
spaceface777 b900577dae
compiler: handle ranges as `match` conditions (#5847) 2020-07-16 16:41:18 +03:00
Nick Treleaven 4b0ded0475
checker: Warn instead of error for pointer arithmetic (#5840) 2020-07-15 19:59:39 +02:00
Enzo 2ee8f93d60
parser: duplicate method declaration on interface (#5825) 2020-07-15 10:23:21 +02:00
Delyan Angelov cf7d03bda6 builtin: implement array.pop() 2020-07-14 20:01:39 +03:00
Delyan Angelov 5ad957f270 vfmt: fix formatting for `x, _ := f()` 2020-07-14 19:11:16 +03:00
Alexander Medvednikov 06f5279f77 checker: fix multi_const_field_name_duplicate test 2020-07-14 17:44:08 +02:00
Alexander Medvednikov 899c69caf1 checker: fix dup const test 2020-07-14 17:24:08 +02:00
Alexander Medvednikov d33fbe4547 checker: format + fix duplicate const error 2020-07-14 17:18:10 +02:00
joe-conigliaro dd06d90466
checker/gen: temp hack for struct fn type field (fixes ui) 2020-07-14 03:59:00 +10:00
Uwe Krüger 6e6010d198
checker, cgen: implement auto-lock for `a[i]++`, `a[i]--` (#5817) 2020-07-13 15:01:32 +03:00
Uwe Krüger aa364ddaca
checker, cgen: checks for shared/lock, first autolock (#5815) 2020-07-13 12:19:28 +02:00
Nick Treleaven 53023c1ca9
all: add UnsafeExpr (#5793) 2020-07-12 12:58:33 +02:00
Delyan Angelov 9c43d36513 parser,checker: add `-d trace_parser`, `-d trace_checker` 2020-07-12 12:56:01 +03:00
Delyan Angelov 23c8e1f06d checker: add support for `-d debug_stmts` to ease debugging checker panics 2020-07-12 12:04:39 +03:00
yuyi 9b4c81e85f
checker: check missing return values in functions (#5803) 2020-07-11 16:30:49 +02:00
Delyan Angelov 37d739684c checker: prevent string(byte), suggest byte.str() instead 2020-07-11 17:09:22 +03:00
pancake 7d6ba2d07d
checker: add error when interface i, without a .str() method, have i.str() called (#5788) 2020-07-10 22:47:29 +03:00
Emily Hudson 7488dd829d
all: _allow_multiple_values enum attribute (#5772) 2020-07-10 16:43:02 +02:00
Delyan Angelov 88946a34bb checker: limit showing too many unhandled match cases 2020-07-10 15:49:02 +03:00
Daniel Däschle fb927dab60
checker: check all branches for return (#5763) 2020-07-09 22:38:43 +02:00
Daniel Däschle c5dc1a33b6
all: remove `it` smartcast and replace with original variable name (#5764) 2020-07-09 17:14:14 +02:00
Daniel Däschle c0fa31e75a
cgen: if smartcast part 3 (#5755) 2020-07-08 19:14:47 +02:00
yuyi 64e9bdc213
parser: fix non-void optional fn missing return value (fix #5736) (#5741) 2020-07-08 16:01:17 +02:00
Daniel Däschle 5ea17ad2d4
all: if smartcast part 2 (#5754) 2020-07-08 15:46:58 +02:00
Daniel Däschle b62bf59c21
all: if-is smartcast part 1 (#5730) 2020-07-08 15:17:28 +02:00
joe-conigliaro c99200918e
checker: fix if 2020-07-08 01:42:42 +10:00
joe-conigliaro 2480cce1ed
checker: optimize if & fix typo 2020-07-08 01:36:48 +10:00
joe-conigliaro 5fd5e558ae
parser/checker/gen: anon fn direct call with args 2020-07-08 01:10:39 +10:00
Alexander Medvednikov 4d7d1eb0c4 http: referer() 2020-07-07 14:37:43 +02:00
Tarang11 68e01d87be
checker: fix multi assignment for multiple fns (#5716) 2020-07-07 14:18:51 +02:00
Uwe Krüger ef02373061
all: remove `rwshared` keyword, make its semantics default for `shared` (#5710) 2020-07-07 01:57:31 +02:00
Alexander Medvednikov 1f3d7d393e gg: simplify text rendering 2020-07-06 19:45:00 +02:00
joe-conigliaro d82e6c9cd9
checker/table: fix sumtype cast from int literal 2020-07-06 21:27:48 +10:00
yuyi fc7237be7b
checker: fix cast to sum type (fix #5690) (#5692) 2020-07-06 12:32:59 +02:00
yuyi f41edef4c6
checker: add `1/0x0 1/0b0..` division by zero check (#5694) 2020-07-06 12:32:00 +02:00
joe-conigliaro 4e66728477
checker/table: rearrange sumtype check fns 2020-07-06 00:53:56 +10:00
joe-conigliaro 9d7f1a236a
checker/gen: fix nested sumtype matching 2020-07-06 00:25:04 +10:00
yuyi 34a24eaa4e
checker: validate loop var names (#5677) 2020-07-05 15:27:37 +02:00
Enzo 7778cbe9f5
all: make `os` global in scripts (#5669) 2020-07-04 23:37:41 +02:00
Delyan Angelov f374e37b61 checker: add details about a non matching functional argument 2020-07-04 22:37:06 +03:00
Delyan Angelov 108913c69e checker: handle error token positions with negative pos.len 2020-07-04 21:55:14 +03:00
Delyan Angelov 0637feb382 checker: use a more readable error message for non matching fn args 2020-07-04 21:23:22 +03:00
Delyan Angelov db4a9d6b59 checker: stricter check for function type signatures 2020-07-04 21:01:08 +03:00
Daniel Däschle 0626ac2901
checker: fix position of infix expr error 2020-07-04 18:52:40 +02:00
div72 be04de98bb
checker: check for enum value duplicates/overflow (#5659) 2020-07-04 18:28:01 +03:00
Delyan Angelov dc3101384f checker: cleanup indentation 2020-07-04 14:45:11 +03:00
Delyan Angelov 48029fa9ad checker: check .str() calls too 2020-07-04 14:43:01 +03:00
Delyan Angelov 35431d457b checker: add check for strict .str() method signature 2020-07-04 14:14:43 +03:00
Uwe Krüger 3b067f5f85
all: experimental locked concurrency support, part 1 (#5637) 2020-07-04 12:44:25 +02:00
joe-conigliaro da98c3c135
checker: use new match syntax everywhere 2020-07-04 19:23:41 +10:00
joe-conigliaro cdd4a7c880
checker: only check ForInStmt.high once 2020-07-04 19:10:37 +10:00
Alexander Medvednikov 3d3549d65a Revert "parser: advanced division by zero check (#5629)"
This reverts commit f03688e443.
2020-07-03 22:30:51 +02:00
Nick Treleaven 0b49e4db1c
v/checker.v: disallow pointer arithmetic for InfixExpr outside unsafe {} (#5640) 2020-07-03 18:10:10 +02:00
Alexander Medvednikov b7175b54eb vweb: ['/:arg1/:arg2/action'] attribute 2020-07-03 15:10:39 +02:00
yuyi f03688e443
parser: advanced division by zero check (#5629) 2020-07-03 11:28:00 +02:00
Louis Schmieder b89cbf3224
orm: add support for ordering (#5624) 2020-07-02 20:29:22 +03:00
Nick Treleaven e7339fec15
all: disallow pointer arithmetic for AssignStmt, PostfixExpr outside unsafe{} (#5581) 2020-07-01 14:50:17 +02:00
Delyan Angelov 78e1127d99
cgen: treat the main module like any other v module 2020-07-01 00:53:53 +02:00
Uwe Krüger 8a46911725
checker: check if mut function arg is declared as mut (#5579) 2020-06-30 14:19:22 +02:00
joe-conigliaro ab37dcaa9c
generic structs: initial implementation 2020-06-29 20:09:09 +02:00
Alexander Medvednikov d2c508e9a9 checker: clean up 2020-06-28 19:44:41 +02:00
Alexander Medvednikov 219ecd18b5 orm: handle unknown tbale names 2020-06-28 19:01:30 +02:00
Alexander Medvednikov 3dea698c93 checker: do not register pseudo variables in sql queries 2020-06-28 18:56:11 +02:00
Alexander Medvednikov 190f970544 checker: handle limit and offset 2020-06-27 16:41:29 +02:00
Uwe Krüger 8fe70a24a8
checker: forbid non-reference mut arg or receiver of go function 2020-06-26 23:31:38 +02:00
joe-conigliaro 2440ffd013
cgen: always unwrap generic type. fix `x := &T{}` 2020-06-27 00:31:36 +10:00
joe-conigliaro 202d479bad checker: fix typo in check_types.v 2020-06-26 15:05:07 +10:00
Alexander Medvednikov aec7f2f6c4 checker: SqlStmt fixes 2020-06-25 22:37:40 +02:00
Alexander Medvednikov 328cb7ed7e orm: `update` with selectors and other fixes 2020-06-25 22:23:19 +02:00
Alexander Medvednikov b280e08ee0 orm: `update` cgen 2020-06-25 17:12:32 +02:00
Alexander Medvednikov a8b0dfb38a checker: allow casting strings to string aliases 2020-06-25 14:55:53 +02:00
Alexander Medvednikov ce6f687f65 checker: remove an unnecessary error for unexisting types 2020-06-25 14:51:58 +02:00
Alexander Medvednikov afa5a134b7 orm: move fields fetching to a separate function to remove copy pasta 2020-06-25 14:43:25 +02:00
Alexander Medvednikov 786be1d1c3 orm: move type logic to checker, so that sql queries can be used before type def 2020-06-25 12:05:24 +02:00
Alexander Medvednikov 83b300435a vweb: escape html; table: rename parent_typ to parent_type 2020-06-24 22:12:33 +02:00
Alexander Medvednikov 4b0e606ae8 checker: fix the alias check 2020-06-24 16:52:23 +02:00
Alexander Medvednikov 9df29d0dd2 checker: do not allow {} for aliases; orm: update stmt 2020-06-24 16:35:18 +02:00
Alexander Medvednikov 9d0cc7912a fmt: re-run on gen/fn.v 2020-06-24 14:56:44 +02:00
Alexander Medvednikov e918f8faf2 fmt: re-run on checker.v and cgen.v 2020-06-24 14:44:06 +02:00
Alexander Medvednikov 090e6e936a orm: SqlStmt 2020-06-24 14:32:17 +02:00
Daniel Däschle 852fca2151
all: call anon fns right away 2020-06-24 12:54:39 +02:00
yuyi 514ee9d396
cgen: fix optional void return error 2020-06-24 12:45:15 +02:00
yuyi 7efb3ecb34
checker: check deprecated functions 2020-06-23 16:25:24 +02:00
yuyi e2b5debc6b
checker: check optional type call 2020-06-23 11:39:58 +02:00
yuyi ed393896f5
checker: check printing of optional type 2020-06-23 11:38:30 +02:00
joe-conigliaro cff2874608
checker: fn arg - disallow any type with .str() to be passed as string 2020-06-23 08:51:18 +10:00
yuyi d232833573
gen: fix printing of generic arrays 2020-06-22 14:54:24 +02:00
Alexander Medvednikov 011e26ca9a checker: check sum types in `match`; cross compilation fixes; orm fixes 2020-06-21 23:09:53 +02:00
yuyi 81c19517d1
cgen: add gen_str_for_multi_return 2020-06-21 17:53:13 +02:00
Uwe Krüger 37927235cd
parser: trigger declaration of array element as error 2020-06-20 14:30:03 +02:00
joe-conigliaro ddd83f1fc6
checker: error if variable used before declaration 2020-06-20 12:42:08 +10:00
Alexander Medvednikov 1d8d19c977 vweb: return $vweb.html() 2020-06-20 03:12:38 +02:00
Alexander Medvednikov cd8392e42d orm: insert 2020-06-19 16:43:35 +02:00
Uwe Krüger c78cfa43bc
checker: make map literals have a real type 2020-06-19 15:00:27 +02:00
joe-conigliaro 7bc9e234a3
revert: checker: error if variable used before decleration p1 2020-06-19 21:37:09 +10:00
joe-conigliaro 8a5ca4cbdc
checker: error if variable used before decleration p1 2020-06-19 21:31:33 +10:00
Alexander Medvednikov e8b21b4242 checker: type `x` does not support indexing 2020-06-19 12:53:53 +02:00
Alexander Medvednikov 5f5228f0f3 test: fix `as` checker test 2020-06-19 11:48:19 +02:00
Alexander Medvednikov 274ecb71fa checker: `as` type test 2020-06-19 11:27:20 +02:00
Alexander Medvednikov ef36520509 checker: check if the type in `as` exists, skip void type errors 2020-06-19 11:15:15 +02:00
yuyi 5a6d440f68
checker: check `array_insert` `array_prepend` type mismatch 2020-06-19 10:49:43 +02:00
Alexander Medvednikov 5ddb129bc2 checker: use the new match syntax 2020-06-18 20:38:59 +02:00
joe-conigliaro 68143b7b22
parser/checker/gen: match shaddow cond var & as support: p1 2020-06-19 00:33:16 +10:00
Alexander Medvednikov fb5cae7376 orm: select where id = x 2020-06-17 04:05:20 +02:00
Alexander Medvednikov ed58192e4c v orm: select 2020-06-17 00:59:37 +02:00
joe-conigliaro d478b44915
parser/checker/gen: merge AssignExpr & AssignStmt into just AssignStmt 2020-06-16 21:20:16 +10:00
yuyi 2daf915371
parser: `expression evaluated but not used` error 2020-06-16 11:06:53 +02:00
Uwe Krüger f2d9fa3815
cgen: restructure string_inter_literal() 2020-06-16 10:41:51 +02:00
joe-conigliaro 0cd9066f44
parser/cgen: multiple attributes & better errors (closes #5334) 2020-06-15 22:59:09 +10:00
Delyan Angelov e73ed56231 tests: add parser/tests/, move checker_test.v=>compiler_errors_test.v 2020-06-15 10:58:34 +03:00
yuyi 2785a5bf65
checker: check return_duplicate_with_none (closes #5363) 2020-06-15 15:10:45 +10:00
Ruofan XU 90279a7108
checker: use ++ / -- instead of += 1 / -= 1 2020-06-14 19:05:05 +02:00
Swastik Baranwal a3a91f54a9
checker: handle `!is` in error messages 2020-06-14 19:03:29 +02:00
yuyi 90f07eb64a
parser: fix fn attributes empty error 2020-06-12 18:27:05 +02:00
Swastik Baranwal 56ae3797dd
checker: add checks and test for ~ operator 2020-06-12 12:05:20 +02:00
yuyi a66753871d
checker: check array.map/filter fn or anon_fn 2020-06-11 13:14:07 +02:00
Alexander Medvednikov a130d3cd14 vweb: fix unused var warning 2020-06-10 12:17:49 +02:00
joe-conigliaro e38a221dc3 checker: fix second use of gloabl ident 2020-06-10 16:59:31 +10:00
joe-conigliaro 3664bea912
vweb/checker: show tmpl var errors 2020-06-10 02:47:51 +10:00
Delyan Angelov 4fc41c4bc4 v: add compiler support for _unlikely_(x) too 2020-06-09 18:11:03 +03:00
Delyan Angelov c7d4360931 v: add full compiler support for _likely_(x) 2020-06-09 17:42:43 +03:00
joe-conigliaro 2799a6f065 parser/checker: fix global lookup 2020-06-09 17:08:11 +10:00
Delyan Angelov 99f311cc5f checker: protect against stackoverflows due to deep expr recursion 2020-06-08 20:35:33 +03:00
Alexander Medvednikov dabfc4ebd0 checker: do not display errors for incorrectly initialized vars 2020-06-08 13:10:47 +02:00
Enzo Baldisserri 11b7b97311
parser: fail when assigning to _ with := 2020-06-08 00:47:04 +02:00
joe-conigliaro 1c2bf7b244
vweb: impl of comptime tmpl parsing (fix vweb_example) 2020-06-07 20:26:45 +10:00
Alexander Medvednikov 2770077cb0 fmt: x.foo!() experiment 2020-06-06 16:05:24 +02:00
Alexander Medvednikov 40bd1be85f parser: fix ! 2020-06-06 12:43:35 +02:00
Alexander Medvednikov 7815c5b108 cgen: $action (ComptimeCall); vweb: hello world works! 2020-06-06 10:05:26 +02:00
joe-conigliaro 0a3486b4c5
checker: generic/vewb fix 2020-06-06 17:06:11 +10:00
joe-conigliaro c2fe4ffa85
table: remove fn to set idx & add new derive fn 2020-06-06 12:51:36 +10:00
joe-conigliaro 31d03bb113
checker/cgen: small generic fixes (mut arg return) 2020-06-06 12:24:27 +10:00
joe-conigliaro 3c4e4d4825
gen/checker: copy ptr & flag info in unwrap_generic 2020-06-05 18:41:15 +10:00
yuyi c9b395f9cf
checker: fix for_in_index type error 2020-06-05 09:44:25 +02:00
yuyi dd7ebf7fac
parser: check function argument mutable syntax 2020-06-04 15:20:43 +02:00
joe-conigliaro edd56bc080
table: allow type hold 8 flags at once 2020-06-04 22:38:54 +10:00
joe-conigliaro 41dca3ef58
checker/cgen: fix mutable generic fn args 2020-06-04 19:32:31 +10:00
yuyi 8a24d7d723
checker: optional return fix 2020-06-04 10:40:32 +02:00
Swastik Baranwal d286f67220
parser: update check for non mut types in fn 2020-06-03 18:47:18 +03:00
yuyi 1060de88af
parser: fix function mutable argument error 2020-06-03 12:28:16 +02:00
Alexander Medvednikov 00978da2c4 checker: fix mut int test 2020-06-03 10:45:19 +02:00
Alexander Medvednikov 888a43a684 checker: fix mut int test 2020-06-03 10:40:41 +02:00
Alexander Medvednikov 199f4f006b checker: fix mut int check 2020-06-03 10:36:56 +02:00
yuyi d0ff9a7c4a
parser: correct fn arg position in error message 2020-06-03 08:42:02 +03:00
Alexander Medvednikov 63b8cdea7a checker: require () in a && b || c 2020-06-02 22:21:44 +02:00
yuyi 1386c5df13
parser: use `?` instead of `?void` errpr 2020-06-02 17:24:24 +02:00
Uwe Krüger b0f66a4e05
checker: permit int -> f32, int64 -> f64 and similar promotions again 2020-06-02 17:00:14 +02:00
Alexander Medvednikov fb3e52ca63 all: `!is` operator 2020-06-02 16:18:12 +02:00
Alexander Medvednikov 138d730dfa checker: prepare for the is_changed check 2020-06-02 09:00:51 +02:00
Uwe Krüger 076089d3c5
checker: apply stricter type checks to function args and return types 2020-06-01 21:15:59 +02:00
Delyan Angelov ae8f7cf569 tests: fix some tests, that failed due to the stricter immutable checks 2020-06-01 18:24:38 +03:00
Delyan Angelov 86862d6a94 checker: remove mod_file_cacher exception 2020-06-01 17:43:03 +03:00
Alexander Medvednikov 3d83934caf checker: check mutating methods; generics fixes 2020-06-01 15:44:10 +02:00
Uwe Krüger faf3248e98
checker: check types for bitwise right shift 2020-05-31 12:58:13 +02:00
Alexander Medvednikov f87e872fa2 checker/cgen: interface match 2020-05-31 10:22:21 +02:00
Alexander Medvednikov 1ca7a607d3 checker/cgen: return interfaces 2020-05-30 19:54:16 +02:00
Uwe Krüger b74e1bb05d
checker: fix type mismatch in function argument for struct reference init 2020-05-30 15:42:12 +02:00
yuyi 1e504fb388
parser: check undefined variable of assign_expr 2020-05-29 17:38:40 +02:00
Alexander Medvednikov 1c11ac9fdf checker: make sure `is` is only used with interfaces and sum types 2020-05-29 06:46:01 +02:00
yuyi 3a340cbffc
checker: fix array_init cast type error 2020-05-29 06:39:46 +02:00
Alexander Medvednikov 81b44dc2c9 generics: generic call inside generic call; checker: check mut args at call 2020-05-29 04:30:00 +02:00
yuyi 28ffe2a6ee
checker: add error for struct fields of type []unknown 2020-05-28 19:38:53 +03:00
Alexander Medvednikov 9609b3a9c8 checker: make the method warning an error 2020-05-28 15:30:54 +02:00
Alexander Medvednikov 01dbb25a37 checker: do not allow defining methods on types from other modules 2020-05-28 15:23:20 +02:00
yuyi 977eb895e8
checker: check array init's element type 2020-05-28 13:32:12 +02:00
Alexander Medvednikov d6037cbcf2 generics: fix method calls 2020-05-28 05:58:19 +02:00
Alexander Medvednikov 4988d340b1 generics: fix method calls 2020-05-28 01:19:08 +02:00
yuyi 84edbd83da
all: fix struct names error 2020-05-27 19:12:34 +03:00
Alexander Medvednikov 670820cc59 parser: do not allow 1 char struct names 2020-05-27 16:00:00 +02:00
Alexander Medvednikov 5423a15f46 generics: more fixes 2020-05-27 15:56:30 +02:00
Emily Hudson 0b64e2190f
checker,cgen: unpack multi returns in return statements 2020-05-27 15:47:38 +03:00
Delyan Angelov 481f103dc9 checker: make an error using non `pub` fns from other modules 2020-05-27 12:00:19 +03:00