[BUG] 在调用父接口默认方法时,val 会抛出 AssertionError
作者: ZenLiuCN创建于 2020年5月18日更新于 2026年9月1日
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
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
…内容来源: projectlombok/lombok