eclipse-jdtls / eclipse-jdt-core-incubator

Eclipse Public License 2.0
8 stars 1 forks source link

[javac] IllegalArgumentException in JavacTaskImpl.parse when using lombok #438

Open fbricon opened 1 month ago

fbricon commented 1 month ago

I tried opening this maven/lombok project, I get these errors when trying to change the Main.java file:

java.lang.IllegalArgumentException
java.lang.IllegalStateException: java.lang.IllegalArgumentException
    at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.parse(JavacTaskImpl.java:252)
    at org.eclipse.jdt.core.dom.JavacCompilationUnitResolver.parse(JavacCompilationUnitResolver.java:327)
    at org.eclipse.jdt.core.dom.JavacCompilationUnitResolver.toCompilationUnit(JavacCompilationUnitResolver.java:253)
    at org.eclipse.jdt.core.dom.ASTParser.internalCreateCompilationUnit(ASTParser.java:1252)
    at org.eclipse.jdt.core.dom.ASTParser.internalCreateASTCached(ASTParser.java:1164)
    at org.eclipse.jdt.core.dom.ASTParser.lambda$0(ASTParser.java:1131)
    at org.eclipse.jdt.internal.core.JavaModelManager.cacheZipFiles(JavaModelManager.java:5765)
    at org.eclipse.jdt.core.dom.ASTParser.internalCreateAST(ASTParser.java:1131)
    at org.eclipse.jdt.core.dom.ASTParser.createAST(ASTParser.java:879)
    at org.eclipse.jdt.internal.core.CompilationUnit.buildStructure(CompilationUnit.java:219)
    at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:245)
    at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:585)
    at org.eclipse.jdt.internal.core.CompilationUnit.makeConsistent(CompilationUnit.java:1322)
    at org.eclipse.jdt.internal.core.CompilationUnit.makeConsistent(CompilationUnit.java:1302)
    at org.eclipse.jdt.ls.core.internal.handlers.BaseDocumentLifeCycleHandler.performValidation(BaseDocumentLifeCycleHandler.java:227)
    at org.eclipse.jdt.ls.core.internal.handlers.BaseDocumentLifeCycleHandler$1.run(BaseDocumentLifeCycleHandler.java:137)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Caused by: java.lang.IllegalArgumentException
    at jdk.compiler/com.sun.tools.javac.util.JCDiagnostic.<init>(JCDiagnostic.java:643)
    at jdk.compiler/com.sun.tools.javac.util.JCDiagnostic.<init>(JCDiagnostic.java:623)
    at jdk.compiler/com.sun.tools.javac.util.JCDiagnostic$Factory.create(JCDiagnostic.java:300)
    at jdk.compiler/com.sun.tools.javac.util.JCDiagnostic$Factory.error(JCDiagnostic.java:113)
    at jdk.compiler/com.sun.tools.javac.util.AbstractLog.error(AbstractLog.java:145)
    at jdk.compiler/com.sun.tools.javac.parser.JavaTokenizer.lexError(JavaTokenizer.java:216)
    at jdk.compiler/com.sun.tools.javac.parser.JavaTokenizer.readToken(JavaTokenizer.java:1180)
    at jdk.compiler/com.sun.tools.javac.parser.Scanner.nextToken(Scanner.java:117)
    at org.eclipse.jdt.internal.javac.JavacProblemConverter.getPositionUsingScanner(JavacProblemConverter.java:135)
    at org.eclipse.jdt.internal.javac.JavacProblemConverter.getDiagnosticPosition(JavacProblemConverter.java:109)
    at org.eclipse.jdt.internal.javac.JavacProblemConverter.createJavacProblem(JavacProblemConverter.java:76)
    at org.eclipse.jdt.core.dom.JavacCompilationUnitResolver.lambda$14(JavacCompilationUnitResolver.java:284)
    at java.base/java.util.Optional.ifPresent(Optional.java:178)
    at org.eclipse.jdt.core.dom.JavacCompilationUnitResolver.lambda$13(JavacCompilationUnitResolver.java:283)
    at jdk.compiler/com.sun.tools.javac.util.Log.writeDiagnostic(Log.java:730)
    at jdk.compiler/com.sun.tools.javac.util.Log$DefaultDiagnosticHandler.report(Log.java:711)
    at jdk.compiler/com.sun.tools.javac.util.Log.report(Log.java:664)
    at jdk.compiler/com.sun.tools.javac.util.AbstractLog.error(AbstractLog.java:145)
    at jdk.compiler/com.sun.tools.javac.parser.JavaTokenizer.lexError(JavaTokenizer.java:216)
    at jdk.compiler/com.sun.tools.javac.parser.JavaTokenizer.readToken(JavaTokenizer.java:1180)
    at jdk.compiler/com.sun.tools.javac.parser.Scanner.nextToken(Scanner.java:117)
    at jdk.compiler/com.sun.tools.javac.parser.JavacParser.nextToken(JavacParser.java:317)
    at jdk.compiler/com.sun.tools.javac.parser.JavacParser.ident(JavacParser.java:627)
    at jdk.compiler/com.sun.tools.javac.parser.JavacParser.ident(JavacParser.java:617)
    at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term3Rest(JavacParser.java:1782)
    at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term3(JavacParser.java:1668)
    at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term2(JavacParser.java:1097)
    at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:1068)
    at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:1024)
    at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:1004)
    at jdk.compiler/com.sun.tools.javac.parser.JavacParser.blockStatement(JavacParser.java:2922)
    at jdk.compiler/com.sun.tools.javac.parser.JavacParser.blockStatements(JavacParser.java:2762)
    at jdk.compiler/com.sun.tools.javac.parser.JavacParser.block(JavacParser.java:2732)
    at jdk.compiler/com.sun.tools.javac.parser.JavacParser.block(JavacParser.java:2746)
    at jdk.compiler/com.sun.tools.javac.parser.JavacParser.methodDeclaratorRest(JavacParser.java:4910)
    at jdk.compiler/com.sun.tools.javac.parser.JavacParser.constructorOrMethodOrFieldDeclaration(JavacParser.java:4707)
    at jdk.compiler/com.sun.tools.javac.parser.JavacParser.classOrInterfaceOrRecordBodyDeclaration(JavacParser.java:4632)
    at jdk.compiler/com.sun.tools.javac.parser.JavacParser.classInterfaceOrRecordBody(JavacParser.java:4571)
    at jdk.compiler/com.sun.tools.javac.parser.JavacParser.classDeclaration(JavacParser.java:4271)
    at jdk.compiler/com.sun.tools.javac.parser.JavacParser.classOrRecordOrInterfaceOrEnumDeclaration(JavacParser.java:4218)
    at jdk.compiler/com.sun.tools.javac.parser.JavacParser.typeDeclaration(JavacParser.java:4207)
    at jdk.compiler/com.sun.tools.javac.parser.JavacParser.parseCompilationUnit(JavacParser.java:4014)
    at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:652)
    at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:629)
    at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:689)
    at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.parseFiles(JavaCompiler.java:1043)
    at jdk.compiler/com.sun.tools.javac.main.JavaCompiler$InitialFileParser.parse(JavaCompiler.java:1980)
    at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.parseFiles(JavaCompiler.java:1030)
    at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.parseInternal(JavacTaskImpl.java:258)
    at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.invocationHelper(JavacTaskImpl.java:152)
    at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.parse(JavacTaskImpl.java:248)

while Lombok is not yet supported, the compiler shouldn't crash hard like that

mickaelistria commented 1 month ago

This line throwing the exception says

if (source == null && pos != null && pos.getPreferredPosition() != Position.NOPOS)
            throw new IllegalArgumentException();