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 != "" { if p.currentGroup != "" {
final_key = p.currentGroup + "." + key.val 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) p.tree.Set(final_key, value)
return parseStart(p) return parseStart(p)
} }
+8
View File
@@ -149,6 +149,7 @@ func TestNestedEmptyArrays(t *testing.T) {
}) })
} }
func TestArrayMixedTypes(t *testing.T) { func TestArrayMixedTypes(t *testing.T) {
_, err := Load("a = [42, 16.0]") _, err := Load("a = [42, 16.0]")
if err.Error() != "mixed types in array" { 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) { func TestEmptyIntermediateTable(t *testing.T) {
_, err := Load("[foo..bar]") _, err := Load("[foo..bar]")
if err.Error() != "empty intermediate table" { if err.Error() != "empty intermediate table" {