Merge pull request #886 from alixander/sequence-panic-3
report error if sequence diagram has no actors
This commit is contained in:
commit
e850b24b25
4 changed files with 23 additions and 4 deletions
|
|
@ -3,3 +3,5 @@
|
||||||
#### Improvements 🧹
|
#### Improvements 🧹
|
||||||
|
|
||||||
#### Bugfixes ⛑️
|
#### Bugfixes ⛑️
|
||||||
|
|
||||||
|
- Error reported when no actors are declared in sequence diagram. [#886](https://github.com/terrastruct/d2/pull/886)
|
||||||
|
|
|
||||||
|
|
@ -106,8 +106,11 @@ func layoutSequenceDiagram(g *d2graph.Graph, obj *d2graph.Object) (*sequenceDiag
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sd := newSequenceDiagram(obj.ChildrenArray, edges)
|
sd, err := newSequenceDiagram(obj.ChildrenArray, edges)
|
||||||
err := sd.layout()
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
err = sd.layout()
|
||||||
return sd, err
|
return sd, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package d2sequence
|
package d2sequence
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"math"
|
"math"
|
||||||
"sort"
|
"sort"
|
||||||
|
|
@ -64,7 +65,7 @@ func getEdgeEarliestLineNum(e *d2graph.Edge) int {
|
||||||
return min
|
return min
|
||||||
}
|
}
|
||||||
|
|
||||||
func newSequenceDiagram(objects []*d2graph.Object, messages []*d2graph.Edge) *sequenceDiagram {
|
func newSequenceDiagram(objects []*d2graph.Object, messages []*d2graph.Edge) (*sequenceDiagram, error) {
|
||||||
var actors []*d2graph.Object
|
var actors []*d2graph.Object
|
||||||
var groups []*d2graph.Object
|
var groups []*d2graph.Object
|
||||||
|
|
||||||
|
|
@ -84,6 +85,10 @@ func newSequenceDiagram(objects []*d2graph.Object, messages []*d2graph.Edge) *se
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if len(actors) == 0 {
|
||||||
|
return nil, errors.New("no actors declared in sequence diagram")
|
||||||
|
}
|
||||||
|
|
||||||
sd := &sequenceDiagram{
|
sd := &sequenceDiagram{
|
||||||
messages: messages,
|
messages: messages,
|
||||||
actors: actors,
|
actors: actors,
|
||||||
|
|
@ -185,7 +190,7 @@ func newSequenceDiagram(objects []*d2graph.Object, messages []*d2graph.Edge) *se
|
||||||
sd.maxActorHeight += float64(*sd.root.LabelHeight)
|
sd.maxActorHeight += float64(*sd.root.LabelHeight)
|
||||||
}
|
}
|
||||||
|
|
||||||
return sd
|
return sd, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (sd *sequenceDiagram) layout() error {
|
func (sd *sequenceDiagram) layout() error {
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,15 @@ B: goodbye {
|
||||||
|
|
||||||
A->B`,
|
A->B`,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "undeclared_nested_sequence",
|
||||||
|
script: `shape: sequence_diagram
|
||||||
|
group.nested: {
|
||||||
|
a -> b
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
expErr: "no actors declared in sequence diagram",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "nested_steps",
|
name: "nested_steps",
|
||||||
script: `a: {
|
script: `a: {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue