Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 1e4921cdf3 |
@@ -688,3 +688,28 @@ func TestBoundPathIsReachableByFake(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestRepeatedBareTokenOfAHeldNameIsRejected(t *testing.T) {
|
||||||
|
for src, want := range map[string]string{
|
||||||
|
`{"format":"{w} {w} {uppercase(w)}","w":["a","b"]}`: "write {w} once",
|
||||||
|
`{"format":"{w} {w|x} {uppercase(w)}","w":["a","b"],"x":["c"]}`: "write {w} once",
|
||||||
|
`{"format":"{n} + {n} = {calc(n * 2)}","n":["1","2"]}`: "write {n} once",
|
||||||
|
`{"format":"{p.a} {q} {q} {lowercase(q)}","p":{"format":"{a}","a":"1"},"q":["A","B"]}`: "write {q} once",
|
||||||
|
} {
|
||||||
|
_, err := compile(parse(t, src))
|
||||||
|
if err == nil || !strings.Contains(err.Error(), want) || !strings.Contains(err.Error(), "holds") {
|
||||||
|
t.Errorf("compile(%s) = %v, want the repeated token rejected naming %s", src, err, want)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for _, ok := range []string{
|
||||||
|
`{"format":"{w} {w}","w":["a","b"]}`,
|
||||||
|
`{"format":"{w} {uppercase(w)}","w":["a","b"]}`,
|
||||||
|
`{"format":"{net} x {qty} = {calc(net * qty, 2)}","net":["19.99"],"qty":["3","7"]}`,
|
||||||
|
`{"format":"{uppercase(w)} {uppercase(w)}","w":["a","b"]}`,
|
||||||
|
`{"format":"{w} {x} {x}","w":["a","b"],"x":["c","d"],"y":"{uppercase(w)}"}`,
|
||||||
|
} {
|
||||||
|
if _, err := compile(parse(t, ok)); err != nil {
|
||||||
|
t.Errorf("compile(%s) = %v, want it accepted", ok, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user