globs: fix ampersand outside glob
This commit is contained in:
parent
5faa0ad8b8
commit
7d36a57b04
4 changed files with 20 additions and 0 deletions
|
|
@ -31,3 +31,4 @@
|
||||||
- Fixes a panic with a connection to a grid cell that is a container in TALA [#1729](https://github.com/terrastruct/d2/pull/1729)
|
- Fixes a panic with a connection to a grid cell that is a container in TALA [#1729](https://github.com/terrastruct/d2/pull/1729)
|
||||||
- Fixes incorrect grid cell positioning when the grid has a shape set and fixes content sometimes escaping circle shapes. [#1734](https://github.com/terrastruct/d2/pull/1734)
|
- Fixes incorrect grid cell positioning when the grid has a shape set and fixes content sometimes escaping circle shapes. [#1734](https://github.com/terrastruct/d2/pull/1734)
|
||||||
- Fixes content sometimes escaping cloud shapes. [#1736](https://github.com/terrastruct/d2/pull/1736)
|
- Fixes content sometimes escaping cloud shapes. [#1736](https://github.com/terrastruct/d2/pull/1736)
|
||||||
|
- Fixes panic using a glob filter (e.g. `&a`) outside globs. [#1748](https://github.com/terrastruct/d2/pull/1748)
|
||||||
|
|
|
||||||
|
|
@ -394,6 +394,9 @@ func (c *compiler) ampersandFilterMap(dst *Map, ast, scopeAST *d2ast.Map) bool {
|
||||||
ScopeAST: scopeAST,
|
ScopeAST: scopeAST,
|
||||||
})
|
})
|
||||||
if !ok {
|
if !ok {
|
||||||
|
if len(c.mapRefContextStack) == 0 {
|
||||||
|
return false
|
||||||
|
}
|
||||||
// Unapply glob if appropriate.
|
// Unapply glob if appropriate.
|
||||||
gctx := c.getGlobContext(c.mapRefContextStack[len(c.mapRefContextStack)-1])
|
gctx := c.getGlobContext(c.mapRefContextStack[len(c.mapRefContextStack)-1])
|
||||||
if gctx == nil {
|
if gctx == nil {
|
||||||
|
|
|
||||||
|
|
@ -233,6 +233,18 @@ classes: {
|
||||||
TestCompile/filters/errors/bad-syntax.d2:9:1: unexpected map termination character } in file map`)
|
TestCompile/filters/errors/bad-syntax.d2:9:1: unexpected map termination character } in file map`)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "outside-glob",
|
||||||
|
run: func(t testing.TB) {
|
||||||
|
_, err := compile(t, `jacob.style: {
|
||||||
|
fill: red
|
||||||
|
multiple: true
|
||||||
|
}
|
||||||
|
&a
|
||||||
|
`)
|
||||||
|
assert.ErrorString(t, err, `TestCompile/filters/errors/outside-glob.d2:5:1: glob filters cannot be used outside globs`)
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "no-glob",
|
name: "no-glob",
|
||||||
run: func(t testing.TB) {
|
run: func(t testing.TB) {
|
||||||
|
|
|
||||||
4
testdata/d2ir/TestCompile/filters/outside-glob.exp.json
generated
vendored
Normal file
4
testdata/d2ir/TestCompile/filters/outside-glob.exp.json
generated
vendored
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"fields": null,
|
||||||
|
"edges": null
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue