Don't allow duplicate keys

This commit is contained in:
Thomas Pelletier
2013-12-10 17:50:59 +01:00
parent 01609e0ab7
commit 3085454477
2 changed files with 11 additions and 0 deletions
+3
View File
@@ -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)
}
+8
View File
@@ -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" {