Mercurial > hg > graal-jvmci-8
diff graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeFactoryFactory.java @ 18780:f4d78e4a878d
Truffle-DSL: fixed create method should have the same visibility as its originating constructor. (GRAAL-365 #resolve)
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Mon, 05 Jan 2015 20:23:22 +0100 |
parents | a720bf2e2f43 |
children | 4ce856e65728 |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeFactoryFactory.java Mon Jan 05 09:58:33 2015 -0800 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeFactoryFactory.java Mon Jan 05 20:23:22 2015 +0100 @@ -71,12 +71,12 @@ clazz.getModifiers().add(Modifier.FINAL); if (createdFactoryElement != null) { - createFactoryMethods(clazz, visibility); clazz.setSuperClass(nodeFactory); clazz.add(createNodeFactoryConstructor()); clazz.add(createCreateNodeMethod()); clazz.add(createGetInstanceMethod(visibility)); clazz.add(createInstanceConstant(clazz.asType())); + createFactoryMethods(clazz); } return clazz; @@ -229,14 +229,18 @@ return var; } - public void createFactoryMethods(CodeTypeElement clazz, Modifier createVisibility) { + public void createFactoryMethods(CodeTypeElement clazz) { List<ExecutableElement> constructors = NodeBaseFactory.findUserConstructors(createdFactoryElement.asType()); for (ExecutableElement constructor : constructors) { - clazz.add(createCreateMethod(createVisibility, constructor)); + clazz.add(createCreateMethod(constructor)); + if (constructor instanceof CodeExecutableElement) { + ElementUtils.setVisibility(constructor.getModifiers(), Modifier.PRIVATE); + } } } - private CodeExecutableElement createCreateMethod(Modifier visibility, ExecutableElement constructor) { + 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();