diff graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/TypeSystemCodeGenerator.java @ 20949:9a83732f97eb

Truffle-DSL: ensure proper wildcards for generics are filled in; remove unused type system node code generator.
author Christian Humer <christian.humer@gmail.com>
date Tue, 14 Apr 2015 19:23:33 +0200
parents 18c0f02fa4d2
children 2e850dbf82ae
line wrap: on
line diff
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/TypeSystemCodeGenerator.java	Tue Apr 14 19:23:33 2015 +0200
+++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/TypeSystemCodeGenerator.java	Tue Apr 14 19:23:33 2015 +0200
@@ -95,7 +95,7 @@
 
         TypeCastData cast = typeSystem.getCast(type);
         if (cast == null) {
-            builder.cast(type, content);
+            builder.cast(ElementUtils.fillInGenericWildcards(type), content);
         } else {
             builder.startStaticCall(typeSystem.getTemplateType().asType(), cast.getMethodName()).tree(content).end();
         }
@@ -116,10 +116,13 @@
         return builder.build();
     }
 
-    public static CodeExecutableElement createExpectMethod(Modifier visibility, TypeSystemData typeSystem, TypeMirror sourceType, TypeMirror expectedType) {
+    public static CodeExecutableElement createExpectMethod(Modifier visibility, TypeSystemData typeSystem, TypeMirror sourceTypeOriginal, TypeMirror expectedTypeOriginal) {
+        TypeMirror expectedType = ElementUtils.fillInGenericWildcards(expectedTypeOriginal);
+        TypeMirror sourceType = ElementUtils.fillInGenericWildcards(sourceTypeOriginal);
         if (ElementUtils.isObject(expectedType) || ElementUtils.isVoid(expectedType)) {
             return null;
         }
+
         CodeExecutableElement method = new CodeExecutableElement(modifiers(STATIC), expectedType, TypeSystemCodeGenerator.expectTypeMethodName(typeSystem, expectedType));
         method.setVisibility(visibility);
         method.addParameter(new CodeVariableElement(sourceType, LOCAL_VALUE));
@@ -209,8 +212,6 @@
     public CodeTypeElement create(ProcessorContext context, TypeSystemData typeSystem) {
         CodeTypeElement clazz = new TypeClassFactory(context, typeSystem).create();
 
-        clazz.add(new TypeSystemNodeFactory(context, typeSystem).create());
-
         if (typeSystem.getOptions().implicitCastOptimization().isMergeCasts()) {
             for (TypeMirror type : typeSystem.lookupTargetTypes()) {
                 clazz.add(new ImplicitCastNodeFactory(context, typeSystem, type).create());