From 9308d174bb137ef94865a47e828387a93efd0625 Mon Sep 17 00:00:00 2001
From: Anders Nilsson <csandersn@bode>
Date: Tue, 19 May 2009 16:33:07 +0200
Subject: [PATCH] Added workarounds for JavaCC-related bugs in latest JastAdd.

---
 WorkArounds.jrag                     | 15 ++++++++++++
 examples/actors/xdf/MergeActors.jrag |  9 ++++++-
 examples/actors/xlim/Merge.jrag      | 36 ++++++++++++++++++++++++++++
 3 files changed, 59 insertions(+), 1 deletion(-)
 create mode 100644 WorkArounds.jrag
 create mode 100644 examples/actors/xlim/Merge.jrag

diff --git a/WorkArounds.jrag b/WorkArounds.jrag
new file mode 100644
index 0000000..eddb1a0
--- /dev/null
+++ b/WorkArounds.jrag
@@ -0,0 +1,15 @@
+/* -*-Java-*- */
+
+/* 
+ * Copyright (C) 2007  Anders Nilsson <anders.nilsson@cs.lth.se>
+ *
+ * This file is part of XmlSchemaCompiler.
+ */
+
+
+aspect Fixes {
+	int ASTNode.numChildren;
+	int ASTNode.numChildren() {return jjtGetNumChildren();}
+	int List.getNumNoTransformChild() {return getNumChildNoTransform();}
+	int Opt.getNumChildNoTransfrom() {return getNumChildNoTransform();}
+}
\ No newline at end of file
diff --git a/examples/actors/xdf/MergeActors.jrag b/examples/actors/xdf/MergeActors.jrag
index 0c9333f..4dcf792 100644
--- a/examples/actors/xdf/MergeActors.jrag
+++ b/examples/actors/xdf/MergeActors.jrag
@@ -40,6 +40,8 @@ aspect MergeActors {
 				}
 				i.merge(i.next);
 				i.setName(i.name()+"_"+i.next.name());
+				i.next.remove_me = true;
+				i.next.is$Final(false);
 				i.next = i.next.next;
 			}
 		}
@@ -73,11 +75,16 @@ aspect Misc {
 }
 
 aspect Rewrites {
-	boolean Connection.remove_me = false;
+	boolean ComplexElement.remove_me = false;
 	
 	rewrite Connection {
 		when (remove_me) to ComplexElement {
 			return new ComplexElement();
 		}
 	}
+	rewrite Instance
+		when (remove_me) to ComplexElement {
+			return new ComplexElement();
+		}
+	}
 }
\ No newline at end of file
diff --git a/examples/actors/xlim/Merge.jrag b/examples/actors/xlim/Merge.jrag
new file mode 100644
index 0000000..2edcdb3
--- /dev/null
+++ b/examples/actors/xlim/Merge.jrag
@@ -0,0 +1,36 @@
+/* -*-Java-*- */                                         
+
+/*
+ * Copyright (C) 2009  Anders Nilsson <anders.nilsson@cs.lth.se>
+ *                                                              
+ * This file is part of Actors model compiler.                      
+ */                                                             
+
+import java.util.HashSet;
+
+aspect Merge {
+	public void design.merge(design dest) {
+		HashSet<operation> ops = getOperations(new HashSet<operation>());
+		for (Element e : getElements()) {
+			if (e.isAction()) {
+				for (operation o : ops) {
+					((module) e).addElement(o);
+				}
+			}
+		}
+	}
+}
+
+aspect Operations {
+	syn HashSet<operation> Element.getOperations(HashSet<operation> ops) = ops;
+	eq ComplexElement.getOperations(HashSet<operation> ops) {
+		for (Element e : getElements()) {
+			ops = e.getOperations(ops);
+		}
+		return ops;
+	}
+	eq operation.getOperations(HashSet<operation> ops) {
+		ops.add(this);
+		return ops;
+	}
+}
\ No newline at end of file
-- 
GitLab