Mercurial > hg > graal-jvmci-8
changeset 22743:f23c3e2022d9
workaround for Eclipse bug 367599
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Fri, 04 Dec 2015 13:47:46 +0100 |
parents | 8a91781d5afc |
children | de8872d1c208 |
files | jvmci/jdk.vm.ci.service.processor/src/jdk/vm/ci/service/processor/ServiceProviderProcessor.java |
diffstat | 1 files changed, 21 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/jvmci/jdk.vm.ci.service.processor/src/jdk/vm/ci/service/processor/ServiceProviderProcessor.java Thu Nov 26 14:49:10 2015 +0100 +++ b/jvmci/jdk.vm.ci.service.processor/src/jdk/vm/ci/service/processor/ServiceProviderProcessor.java Fri Dec 04 13:47:46 2015 +0100 @@ -29,6 +29,7 @@ import java.util.Set; import javax.annotation.processing.AbstractProcessor; +import javax.annotation.processing.FilerException; import javax.annotation.processing.RoundEnvironment; import javax.annotation.processing.SupportedAnnotationTypes; import javax.lang.model.SourceVersion; @@ -99,10 +100,29 @@ writer.println(interfaceName); writer.close(); } catch (IOException e) { - processingEnv.getMessager().printMessage(Kind.ERROR, e.getMessage(), serviceProvider); + processingEnv.getMessager().printMessage(isBug367599(e) ? Kind.NOTE : Kind.ERROR, e.getMessage(), serviceProvider); } } + /** + * Determines if a given exception is (most likely) caused by <a + * href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=367599">Bug 367599</a>. + */ + public static boolean isBug367599(Throwable t) { + if (t instanceof FilerException) { + for (StackTraceElement ste : t.getStackTrace()) { + if (ste.toString().contains("org.eclipse.jdt.internal.apt.pluggable.core.filer.IdeFilerImpl.create")) { + // See: https://bugs.eclipse.org/bugs/show_bug.cgi?id=367599 + return true; + } + } + } + if (t.getCause() != null) { + return isBug367599(t.getCause()); + } + return false; + } + @Override public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) { if (roundEnv.processingOver()) {