这是indexloc提供的服务,不要输入任何密码
Skip to content

[BUG] javac crash @Getter(lazy=true) #3481

@lrozenblyum

Description

@lrozenblyum

Describe the bug
javac crashes when @Getter(lazy=true) with specific content is encountered in the code

To Reproduce

import java.util.function.Predicate;
import java.util.stream.Stream;
import lombok.Getter;

public class Sample {
	@Getter(lazy = true)
	private final String something = Stream.<String>empty()
		.filter(this.contains("test")) // also com.google.common.base.Predicates.alwaysTrue() would trigger the bug
		.skip(true ? 1 : 0)
		.findAny()
		.get();

	private Predicate<String> contains(String s) {
		return (checked -> checked.contains(s));
	}
}

mvn clean compile crashes:

An exception has occurred in the compiler (17.0.8). Please file a bug against the Java compiler via the Java bug reporting page (https://bugreport.java.com) after checking the Bug Database (https://bugs.java.com) for duplicates. Include your program, the following diagnostic, and the parameters passed to the Java compiler in your report. Thank you.
java.lang.ClassCastException: class com.sun.tools.javac.tree.JCTree$JCMethodInvocation cannot be cast to class com.sun.tools.javac.tree.JCTree$JCConditional (com.sun.tools.javac.tree.JCTree$JCMethodInvocation and com.sun.tools.javac.tree.JCTree$JCConditional are in module jdk.compiler of loader 'app')
        at jdk.compiler/com.sun.tools.javac.comp.ArgumentAttr$ConditionalType.dup(ArgumentAttr.java:426)
        at jdk.compiler/com.sun.tools.javac.comp.ArgumentAttr.processArg(ArgumentAttr.java:240)
        at jdk.compiler/com.sun.tools.javac.comp.ArgumentAttr.processArg(ArgumentAttr.java:219)
        at jdk.compiler/com.sun.tools.javac.comp.ArgumentAttr.visitApply(ArgumentAttr.java:313)
        at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1797)
        at jdk.compiler/com.sun.tools.javac.comp.ArgumentAttr.attribArg(ArgumentAttr.java:197)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:675)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribArgs(Attr.java:778)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.visitApply(Attr.java:2559)
        at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1797)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:677)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.visitSelect(Attr.java:4270)
        at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:2450)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:677)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.visitApply(Attr.java:2568)
        at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1797)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:677)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.visitSelect(Attr.java:4270)
        at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:2450)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:677)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.visitApply(Attr.java:2568)
        at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1797)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:677)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.visitSelect(Attr.java:4270)
        at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:2450)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:677)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.visitApply(Attr.java:2568)
        at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1797)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:677)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:723)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.visitVarDef(Attr.java:1315)
        at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:1027)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:677)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStat(Attr.java:751)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStats(Attr.java:770)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.visitBlock(Attr.java:1449)
        at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1091)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:677)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStat(Attr.java:751)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.visitIf(Attr.java:2199)
        at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCIf.accept(JCTree.java:1553)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:677)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStat(Attr.java:751)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStats(Attr.java:770)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.visitBlock(Attr.java:1449)
        at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1091)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:677)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStat(Attr.java:751)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.visitSynchronized(Attr.java:1867)
        at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCSynchronized.accept(JCTree.java:1409)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:677)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStat(Attr.java:751)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStats(Attr.java:770)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.visitBlock(Attr.java:1449)
        at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1091)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:677)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStat(Attr.java:751)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.visitIf(Attr.java:2199)
        at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCIf.accept(JCTree.java:1553)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:677)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStat(Attr.java:751)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStats(Attr.java:770)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.visitBlock(Attr.java:1449)
        at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1091)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:677)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStat(Attr.java:751)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.visitMethodDef(Attr.java:1239)
        at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:921)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:677)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStat(Attr.java:751)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribClassBody(Attr.java:5479)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribClass(Attr.java:5370)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attribClass(Attr.java:5201)
        at jdk.compiler/com.sun.tools.javac.comp.Attr.attrib(Attr.java:5146)
        at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.attribute(JavaCompiler.java:1317)
        at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:946)
        at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.lambda$doCall$0(JavacTaskImpl.java:104)
        at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.invocationHelper(JavacTaskImpl.java:152)
        at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:100)
        at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:94)
        at org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess(JavaxToolsCompiler.java:136)
        at org.codehaus.plexus.compiler.javac.JavacCompiler.performCompile(JavacCompiler.java:182)
        at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:1209)
        at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:198)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:210)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:957)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:289)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:193)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)

Expected behavior
Successful compilation

Version info (please complete the following information):

  • Lombok version: 1.18.28
  • javac: 17.0.8 (Oracle)
  • Maven: 3.6.3

Additional context
Eclipse compiles the code without errors

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions