diff --git a/decoder/expr_reference.go b/decoder/expr_reference.go index a217dc36..4c87a1a7 100644 --- a/decoder/expr_reference.go +++ b/decoder/expr_reference.go @@ -1,10 +1,6 @@ package decoder import ( - "context" - - "github.com/hashicorp/hcl-lang/lang" - "github.com/hashicorp/hcl-lang/reference" "github.com/hashicorp/hcl-lang/schema" "github.com/hashicorp/hcl/v2" ) @@ -14,8 +10,3 @@ type Reference struct { cons schema.Reference pathCtx *PathContext } - -func (ref Reference) ReferenceTargets(ctx context.Context, addr lang.Address, addrCtx AddressContext) reference.Targets { - // TODO - return nil -} diff --git a/decoder/expr_reference_ref_targets.go b/decoder/expr_reference_ref_targets.go new file mode 100644 index 00000000..8042b8ee --- /dev/null +++ b/decoder/expr_reference_ref_targets.go @@ -0,0 +1,30 @@ +package decoder + +import ( + "context" + + "github.com/hashicorp/hcl-lang/lang" + "github.com/hashicorp/hcl-lang/reference" + "github.com/hashicorp/hcl/v2/hclsyntax" +) + +func (ref Reference) ReferenceTargets(ctx context.Context, addr lang.Address, addrCtx AddressContext) reference.Targets { + if ref.cons.Address == nil { + return reference.Targets{} + } + + eType, ok := ref.expr.(*hclsyntax.ScopeTraversalExpr) + if !ok { + return reference.Targets{} + } + + targets := make(reference.Targets, 0) + targets = append(targets, reference.Target{ + Addr: addr, + ScopeId: ref.cons.Address.ScopeId, + RangePtr: eType.SrcRange.Ptr(), + Name: ref.cons.Name, + }) + + return targets +}