lang: Fix crash in lookup function
This commit is contained in:
parent
1dc3e50c47
commit
4856d81300
|
@ -512,9 +512,14 @@ var LookupFunc = function.New(&function.Spec{
|
||||||
}
|
}
|
||||||
|
|
||||||
ty := args[0].Type()
|
ty := args[0].Type()
|
||||||
key := args[1].AsString()
|
|
||||||
switch {
|
switch {
|
||||||
case ty.IsObjectType():
|
case ty.IsObjectType():
|
||||||
|
if !args[1].IsKnown() {
|
||||||
|
return args[2].Type(), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
key := args[1].AsString()
|
||||||
if ty.HasAttribute(key) {
|
if ty.HasAttribute(key) {
|
||||||
return args[0].GetAttr(key).Type(), nil
|
return args[0].GetAttr(key).Type(), nil
|
||||||
} else if len(args) == 3 {
|
} else if len(args) == 3 {
|
||||||
|
|
|
@ -1255,6 +1255,25 @@ func TestLookup(t *testing.T) {
|
||||||
cty.UnknownVal(cty.String),
|
cty.UnknownVal(cty.String),
|
||||||
false,
|
false,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
[]cty.Value{
|
||||||
|
simpleMap,
|
||||||
|
cty.UnknownVal(cty.String),
|
||||||
|
},
|
||||||
|
cty.UnknownVal(cty.String),
|
||||||
|
false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
[]cty.Value{
|
||||||
|
cty.ObjectVal(map[string]cty.Value{
|
||||||
|
"foo": cty.StringVal("a"),
|
||||||
|
"bar": cty.StringVal("b"),
|
||||||
|
}),
|
||||||
|
cty.UnknownVal(cty.String),
|
||||||
|
},
|
||||||
|
cty.UnknownVal(cty.String),
|
||||||
|
false,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
|
|
Loading…
Reference in New Issue