Skip to content

Commit 996dd8c

Browse files
committed
parser: Rework String() method for Node Var
Rework String() method for Node type Var, so that it works better in errors messages in follow up commits.
1 parent 0ccd7e2 commit 996dd8c

File tree

2 files changed

+32
-32
lines changed

2 files changed

+32
-32
lines changed

pkg/parser/ast.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ func (e *EventHandler) Type() *Type {
170170
}
171171

172172
func (v *Var) String() string {
173-
return v.Name + ":" + v.T.String()
173+
return v.Name
174174
}
175175
func (v *Var) Type() *Type {
176176
return v.T

pkg/parser/parser_test.go

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -9,27 +9,27 @@ import (
99

1010
func TestParseDeclaration(t *testing.T) {
1111
tests := map[string][]string{
12-
"a := 1": []string{"a:NUM=1"},
13-
"b:bool": []string{"b:BOOL=false"},
14-
"\nb:bool\n": []string{"b:BOOL=false"},
12+
"a := 1": []string{"a=1"},
13+
"b:bool": []string{"b=false"},
14+
"\nb:bool\n": []string{"b=false"},
1515
`a := "abc"
1616
b:bool
17-
c := true`: []string{"a:STRING='abc'", "b:BOOL=false", "c:BOOL=true"},
18-
"a:num[]": []string{"a:ARRAY NUM=[]"},
19-
"a:num[]{}": []string{"a:MAP ARRAY NUM={}"},
20-
"abc:any[]{}": []string{"abc:MAP ARRAY ANY={}"},
21-
"a := bool[true]": []string{"a:ARRAY BOOL=[true]"}, // TODO: should be print "a:ARRAY BOOL=[true]
22-
"a := num[]": []string{"a:ARRAY NUM=[]"},
23-
"a := num[][num[1 2]num[3 4]]": []string{"a:ARRAY ARRAY NUM=[[1, 2], [3, 4]]"},
24-
"a := num{a:1 b:2}": []string{"a:MAP NUM={a:1, b:2}"},
25-
"a := num[]{digits: num[1 2 3] nums: num[4 5]}": []string{"a:MAP ARRAY NUM={digits:[1, 2, 3], nums:[4, 5]}"},
26-
"a := num[]{digits: num[] nums: num[4]}": []string{"a:MAP ARRAY NUM={digits:[], nums:[4]}"},
27-
"a := num[]{digits: num[4] nums: num[]}": []string{"a:MAP ARRAY NUM={digits:[4], nums:[]}"},
28-
"a := num{}[]": []string{"a:ARRAY MAP NUM=[]"},
29-
"a := num{}[num{}]": []string{"a:ARRAY MAP NUM=[{}]"},
30-
"a := any{a:1 b:true}": []string{"a:MAP ANY={a:1, b:true}"},
31-
"a := any{a:1 b:true c:num[1]}": []string{"a:MAP ANY={a:1, b:true, c:[1]}"},
32-
"a := num{}[num{a:1}]": []string{"a:ARRAY MAP NUM=[{a:1}]"},
17+
c := true`: []string{"a='abc'", "b=false", "c=true"},
18+
"a:num[]": []string{"a=[]"},
19+
"a:num[]{}": []string{"a={}"},
20+
"abc:any[]{}": []string{"abc={}"},
21+
"a := bool[true]": []string{"a=[true]"},
22+
"a := num[]": []string{"a=[]"},
23+
"a := num[][num[1 2]num[3 4]]": []string{"a=[[1, 2], [3, 4]]"},
24+
"a := num{a:1 b:2}": []string{"a={a:1, b:2}"},
25+
"a := num[]{digits: num[1 2 3] nums: num[4 5]}": []string{"a={digits:[1, 2, 3], nums:[4, 5]}"},
26+
"a := num[]{digits: num[] nums: num[4]}": []string{"a={digits:[], nums:[4]}"},
27+
"a := num[]{digits: num[4] nums: num[]}": []string{"a={digits:[4], nums:[]}"},
28+
"a := num{}[]": []string{"a=[]"},
29+
"a := num{}[num{}]": []string{"a=[{}]"},
30+
"a := any{a:1 b:true}": []string{"a={a:1, b:true}"},
31+
"a := any{a:1 b:true c:num[1]}": []string{"a={a:1, b:true, c:[1]}"},
32+
"a := num{}[num{a:1}]": []string{"a=[{a:1}]"},
3333
}
3434
for input, wantSlice := range tests {
3535
want := strings.Join(wantSlice, "\n") + "\n"
@@ -85,7 +85,7 @@ func TestParseDeclarationError(t *testing.T) {
8585
parser := New(input, testBuiltins())
8686
_ = parser.Parse()
8787
assertParseError(t, parser, input)
88-
assert.Equal(t, err1, parser.errors[0].String(), "input: %s\nerrors:\n%s", input, parser.ErrorsString())
88+
assert.Equal(t, err1, parser.MaxErrorsString(1), "input: %s\nerrors:\n%s", input, parser.ErrorsString())
8989
}
9090
}
9191

@@ -94,14 +94,14 @@ func TestFunctionCall(t *testing.T) {
9494
"print": []string{"print()"},
9595
"print 123": []string{"print(123)"},
9696
`print 123 "abc"`: []string{"print(123, 'abc')"},
97-
"a:=1 \n print a": []string{"a:NUM=1", "print(a:NUM)"},
98-
`a := len "abc"`: []string{"a:NUM=len('abc')"},
97+
"a:=1 \n print a": []string{"a=1", "print(a)"},
98+
`a := len "abc"`: []string{"a=len('abc')"},
9999
`len "abc"`: []string{"len('abc')"},
100100
`len num[]`: []string{"len([])"},
101-
"a:string \n print a": []string{"a:STRING=''", "print(a:STRING)"},
101+
"a:string \n print a": []string{"a=''", "print(a)"},
102102
`a:=true
103103
b:string
104-
print a b`: []string{"a:BOOL=true", "b:STRING=''", "print(a:BOOL, b:STRING)"},
104+
print a b`: []string{"a=true", "b=''", "print(a, b)"},
105105
}
106106
for input, wantSlice := range tests {
107107
want := strings.Join(wantSlice, "\n") + "\n"
@@ -138,7 +138,7 @@ func TestFunctionCallError(t *testing.T) {
138138
parser := New(input, builtins)
139139
_ = parser.Parse()
140140
assertParseError(t, parser, input)
141-
assert.Equal(t, err1, parser.errors[0].String(), "input: %s\nerrors:\n%s", input, parser.ErrorsString())
141+
assert.Equal(t, err1, parser.MaxErrorsString(1), "input: %s\nerrors:\n%s", input, parser.ErrorsString())
142142
}
143143
}
144144

@@ -170,7 +170,7 @@ x := len "123"
170170
got := parser.Parse()
171171
assertNoParseError(t, parser, input)
172172
want := `
173-
x:NUM=len('123')
173+
x=len('123')
174174
`[1:]
175175
assert.Equal(t, want, got.String())
176176
}
@@ -206,7 +206,7 @@ end
206206
assert.Equal(t, NUM_TYPE, n1.Type())
207207
assert.Equal(t, 1, len(got.Body.Statements)) // return statement; if statement not yet implemented.
208208
returnStmt := got.Body.Statements[0]
209-
assert.Equal(t, "return n1:NUM", returnStmt.String())
209+
assert.Equal(t, "return n1", returnStmt.String())
210210
}
211211

212212
func TestScope(t *testing.T) {
@@ -307,7 +307,7 @@ end
307307
parser := New(input, testBuiltins())
308308
_ = parser.Parse()
309309
assertParseError(t, parser, input)
310-
assert.Equal(t, wantErr, parser.errors[0].String())
310+
assert.Equal(t, wantErr, parser.MaxErrorsString(1))
311311
}
312312
}
313313

@@ -324,11 +324,11 @@ end`
324324
parser := New(input, testBuiltins())
325325
got := parser.Parse()
326326
assertParseError(t, parser, input)
327-
assert.Equal(t, "line 2 column 1: unknown function 'move'", parser.errors[0].String())
327+
assert.Equal(t, "line 2 column 1: unknown function 'move'", parser.MaxErrorsString(1))
328328
assert.Equal(t, "line 3 column 1: unknown function 'line'", parser.errors[1].String())
329329
want := `
330-
x:NUM=12
331-
print('x:', x:NUM)
330+
x=12
331+
print('x:', x)
332332
`[1:]
333333
assert.Equal(t, want, got.String())
334334
}

0 commit comments

Comments
 (0)