Skip to content

StateSet in Interface without ExternalRefinements triggers RuntimeException #239

@CatarinaGamboa

Description

@CatarinaGamboa

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions