Mercurial > hg > graal-compiler
changeset 23079:a6b3ae072073
Correctly record element dependencies in PluginGenerator annotation processor.
author | Roland Schatz <roland.schatz@oracle.com> |
---|---|
date | Wed, 25 Nov 2015 14:49:09 +0100 |
parents | b00ef2b9cd00 |
children | e8655ca07d90 |
files | graal/com.oracle.graal.replacements.verifier/src/com/oracle/graal/replacements/verifier/PluginGenerator.java |
diffstat | 1 files changed, 8 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.replacements.verifier/src/com/oracle/graal/replacements/verifier/PluginGenerator.java Tue Nov 24 19:31:56 2015 +0100 +++ b/graal/com.oracle.graal.replacements.verifier/src/com/oracle/graal/replacements/verifier/PluginGenerator.java Wed Nov 25 14:49:09 2015 +0100 @@ -57,12 +57,14 @@ return env.getElementUtils().getTypeElement("jdk.vm.ci.meta.ResolvedJavaType").asType(); } - private static PackageElement getPackage(Element element) { - Element enclosing = element; + private static Element getTopLevelClass(Element element) { + Element prev = element; + Element enclosing = element.getEnclosingElement(); while (enclosing != null && enclosing.getKind() != ElementKind.PACKAGE) { + prev = enclosing; enclosing = enclosing.getEnclosingElement(); } - return (PackageElement) enclosing; + return prev; } private static void mkClassName(StringBuilder ret, Element cls) { @@ -109,12 +111,13 @@ void createPluginFactory(ExecutableElement intrinsicMethod, ExecutableElement targetMethod, TypeMirror[] constructorSignature) { Element declaringClass = intrinsicMethod.getEnclosingElement(); - PackageElement pkg = getPackage(declaringClass); + Element topLevelClass = getTopLevelClass(declaringClass); + PackageElement pkg = (PackageElement) topLevelClass.getEnclosingElement(); String genClassName = mkFactoryClassName(intrinsicMethod); try { - JavaFileObject factory = env.getFiler().createSourceFile(pkg.getQualifiedName() + "." + genClassName, intrinsicMethod); + JavaFileObject factory = env.getFiler().createSourceFile(pkg.getQualifiedName() + "." + genClassName, topLevelClass, declaringClass, intrinsicMethod); try (PrintWriter out = new PrintWriter(factory.openWriter())) { out.printf("// CheckStyle: stop header check\n"); out.printf("// CheckStyle: stop line length check\n");