MCPcopy
hub / github.com/hashicorp/hcl / makeRelativeTraversal

Function makeRelativeTraversal

hclsyntax/parser.go:932–949  ·  view source on GitHub ↗

makeRelativeTraversal takes an expression and a traverser and returns a traversal expression that combines the two. If the given expression is already a traversal, it is extended in place (mutating it) and returned. If it isn't, a new RelativeTraversalExpr is created and returned.

(expr Expression, next hcl.Traverser, rng hcl.Range)

Source from the content-addressed store, hash-verified

930// is already a traversal, it is extended in place (mutating it) and
931// returned. If it isn't, a new RelativeTraversalExpr is created and returned.
932func makeRelativeTraversal(expr Expression, next hcl.Traverser, rng hcl.Range) Expression {
933 switch texpr := expr.(type) {
934 case *ScopeTraversalExpr:
935 texpr.Traversal = append(texpr.Traversal, next)
936 texpr.SrcRange = hcl.RangeBetween(texpr.SrcRange, rng)
937 return texpr
938 case *RelativeTraversalExpr:
939 texpr.Traversal = append(texpr.Traversal, next)
940 texpr.SrcRange = hcl.RangeBetween(texpr.SrcRange, rng)
941 return texpr
942 default:
943 return &RelativeTraversalExpr{
944 Source: expr,
945 Traversal: hcl.Traversal{next},
946 SrcRange: hcl.RangeBetween(expr.Range(), rng),
947 }
948 }
949}
950
951func (p *parser) parseExpressionTerm() (Expression, hcl.Diagnostics) {
952 start := p.Peek()

Callers 1

Calls 1

RangeMethod · 0.65

Tested by

no test coverage detected