[BUG] val throw AssertionError when use on call parent interface default method
Author: ZenLiuCNCreated May 18, 2020Updated Sep 1, 2026
Describe the bug
val for hold retrun value on call default method on interface;
To Reproduce
import lombok.NonNull;
import lombok.val;
import java.util.HashSet;
import java.util.Set;
public interface LombokTest {
@NonNull
default Set<String> getSet(){
return new HashSet<>();
}
interface LombokMiddle extends LombokTest{
}
interface LombokThird extends LombokTest{
}
class LombokImpl implements LombokThird{
@Override
public @NonNull Set<String> getSet() {
//got error on compile
//Error:java: Lombok visitor handler class lombok.javac.handlers.HandleVal failed: java.lang.AssertionError
val set=LombokThird.super.getSet();
set.add("oh");
return set;
}
}
public static void main(String[] args) {
val sets=new LombokImpl();
System.out.println(sets.getSet().toString());
}
}here is the stack
java.lang.AssertionError
at com.sun.tools.javac.util.Assert.error(Assert.java:126)
at com.sun.tools.javac.comp.Resolve.resolveSelf(Resolve.java:3404)
at com.sun.tools.javac.comp.Attr.selectSym(Attr.java:3399)
at com.sun.tools.javac.comp.Attr.visitSelect(Attr.java:3278)
at com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:1897)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:576)
at com.sun.tools.javac.comp.Attr.visitSelect(Attr.java:3250)
at com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:1897)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:576)
at com.sun.tools.javac.comp.Attr.visitApply(Attr.java:1825)
at com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1465)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:576)
at com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:618)
at com.sun.tools.javac.comp.Attr.visitVarDef(Attr.java:1075)
at com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:852)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:576)
at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:645)
at com.sun.tools.javac.comp.Attr.attribStats(Attr.java:661)
at com.sun.tools.javac.comp.Attr.visitBlock(Attr.java:1124)
at com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:909)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:576)
at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:645)
at lombok.javac.JavacResolution.attrib(JavacResolution.java:235)
at lombok.javac.JavacResolution.memberEnterAndAttribute(JavacResolution.java:203)
at lombok.javac.JavacResolution.resolveMethodMember(JavacResolution.java:151)
at lombok.javac.handlers.HandleVal.visitLocal(HandleVal.java:133)
at lombok.javac.JavacNode.traverse(JavacNode.java:120)
at lombok.javac.JavacAST.traverseChildren(JavacAST.java:133)
at lombok.javac.JavacNode.traverse(JavacNode.java:105)
at lombok.javac.JavacAST.traverseChildren(JavacAST.java:133)
at lombok.javac.JavacNode.traverse(JavacNode.java:95)
at lombok.javac.JavacAST.traverseChildren(JavacAST.java:133)
at lombok.javac.JavacNode.traverse(JavacNode.java:95)
at lombok.javac.JavacAST.traverseChildren(JavacAST.java:133)
at lombok.javac.JavacNode.traverse(JavacNode.java:90)
at lombok.javac.JavacAST.traverse(JavacAST.java:129)
at lombok.javac.HandlerLibrary.callASTVisitors(HandlerLibrary.java:276)
at lombok.javac.JavacTransformer.transform(JavacTransformer.java:81)
at lombok.javac.apt.LombokProcessor.process(LombokProcessor.java:324)
at lombok.core.AnnotationProcessor$JavacDescriptor.process(AnnotationProcessor.java:151)
at lombok.core.AnnotationProcessor.process(AnnotationProcessor.java:201)
at lombok.launch.AnnotationProcessorHider$AnnotationProcessor.process(AnnotationProcessor.java:99)Expected behavior
- at least, we may need more exception infomation on which file and lines error happend
valjust not work on INTERFACE.super.MethodCall();
Version info (please complete the following information):
- IDEA Version: 2020.1
- JDK Version: jdk 1.8_211x64
- OS Type & Version: windows 7 x64
- Lombok Plugin Version: 0.30-2020.1
- Lombok Dependency Version: 1.18.12
Additional context no more
Source: projectlombok/lombok