changeset 18807:4ce856e65728

Truffle-DSL: fix visiblity of create methods.
author Christian Humer <christian.humer@gmail.com>
date Fri, 09 Jan 2015 16:33:08 +0100
parents b9cf6f3150ea
children cd0ae2f782c9
files graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeBaseFactory.java graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeCodeGenerator.java graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeFactoryFactory.java
diffstat 3 files changed, 9 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeBaseFactory.java	Fri Jan 09 16:04:37 2015 +0100
+++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeBaseFactory.java	Fri Jan 09 16:33:08 2015 +0100
@@ -138,8 +138,9 @@
     }
 
     public static List<ExecutableElement> findUserConstructors(TypeMirror nodeType) {
+        TypeElement type = ElementUtils.fromTypeMirror(nodeType);
         List<ExecutableElement> constructors = new ArrayList<>();
-        for (ExecutableElement constructor : ElementFilter.constructorsIn(ElementUtils.fromTypeMirror(nodeType).getEnclosedElements())) {
+        for (ExecutableElement constructor : ElementFilter.constructorsIn(type.getEnclosedElements())) {
             if (constructor.getModifiers().contains(PRIVATE)) {
                 continue;
             }
@@ -150,7 +151,9 @@
         }
 
         if (constructors.isEmpty()) {
-            constructors.add(new CodeExecutableElement(null, ElementUtils.getSimpleName(nodeType)));
+            CodeExecutableElement executable = new CodeExecutableElement(null, ElementUtils.getSimpleName(nodeType));
+            ElementUtils.setVisibility(executable.getModifiers(), ElementUtils.getVisibility(type.getModifiers()));
+            constructors.add(executable);
         }
 
         return constructors;
@@ -439,6 +442,7 @@
 
     private CodeExecutableElement createUserConstructor(CodeTypeElement type, ExecutableElement superConstructor) {
         CodeExecutableElement method = new CodeExecutableElement(null, type.getSimpleName().toString());
+        ElementUtils.setVisibility(method.getModifiers(), ElementUtils.getVisibility(superConstructor.getModifiers()));
         CodeTreeBuilder builder = method.createBuilder();
 
         if (superConstructor != null) {
@@ -1838,12 +1842,12 @@
     /**
      * <pre>
      * variant1 $condition != null
-     * 
+     *
      * $type $name = defaultValue($type);
      * if ($condition) {
      *     $name = $value;
      * }
-     * 
+     *
      * variant2 $condition != null
      * $type $name = $value;
      * </pre>
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeCodeGenerator.java	Fri Jan 09 16:04:37 2015 +0100
+++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeCodeGenerator.java	Fri Jan 09 16:33:08 2015 +0100
@@ -103,9 +103,6 @@
             }
             new NodeFactoryFactory(context, node, second).createFactoryMethods(first);
             ElementUtils.setVisibility(first.getModifiers(), ElementUtils.getVisibility(node.getTemplateType().getModifiers()));
-            for (ExecutableElement constructor : ElementFilter.constructorsIn(first.getEnclosedElements())) {
-                ElementUtils.setVisibility(((CodeExecutableElement) constructor).getModifiers(), Modifier.PRIVATE);
-            }
 
             return first;
         }
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeFactoryFactory.java	Fri Jan 09 16:04:37 2015 +0100
+++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeFactoryFactory.java	Fri Jan 09 16:33:08 2015 +0100
@@ -240,13 +240,10 @@
     }
 
     private CodeExecutableElement createCreateMethod(ExecutableElement constructor) {
-        Modifier visibility = ElementUtils.getVisibility(constructor.getModifiers());
         CodeExecutableElement method = CodeExecutableElement.clone(context.getEnvironment(), constructor);
         method.setSimpleName(CodeNames.of("create"));
         method.getModifiers().clear();
-        if (visibility != null) {
-            method.getModifiers().add(visibility);
-        }
+        method.getModifiers().add(Modifier.PUBLIC);
         method.getModifiers().add(Modifier.STATIC);
         method.setReturnType(node.getNodeType());