aboutsummaryrefslogtreecommitdiff
path: root/spec/parser_test.go
diff options
context:
space:
mode:
authorRyo Nihei <nihei.dev@gmail.com>2022-05-14 14:42:00 +0900
committerRyo Nihei <nihei.dev@gmail.com>2022-05-15 20:42:28 +0900
commita443f0a1a4b79faa0b0271b72ea4a8e5f3d03ffd (patch)
tree10ba6c9806ec2bd831fe62d34e1da22daaf5e0e0 /spec/parser_test.go
parentProhibit using escape sequences in string literals (diff)
downloadcotia-a443f0a1a4b79faa0b0271b72ea4a8e5f3d03ffd.tar.gz
cotia-a443f0a1a4b79faa0b0271b72ea4a8e5f3d03ffd.tar.xz
Prohibit applying the expansion operator to anything other than identifiers
Diffstat (limited to 'spec/parser_test.go')
-rw-r--r--spec/parser_test.go54
1 files changed, 54 insertions, 0 deletions
diff --git a/spec/parser_test.go b/spec/parser_test.go
index 15f1330..c7d43de 100644
--- a/spec/parser_test.go
+++ b/spec/parser_test.go
@@ -599,6 +599,60 @@ bar: "bar";
},
},
{
+ caption: "an expansion operator must be preceded by an identifier",
+ src: `
+s
+ : foo #ast ...
+ ;
+`,
+ synErr: synErrStrayExpOp,
+ },
+ {
+ caption: "an expansion operator must be preceded by an identifier",
+ src: `
+a
+ : foo #ast ... foo
+ ;
+`,
+ synErr: synErrStrayExpOp,
+ },
+ {
+ caption: "an expansion operator cannot be applied to a pattern",
+ src: `
+a
+ : "foo" #ast "foo"...
+ ;
+`,
+ synErr: synErrInvalidExpOperand,
+ },
+ {
+ caption: "an expansion operator cannot be applied to a string",
+ src: `
+a
+ : 'foo' #ast 'foo'...
+ ;
+`,
+ synErr: synErrInvalidExpOperand,
+ },
+ {
+ caption: "an expansion operator cannot be applied to an ordered symbol",
+ src: `
+a
+ : foo #ast $foo...
+ ;
+`,
+ synErr: synErrInvalidExpOperand,
+ },
+ {
+ caption: "an expansion operator cannot be applied to a directive group",
+ src: `
+a
+ : foo #ast ()...
+ ;
+`,
+ synErr: synErrInvalidExpOperand,
+ },
+ {
caption: "an AST has node positions",
src: `
exp