After upgrading to 2.2.0 I get this message when I...
# compiler
t
After upgrading to 2.2.0 I get this message when I try to run my compiler plugin test cases (all passed up till 2.1.20, now about 25% fails). The test setup that produces this is a bit dirty, I simply commented out fir2IrStep. But when I tried to upgrade to the new setup from the template all the tests failed. I also tried to run the plugin on a project and I've got a similar error, so my guess is that this is not a test setup problem, but I have to change something in the plugin itself. Do I have to set some source file in FIR plugins?
Copy code
While analysing /basic.kt:11:1: org.jetbrains.kotlin.utils.exceptions.KotlinIllegalArgumentExceptionWithAttachments: Exception in declaration checkers
org.jetbrains.kotlin.util.FileAnalysisException: While analysing /basic.kt:11:1: org.jetbrains.kotlin.utils.exceptions.KotlinIllegalArgumentExceptionWithAttachments: Exception in declaration checkers
	at org.jetbrains.kotlin.util.AnalysisExceptionsKt.wrapIntoFileAnalysisExceptionIfNeeded(AnalysisExceptions.kt:57)
	...
Caused by: org.jetbrains.kotlin.utils.exceptions.KotlinIllegalArgumentExceptionWithAttachments: Exception in declaration checkers
	at     org.jetbrains.kotlin.fir.analysis.checkers.declaration.DeclarationCheckersDiagnosticComponent.visitRegularClass(DeclarationCheckersDiagnosticComponent.kt:289)
	...
Caused by: java.lang.IllegalArgumentException: source must not be null
	at org.jetbrains.kotlin.diagnostics.KtDiagnosticReportHelpersKt.requireNotNull(KtDiagnosticReportHelpers.kt:213)

(full stack trace in thread)
Copy code
While analysing /basic.kt:11:1: org.jetbrains.kotlin.utils.exceptions.KotlinIllegalArgumentExceptionWithAttachments: Exception in declaration checkers
org.jetbrains.kotlin.util.FileAnalysisException: While analysing /basic.kt:11:1: org.jetbrains.kotlin.utils.exceptions.KotlinIllegalArgumentExceptionWithAttachments: Exception in declaration checkers
	at org.jetbrains.kotlin.util.AnalysisExceptionsKt.wrapIntoFileAnalysisExceptionIfNeeded(AnalysisExceptions.kt:57)
	at org.jetbrains.kotlin.fir.FirCliExceptionHandler.handleExceptionOnFileAnalysis(Utils.kt:257)
	at org.jetbrains.kotlin.fir.pipeline.AnalyseKt.runCheckers(analyse.kt:68)
	at org.jetbrains.kotlin.test.frontend.fir.handlers.FirDiagnosticCollectorService.computeDiagnostics(FirDiagnosticsHandler.kt:661)
	at org.jetbrains.kotlin.test.frontend.fir.handlers.FirDiagnosticCollectorService.getFrontendDiagnosticsForModule(FirDiagnosticsHandler.kt:618)
	at org.jetbrains.kotlin.test.frontend.fir.handlers.FirDiagnosticsHandler.processModule(FirDiagnosticsHandler.kt:140)
	at org.jetbrains.kotlin.test.frontend.fir.handlers.FirDiagnosticsHandler.processModule(FirDiagnosticsHandler.kt:116)
	at org.jetbrains.kotlin.test.TestStep$HandlersStep.processModule(TestStep.kt:78)
	at org.jetbrains.kotlin.test.TestStep$HandlersStep.processModule(TestStep.kt:56)
	at org.jetbrains.kotlin.test.TestRunner.processModule(TestRunner.kt:205)
	at org.jetbrains.kotlin.test.TestRunner.hackyProcessModule(TestRunner.kt:196)
	at org.jetbrains.kotlin.test.TestRunner.processModule(TestRunner.kt:140)
	at org.jetbrains.kotlin.test.TestRunner.runTestPipeline(TestRunner.kt:91)
	at org.jetbrains.kotlin.test.TestRunner.runTestImpl(TestRunner.kt:69)
	at org.jetbrains.kotlin.test.TestRunner.runTest(TestRunner.kt:29)
	at org.jetbrains.kotlin.test.TestRunner.runTest$default(TestRunner.kt:27)
	at org.jetbrains.kotlin.test.runners.AbstractKotlinCompilerTest.runTest(AbstractKotlinCompilerTest.kt:110)
	at fun.adaptive.kotlin.runners.BoxTestGenerated$Adat$Types.testBasic(BoxTestGenerated.java:272)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at java.base/java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:189)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
	at java.base/java.util.concurrent.ForkJoinTask.doJoin(ForkJoinTask.java:396)
	at java.base/java.util.concurrent.ForkJoinTask.join(ForkJoinTask.java:721)
	at java.base/java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:189)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
Caused by: org.jetbrains.kotlin.utils.exceptions.KotlinIllegalArgumentExceptionWithAttachments: Exception in declaration checkers
	at org.jetbrains.kotlin.fir.analysis.checkers.declaration.DeclarationCheckersDiagnosticComponent.visitRegularClass(DeclarationCheckersDiagnosticComponent.kt:289)
	at org.jetbrains.kotlin.fir.analysis.checkers.declaration.DeclarationCheckersDiagnosticComponent.visitRegularClass(DeclarationCheckersDiagnosticComponent.kt:25)
	at org.jetbrains.kotlin.fir.declarations.FirRegularClass.accept(FirRegularClass.kt:49)
	at org.jetbrains.kotlin.fir.analysis.collectors.CheckerRunningDiagnosticCollectorVisitor.checkElement(CheckerRunningDiagnosticCollectorVisitor.kt:24)
	at org.jetbrains.kotlin.fir.analysis.collectors.AbstractDiagnosticCollectorVisitor.access$checkElement(AbstractDiagnosticCollectorVisitor.kt:30)
	at org.jetbrains.kotlin.fir.analysis.collectors.AbstractDiagnosticCollectorVisitor.visitRegularClass(AbstractDiagnosticCollectorVisitor.kt:606)
	at org.jetbrains.kotlin.fir.analysis.collectors.AbstractDiagnosticCollectorVisitor.visitRegularClass(AbstractDiagnosticCollectorVisitor.kt:30)
	at org.jetbrains.kotlin.fir.declarations.FirRegularClass.accept(FirRegularClass.kt:49)
	at org.jetbrains.kotlin.fir.declarations.impl.FirFileImpl.acceptChildren(FirFileImpl.kt:58)
	at org.jetbrains.kotlin.fir.analysis.collectors.AbstractDiagnosticCollectorVisitor.visitNestedElements(AbstractDiagnosticCollectorVisitor.kt:38)
	at org.jetbrains.kotlin.fir.analysis.collectors.AbstractDiagnosticCollectorVisitor.visitFile(AbstractDiagnosticCollectorVisitor.kt:1288)
	at org.jetbrains.kotlin.fir.analysis.collectors.AbstractDiagnosticCollectorVisitor.visitFile(AbstractDiagnosticCollectorVisitor.kt:30)
	at org.jetbrains.kotlin.fir.declarations.FirFile.accept(FirFile.kt:43)
	at org.jetbrains.kotlin.fir.analysis.collectors.AbstractDiagnosticCollector.collectDiagnostics(AbstractDiagnosticCollector.kt:36)
	at org.jetbrains.kotlin.fir.pipeline.AnalyseKt.runCheckers(analyse.kt:37)
	... 26 more
Caused by: java.lang.IllegalArgumentException: source must not be null
	at org.jetbrains.kotlin.diagnostics.KtDiagnosticReportHelpersKt.requireNotNull(KtDiagnosticReportHelpers.kt:213)
	at org.jetbrains.kotlin.diagnostics.KtDiagnosticReportHelpersKt.reportOn(KtDiagnosticReportHelpers.kt:43)
	at org.jetbrains.kotlin.diagnostics.KtDiagnosticReportHelpersKt.reportOn$default(KtDiagnosticReportHelpers.kt:37)
	at org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirCommonConstructorDelegationIssuesChecker.check(FirCommonConstructorDelegationIssuesChecker.kt:56)
	at org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirCommonConstructorDelegationIssuesChecker.check(FirCommonConstructorDelegationIssuesChecker.kt:26)
	at org.jetbrains.kotlin.fir.analysis.checkers.declaration.DeclarationCheckersDiagnosticComponent.visitRegularClass(DeclarationCheckersDiagnosticComponent.kt:275)
	... 40 more
I've solved the reason why diagnostics wanted to report something. I had to build the delegated constructor call (I'm quite sure I'm doing it wrong, but the tests are OK, so I guess just won't care). The basic problem of not having able to report diagnostics is still there I guess, but I haven't seen how to do that in the plugin sandbox, so I'll just hope for the best. I feel a bit backlisted on this channel, but well, no-one said live is easy. 🤪
d
There are some cases when plugin-generated declarations could be leaked into checkers. And checkers require some not-nullable source on elements on which they're reporting on. There is no API for setting source for generated declarations indeed. But at least it provides a way to understand that you've generated something incorrectly.
thank you color 1