d2parser: Pass whitespace_range test

Closes #1279
This commit is contained in:
Anmol Sethi 2023-05-04 10:43:04 -07:00 committed by Alexander Wang
parent fa5eced013
commit e6b52a357f
No known key found for this signature in database
GPG key ID: D89FA31966BDBECE
3 changed files with 105 additions and 10 deletions

View file

@ -919,11 +919,12 @@ func (p *parser) parseKey() (k *d2ast.KeyPath) {
Start: p.pos,
},
}
defer k.Range.End.From(&p.pos)
defer func() {
if len(k.Path) == 0 {
k = nil
} else {
k.Range.End = k.Path[len(k.Path)-1].Unbox().GetRange().End
}
}()
@ -948,6 +949,9 @@ func (p *parser) parseKey() (k *d2ast.KeyPath) {
return k
}
if len(k.Path) == 0 {
k.Range.Start = s.GetRange().Start
}
k.Path = append(k.Path, &sb)
r, newlines, eof = p.peekNotSpace()

View file

@ -20,8 +20,8 @@ func TestParse(t *testing.T) {
t.Parallel()
testCases := []struct {
name string
text string
name string
text string
assert func(t testing.TB, ast *d2ast.Map, err error)
// exp is in testdata/d2parser/TestParse/${name}.json
@ -382,14 +382,14 @@ c-
},
{
name: "whitespace_range",
text: `a -> b -> c`,
text: ` a -> b -> c `,
assert: func(t testing.TB, ast *d2ast.Map, err error) {
assert.Equal(t, "1:1", ast.Nodes[0].MapKey.Edges[0].Src.Range.Start.String())
assert.Equal(t, "1:2", ast.Nodes[0].MapKey.Edges[0].Src.Range.End.String())
assert.Equal(t, "1:6", ast.Nodes[0].MapKey.Edges[0].Dst.Range.Start.String())
assert.Equal(t, "1:7", ast.Nodes[0].MapKey.Edges[0].Dst.Range.End.String())
assert.Equal(t, "1:6", ast.Nodes[0].MapKey.Edges[1].Dst.Range.Start.String())
assert.Equal(t, "1:6", ast.Nodes[0].MapKey.Edges[1].Dst.Range.End.String())
assert.Equal(t, "1:2", ast.Nodes[0].MapKey.Edges[0].Src.Range.Start.String())
assert.Equal(t, "1:3", ast.Nodes[0].MapKey.Edges[0].Src.Range.End.String())
assert.Equal(t, "1:7", ast.Nodes[0].MapKey.Edges[0].Dst.Range.Start.String())
assert.Equal(t, "1:8", ast.Nodes[0].MapKey.Edges[0].Dst.Range.End.String())
assert.Equal(t, "1:12", ast.Nodes[0].MapKey.Edges[1].Dst.Range.Start.String())
assert.Equal(t, "1:13", ast.Nodes[0].MapKey.Edges[1].Dst.Range.End.String())
},
},
}

91
testdata/d2parser/TestParse/whitespace_range.exp.json generated vendored Normal file
View file

@ -0,0 +1,91 @@
{
"ast": {
"range": "d2/testdata/d2parser/TestParse/whitespace_range.d2,0:0:0-0:13:13",
"nodes": [
{
"map_key": {
"range": "d2/testdata/d2parser/TestParse/whitespace_range.d2,0:1:1-0:13:13",
"edges": [
{
"range": "d2/testdata/d2parser/TestParse/whitespace_range.d2,0:1:1-0:7:7",
"src": {
"range": "d2/testdata/d2parser/TestParse/whitespace_range.d2,0:1:1-0:2:2",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2parser/TestParse/whitespace_range.d2,0:1:1-0:2:2",
"value": [
{
"string": "a",
"raw_string": "a"
}
]
}
}
]
},
"src_arrow": "",
"dst": {
"range": "d2/testdata/d2parser/TestParse/whitespace_range.d2,0:6:6-0:7:7",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2parser/TestParse/whitespace_range.d2,0:6:6-0:7:7",
"value": [
{
"string": "b",
"raw_string": "b"
}
]
}
}
]
},
"dst_arrow": ">"
},
{
"range": "d2/testdata/d2parser/TestParse/whitespace_range.d2,0:6:6-0:12:12",
"src": {
"range": "d2/testdata/d2parser/TestParse/whitespace_range.d2,0:6:6-0:7:7",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2parser/TestParse/whitespace_range.d2,0:6:6-0:7:7",
"value": [
{
"string": "b",
"raw_string": "b"
}
]
}
}
]
},
"src_arrow": "",
"dst": {
"range": "d2/testdata/d2parser/TestParse/whitespace_range.d2,0:11:11-0:12:12",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2parser/TestParse/whitespace_range.d2,0:11:11-0:12:12",
"value": [
{
"string": "c",
"raw_string": "c"
}
]
}
}
]
},
"dst_arrow": ">"
}
],
"primary": {},
"value": {}
}
}
]
},
"err": null
}