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