From 30011b029b6a517c9810e35e4a283662974c6fb2 Mon Sep 17 00:00:00 2001 From: Johannes Mey <johannes.mey@tu-dresden.de> Date: Mon, 3 Jun 2019 16:12:36 +0200 Subject: [PATCH] nonterminals with NTA children AND relations now get the correct constructor --- src/main/jastadd/Analysis.jrag | 10 +++++++++- src/test/jastadd/relations/Relations.relast | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/jastadd/Analysis.jrag b/src/main/jastadd/Analysis.jrag index 941256e..8f586ce 100644 --- a/src/main/jastadd/Analysis.jrag +++ b/src/main/jastadd/Analysis.jrag @@ -170,7 +170,9 @@ aspect Constructors { list.addAll(getSuper().decl().componentsTransitive()); } for (Component c: getComponents()) { - list.add(c); + if (c.inConstructor()) { + list.add(c); + } } return list; } @@ -186,6 +188,12 @@ aspect Constructors { && getSuper().decl() != null && getSuper().decl().needsConstructor(); } + + /** + * @return true, if the component should be added to the constructor (i.e., is not an NTA) + */ + syn boolean Component.inConstructor() = true; + eq NTAComponent.inConstructor() = false; } aspect Utils { diff --git a/src/test/jastadd/relations/Relations.relast b/src/test/jastadd/relations/Relations.relast index 51f3c62..6a56229 100644 --- a/src/test/jastadd/relations/Relations.relast +++ b/src/test/jastadd/relations/Relations.relast @@ -1,5 +1,5 @@ Root ::= A* B*; -A ::= <Name>; +A ::= <Name> /SomeNTA:A/; B ::= <Name>; rel A.Di1 -> B; -- GitLab