Description
RuntimeException when forgetting the @ExternalRefinementsFor("javax.imageio.ImageWriteParam")
Minimal reproducer
// @ExternalRefinementsFor("javax.imageio.ImageWriteParam")
@StateSet({"start", "acceptCompression", "compressionExplicit", "compressionSet"})
public interface ImageWriteParamsRefinements { }
With a class or uncommenting first line it does not trigger the exception.
Expected behavior
No exception for sure, since its an interface we can maybe give an hint to add a @ExternalRefinements or change to a class.
Actual behavior
Stack trace
java.lang.RuntimeException: Error in creation of GhostFunction
at liquidjava.processor.refinement_checker.TypeChecker.createStateSet (TypeChecker.java:208)
at liquidjava.processor.refinement_checker.TypeChecker.handleStateSetsFromAnnotation (TypeChecker.java:183)
at liquidjava.processor.refinement_checker.MethodsFirstChecker.visitCtInterface (MethodsFirstChecker.java:88)
at spoon.support.reflect.declaration.CtInterfaceImpl.accept (CtInterfaceImpl.java:44)
at liquidjava.processor.RefinementProcessor.runChecker (RefinementProcessor.java:71)
at liquidjava.processor.RefinementProcessor.lambda$processPackage$0 (RefinementProcessor.java:47)
at java.lang.Iterable.forEach (Iterable.java:75)
at liquidjava.processor.RefinementProcessor.processPackage (RefinementProcessor.java:44)
at liquidjava.processor.RefinementProcessor.processPackage (RefinementProcessor.java:57)
at liquidjava.processor.RefinementProcessor.processPackage (RefinementProcessor.java:57)
at liquidjava.processor.RefinementProcessor.processPackage (RefinementProcessor.java:57)
at liquidjava.processor.RefinementProcessor.processPackage (RefinementProcessor.java:57)
at liquidjava.processor.RefinementProcessor.process (RefinementProcessor.java:38)
at liquidjava.processor.RefinementProcessor.process (RefinementProcessor.java:18)
at spoon.support.visitor.ProcessingVisitor.scan (ProcessingVisitor.java:72)
at spoon.support.QueueProcessingManager.process (QueueProcessingManager.java:118)
at spoon.support.QueueProcessingManager.process (QueueProcessingManager.java:132)
at liquidjava.api.CommandLineLauncher.launch (CommandLineLauncher.java:88)
at liquidjava.api.CommandLineLauncher.main (CommandLineLauncher.java:40)
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
at java.lang.reflect.Method.invoke (Method.java:580)
at org.codehaus.mojo.exec.AbstractExecJavaBase.executeMainMethod (AbstractExecJavaBase.java:402)
at org.codehaus.mojo.exec.ExecJavaMojo.executeMainMethod (ExecJavaMojo.java:142)
at org.codehaus.mojo.exec.AbstractExecJavaBase.doExecClassLoader (AbstractExecJavaBase.java:377)
at org.codehaus.mojo.exec.AbstractExecJavaBase.lambda$execute$0 (AbstractExecJavaBase.java:287)
at java.lang.Thread.run (Thread.java:1575)
[
Environment
Description
RuntimeException when forgetting the
@ExternalRefinementsFor("javax.imageio.ImageWriteParam")Minimal reproducer
With a class or uncommenting first line it does not trigger the exception.
Expected behavior
No exception for sure, since its an interface we can maybe give an hint to add a
@ExternalRefinementsor change to a class.Actual behavior
Stack trace
Environment
java -version):