d2parser: Error on leading @ in non import key strings
This commit is contained in:
parent
10c6d2af71
commit
b4d5bc0be1
3 changed files with 43 additions and 2 deletions
|
|
@ -633,7 +633,7 @@ func (p *parser) parseMapKey() (mk *d2ast.Key) {
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
// Check for ampersand.
|
// Check for ampersand/@.
|
||||||
r, eof := p.peek()
|
r, eof := p.peek()
|
||||||
if eof {
|
if eof {
|
||||||
return mk
|
return mk
|
||||||
|
|
@ -967,6 +967,9 @@ func (p *parser) parseKey() (k *d2ast.KeyPath) {
|
||||||
if s == nil {
|
if s == nil {
|
||||||
return k
|
return k
|
||||||
}
|
}
|
||||||
|
if strings.HasPrefix(s.ScalarString(), "@") {
|
||||||
|
p.errorf(s.GetRange().Start, s.GetRange().End, "%s is not a valid import, did you mean ...%[2]s?", s.ScalarString())
|
||||||
|
}
|
||||||
|
|
||||||
if len(k.Path) == 0 {
|
if len(k.Path) == 0 {
|
||||||
k.Range.Start = s.GetRange().Start
|
k.Range.Start = s.GetRange().Start
|
||||||
|
|
|
||||||
|
|
@ -460,7 +460,7 @@ func testImport(t *testing.T) {
|
||||||
{
|
{
|
||||||
text: "@file",
|
text: "@file",
|
||||||
assert: func(t testing.TB, ast *d2ast.Map, err error) {
|
assert: func(t testing.TB, ast *d2ast.Map, err error) {
|
||||||
assert.ErrorString(t, err, "d2/testdata/d2parser/TestParse/import/#06.d2:1:5: unexpected text after import")
|
assert.ErrorString(t, err, "d2/testdata/d2parser/TestParse/import/#07.d2:1:1: @file is not a valid import, did you mean ...@file?")
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
38
testdata/d2parser/TestParse/import/#07.exp.json
generated
vendored
Normal file
38
testdata/d2parser/TestParse/import/#07.exp.json
generated
vendored
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
{
|
||||||
|
"ast": {
|
||||||
|
"range": "d2/testdata/d2parser/TestParse/import/#07.d2,0:0:0-0:5:5",
|
||||||
|
"nodes": [
|
||||||
|
{
|
||||||
|
"map_key": {
|
||||||
|
"range": "d2/testdata/d2parser/TestParse/import/#07.d2,0:0:0-0:5:5",
|
||||||
|
"key": {
|
||||||
|
"range": "d2/testdata/d2parser/TestParse/import/#07.d2,0:0:0-0:5:5",
|
||||||
|
"path": [
|
||||||
|
{
|
||||||
|
"unquoted_string": {
|
||||||
|
"range": "d2/testdata/d2parser/TestParse/import/#07.d2,0:0:0-0:5:5",
|
||||||
|
"value": [
|
||||||
|
{
|
||||||
|
"string": "@file",
|
||||||
|
"raw_string": "@file"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"primary": {},
|
||||||
|
"value": {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"err": {
|
||||||
|
"errs": [
|
||||||
|
{
|
||||||
|
"range": "d2/testdata/d2parser/TestParse/import/#07.d2,0:0:0-0:5:5",
|
||||||
|
"errmsg": "d2/testdata/d2parser/TestParse/import/#07.d2:1:1: @file is not a valid import, did you mean ...@file?"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue