# HG changeset patch # User Doug Simon # Date 1432471358 -7200 # Node ID ee764a50af61d73ba46be8eb23944f353097ca02 # Parent 01319414783b7f0b2899bce6c64d7642837b9d12 require @ServiceProcessor annotated classes to be top level types diff -r 01319414783b -r ee764a50af61 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/jvmci/HotSpotOptions.java diff -r 01319414783b -r ee764a50af61 graal/com.oracle.graal.service.processor/src/com/oracle/graal/service/processor/ServiceProviderProcessor.java --- a/graal/com.oracle.graal.service.processor/src/com/oracle/graal/service/processor/ServiceProviderProcessor.java Sun May 24 13:11:53 2015 +0200 +++ b/graal/com.oracle.graal.service.processor/src/com/oracle/graal/service/processor/ServiceProviderProcessor.java Sun May 24 14:42:38 2015 +0200 @@ -75,6 +75,15 @@ } private void createProviderFile(TypeElement serviceProvider, String interfaceName) { + if (serviceProvider.getNestingKind().isNested()) { + // This is a simplifying constraint that means we don't have to + // processed the qualified name to insert '$' characters at + // the relevant positions. + String msg = String.format("Service provider class %s must be a top level class", serviceProvider.getSimpleName()); + processingEnv.getMessager().printMessage(Kind.ERROR, msg, serviceProvider); + return; + } + String filename = "META-INF/providers/" + serviceProvider.getQualifiedName(); try { FileObject file = processingEnv.getFiler().createResource(StandardLocation.CLASS_OUTPUT, "", filename, serviceProvider);