# HG changeset patch # User Roland Schatz # Date 1448459349 -3600 # Node ID a6b3ae0720730bb95002badd3e3c85091ea50aa9 # Parent b00ef2b9cd00429ddbf2447fc8fc67d0831d8c62 Correctly record element dependencies in PluginGenerator annotation processor. diff -r b00ef2b9cd00 -r a6b3ae072073 graal/com.oracle.graal.replacements.verifier/src/com/oracle/graal/replacements/verifier/PluginGenerator.java --- 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");