Don't allow duplicate keys
This commit is contained in:
@@ -104,6 +104,9 @@ func parseAssign(p *parser) parserStateFn {
|
||||
if p.currentGroup != "" {
|
||||
final_key = p.currentGroup + "." + key.val
|
||||
}
|
||||
if p.tree.Get(final_key) != nil {
|
||||
panic(fmt.Sprintf("the following key was defined twice: %s", final_key))
|
||||
}
|
||||
p.tree.Set(final_key, value)
|
||||
return parseStart(p)
|
||||
}
|
||||
|
||||
@@ -149,6 +149,7 @@ func TestNestedEmptyArrays(t *testing.T) {
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
func TestArrayMixedTypes(t *testing.T) {
|
||||
_, err := Load("a = [42, 16.0]")
|
||||
if err.Error() != "mixed types in array" {
|
||||
@@ -210,6 +211,13 @@ func TestDuplicateGroups(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestDuplicateKeys(t *testing.T) {
|
||||
_, err := Load("foo = 2\nfoo = 3")
|
||||
if err.Error() != "the following key was defined twice: foo" {
|
||||
t.Error("Bad error message:", err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
func TestEmptyIntermediateTable(t *testing.T) {
|
||||
_, err := Load("[foo..bar]")
|
||||
if err.Error() != "empty intermediate table" {
|
||||
|
||||
Reference in New Issue
Block a user