diff graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/Utils.java @ 12564:935dcd8ad8eb

Truffle-DSL: fixed wrong type simple name references with ECJ in generated code.
author Christian Humer <christian.humer@gmail.com>
date Mon, 21 Oct 2013 11:07:32 +0200
parents 8970574702a4
children bd28da642eea
line wrap: on
line diff
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/Utils.java	Wed Oct 16 18:27:28 2013 +0200
+++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/Utils.java	Mon Oct 21 11:07:32 2013 +0200
@@ -306,7 +306,7 @@
             case LONG:
                 return "Long";
             case DECLARED:
-                return ((DeclaredType) mirror).asElement().getSimpleName().toString();
+                return fixECJBinaryNameIssue(((DeclaredType) mirror).asElement().getSimpleName().toString());
             case ARRAY:
                 return getTypeId(((ArrayType) mirror).getComponentType()) + "Array";
             case VOID:
@@ -379,7 +379,7 @@
     }
 
     private static String getDeclaredName(DeclaredType element) {
-        String simpleName = element.asElement().getSimpleName().toString();
+        String simpleName = fixECJBinaryNameIssue(element.asElement().getSimpleName().toString());
 
         if (element.getTypeArguments().size() == 0) {
             return simpleName;
@@ -399,6 +399,14 @@
         return b.toString();
     }
 
+    public static String fixECJBinaryNameIssue(String name) {
+        if (name.contains("$")) {
+            int lastIndex = name.lastIndexOf('$');
+            return name.substring(lastIndex + 1, name.length());
+        }
+        return name;
+    }
+
     public static String getQualifiedName(TypeElement element) {
         String qualifiedName = element.getQualifiedName().toString();
         if (qualifiedName.contains("$")) {