diff --git a/d2ir/compile.go b/d2ir/compile.go index 43e19e8b2..96ef29a91 100644 --- a/d2ir/compile.go +++ b/d2ir/compile.go @@ -492,11 +492,15 @@ func (c *compiler) ensureGlobContext(refctx *RefContext) *globContext { func (c *compiler) compileKey(refctx *RefContext) { if refctx.Key.HasGlob() { + // These three printlns are for debugging infinite loops. + // println("og", refctx.Edge, refctx.Key, refctx.Scope, refctx.ScopeMap, refctx.ScopeAST) for _, refctx2 := range c.globRefContextStack { + // println("st", refctx2.Edge, refctx2.Key, refctx2.Scope, refctx2.ScopeMap, refctx2.ScopeAST) if refctx.Equal(refctx2) { // Break the infinite loop. return } + // println("keys", d2format.Format(refctx2.Key), d2format.Format(refctx.Key)) } c.globRefContextStack = append(c.globRefContextStack, refctx) defer func() { diff --git a/d2ir/d2ir.go b/d2ir/d2ir.go index abbdbd5d5..5746eaf23 100644 --- a/d2ir/d2ir.go +++ b/d2ir/d2ir.go @@ -575,7 +575,8 @@ func (rc *RefContext) EdgeIndex() int { func (rc *RefContext) Equal(rc2 *RefContext) bool { // We intentionally ignore edges here because the same glob can produce multiple RefContexts that should be treated the same with only the edge as the difference. - return rc.Key.Equals(rc2.Key) && rc.Scope == rc2.Scope && rc.ScopeMap == rc2.ScopeMap && rc.ScopeAST == rc2.ScopeAST + // Same with ScopeMap. + return rc.Key.Equals(rc2.Key) && rc.Scope == rc2.Scope && rc.ScopeAST == rc2.ScopeAST } func (m *Map) FieldCountRecursive() int { @@ -708,19 +709,30 @@ func (m *Map) EnsureField(kp *d2ast.KeyPath, refctx *RefContext, create bool, c } func (m *Map) ensureField(i int, kp *d2ast.KeyPath, refctx *RefContext, create bool, gctx *globContext, c *compiler, fa *[]*Field) error { - faAppend := func(fa2 ...*Field) { - for _, f := range fa2 { - if gctx != nil { - // Always match all commons, sources and destinations for edge globs. - if len(refctx.Key.Edges) == 0 || kp == refctx.Key.EdgeKey { - ks := d2format.Format(d2ast.MakeKeyPath(BoardIDA(f))) - if _, ok := gctx.appliedFields[ks]; ok { - continue - } + filter := func(f *Field, passthrough bool) bool { + if gctx != nil { + // For globs with edges, we only ignore duplicate fields if the glob is not at the terminal of the keypath, the glob is on the common key or the glob is on the edge key. + if !kp.HasGlob() { + return true + } + lastEl := kp.Path[len(kp.Path)-1] + if len(refctx.Key.Edges) == 0 || lastEl.UnquotedString == nil || len(lastEl.UnquotedString.Pattern) == 0 || kp == refctx.Key.Key || kp == refctx.Key.EdgeKey { + ks := d2format.Format(d2ast.MakeKeyPath(BoardIDA(f))) + if _, ok := gctx.appliedFields[ks]; ok { + return false + } + if !passthrough { gctx.appliedFields[ks] = struct{}{} } } - *fa = append(*fa, f) + } + return true + } + faAppend := func(fa2 ...*Field) { + for _, f := range fa2 { + if filter(f, false) { + *fa = append(*fa, f) + } } } @@ -732,6 +744,9 @@ func (m *Map) ensureField(i int, kp *d2ast.KeyPath, refctx *RefContext, create b faAppend(fa2...) } else { for _, f := range fa2 { + if !filter(f, true) { + return nil + } if f.Map() == nil { f.Composite = &Map{ parent: f, @@ -750,6 +765,9 @@ func (m *Map) ensureField(i int, kp *d2ast.KeyPath, refctx *RefContext, create b if i == len(kp.Path)-1 { faAppend(f) } else { + if !filter(f, true) { + return nil + } if f.Map() == nil { f.Composite = &Map{ parent: f, @@ -804,6 +822,9 @@ func (m *Map) ensureField(i int, kp *d2ast.KeyPath, refctx *RefContext, create b faAppend(f) return nil } + if !filter(f, true) { + return nil + } if _, ok := f.Composite.(*Array); ok { return d2parser.Errorf(kp.Path[i].Unbox(), "cannot index into array") } @@ -832,7 +853,10 @@ func (m *Map) ensureField(i int, kp *d2ast.KeyPath, refctx *RefContext, create b } m.Fields = append(m.Fields, f) if i+1 == len(kp.Path) { - *fa = append(*fa, f) + faAppend(f) + return nil + } + if !filter(f, true) { return nil } if f.Composite == nil { diff --git a/d2ir/pattern_test.go b/d2ir/pattern_test.go index 96d0c2fa0..bd32a5355 100644 --- a/d2ir/pattern_test.go +++ b/d2ir/pattern_test.go @@ -432,6 +432,7 @@ layers: { } `) assert.Success(t, err) + t.Log(m) assertQuery(t, m, 14, 0, nil, "") }, }, @@ -450,6 +451,24 @@ c assertQuery(t, m, 4, 3, nil, "") }, }, + { + name: "alixander-review/3", + run: func(t testing.TB) { + m, err := compile(t, ` +a + +***.b -> c + +layers: { + z: { + d + } +} +`) + assert.Success(t, err) + assertQuery(t, m, 8, 2, nil, "") + }, + }, } runa(t, tca) diff --git a/testdata/d2ir/TestCompile/patterns/alixander-review/1.exp.json b/testdata/d2ir/TestCompile/patterns/alixander-review/1.exp.json index 177f3ee48..76ebe7c77 100644 --- a/testdata/d2ir/TestCompile/patterns/alixander-review/1.exp.json +++ b/testdata/d2ir/TestCompile/patterns/alixander-review/1.exp.json @@ -497,125 +497,6 @@ } } } - }, - { - "string": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:10:11-1:14:15", - "value": [ - { - "string": "fill", - "raw_string": "fill" - } - ] - }, - "key_path": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:0:1-1:14:15", - "path": [ - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:0:1-1:3:4", - "value": [ - { - "string": "***", - "raw_string": "***" - } - ], - "pattern": [ - "*", - "", - "*", - "", - "*" - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:4:5-1:9:10", - "value": [ - { - "string": "style", - "raw_string": "style" - } - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:10:11-1:14:15", - "value": [ - { - "string": "fill", - "raw_string": "fill" - } - ] - } - } - ] - }, - "context": { - "edge": null, - "key": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:0:1-1:22:23", - "key": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:0:1-1:14:15", - "path": [ - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:0:1-1:3:4", - "value": [ - { - "string": "***", - "raw_string": "***" - } - ], - "pattern": [ - "*", - "", - "*", - "", - "*" - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:4:5-1:9:10", - "value": [ - { - "string": "style", - "raw_string": "style" - } - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:10:11-1:14:15", - "value": [ - { - "string": "fill", - "raw_string": "fill" - } - ] - } - } - ] - }, - "primary": {}, - "value": { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:16:17-1:22:23", - "value": [ - { - "string": "yellow", - "raw_string": "yellow" - } - ] - } - } - } - } } ] }, @@ -1475,218 +1356,6 @@ } } } - }, - { - "string": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:8:49-3:16:57", - "value": [ - { - "string": "multiple", - "raw_string": "multiple" - } - ] - }, - "key_path": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:0:41-3:16:57", - "path": [ - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:0:41-3:1:42", - "value": [ - { - "string": "*", - "raw_string": "*" - } - ], - "pattern": [ - "*" - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:2:43-3:7:48", - "value": [ - { - "string": "style", - "raw_string": "style" - } - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:8:49-3:16:57", - "value": [ - { - "string": "multiple", - "raw_string": "multiple" - } - ] - } - } - ] - }, - "context": { - "edge": null, - "key": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:0:41-3:22:63", - "key": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:0:41-3:16:57", - "path": [ - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:0:41-3:1:42", - "value": [ - { - "string": "*", - "raw_string": "*" - } - ], - "pattern": [ - "*" - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:2:43-3:7:48", - "value": [ - { - "string": "style", - "raw_string": "style" - } - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:8:49-3:16:57", - "value": [ - { - "string": "multiple", - "raw_string": "multiple" - } - ] - } - } - ] - }, - "primary": {}, - "value": { - "boolean": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:18:59-3:22:63", - "value": true - } - } - } - } - }, - { - "string": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:8:49-3:16:57", - "value": [ - { - "string": "multiple", - "raw_string": "multiple" - } - ] - }, - "key_path": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:0:41-3:16:57", - "path": [ - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:0:41-3:1:42", - "value": [ - { - "string": "*", - "raw_string": "*" - } - ], - "pattern": [ - "*" - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:2:43-3:7:48", - "value": [ - { - "string": "style", - "raw_string": "style" - } - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:8:49-3:16:57", - "value": [ - { - "string": "multiple", - "raw_string": "multiple" - } - ] - } - } - ] - }, - "context": { - "edge": null, - "key": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:0:41-3:22:63", - "key": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:0:41-3:16:57", - "path": [ - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:0:41-3:1:42", - "value": [ - { - "string": "*", - "raw_string": "*" - } - ], - "pattern": [ - "*" - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:2:43-3:7:48", - "value": [ - { - "string": "style", - "raw_string": "style" - } - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:8:49-3:16:57", - "value": [ - { - "string": "multiple", - "raw_string": "multiple" - } - ] - } - } - ] - }, - "primary": {}, - "value": { - "boolean": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:18:59-3:22:63", - "value": true - } - } - } - } } ] } @@ -2462,337 +2131,6 @@ } } }, - { - "string": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:4:5-1:9:10", - "value": [ - { - "string": "style", - "raw_string": "style" - } - ] - }, - "key_path": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:0:1-1:14:15", - "path": [ - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:0:1-1:3:4", - "value": [ - { - "string": "***", - "raw_string": "***" - } - ], - "pattern": [ - "*", - "", - "*", - "", - "*" - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:4:5-1:9:10", - "value": [ - { - "string": "style", - "raw_string": "style" - } - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:10:11-1:14:15", - "value": [ - { - "string": "fill", - "raw_string": "fill" - } - ] - } - } - ] - }, - "context": { - "edge": null, - "key": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:0:1-1:22:23", - "key": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:0:1-1:14:15", - "path": [ - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:0:1-1:3:4", - "value": [ - { - "string": "***", - "raw_string": "***" - } - ], - "pattern": [ - "*", - "", - "*", - "", - "*" - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:4:5-1:9:10", - "value": [ - { - "string": "style", - "raw_string": "style" - } - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:10:11-1:14:15", - "value": [ - { - "string": "fill", - "raw_string": "fill" - } - ] - } - } - ] - }, - "primary": {}, - "value": { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:16:17-1:22:23", - "value": [ - { - "string": "yellow", - "raw_string": "yellow" - } - ] - } - } - } - } - }, - { - "string": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:2:43-3:7:48", - "value": [ - { - "string": "style", - "raw_string": "style" - } - ] - }, - "key_path": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:0:41-3:16:57", - "path": [ - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:0:41-3:1:42", - "value": [ - { - "string": "*", - "raw_string": "*" - } - ], - "pattern": [ - "*" - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:2:43-3:7:48", - "value": [ - { - "string": "style", - "raw_string": "style" - } - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:8:49-3:16:57", - "value": [ - { - "string": "multiple", - "raw_string": "multiple" - } - ] - } - } - ] - }, - "context": { - "edge": null, - "key": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:0:41-3:22:63", - "key": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:0:41-3:16:57", - "path": [ - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:0:41-3:1:42", - "value": [ - { - "string": "*", - "raw_string": "*" - } - ], - "pattern": [ - "*" - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:2:43-3:7:48", - "value": [ - { - "string": "style", - "raw_string": "style" - } - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:8:49-3:16:57", - "value": [ - { - "string": "multiple", - "raw_string": "multiple" - } - ] - } - } - ] - }, - "primary": {}, - "value": { - "boolean": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:18:59-3:22:63", - "value": true - } - } - } - } - }, - { - "string": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:2:43-3:7:48", - "value": [ - { - "string": "style", - "raw_string": "style" - } - ] - }, - "key_path": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:0:41-3:16:57", - "path": [ - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:0:41-3:1:42", - "value": [ - { - "string": "*", - "raw_string": "*" - } - ], - "pattern": [ - "*" - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:2:43-3:7:48", - "value": [ - { - "string": "style", - "raw_string": "style" - } - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:8:49-3:16:57", - "value": [ - { - "string": "multiple", - "raw_string": "multiple" - } - ] - } - } - ] - }, - "context": { - "edge": null, - "key": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:0:41-3:22:63", - "key": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:0:41-3:16:57", - "path": [ - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:0:41-3:1:42", - "value": [ - { - "string": "*", - "raw_string": "*" - } - ], - "pattern": [ - "*" - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:2:43-3:7:48", - "value": [ - { - "string": "style", - "raw_string": "style" - } - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:8:49-3:16:57", - "value": [ - { - "string": "multiple", - "raw_string": "multiple" - } - ] - } - } - ] - }, - "primary": {}, - "value": { - "boolean": { - "range": "TestCompile/patterns/alixander-review/1.d2,3:18:59-3:22:63", - "value": true - } - } - } - } - }, { "string": { "range": "TestCompile/patterns/alixander-review/1.d2,3:2:43-3:7:48", @@ -3830,99 +3168,6 @@ } } }, - { - "string": { - "range": "TestCompile/patterns/alixander-review/1.d2,2:3:27-2:8:32", - "value": [ - { - "string": "shape", - "raw_string": "shape" - } - ] - }, - "key_path": { - "range": "TestCompile/patterns/alixander-review/1.d2,2:0:24-2:8:32", - "path": [ - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,2:0:24-2:2:26", - "value": [ - { - "string": "**", - "raw_string": "**" - } - ], - "pattern": [ - "*", - "", - "*" - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,2:3:27-2:8:32", - "value": [ - { - "string": "shape", - "raw_string": "shape" - } - ] - } - } - ] - }, - "context": { - "edge": null, - "key": { - "range": "TestCompile/patterns/alixander-review/1.d2,2:0:24-2:16:40", - "key": { - "range": "TestCompile/patterns/alixander-review/1.d2,2:0:24-2:8:32", - "path": [ - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,2:0:24-2:2:26", - "value": [ - { - "string": "**", - "raw_string": "**" - } - ], - "pattern": [ - "*", - "", - "*" - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,2:3:27-2:8:32", - "value": [ - { - "string": "shape", - "raw_string": "shape" - } - ] - } - } - ] - }, - "primary": {}, - "value": { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,2:10:34-2:16:40", - "value": [ - { - "string": "circle", - "raw_string": "circle" - } - ] - } - } - } - } - }, { "string": { "range": "TestCompile/patterns/alixander-review/1.d2,2:3:27-2:8:32", @@ -4396,125 +3641,6 @@ } } } - }, - { - "string": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:10:11-1:14:15", - "value": [ - { - "string": "fill", - "raw_string": "fill" - } - ] - }, - "key_path": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:0:1-1:14:15", - "path": [ - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:0:1-1:3:4", - "value": [ - { - "string": "***", - "raw_string": "***" - } - ], - "pattern": [ - "*", - "", - "*", - "", - "*" - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:4:5-1:9:10", - "value": [ - { - "string": "style", - "raw_string": "style" - } - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:10:11-1:14:15", - "value": [ - { - "string": "fill", - "raw_string": "fill" - } - ] - } - } - ] - }, - "context": { - "edge": null, - "key": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:0:1-1:22:23", - "key": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:0:1-1:14:15", - "path": [ - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:0:1-1:3:4", - "value": [ - { - "string": "***", - "raw_string": "***" - } - ], - "pattern": [ - "*", - "", - "*", - "", - "*" - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:4:5-1:9:10", - "value": [ - { - "string": "style", - "raw_string": "style" - } - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:10:11-1:14:15", - "value": [ - { - "string": "fill", - "raw_string": "fill" - } - ] - } - } - ] - }, - "primary": {}, - "value": { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:16:17-1:22:23", - "value": [ - { - "string": "yellow", - "raw_string": "yellow" - } - ] - } - } - } - } } ] } @@ -4878,125 +4004,6 @@ } } } - }, - { - "string": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:4:5-1:9:10", - "value": [ - { - "string": "style", - "raw_string": "style" - } - ] - }, - "key_path": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:0:1-1:14:15", - "path": [ - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:0:1-1:3:4", - "value": [ - { - "string": "***", - "raw_string": "***" - } - ], - "pattern": [ - "*", - "", - "*", - "", - "*" - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:4:5-1:9:10", - "value": [ - { - "string": "style", - "raw_string": "style" - } - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:10:11-1:14:15", - "value": [ - { - "string": "fill", - "raw_string": "fill" - } - ] - } - } - ] - }, - "context": { - "edge": null, - "key": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:0:1-1:22:23", - "key": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:0:1-1:14:15", - "path": [ - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:0:1-1:3:4", - "value": [ - { - "string": "***", - "raw_string": "***" - } - ], - "pattern": [ - "*", - "", - "*", - "", - "*" - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:4:5-1:9:10", - "value": [ - { - "string": "style", - "raw_string": "style" - } - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:10:11-1:14:15", - "value": [ - { - "string": "fill", - "raw_string": "fill" - } - ] - } - } - ] - }, - "primary": {}, - "value": { - "unquoted_string": { - "range": "TestCompile/patterns/alixander-review/1.d2,1:16:17-1:22:23", - "value": [ - { - "string": "yellow", - "raw_string": "yellow" - } - ] - } - } - } - } } ] }, diff --git a/testdata/d2ir/TestCompile/patterns/alixander-review/3.exp.json b/testdata/d2ir/TestCompile/patterns/alixander-review/3.exp.json new file mode 100644 index 000000000..426624b29 --- /dev/null +++ b/testdata/d2ir/TestCompile/patterns/alixander-review/3.exp.json @@ -0,0 +1,2199 @@ +{ + "fields": [ + { + "name": "a", + "composite": { + "fields": [ + { + "name": "b", + "references": [ + { + "string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:4:8-3:5:9", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + }, + "key_path": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:5:9", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:3:7", + "value": [ + { + "string": "***", + "raw_string": "***" + } + ], + "pattern": [ + "*", + "", + "*", + "", + "*" + ] + } + }, + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:4:8-3:5:9", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "context": { + "edge": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:10:14", + "src": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:5:9", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:3:7", + "value": [ + { + "string": "***", + "raw_string": "***" + } + ], + "pattern": [ + "*", + "", + "*", + "", + "*" + ] + } + }, + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:4:8-3:5:9", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "src_arrow": "", + "dst": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "dst_arrow": ">" + }, + "key": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:10:14", + "edges": [ + { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:10:14", + "src": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:5:9", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:3:7", + "value": [ + { + "string": "***", + "raw_string": "***" + } + ], + "pattern": [ + "*", + "", + "*", + "", + "*" + ] + } + }, + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:4:8-3:5:9", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "src_arrow": "", + "dst": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "dst_arrow": ">" + } + ], + "primary": {}, + "value": {} + } + } + }, + { + "string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:4:8-3:5:9", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + }, + "key_path": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:5:9", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:3:7", + "value": [ + { + "string": "***", + "raw_string": "***" + } + ], + "pattern": [ + "*", + "", + "*", + "", + "*" + ] + } + }, + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:4:8-3:5:9", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "context": { + "edge": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:10:14", + "src": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:5:9", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:3:7", + "value": [ + { + "string": "***", + "raw_string": "***" + } + ], + "pattern": [ + "*", + "", + "*", + "", + "*" + ] + } + }, + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:4:8-3:5:9", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "src_arrow": "", + "dst": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "dst_arrow": ">" + }, + "key": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:10:14", + "edges": [ + { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:10:14", + "src": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:5:9", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:3:7", + "value": [ + { + "string": "***", + "raw_string": "***" + } + ], + "pattern": [ + "*", + "", + "*", + "", + "*" + ] + } + }, + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:4:8-3:5:9", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "src_arrow": "", + "dst": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "dst_arrow": ">" + } + ], + "primary": {}, + "value": {} + } + } + }, + { + "string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:4:8-3:5:9", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + }, + "key_path": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:5:9", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:3:7", + "value": [ + { + "string": "***", + "raw_string": "***" + } + ], + "pattern": [ + "*", + "", + "*", + "", + "*" + ] + } + }, + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:4:8-3:5:9", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "context": { + "edge": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:10:14", + "src": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:5:9", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:3:7", + "value": [ + { + "string": "***", + "raw_string": "***" + } + ], + "pattern": [ + "*", + "", + "*", + "", + "*" + ] + } + }, + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:4:8-3:5:9", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "src_arrow": "", + "dst": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "dst_arrow": ">" + }, + "key": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:10:14", + "edges": [ + { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:10:14", + "src": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:5:9", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:3:7", + "value": [ + { + "string": "***", + "raw_string": "***" + } + ], + "pattern": [ + "*", + "", + "*", + "", + "*" + ] + } + }, + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:4:8-3:5:9", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "src_arrow": "", + "dst": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "dst_arrow": ">" + } + ], + "primary": {}, + "value": {} + } + } + } + ] + } + ], + "edges": null + }, + "references": [ + { + "string": { + "range": "TestCompile/patterns/alixander-review/3.d2,1:0:1-1:1:2", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + }, + "key_path": { + "range": "TestCompile/patterns/alixander-review/3.d2,1:0:1-1:1:2", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,1:0:1-1:1:2", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + } + ] + }, + "context": { + "edge": null, + "key": { + "range": "TestCompile/patterns/alixander-review/3.d2,1:0:1-1:1:2", + "key": { + "range": "TestCompile/patterns/alixander-review/3.d2,1:0:1-1:1:2", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,1:0:1-1:1:2", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + } + ] + }, + "primary": {}, + "value": {} + } + } + } + ] + }, + { + "name": "c", + "references": [ + { + "string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + }, + "key_path": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "context": { + "edge": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:10:14", + "src": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:5:9", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:3:7", + "value": [ + { + "string": "***", + "raw_string": "***" + } + ], + "pattern": [ + "*", + "", + "*", + "", + "*" + ] + } + }, + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:4:8-3:5:9", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "src_arrow": "", + "dst": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "dst_arrow": ">" + }, + "key": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:10:14", + "edges": [ + { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:10:14", + "src": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:5:9", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:3:7", + "value": [ + { + "string": "***", + "raw_string": "***" + } + ], + "pattern": [ + "*", + "", + "*", + "", + "*" + ] + } + }, + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:4:8-3:5:9", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "src_arrow": "", + "dst": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "dst_arrow": ">" + } + ], + "primary": {}, + "value": {} + } + } + }, + { + "string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + }, + "key_path": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "context": { + "edge": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:10:14", + "src": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:5:9", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:3:7", + "value": [ + { + "string": "***", + "raw_string": "***" + } + ], + "pattern": [ + "*", + "", + "*", + "", + "*" + ] + } + }, + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:4:8-3:5:9", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "src_arrow": "", + "dst": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "dst_arrow": ">" + }, + "key": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:10:14", + "edges": [ + { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:10:14", + "src": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:5:9", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:3:7", + "value": [ + { + "string": "***", + "raw_string": "***" + } + ], + "pattern": [ + "*", + "", + "*", + "", + "*" + ] + } + }, + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:4:8-3:5:9", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "src_arrow": "", + "dst": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "dst_arrow": ">" + } + ], + "primary": {}, + "value": {} + } + } + }, + { + "string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + }, + "key_path": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "context": { + "edge": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:10:14", + "src": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:5:9", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:3:7", + "value": [ + { + "string": "***", + "raw_string": "***" + } + ], + "pattern": [ + "*", + "", + "*", + "", + "*" + ] + } + }, + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:4:8-3:5:9", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "src_arrow": "", + "dst": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "dst_arrow": ">" + }, + "key": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:10:14", + "edges": [ + { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:10:14", + "src": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:5:9", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:3:7", + "value": [ + { + "string": "***", + "raw_string": "***" + } + ], + "pattern": [ + "*", + "", + "*", + "", + "*" + ] + } + }, + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:4:8-3:5:9", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "src_arrow": "", + "dst": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "dst_arrow": ">" + } + ], + "primary": {}, + "value": {} + } + } + } + ] + }, + { + "name": "layers", + "composite": { + "fields": [ + { + "name": "z", + "composite": { + "fields": [ + { + "name": "d", + "composite": { + "fields": [ + { + "name": "b", + "references": [ + { + "string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:4:8-3:5:9", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + }, + "key_path": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:5:9", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:3:7", + "value": [ + { + "string": "***", + "raw_string": "***" + } + ], + "pattern": [ + "*", + "", + "*", + "", + "*" + ] + } + }, + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:4:8-3:5:9", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "context": { + "edge": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:10:14", + "src": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:5:9", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:3:7", + "value": [ + { + "string": "***", + "raw_string": "***" + } + ], + "pattern": [ + "*", + "", + "*", + "", + "*" + ] + } + }, + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:4:8-3:5:9", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "src_arrow": "", + "dst": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "dst_arrow": ">" + }, + "key": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:10:14", + "key": { + "range": ",0:0:0-0:0:0", + "path": [ + { + "unquoted_string": { + "range": ",0:0:0-0:0:0", + "value": [ + { + "string": "layers" + } + ] + } + }, + { + "unquoted_string": { + "range": ",0:0:0-0:0:0", + "value": [ + { + "string": "z" + } + ] + } + } + ] + }, + "edges": [ + { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:10:14", + "src": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:5:9", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:3:7", + "value": [ + { + "string": "***", + "raw_string": "***" + } + ], + "pattern": [ + "*", + "", + "*", + "", + "*" + ] + } + }, + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:4:8-3:5:9", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "src_arrow": "", + "dst": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "dst_arrow": ">" + } + ], + "primary": {}, + "value": {} + } + } + } + ] + } + ], + "edges": null + }, + "references": [ + { + "string": { + "range": "TestCompile/patterns/alixander-review/3.d2,7:4:37-7:5:38", + "value": [ + { + "string": "d", + "raw_string": "d" + } + ] + }, + "key_path": { + "range": "TestCompile/patterns/alixander-review/3.d2,7:4:37-7:5:38", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,7:4:37-7:5:38", + "value": [ + { + "string": "d", + "raw_string": "d" + } + ] + } + } + ] + }, + "context": { + "edge": null, + "key": { + "range": "TestCompile/patterns/alixander-review/3.d2,7:4:37-7:5:38", + "key": { + "range": "TestCompile/patterns/alixander-review/3.d2,7:4:37-7:5:38", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,7:4:37-7:5:38", + "value": [ + { + "string": "d", + "raw_string": "d" + } + ] + } + } + ] + }, + "primary": {}, + "value": {} + } + } + } + ] + }, + { + "name": "c", + "references": [ + { + "string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + }, + "key_path": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "context": { + "edge": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:10:14", + "src": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:5:9", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:3:7", + "value": [ + { + "string": "***", + "raw_string": "***" + } + ], + "pattern": [ + "*", + "", + "*", + "", + "*" + ] + } + }, + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:4:8-3:5:9", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "src_arrow": "", + "dst": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "dst_arrow": ">" + }, + "key": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:10:14", + "key": { + "range": ",0:0:0-0:0:0", + "path": [ + { + "unquoted_string": { + "range": ",0:0:0-0:0:0", + "value": [ + { + "string": "layers" + } + ] + } + }, + { + "unquoted_string": { + "range": ",0:0:0-0:0:0", + "value": [ + { + "string": "z" + } + ] + } + } + ] + }, + "edges": [ + { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:10:14", + "src": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:5:9", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:3:7", + "value": [ + { + "string": "***", + "raw_string": "***" + } + ], + "pattern": [ + "*", + "", + "*", + "", + "*" + ] + } + }, + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:4:8-3:5:9", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "src_arrow": "", + "dst": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "dst_arrow": ">" + } + ], + "primary": {}, + "value": {} + } + } + } + ] + } + ], + "edges": [ + { + "edge_id": { + "src_path": [ + "d", + "b" + ], + "src_arrow": false, + "dst_path": [ + "c" + ], + "dst_arrow": true, + "index": 0, + "glob": false + }, + "references": [ + { + "context": { + "edge": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:10:14", + "src": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:5:9", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:3:7", + "value": [ + { + "string": "***", + "raw_string": "***" + } + ], + "pattern": [ + "*", + "", + "*", + "", + "*" + ] + } + }, + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:4:8-3:5:9", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "src_arrow": "", + "dst": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "dst_arrow": ">" + }, + "key": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:10:14", + "key": { + "range": ",0:0:0-0:0:0", + "path": [ + { + "unquoted_string": { + "range": ",0:0:0-0:0:0", + "value": [ + { + "string": "layers" + } + ] + } + }, + { + "unquoted_string": { + "range": ",0:0:0-0:0:0", + "value": [ + { + "string": "z" + } + ] + } + } + ] + }, + "edges": [ + { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:10:14", + "src": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:5:9", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:3:7", + "value": [ + { + "string": "***", + "raw_string": "***" + } + ], + "pattern": [ + "*", + "", + "*", + "", + "*" + ] + } + }, + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:4:8-3:5:9", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "src_arrow": "", + "dst": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "dst_arrow": ">" + } + ], + "primary": {}, + "value": {} + } + } + } + ] + } + ] + }, + "references": [ + { + "string": { + "range": "TestCompile/patterns/alixander-review/3.d2,6:2:28-6:3:29", + "value": [ + { + "string": "z", + "raw_string": "z" + } + ] + }, + "key_path": { + "range": "TestCompile/patterns/alixander-review/3.d2,6:2:28-6:3:29", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,6:2:28-6:3:29", + "value": [ + { + "string": "z", + "raw_string": "z" + } + ] + } + } + ] + }, + "context": { + "edge": null, + "key": { + "range": "TestCompile/patterns/alixander-review/3.d2,6:2:28-8:3:42", + "key": { + "range": "TestCompile/patterns/alixander-review/3.d2,6:2:28-6:3:29", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,6:2:28-6:3:29", + "value": [ + { + "string": "z", + "raw_string": "z" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "map": { + "range": "TestCompile/patterns/alixander-review/3.d2,6:5:31-8:3:42", + "nodes": [ + { + "map_key": { + "range": "TestCompile/patterns/alixander-review/3.d2,7:4:37-7:5:38", + "key": { + "range": "TestCompile/patterns/alixander-review/3.d2,7:4:37-7:5:38", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,7:4:37-7:5:38", + "value": [ + { + "string": "d", + "raw_string": "d" + } + ] + } + } + ] + }, + "primary": {}, + "value": {} + } + } + ] + } + } + } + } + }, + { + "string": { + "range": ",0:0:0-0:0:0", + "value": [ + { + "string": "z" + } + ] + }, + "key_path": { + "range": ",0:0:0-0:0:0", + "path": [ + { + "unquoted_string": { + "range": ",0:0:0-0:0:0", + "value": [ + { + "string": "layers" + } + ] + } + }, + { + "unquoted_string": { + "range": ",0:0:0-0:0:0", + "value": [ + { + "string": "z" + } + ] + } + } + ] + }, + "context": { + "edge": null, + "key": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:10:14", + "key": { + "range": ",0:0:0-0:0:0", + "path": [ + { + "unquoted_string": { + "range": ",0:0:0-0:0:0", + "value": [ + { + "string": "layers" + } + ] + } + }, + { + "unquoted_string": { + "range": ",0:0:0-0:0:0", + "value": [ + { + "string": "z" + } + ] + } + } + ] + }, + "edges": [ + { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:10:14", + "src": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:5:9", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:3:7", + "value": [ + { + "string": "***", + "raw_string": "***" + } + ], + "pattern": [ + "*", + "", + "*", + "", + "*" + ] + } + }, + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:4:8-3:5:9", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "src_arrow": "", + "dst": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "dst_arrow": ">" + } + ], + "primary": {}, + "value": {} + } + } + } + ] + } + ], + "edges": null + }, + "references": [ + { + "string": { + "range": "TestCompile/patterns/alixander-review/3.d2,5:0:16-5:6:22", + "value": [ + { + "string": "layers", + "raw_string": "layers" + } + ] + }, + "key_path": { + "range": "TestCompile/patterns/alixander-review/3.d2,5:0:16-5:6:22", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,5:0:16-5:6:22", + "value": [ + { + "string": "layers", + "raw_string": "layers" + } + ] + } + } + ] + }, + "context": { + "edge": null, + "key": { + "range": "TestCompile/patterns/alixander-review/3.d2,5:0:16-9:1:44", + "key": { + "range": "TestCompile/patterns/alixander-review/3.d2,5:0:16-5:6:22", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,5:0:16-5:6:22", + "value": [ + { + "string": "layers", + "raw_string": "layers" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "map": { + "range": "TestCompile/patterns/alixander-review/3.d2,5:8:24-9:1:44", + "nodes": [ + { + "map_key": { + "range": "TestCompile/patterns/alixander-review/3.d2,6:2:28-8:3:42", + "key": { + "range": "TestCompile/patterns/alixander-review/3.d2,6:2:28-6:3:29", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,6:2:28-6:3:29", + "value": [ + { + "string": "z", + "raw_string": "z" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "map": { + "range": "TestCompile/patterns/alixander-review/3.d2,6:5:31-8:3:42", + "nodes": [ + { + "map_key": { + "range": "TestCompile/patterns/alixander-review/3.d2,7:4:37-7:5:38", + "key": { + "range": "TestCompile/patterns/alixander-review/3.d2,7:4:37-7:5:38", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,7:4:37-7:5:38", + "value": [ + { + "string": "d", + "raw_string": "d" + } + ] + } + } + ] + }, + "primary": {}, + "value": {} + } + } + ] + } + } + } + } + ] + } + } + } + } + }, + { + "string": { + "range": ",0:0:0-0:0:0", + "value": [ + { + "string": "layers" + } + ] + }, + "key_path": { + "range": ",0:0:0-0:0:0", + "path": [ + { + "unquoted_string": { + "range": ",0:0:0-0:0:0", + "value": [ + { + "string": "layers" + } + ] + } + }, + { + "unquoted_string": { + "range": ",0:0:0-0:0:0", + "value": [ + { + "string": "z" + } + ] + } + } + ] + }, + "context": { + "edge": null, + "key": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:10:14", + "key": { + "range": ",0:0:0-0:0:0", + "path": [ + { + "unquoted_string": { + "range": ",0:0:0-0:0:0", + "value": [ + { + "string": "layers" + } + ] + } + }, + { + "unquoted_string": { + "range": ",0:0:0-0:0:0", + "value": [ + { + "string": "z" + } + ] + } + } + ] + }, + "edges": [ + { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:10:14", + "src": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:5:9", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:3:7", + "value": [ + { + "string": "***", + "raw_string": "***" + } + ], + "pattern": [ + "*", + "", + "*", + "", + "*" + ] + } + }, + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:4:8-3:5:9", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "src_arrow": "", + "dst": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "dst_arrow": ">" + } + ], + "primary": {}, + "value": {} + } + } + } + ] + } + ], + "edges": [ + { + "edge_id": { + "src_path": [ + "a", + "b" + ], + "src_arrow": false, + "dst_path": [ + "c" + ], + "dst_arrow": true, + "index": 0, + "glob": false + }, + "references": [ + { + "context": { + "edge": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:10:14", + "src": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:5:9", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:3:7", + "value": [ + { + "string": "***", + "raw_string": "***" + } + ], + "pattern": [ + "*", + "", + "*", + "", + "*" + ] + } + }, + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:4:8-3:5:9", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "src_arrow": "", + "dst": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "dst_arrow": ">" + }, + "key": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:10:14", + "edges": [ + { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:10:14", + "src": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:5:9", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:0:4-3:3:7", + "value": [ + { + "string": "***", + "raw_string": "***" + } + ], + "pattern": [ + "*", + "", + "*", + "", + "*" + ] + } + }, + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:4:8-3:5:9", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "src_arrow": "", + "dst": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "path": [ + { + "unquoted_string": { + "range": "TestCompile/patterns/alixander-review/3.d2,3:9:13-3:10:14", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "dst_arrow": ">" + } + ], + "primary": {}, + "value": {} + } + } + } + ] + } + ] +} diff --git a/testdata/d2ir/TestCompile/patterns/double-glob/defaults.exp.json b/testdata/d2ir/TestCompile/patterns/double-glob/defaults.exp.json index 0e415825f..bae761521 100644 --- a/testdata/d2ir/TestCompile/patterns/double-glob/defaults.exp.json +++ b/testdata/d2ir/TestCompile/patterns/double-glob/defaults.exp.json @@ -1880,284 +1880,6 @@ } } } - }, - { - "string": { - "range": ",0:0:0-0:0:0", - "value": [ - { - "string": "x" - } - ] - }, - "key_path": { - "range": ",0:0:0-0:0:0", - "path": [ - { - "unquoted_string": { - "range": ",0:0:0-0:0:0", - "value": [ - { - "string": "scenarios" - } - ] - } - }, - { - "unquoted_string": { - "range": ",0:0:0-0:0:0", - "value": [ - { - "string": "x" - } - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/double-glob/defaults.d2,0:0:0-0:2:2", - "value": [ - { - "string": "**", - "raw_string": "**" - } - ], - "pattern": [ - "*", - "", - "*" - ] - } - } - ] - }, - "context": { - "edge": null, - "key": { - "range": "TestCompile/patterns/double-glob/defaults.d2,0:0:0-2:1:20", - "key": { - "range": ",0:0:0-0:0:0", - "path": [ - { - "unquoted_string": { - "range": ",0:0:0-0:0:0", - "value": [ - { - "string": "scenarios" - } - ] - } - }, - { - "unquoted_string": { - "range": ",0:0:0-0:0:0", - "value": [ - { - "string": "x" - } - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/double-glob/defaults.d2,0:0:0-0:2:2", - "value": [ - { - "string": "**", - "raw_string": "**" - } - ], - "pattern": [ - "*", - "", - "*" - ] - } - } - ] - }, - "primary": {}, - "value": { - "map": { - "range": "TestCompile/patterns/double-glob/defaults.d2,0:4:4-2:1:20", - "nodes": [ - { - "map_key": { - "range": "TestCompile/patterns/double-glob/defaults.d2,1:1:7-1:12:18", - "key": { - "range": "TestCompile/patterns/double-glob/defaults.d2,1:1:7-1:6:12", - "path": [ - { - "unquoted_string": { - "range": "TestCompile/patterns/double-glob/defaults.d2,1:1:7-1:6:12", - "value": [ - { - "string": "shape", - "raw_string": "shape" - } - ] - } - } - ] - }, - "primary": {}, - "value": { - "unquoted_string": { - "range": "TestCompile/patterns/double-glob/defaults.d2,1:8:14-1:12:18", - "value": [ - { - "string": "page", - "raw_string": "page" - } - ] - } - } - } - } - ] - } - } - } - } - }, - { - "string": { - "range": ",0:0:0-0:0:0", - "value": [ - { - "string": "x" - } - ] - }, - "key_path": { - "range": ",0:0:0-0:0:0", - "path": [ - { - "unquoted_string": { - "range": ",0:0:0-0:0:0", - "value": [ - { - "string": "scenarios" - } - ] - } - }, - { - "unquoted_string": { - "range": ",0:0:0-0:0:0", - "value": [ - { - "string": "x" - } - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/double-glob/defaults.d2,0:0:0-0:2:2", - "value": [ - { - "string": "**", - "raw_string": "**" - } - ], - "pattern": [ - "*", - "", - "*" - ] - } - } - ] - }, - "context": { - "edge": null, - "key": { - "range": "TestCompile/patterns/double-glob/defaults.d2,0:0:0-2:1:20", - "key": { - "range": ",0:0:0-0:0:0", - "path": [ - { - "unquoted_string": { - "range": ",0:0:0-0:0:0", - "value": [ - { - "string": "scenarios" - } - ] - } - }, - { - "unquoted_string": { - "range": ",0:0:0-0:0:0", - "value": [ - { - "string": "x" - } - ] - } - }, - { - "unquoted_string": { - "range": "TestCompile/patterns/double-glob/defaults.d2,0:0:0-0:2:2", - "value": [ - { - "string": "**", - "raw_string": "**" - } - ], - "pattern": [ - "*", - "", - "*" - ] - } - } - ] - }, - "primary": {}, - "value": { - "map": { - "range": "TestCompile/patterns/double-glob/defaults.d2,0:4:4-2:1:20", - "nodes": [ - { - "map_key": { - "range": "TestCompile/patterns/double-glob/defaults.d2,1:1:7-1:12:18", - "key": { - "range": "TestCompile/patterns/double-glob/defaults.d2,1:1:7-1:6:12", - "path": [ - { - "unquoted_string": { - "range": "TestCompile/patterns/double-glob/defaults.d2,1:1:7-1:6:12", - "value": [ - { - "string": "shape", - "raw_string": "shape" - } - ] - } - } - ] - }, - "primary": {}, - "value": { - "unquoted_string": { - "range": "TestCompile/patterns/double-glob/defaults.d2,1:8:14-1:12:18", - "value": [ - { - "string": "page", - "raw_string": "page" - } - ] - } - } - } - } - ] - } - } - } - } } ] },