cue/parser: disallow declarations with __foo identifiers as per spec
Change-Id: Ia30f408ea21e07d81e3182fe2a7d9a48b3c65729
Reviewed-on: https://cue-review.googlesource.com/c/cue/+/3788
Reviewed-by: Marcel van Lohuizen <mpvl@golang.org>
diff --git a/cue/parser/parser.go b/cue/parser/parser.go
index 0b1e895..bc8ecce 100644
--- a/cue/parser/parser.go
+++ b/cue/parser/parser.go
@@ -969,6 +969,12 @@
label, ok = x, true
}
+ case *ast.Ident:
+ label, ok = x, true
+ if strings.HasPrefix(x.Name, "__") {
+ p.errf(x.NamePos, "identifiers starting with '__' are reserved")
+ }
+
case ast.Label:
label, ok = x, true
}
diff --git a/cue/parser/parser_test.go b/cue/parser/parser_test.go
index d892cc9..b1cbc42 100644
--- a/cue/parser/parser_test.go
+++ b/cue/parser/parser_test.go
@@ -439,6 +439,8 @@
`a: 1 /* a */`},
{"space separator",
`a b c: 2`},
+ {"reserved identifiers",
+ `__foo: 3`},
}
for _, tc := range testCases {
t.Run(tc.desc, func(t *testing.T) {