Fix regression in checking module type

This commit is contained in:
Richard Feldman 2025-11-18 07:56:25 -05:00
parent d2d2c30988
commit cd8bcf7286
No known key found for this signature in database
30 changed files with 449 additions and 12 deletions

View file

@ -789,6 +789,7 @@ pub const PackageEnv = struct {
// Canonicalize
var czer = try Can.init(env, parse_ast, module_envs_out);
try czer.canonicalizeFile();
try czer.validateForChecking();
czer.deinit();
// Type check using the SAME module_envs_map

View file

@ -8,9 +8,22 @@ type=file
helper = |x| x + 1
~~~
# EXPECTED
NIL
MISSING MAIN! FUNCTION - default_app_no_main.md:1:1:1:19
# PROBLEMS
NIL
**MISSING MAIN! FUNCTION**
Default app modules must have a `main!` function.
No `main!` function was found.
Add a main! function like:
`main! = |arg| { ... }`
**default_app_no_main.md:1:1:1:19:**
```roc
helper = |x| x + 1
```
^^^^^^^^^^^^^^^^^^
# TOKENS
~~~zig
LowerIdent,OpAssign,OpBar,LowerIdent,OpBar,LowerIdent,OpPlus,Int,

View file

@ -11,6 +11,7 @@ main! = |arg1, arg2| {
~~~
# EXPECTED
UNUSED VARIABLE - default_app_wrong_arity.md:1:16:1:20
MAIN! SHOULD TAKE 1 ARGUMENT - default_app_wrong_arity.md:1:1:3:2
# PROBLEMS
**UNUSED VARIABLE**
Variable `arg2` is not used anywhere in your code.
@ -24,6 +25,21 @@ main! = |arg1, arg2| {
^^^^
**MAIN! SHOULD TAKE 1 ARGUMENT**
`main!` is defined but has the wrong number of arguments. `main!` should take 1 argument.
Found `2` arguments.
Change it to:
`main! = |arg| { ... }`
**default_app_wrong_arity.md:1:1:3:2:**
```roc
main! = |arg1, arg2| {
arg1
}
```
# TOKENS
~~~zig
LowerIdent,OpAssign,OpBar,LowerIdent,Comma,LowerIdent,OpBar,OpenCurly,

View file

@ -11,6 +11,7 @@ mo|%
PARSE ERROR - fuzz_crash_001.md:1:1:1:3
PARSE ERROR - fuzz_crash_001.md:1:3:1:4
PARSE ERROR - fuzz_crash_001.md:1:4:1:5
MISSING MAIN! FUNCTION - fuzz_crash_001.md:1:1:1:5
# PROBLEMS
**PARSE ERROR**
A parsing error occurred: `statement_unexpected_token`
@ -45,6 +46,20 @@ mo|%
^
**MISSING MAIN! FUNCTION**
Default app modules must have a `main!` function.
No `main!` function was found.
Add a main! function like:
`main! = |arg| { ... }`
**fuzz_crash_001.md:1:1:1:5:**
```roc
mo|%
```
^^^^
# TOKENS
~~~zig
LowerIdent,OpBar,OpPercent,

View file

@ -20,6 +20,7 @@ PARSE ERROR - fuzz_crash_002.md:1:21:1:23
PARSE ERROR - fuzz_crash_002.md:1:23:1:24
PARSE ERROR - fuzz_crash_002.md:1:24:1:25
MALFORMED TYPE - fuzz_crash_002.md:1:6:1:7
MISSING MAIN! FUNCTION - fuzz_crash_002.md:1:1:1:25
# PROBLEMS
**UNEXPECTED TOKEN IN TYPE ANNOTATION**
The token **;** is not expected in a type annotation.
@ -152,6 +153,20 @@ modu:;::::::::::::::le[%
^
**MISSING MAIN! FUNCTION**
Default app modules must have a `main!` function.
No `main!` function was found.
Add a main! function like:
`main! = |arg| { ... }`
**fuzz_crash_002.md:1:1:1:25:**
```roc
modu:;::::::::::::::le[%
```
^^^^^^^^^^^^^^^^^^^^^^^^
# TOKENS
~~~zig
LowerIdent,OpColon,MalformedUnknownToken,OpDoubleColon,OpDoubleColon,OpDoubleColon,OpDoubleColon,OpDoubleColon,OpDoubleColon,OpDoubleColon,LowerIdent,OpenSquare,OpPercent,

View file

@ -13,6 +13,7 @@ PARSE ERROR - fuzz_crash_003.md:1:1:1:2
PARSE ERROR - fuzz_crash_003.md:1:3:1:4
PARSE ERROR - fuzz_crash_003.md:1:4:1:6
PARSE ERROR - fuzz_crash_003.md:1:6:1:6
MISSING MAIN! FUNCTION - fuzz_crash_003.md:1:1:1:6
# PROBLEMS
**UNCLOSED STRING**
This string is missing a closing quote.
@ -68,6 +69,20 @@ This is an unexpected parsing error. Please check your syntax.
^
**MISSING MAIN! FUNCTION**
Default app modules must have a `main!` function.
No `main!` function was found.
Add a main! function like:
`main! = |arg| { ... }`
**fuzz_crash_003.md:1:1:1:6:**
```roc
= "te
```
^^^^^
# TOKENS
~~~zig
OpAssign,StringStart,StringPart,StringEnd,

View file

@ -9,6 +9,7 @@ F
~~~
# EXPECTED
PARSE ERROR - fuzz_crash_004.md:2:1:2:1
MISSING MAIN! FUNCTION - fuzz_crash_004.md:1:1:1:2
# PROBLEMS
**PARSE ERROR**
Type applications require parentheses around their type arguments.
@ -33,6 +34,20 @@ Other valid examples:
^
**MISSING MAIN! FUNCTION**
Default app modules must have a `main!` function.
No `main!` function was found.
Add a main! function like:
`main! = |arg| { ... }`
**fuzz_crash_004.md:1:1:1:2:**
```roc
F
```
^
# TOKENS
~~~zig
UpperIdent,

View file

@ -9,6 +9,7 @@ modu
~~~
# EXPECTED
PARSE ERROR - fuzz_crash_005.md:1:1:1:5
MISSING MAIN! FUNCTION - fuzz_crash_005.md:1:1:1:5
# PROBLEMS
**PARSE ERROR**
A parsing error occurred: `statement_unexpected_token`
@ -21,6 +22,20 @@ modu
^^^^
**MISSING MAIN! FUNCTION**
Default app modules must have a `main!` function.
No `main!` function was found.
Add a main! function like:
`main! = |arg| { ... }`
**fuzz_crash_005.md:1:1:1:5:**
```roc
modu
```
^^^^
# TOKENS
~~~zig
LowerIdent,

View file

@ -11,6 +11,7 @@ ff8.8.d
PARSE ERROR - fuzz_crash_007.md:1:1:1:4
PARSE ERROR - fuzz_crash_007.md:1:4:1:6
PARSE ERROR - fuzz_crash_007.md:1:6:1:8
MISSING MAIN! FUNCTION - fuzz_crash_007.md:1:1:1:8
# PROBLEMS
**PARSE ERROR**
A parsing error occurred: `statement_unexpected_token`
@ -45,6 +46,20 @@ ff8.8.d
^^
**MISSING MAIN! FUNCTION**
Default app modules must have a `main!` function.
No `main!` function was found.
Add a main! function like:
`main! = |arg| { ... }`
**fuzz_crash_007.md:1:1:1:8:**
```roc
ff8.8.d
```
^^^^^^^
# TOKENS
~~~zig
LowerIdent,NoSpaceDotInt,NoSpaceDotLowerIdent,

View file

@ -12,6 +12,7 @@ ASCII CONTROL CHARACTER - :0:0:0:0
PARSE ERROR - fuzz_crash_008.md:1:1:1:2
PARSE ERROR - fuzz_crash_008.md:1:3:1:4
PARSE ERROR - fuzz_crash_008.md:1:4:1:5
MISSING MAIN! FUNCTION - fuzz_crash_008.md:1:1:1:5
# PROBLEMS
**ASCII CONTROL CHARACTER**
ASCII control characters are not allowed in Roc source code.
@ -51,6 +52,20 @@ This is an unexpected parsing error. Please check your syntax.
^
**MISSING MAIN! FUNCTION**
Default app modules must have a `main!` function.
No `main!` function was found.
Add a main! function like:
`main! = |arg| { ... }`
**fuzz_crash_008.md:1:1:1:5:**
```roc
||1
```
^^^^
# TOKENS
~~~zig
OpBar,OpBar,Int,

View file

@ -19,6 +19,7 @@ PARSE ERROR - fuzz_crash_009.md:1:3:1:4
PARSE ERROR - fuzz_crash_009.md:1:4:1:5
PARSE ERROR - fuzz_crash_009.md:1:5:1:6
PARSE ERROR - fuzz_crash_009.md:2:6:2:7
MISSING MAIN! FUNCTION - fuzz_crash_009.md:1:2:6:12
# PROBLEMS
**UNCLOSED STRING**
This string is missing a closing quote.
@ -85,6 +86,24 @@ This is an unexpected parsing error. Please check your syntax.
^
**MISSING MAIN! FUNCTION**
Default app modules must have a `main!` function.
No `main!` function was found.
Add a main! function like:
`main! = |arg| { ... }`
**fuzz_crash_009.md:1:2:6:12:**
```roc
f{o,
]
foo =
"onmo %
```
# TOKENS
~~~zig
LowerIdent,OpenCurly,LowerIdent,Comma,

View file

@ -18,6 +18,7 @@ PARSE ERROR - fuzz_crash_010.md:1:2:1:3
PARSE ERROR - fuzz_crash_010.md:1:3:1:4
PARSE ERROR - fuzz_crash_010.md:1:4:1:5
PARSE ERROR - fuzz_crash_010.md:2:6:2:7
MISSING MAIN! FUNCTION - fuzz_crash_010.md:1:1:5:35
# PROBLEMS
**ASCII CONTROL CHARACTER**
ASCII control characters are not allowed in Roc source code.
@ -90,6 +91,23 @@ This is an unexpected parsing error. Please check your syntax.
^
**MISSING MAIN! FUNCTION**
Default app modules must have a `main!` function.
No `main!` function was found.
Add a main! function like:
`main! = |arg| { ... }`
**fuzz_crash_010.md:1:1:5:35:**
```roc
H{o,
 ]
foo =
"on (string 'onmo %')))
```
# TOKENS
~~~zig
UpperIdent,OpenCurly,LowerIdent,Comma,

View file

@ -15,6 +15,7 @@ PARSE ERROR - fuzz_crash_012.md:1:4:1:5
PARSE ERROR - fuzz_crash_012.md:1:5:1:6
PARSE ERROR - fuzz_crash_012.md:1:6:1:16
PARSE ERROR - fuzz_crash_012.md:1:16:1:17
MISSING MAIN! FUNCTION - fuzz_crash_012.md:1:1:1:17
# PROBLEMS
**PARSE ERROR**
A parsing error occurred: `statement_unexpected_token`
@ -93,6 +94,20 @@ This is an unexpected parsing error. Please check your syntax.
^
**MISSING MAIN! FUNCTION**
Default app modules must have a `main!` function.
No `main!` function was found.
Add a main! function like:
`main! = |arg| { ... }`
**fuzz_crash_012.md:1:1:1:17:**
```roc
||(|(l888888888|
```
^^^^^^^^^^^^^^^^
# TOKENS
~~~zig
OpBar,OpBar,NoSpaceOpenRound,OpBar,NoSpaceOpenRound,LowerIdent,OpBar,

View file

@ -10,6 +10,7 @@ type=file
# EXPECTED
PARSE ERROR - fuzz_crash_013.md:1:1:1:2
PARSE ERROR - fuzz_crash_013.md:1:2:1:3
MISSING MAIN! FUNCTION - fuzz_crash_013.md:1:1:1:3
# PROBLEMS
**PARSE ERROR**
A parsing error occurred: `statement_unexpected_token`
@ -33,6 +34,20 @@ This is an unexpected parsing error. Please check your syntax.
^
**MISSING MAIN! FUNCTION**
Default app modules must have a `main!` function.
No `main!` function was found.
Add a main! function like:
`main! = |arg| { ... }`
**fuzz_crash_013.md:1:1:1:3:**
```roc
0{
```
^^
# TOKENS
~~~zig
Int,OpenCurly,

View file

@ -14,6 +14,7 @@ PARSE ERROR - fuzz_crash_014.md:1:1:1:3
PARSE ERROR - fuzz_crash_014.md:1:3:1:5
PARSE ERROR - fuzz_crash_014.md:2:1:2:6
PARSE ERROR - fuzz_crash_014.md:3:1:3:5
MISSING MAIN! FUNCTION - fuzz_crash_014.md:1:1:3:5
# PROBLEMS
**PARSE ERROR**
A parsing error occurred: `statement_unexpected_token`
@ -59,6 +60,21 @@ This is an unexpected parsing error. Please check your syntax.
^^^^
**MISSING MAIN! FUNCTION**
Default app modules must have a `main!` function.
No `main!` function was found.
Add a main! function like:
`main! = |arg| { ... }`
**fuzz_crash_014.md:1:1:3:5:**
```roc
0b.0
0bu22
0u22
```
# TOKENS
~~~zig
MalformedNumberNoDigits,NoSpaceDotInt,

View file

@ -18,6 +18,7 @@ PARSE ERROR - fuzz_crash_015.md:2:1:2:4
PARSE ERROR - fuzz_crash_015.md:3:1:3:4
PARSE ERROR - fuzz_crash_015.md:3:4:3:6
PARSE ERROR - fuzz_crash_015.md:4:1:4:3
MISSING MAIN! FUNCTION - fuzz_crash_015.md:1:1:4:3
# PROBLEMS
**LEADING ZERO**
Numbers cannot have leading zeros.
@ -90,6 +91,22 @@ This is an unexpected parsing error. Please check your syntax.
^^
**MISSING MAIN! FUNCTION**
Default app modules must have a `main!` function.
No `main!` function was found.
Add a main! function like:
`main! = |arg| { ... }`
**fuzz_crash_015.md:1:1:4:3:**
```roc
0o0.0
0_0
0u8.0
0_
```
# TOKENS
~~~zig
Int,NoSpaceDotInt,

View file

@ -10,6 +10,7 @@ type=file
# EXPECTED
PARSE ERROR - fuzz_crash_016.md:1:1:1:2
PARSE ERROR - fuzz_crash_016.md:1:2:1:3
MISSING MAIN! FUNCTION - fuzz_crash_016.md:1:1:1:3
# PROBLEMS
**PARSE ERROR**
A parsing error occurred: `statement_unexpected_token`
@ -33,6 +34,20 @@ This is an unexpected parsing error. Please check your syntax.
^
**MISSING MAIN! FUNCTION**
Default app modules must have a `main!` function.
No `main!` function was found.
Add a main! function like:
`main! = |arg| { ... }`
**fuzz_crash_016.md:1:1:1:3:**
```roc
0|
```
^^
# TOKENS
~~~zig
Int,OpBar,

View file

@ -11,6 +11,7 @@ foo = "hello ${namF
# EXPECTED
PARSE ERROR - fuzz_crash_017.md:2:7:2:8
UNRECOGNIZED SYNTAX - fuzz_crash_017.md:2:7:2:20
MISSING MAIN! FUNCTION - fuzz_crash_017.md:1:1:2:20
# PROBLEMS
**PARSE ERROR**
A parsing error occurred: `string_expected_close_interpolation`
@ -34,6 +35,20 @@ foo = "hello ${namF
This might be a syntax error, an unsupported language feature, or a typo.
**MISSING MAIN! FUNCTION**
Default app modules must have a `main!` function.
No `main!` function was found.
Add a main! function like:
`main! = |arg| { ... }`
**fuzz_crash_017.md:1:1:2:20:**
```roc
me = "luc"
foo = "hello ${namF
```
# TOKENS
~~~zig
LowerIdent,OpAssign,StringStart,StringPart,StringEnd,

View file

@ -12,6 +12,7 @@ type=file
PARSE ERROR - fuzz_crash_018.md:1:1:1:2
PARSE ERROR - fuzz_crash_018.md:2:1:2:3
UNDECLARED TYPE - fuzz_crash_018.md:1:5:1:6
MISSING MAIN! FUNCTION - fuzz_crash_018.md:1:1:2:3
# PROBLEMS
**PARSE ERROR**
A parsing error occurred: `statement_unexpected_token`
@ -46,6 +47,20 @@ This type is referenced here:
^
**MISSING MAIN! FUNCTION**
Default app modules must have a `main!` function.
No `main!` function was found.
Add a main! function like:
`main! = |arg| { ... }`
**fuzz_crash_018.md:1:1:2:3:**
```roc
0 b:S
.R
```
# TOKENS
~~~zig
Int,LowerIdent,OpColon,UpperIdent,

View file

@ -20,6 +20,7 @@ PARSE ERROR - fuzz_crash_021.md:1:16:1:16
PARSE ERROR - fuzz_crash_021.md:3:1:3:5
PARSE ERROR - fuzz_crash_021.md:4:1:4:1
MALFORMED TYPE - fuzz_crash_021.md:3:14:3:15
TYPE MODULE MISSING MATCHING TYPE - fuzz_crash_021.md:1:1:3:15
# PROBLEMS
**UNCLOSED STRING**
This string is missing a closing quote.
@ -141,6 +142,23 @@ Pair(a, b+ : (
^
**TYPE MODULE MISSING MATCHING TYPE**
Type modules must have a type declaration matching the module name.
This file is named `fuzz_crash_021`.roc, but no top-level type declaration named `fuzz_crash_021` was found.
Add either:
`fuzz_crash_021 := ...` (nominal type)
or:
`fuzz_crash_021 : ...` (type alias)
**fuzz_crash_021.md:1:1:3:15:**
```roc
Fli/main.roc" }
Pair(a, b+ : (
```
# TOKENS
~~~zig
UpperIdent,OpSlash,LowerIdent,NoSpaceDotLowerIdent,StringStart,StringPart,StringEnd,

View file

@ -18,6 +18,7 @@ PARSE ERROR - fuzz_crash_031.md:1:7:1:8
PARSE ERROR - fuzz_crash_031.md:4:1:4:6
UNEXPECTED TOKEN IN EXPRESSION - fuzz_crash_031.md:4:10:4:11
UNRECOGNIZED SYNTAX - fuzz_crash_031.md:4:10:4:11
MISSING MAIN! FUNCTION - fuzz_crash_031.md:1:1:4:11
# PROBLEMS
**UNCLOSED SINGLE QUOTE**
This single-quoted literal is missing a closing quote.
@ -95,6 +96,22 @@ vavar t= '
This might be a syntax error, an unsupported language feature, or a typo.
**MISSING MAIN! FUNCTION**
Default app modules must have a `main!` function.
No `main!` function was found.
Add a main! function like:
`main! = |arg| { ... }`
**fuzz_crash_031.md:1:1:4:11:**
```roc
mule []
#el
vavar t= '
```
# TOKENS
~~~zig
LowerIdent,OpenSquare,CloseSquare,

View file

@ -10,6 +10,7 @@ type=file
# EXPECTED
PARSE ERROR - fuzz_crash_038.md:1:1:1:2
PARSE ERROR - fuzz_crash_038.md:1:2:1:8
MISSING MAIN! FUNCTION - fuzz_crash_038.md:1:1:1:13
# PROBLEMS
**PARSE ERROR**
A parsing error occurred: `statement_unexpected_token`
@ -33,6 +34,20 @@ This is an unexpected parsing error. Please check your syntax.
^^^^^^
**MISSING MAIN! FUNCTION**
Default app modules must have a `main!` function.
No `main!` function was found.
Add a main! function like:
`main! = |arg| { ... }`
**fuzz_crash_038.md:1:1:1:13:**
```roc
*import B as
```
^^^^^^^^^^^^
# TOKENS
~~~zig
OpStar,KwImport,UpperIdent,KwAs,

View file

@ -8,9 +8,22 @@ type=file
~~~
# EXPECTED
NIL
MISSING MAIN! FUNCTION - fuzz_crash_064.md:2:1:2:1
# PROBLEMS
NIL
**MISSING MAIN! FUNCTION**
Default app modules must have a `main!` function.
No `main!` function was found.
Add a main! function like:
`main! = |arg| { ... }`
**fuzz_crash_064.md:2:1:2:1:**
```roc
```
^
# TOKENS
~~~zig
EndOfFile,

View file

@ -9,9 +9,22 @@ type=file
b:r
~~~
# EXPECTED
NIL
MISSING MAIN! FUNCTION - fuzz_crash_079.md:2:1:2:4
# PROBLEMS
NIL
**MISSING MAIN! FUNCTION**
Default app modules must have a `main!` function.
No `main!` function was found.
Add a main! function like:
`main! = |arg| { ... }`
**fuzz_crash_079.md:2:1:2:4:**
```roc
b:r
```
^^^
# TOKENS
~~~zig
LowerIdent,OpColon,LowerIdent,

View file

@ -10,6 +10,7 @@ type=file
# EXPECTED
PARSE ERROR - fuzz_hang_001.md:1:1:1:2
PARSE ERROR - fuzz_hang_001.md:1:3:1:4
MISSING MAIN! FUNCTION - fuzz_hang_001.md:1:1:1:4
# PROBLEMS
**PARSE ERROR**
A parsing error occurred: `statement_unexpected_token`
@ -33,6 +34,20 @@ This is an unexpected parsing error. Please check your syntax.
^
**MISSING MAIN! FUNCTION**
Default app modules must have a `main!` function.
No `main!` function was found.
Add a main! function like:
`main! = |arg| { ... }`
**fuzz_hang_001.md:1:1:1:4:**
```roc
0 (
```
^^^
# TOKENS
~~~zig
Int,OpenRound,

View file

@ -14,9 +14,29 @@ useBar : Foo.Bar
useBar = Something
~~~
# EXPECTED
NIL
TYPE MODULE MISSING MATCHING TYPE - nominal_associated_vs_module.md:1:1:7:19
# PROBLEMS
NIL
**TYPE MODULE MISSING MATCHING TYPE**
Type modules must have a type declaration matching the module name.
This file is named `nominal_associated_vs_module`.roc, but no top-level type declaration named `nominal_associated_vs_module` was found.
Add either:
`nominal_associated_vs_module := ...` (nominal type)
or:
`nominal_associated_vs_module : ...` (type alias)
**nominal_associated_vs_module.md:1:1:7:19:**
```roc
Foo := [Whatever].{
Bar := [Something]
}
# This should resolve to the local Foo.Bar, not try to import from a Foo module
useBar : Foo.Bar
useBar = Something
```
# TOKENS
~~~zig
UpperIdent,OpColonEqual,OpenSquare,UpperIdent,CloseSquare,Dot,OpenCurly,

View file

@ -16,6 +16,7 @@ PARSE ERROR - 002.md:1:1:1:3
PARSE ERROR - 002.md:1:4:1:6
PARSE ERROR - 002.md:1:7:1:8
PARSE ERROR - 002.md:1:8:1:9
MISSING MAIN! FUNCTION - 002.md:1:1:5:12
# PROBLEMS
**PARSE ERROR**
A parsing error occurred: `statement_unexpected_token`
@ -61,6 +62,23 @@ This is an unexpected parsing error. Please check your syntax.
^
**MISSING MAIN! FUNCTION**
Default app modules must have a `main!` function.
No `main!` function was found.
Add a main! function like:
`main! = |arg| { ... }`
**002.md:1:1:5:12:**
```roc
@2 := {}
foo = "one"
bar = "two"
```
# TOKENS
~~~zig
OpaqueName,OpColonEqual,OpenCurly,CloseCurly,

View file

@ -8,9 +8,24 @@ type=file
SomeOtherName := [A, B]
~~~
# EXPECTED
NIL
TYPE MODULE MISSING MATCHING TYPE - WrongName.md:1:1:1:24
# PROBLEMS
NIL
**TYPE MODULE MISSING MATCHING TYPE**
Type modules must have a type declaration matching the module name.
This file is named `WrongName`.roc, but no top-level type declaration named `WrongName` was found.
Add either:
`WrongName := ...` (nominal type)
or:
`WrongName : ...` (type alias)
**WrongName.md:1:1:1:24:**
```roc
SomeOtherName := [A, B]
```
^^^^^^^^^^^^^^^^^^^^^^^
# TOKENS
~~~zig
UpperIdent,OpColonEqual,OpenSquare,UpperIdent,Comma,UpperIdent,CloseSquare,

View file

@ -8,9 +8,22 @@ type=file
x = 5
~~~
# EXPECTED
NIL
MISSING MAIN! FUNCTION - no_type_no_main.md:1:1:1:6
# PROBLEMS
NIL
**MISSING MAIN! FUNCTION**
Default app modules must have a `main!` function.
No `main!` function was found.
Add a main! function like:
`main! = |arg| { ... }`
**no_type_no_main.md:1:1:1:6:**
```roc
x = 5
```
^^^^^
# TOKENS
~~~zig
LowerIdent,OpAssign,Int,