diff options
| author | Marc Vertes <mvertes@free.fr> | 2026-01-26 18:44:29 +0100 |
|---|---|---|
| committer | Marc Vertes <mvertes@free.fr> | 2026-01-26 18:44:29 +0100 |
| commit | aa5861917ac2543f85bf4cfefbb69cf501d4de41 (patch) | |
| tree | 94122ea3167c295da822f03d075a085b4f87e9ea /interp | |
| parent | ece8bdbc45afc3ea626db884ea3283d9a8395ae5 (diff) | |
fix: improve multi assign
Do not consider assign operators in expression handling, they are
part of statements.
Isolate parsing of left hand side and right hand side in assignments.
Diffstat (limited to 'interp')
| -rw-r--r-- | interp/interpreter_test.go | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/interp/interpreter_test.go b/interp/interpreter_test.go index 30f3fac..e6274a4 100644 --- a/interp/interpreter_test.go +++ b/interp/interpreter_test.go @@ -72,10 +72,13 @@ func TestExpr(t *testing.T) { func TestAssign(t *testing.T) { run(t, []etest{ - {src: "var a int = 1; a", res: "1"}, // #00 - {src: "var a, b int = 1, 2; b", res: "2"}, // #01 - {src: "var a, b int; a, b = 1, 2; b", res: "2"}, // #02 - {src: "a, b := 1, 2; b", res: "2"}, // #03 + {src: "var a int = 1; a", res: "1"}, // #00 + {src: "var a, b int = 1, 2; b", res: "2"}, // #01 + {src: "var a, b int; a, b = 1, 2; b", res: "2"}, // #02 + {src: "a, b := 1, 2; b", res: "2"}, // #03 + {src: "func f() int {return 2}; a := f(); a", res: "2"}, // #04 + // {src: "func f() (int, int) {return 2, 3}; a, b := f(), b", res: "3"}, // #05 + // {src: "func f() (int, int) {return 2, 3}; var a, b = f(), b", res: "3"}, // #06 }) } @@ -114,6 +117,7 @@ func TestFunc(t *testing.T) { {src: "func f(a, b, c int) int {return a+b-c} ; f(7, 1, 3)", res: "5"}, // #07 {src: "var a int; func f() {a = a+2}; f(); a", res: "2"}, // #08 {src: "var f = func(a int) int {return a+3}; f(2)", res: "5"}, // #09 + {src: "var a int; func f(a int) {a = a+2}; f(); a", res: "0"}, // #10 }) } |
