variable types should always be populated
This commit is contained in:
parent
53a73a8ab6
commit
7f26531d4f
|
@ -237,21 +237,6 @@ func (d *evaluationStateData) GetInputVariable(addr addrs.InputVariable, rng tfd
|
||||||
})
|
})
|
||||||
return cty.DynamicVal, diags
|
return cty.DynamicVal, diags
|
||||||
}
|
}
|
||||||
|
|
||||||
// wantType is the concrete value type to be returned.
|
|
||||||
wantType := cty.DynamicPseudoType
|
|
||||||
|
|
||||||
// converstionType is the type used for conversion, which may include
|
|
||||||
// optional attributes.
|
|
||||||
conversionType := cty.DynamicPseudoType
|
|
||||||
|
|
||||||
if config.ConstraintType != cty.NilType {
|
|
||||||
conversionType = config.ConstraintType
|
|
||||||
}
|
|
||||||
if config.Type != cty.NilType {
|
|
||||||
wantType = config.Type
|
|
||||||
}
|
|
||||||
|
|
||||||
d.Evaluator.VariableValuesLock.Lock()
|
d.Evaluator.VariableValuesLock.Lock()
|
||||||
defer d.Evaluator.VariableValuesLock.Unlock()
|
defer d.Evaluator.VariableValuesLock.Unlock()
|
||||||
|
|
||||||
|
@ -271,15 +256,15 @@ func (d *evaluationStateData) GetInputVariable(addr addrs.InputVariable, rng tfd
|
||||||
if d.Operation == walkValidate {
|
if d.Operation == walkValidate {
|
||||||
// Ensure variable sensitivity is captured in the validate walk
|
// Ensure variable sensitivity is captured in the validate walk
|
||||||
if config.Sensitive {
|
if config.Sensitive {
|
||||||
return cty.UnknownVal(wantType).Mark(marks.Sensitive), diags
|
return cty.UnknownVal(config.Type).Mark(marks.Sensitive), diags
|
||||||
}
|
}
|
||||||
return cty.UnknownVal(wantType), diags
|
return cty.UnknownVal(config.Type), diags
|
||||||
}
|
}
|
||||||
|
|
||||||
moduleAddrStr := d.ModulePath.String()
|
moduleAddrStr := d.ModulePath.String()
|
||||||
vals := d.Evaluator.VariableValues[moduleAddrStr]
|
vals := d.Evaluator.VariableValues[moduleAddrStr]
|
||||||
if vals == nil {
|
if vals == nil {
|
||||||
return cty.UnknownVal(wantType), diags
|
return cty.UnknownVal(config.Type), diags
|
||||||
}
|
}
|
||||||
|
|
||||||
val, isSet := vals[addr.Name]
|
val, isSet := vals[addr.Name]
|
||||||
|
@ -287,11 +272,11 @@ func (d *evaluationStateData) GetInputVariable(addr addrs.InputVariable, rng tfd
|
||||||
if config.Default != cty.NilVal {
|
if config.Default != cty.NilVal {
|
||||||
return config.Default, diags
|
return config.Default, diags
|
||||||
}
|
}
|
||||||
return cty.UnknownVal(wantType), diags
|
return cty.UnknownVal(config.Type), diags
|
||||||
}
|
}
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
val, err = convert.Convert(val, conversionType)
|
val, err = convert.Convert(val, config.ConstraintType)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// We should never get here because this problem should've been caught
|
// We should never get here because this problem should've been caught
|
||||||
// during earlier validation, but we'll do something reasonable anyway.
|
// during earlier validation, but we'll do something reasonable anyway.
|
||||||
|
@ -303,7 +288,7 @@ func (d *evaluationStateData) GetInputVariable(addr addrs.InputVariable, rng tfd
|
||||||
})
|
})
|
||||||
// Stub out our return value so that the semantic checker doesn't
|
// Stub out our return value so that the semantic checker doesn't
|
||||||
// produce redundant downstream errors.
|
// produce redundant downstream errors.
|
||||||
val = cty.UnknownVal(wantType)
|
val = cty.UnknownVal(config.Type)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mark if sensitive
|
// Mark if sensitive
|
||||||
|
|
Loading…
Reference in New Issue