From 5a95f3775eda6a500bf730109db9533571b88cff Mon Sep 17 00:00:00 2001
From: Sven Gestegard Robertz <sven.robertz@cs.lth.se>
Date: Wed, 13 May 2015 11:56:46 +0200
Subject: [PATCH] Don't generate intentions for typedefs (to avoid generating
 two intention strings for UserTypes)

---
 compiler/2014/FlatSignature.jrag | 30 ++++++++++++++++++++----------
 1 file changed, 20 insertions(+), 10 deletions(-)

diff --git a/compiler/2014/FlatSignature.jrag b/compiler/2014/FlatSignature.jrag
index 363e322..350b224 100644
--- a/compiler/2014/FlatSignature.jrag
+++ b/compiler/2014/FlatSignature.jrag
@@ -1,15 +1,22 @@
 import java.util.*;
 
-aspect FlatSignature {  
+aspect NoIntentionForTypedefs {
+    inh boolean TypeInstance.addIntentions();
+    eq Decl.getTypeInstance().addIntentions() = false;
+    eq SampleDecl.getTypeInstance().addIntentions() = true;
+    eq StructType.getField(int i).addIntentions() = true;
+}
+
+aspect FlatSignature {
 
   public SignatureList Decl.flatSignature(int version) {
     SignatureList result = getSignature().getFlatSignatureList();
     return result;
   }
-  
+
   public void ASTNode.flatSignature(SignatureList list) {
-    throw new Error(this.getClass().getName() + 
-                    ".flatSignature(SignatureList list)" + 
+    throw new Error(this.getClass().getName() +
+                    ".flatSignature(SignatureList list)" +
                     " not declared");
   }
 
@@ -26,9 +33,11 @@ aspect FlatSignature {
 //  }
 
   public void TypeInstance.flatSignature(SignatureList list) {
-        debugAnnotations(this.getName());
-        list.addString(getIntentionString(), "intentions: "+getIntentionString());
-        getDataType().flatSignature(list);
+    if(addIntentions()) {
+      debugAnnotations(this.getName()+".TypeInstance.flatSignature");
+      list.addString(getIntentionString(), "intentions: "+getIntentionString());
+    }
+    getDataType().flatSignature(list);
   }
 
   public void VoidType.flatSignature(SignatureList list) {
@@ -68,6 +77,7 @@ aspect FlatSignature {
   }
 
   public void Field.flatSignature(SignatureList list) {
+    debugAnnotations(this.getName()+".Field.flatSignature");
     list.addString(getIntentionString(), "intentions: "+getIntentionString());
     list.addString(getName(), signatureComment());
     getDataType().flatSignature(list);
@@ -85,7 +95,7 @@ aspect FlatSignature {
     StringBuffer result = new StringBuffer("array [");
     for (int i = 0 ; i < getNumExp() ; i++) {
       if (i > 0) {
-	result.append(", ");
+  result.append(", ");
       }
       result.append(getExp(i).signatureComment());
     }
@@ -94,8 +104,8 @@ aspect FlatSignature {
   }
 
   public String ASTNode.signatureComment() {
-    throw new Error(this.getClass().getName() + 
-                    ".signatureComment()" + 
+    throw new Error(this.getClass().getName() +
+                    ".signatureComment()" +
                     " not declared");
   }
 
-- 
GitLab