#2468·lombok

[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

java
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 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
  • val just 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