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

Function traversalsAreEquivalent

cmd/hclspecsuite/traversals.go:31–66  ·  view source on GitHub ↗
(a, b hcl.Traversal)

Source from the content-addressed store, hash-verified

29}
30
31func traversalsAreEquivalent(a, b hcl.Traversal) bool {
32 if len(a) != len(b) {
33 return false
34 }
35 for i := range a {
36 aStep := a[i]
37 bStep := b[i]
38
39 if reflect.TypeOf(aStep) != reflect.TypeOf(bStep) {
40 return false
41 }
42
43 // We can now assume that both are of the same type.
44 switch ts := aStep.(type) {
45
46 case hcl.TraverseRoot:
47 if bStep.(hcl.TraverseRoot).Name != ts.Name {
48 return false
49 }
50
51 case hcl.TraverseAttr:
52 if bStep.(hcl.TraverseAttr).Name != ts.Name {
53 return false
54 }
55
56 case hcl.TraverseIndex:
57 if !bStep.(hcl.TraverseIndex).Key.RawEquals(ts.Key) {
58 return false
59 }
60
61 default:
62 return false
63 }
64 }
65 return true
66}
67
68// checkTraversalsMatch determines if a given traversal matches the given
69// expectation, which must've been produced by an earlier call to

Callers 2

findTraversalSpecFunction · 0.85
findTraversalForSpecFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected