parse module references as whole modules
Module references, like resource references, need to always return the and object containing all instances in order to handle modules as single values, and to postpone index evaluation to when the expression as whole is evaluated.
This commit is contained in:
parent
600d4c3e1f
commit
a7507e140d
|
@ -120,10 +120,9 @@ func parseRef(traversal hcl.Traversal) (*Reference, tfdiags.Diagnostics) {
|
|||
return nil, diags
|
||||
}
|
||||
|
||||
// A traversal starting with "module" can either be a reference to
|
||||
// an entire module instance or to a single output from a module
|
||||
// instance, depending on what we find after this introducer.
|
||||
|
||||
// A traversal starting with "module" can either be a reference to an
|
||||
// entire module, or to a single output from a module instance,
|
||||
// depending on what we find after this introducer.
|
||||
callInstance := ModuleCallInstance{
|
||||
Call: ModuleCall{
|
||||
Name: callName,
|
||||
|
@ -132,12 +131,12 @@ func parseRef(traversal hcl.Traversal) (*Reference, tfdiags.Diagnostics) {
|
|||
}
|
||||
|
||||
if len(remain) == 0 {
|
||||
// Reference to an entire module instance. Might alternatively
|
||||
// be a reference to a collection of instances of a particular
|
||||
// module, but the caller will need to deal with that ambiguity
|
||||
// since we don't have enough context here.
|
||||
// Reference to an entire module. Might alternatively be a
|
||||
// reference to a single instance of a particular module, but the
|
||||
// caller will need to deal with that ambiguity since we don't have
|
||||
// enough context here.
|
||||
return &Reference{
|
||||
Subject: callInstance,
|
||||
Subject: callInstance.Call,
|
||||
SourceRange: tfdiags.SourceRangeFromHCL(callRange),
|
||||
Remaining: remain,
|
||||
}, diags
|
||||
|
|
|
@ -281,11 +281,9 @@ func TestParseRef(t *testing.T) {
|
|||
{
|
||||
`module.foo`,
|
||||
&Reference{
|
||||
Subject: ModuleCallInstance{
|
||||
Call: ModuleCall{
|
||||
Subject: ModuleCall{
|
||||
Name: "foo",
|
||||
},
|
||||
},
|
||||
SourceRange: tfdiags.SourceRange{
|
||||
Start: tfdiags.SourcePos{Line: 1, Column: 1, Byte: 0},
|
||||
End: tfdiags.SourcePos{Line: 1, Column: 11, Byte: 10},
|
||||
|
|
Loading…
Reference in New Issue