Don't allow duplicate keys
This commit is contained in:
@@ -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)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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" {
|
||||||
|
|||||||
Reference in New Issue
Block a user