diff options
| -rw-r--r-- | interp/interpreter_test.go | 7 | ||||
| -rw-r--r-- | parser/README.md | 1 | ||||
| -rw-r--r-- | parser/type.go | 4 |
3 files changed, 10 insertions, 2 deletions
diff --git a/interp/interpreter_test.go b/interp/interpreter_test.go index ea4da53..adb550b 100644 --- a/interp/interpreter_test.go +++ b/interp/interpreter_test.go @@ -70,6 +70,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 + }) +} + func TestCompare(t *testing.T) { run(t, []etest{ {src: "a := 1; a < 2", res: "true"}, diff --git a/parser/README.md b/parser/README.md index dda3f25..c3628a6 100644 --- a/parser/README.md +++ b/parser/README.md @@ -50,6 +50,7 @@ Go language support: - [ ] deterministic maps - [ ] channel types - [ ] channel operations +- [ ] multi-assign expressions - [x] var defined by assign := - [x] var assign = - [x] var declaration diff --git a/parser/type.go b/parser/type.go index b56a332..4412501 100644 --- a/parser/type.go +++ b/parser/type.go @@ -172,7 +172,7 @@ func (p *Parser) parseParamTypes(in Tokens, flag typeFlag) (types []*vm.Type, va // Type was omitted, apply the previous one from the right. types = append([]*vm.Type{types[0]}, types...) p.addSymVar(i, param, types[0], flag, local) - vars = append(vars, param) + vars = append([]string{param}, vars...) continue } } @@ -184,7 +184,7 @@ func (p *Parser) parseParamTypes(in Tokens, flag typeFlag) (types []*vm.Type, va p.addSymVar(i, param, typ, flag, local) } types = append([]*vm.Type{typ}, types...) - vars = append(vars, param) + vars = append([]string{param}, vars...) } return types, vars, err } |
