diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/checkers/JsKlibCheckers.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/checkers/JsKlibCheckers.kt index 6d61cc99175..616ed6e6c68 100644 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/checkers/JsKlibCheckers.kt +++ b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/checkers/JsKlibCheckers.kt @@ -5,15 +5,16 @@ package org.jetbrains.kotlin.ir.backend.js.checkers -import org.jetbrains.kotlin.KtDiagnosticReporterWithImplicitIrBasedContext import org.jetbrains.kotlin.config.CompilerConfiguration -import org.jetbrains.kotlin.config.languageVersionSettings -import org.jetbrains.kotlin.diagnostics.DiagnosticReporter +import org.jetbrains.kotlin.ir.IrDiagnosticReporter import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.backend.js.checkers.declarations.JsKlibEsModuleExportsChecker import org.jetbrains.kotlin.ir.backend.js.checkers.declarations.JsKlibOtherModuleExportsChecker import org.jetbrains.kotlin.ir.backend.js.checkers.expressions.JsKlibJsCodeCallChecker -import org.jetbrains.kotlin.ir.declarations.* +import org.jetbrains.kotlin.ir.declarations.IrDeclaration +import org.jetbrains.kotlin.ir.declarations.IrDeclarationWithName +import org.jetbrains.kotlin.ir.declarations.IrFile +import org.jetbrains.kotlin.ir.declarations.IrModuleFragment import org.jetbrains.kotlin.ir.expressions.IrCall import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid @@ -34,11 +35,10 @@ object JsKlibCheckers { cleanFiles: List, dirtyModule: IrModuleFragment, exportedNames: Map>, - diagnosticReporter: DiagnosticReporter, + diagnosticReporter: IrDiagnosticReporter, configuration: CompilerConfiguration ) { dirtyModule.acceptVoid(object : IrElementVisitorVoid { - private val reporter = KtDiagnosticReporterWithImplicitIrBasedContext(diagnosticReporter, configuration.languageVersionSettings) private val diagnosticContext = JsKlibDiagnosticContext(configuration) override fun visitElement(element: IrElement) { @@ -54,7 +54,7 @@ object JsKlibCheckers { override fun visitModuleFragment(declaration: IrModuleFragment) { val exportedDeclarations = JsKlibExportingDeclaration.collectDeclarations(cleanFiles, declaration.files, exportedNames) for (checker in exportedDeclarationsCheckers) { - checker.check(exportedDeclarations, this.diagnosticContext, reporter) + checker.check(exportedDeclarations, this.diagnosticContext, diagnosticReporter) } super.visitModuleFragment(declaration) } @@ -67,7 +67,7 @@ object JsKlibCheckers { override fun visitCall(expression: IrCall) { for (checker in callCheckers) { - checker.check(expression, this.diagnosticContext, reporter) + checker.check(expression, this.diagnosticContext, diagnosticReporter) } super.visitCall(expression) } diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/checkers/JsKlibDeclarationsChecker.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/checkers/JsKlibDeclarationsChecker.kt index 1ae9b6b686f..523e77cc995 100644 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/checkers/JsKlibDeclarationsChecker.kt +++ b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/checkers/JsKlibDeclarationsChecker.kt @@ -5,10 +5,10 @@ package org.jetbrains.kotlin.ir.backend.js.checkers -import org.jetbrains.kotlin.KtDiagnosticReporterWithImplicitIrBasedContext +import org.jetbrains.kotlin.ir.IrDiagnosticReporter interface JsKlibDeclarationsChecker { - fun check(declarations: List, context: JsKlibDiagnosticContext, reporter: KtDiagnosticReporterWithImplicitIrBasedContext) + fun check(declarations: List, context: JsKlibDiagnosticContext, reporter: IrDiagnosticReporter) } typealias JsKlibExportedDeclarationsChecker = JsKlibDeclarationsChecker diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/checkers/JsKlibDiagnosticContext.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/checkers/JsKlibDiagnosticContext.kt index 937667a0d1e..8e6a612fa12 100644 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/checkers/JsKlibDiagnosticContext.kt +++ b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/checkers/JsKlibDiagnosticContext.kt @@ -5,9 +5,9 @@ package org.jetbrains.kotlin.ir.backend.js.checkers -import org.jetbrains.kotlin.KtDiagnosticReporterWithImplicitIrBasedContext import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.diagnostics.KtDiagnosticReporterWithContext +import org.jetbrains.kotlin.ir.IrDiagnosticReporter import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.declarations.IrDeclaration import org.jetbrains.kotlin.ir.declarations.IrFile @@ -40,14 +40,14 @@ class JsKlibDiagnosticContext(val compilerConfiguration: CompilerConfiguration) } } -fun KtDiagnosticReporterWithImplicitIrBasedContext.at( +fun IrDiagnosticReporter.at( declaration: IrDeclaration, context: JsKlibDiagnosticContext, ): KtDiagnosticReporterWithContext.DiagnosticContextImpl { return context.containingFile?.let { at(declaration, it) } ?: at(declaration) } -fun KtDiagnosticReporterWithImplicitIrBasedContext.at( +fun IrDiagnosticReporter.at( irElement: IrElement, context: JsKlibDiagnosticContext, ): KtDiagnosticReporterWithContext.DiagnosticContextImpl { diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/checkers/JsKlibExpressionChecker.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/checkers/JsKlibExpressionChecker.kt index cc5f0374153..9478a23d3a6 100644 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/checkers/JsKlibExpressionChecker.kt +++ b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/checkers/JsKlibExpressionChecker.kt @@ -5,12 +5,12 @@ package org.jetbrains.kotlin.ir.backend.js.checkers -import org.jetbrains.kotlin.KtDiagnosticReporterWithImplicitIrBasedContext +import org.jetbrains.kotlin.ir.IrDiagnosticReporter import org.jetbrains.kotlin.ir.expressions.IrCall import org.jetbrains.kotlin.ir.expressions.IrExpression interface JsKlibExpressionChecker { - fun check(expression: E, context: JsKlibDiagnosticContext, reporter: KtDiagnosticReporterWithImplicitIrBasedContext) + fun check(expression: E, context: JsKlibDiagnosticContext, reporter: IrDiagnosticReporter) } typealias JsKlibCallChecker = JsKlibExpressionChecker diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/checkers/declarations/JsKlibEsModuleExportsChecker.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/checkers/declarations/JsKlibEsModuleExportsChecker.kt index 62fc10d2da1..b396cd9dbd5 100644 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/checkers/declarations/JsKlibEsModuleExportsChecker.kt +++ b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/checkers/declarations/JsKlibEsModuleExportsChecker.kt @@ -5,14 +5,14 @@ package org.jetbrains.kotlin.ir.backend.js.checkers.declarations -import org.jetbrains.kotlin.KtDiagnosticReporterWithImplicitIrBasedContext +import org.jetbrains.kotlin.ir.IrDiagnosticReporter import org.jetbrains.kotlin.ir.backend.js.checkers.* object JsKlibEsModuleExportsChecker : JsKlibExportedDeclarationsChecker { override fun check( declarations: List, context: JsKlibDiagnosticContext, - reporter: KtDiagnosticReporterWithImplicitIrBasedContext + reporter: IrDiagnosticReporter ) { val allExportedNameClashes = declarations.groupBy { it.exportingName }.filterValues { it.size > 1 } diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/checkers/declarations/JsKlibOtherModuleExportsChecker.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/checkers/declarations/JsKlibOtherModuleExportsChecker.kt index 5a0da36f487..b1878db7c46 100644 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/checkers/declarations/JsKlibOtherModuleExportsChecker.kt +++ b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/checkers/declarations/JsKlibOtherModuleExportsChecker.kt @@ -5,7 +5,7 @@ package org.jetbrains.kotlin.ir.backend.js.checkers.declarations -import org.jetbrains.kotlin.KtDiagnosticReporterWithImplicitIrBasedContext +import org.jetbrains.kotlin.ir.IrDiagnosticReporter import org.jetbrains.kotlin.ir.backend.js.checkers.* object JsKlibOtherModuleExportsChecker : JsKlibExportedDeclarationsChecker { @@ -47,7 +47,7 @@ object JsKlibOtherModuleExportsChecker : JsKlibExportedDeclarationsChecker { override fun check( declarations: List, context: JsKlibDiagnosticContext, - reporter: KtDiagnosticReporterWithImplicitIrBasedContext + reporter: IrDiagnosticReporter, ) { val clashes = collectClashes(declarations) for ((declaration, clashedWith) in clashes) { diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/checkers/expressions/JsKlibJsCodeCallChecker.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/checkers/expressions/JsKlibJsCodeCallChecker.kt index 2598f1b25e1..0fe8b69c463 100644 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/checkers/expressions/JsKlibJsCodeCallChecker.kt +++ b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/checkers/expressions/JsKlibJsCodeCallChecker.kt @@ -8,11 +8,11 @@ package org.jetbrains.kotlin.ir.backend.js.checkers.expressions import com.google.gwt.dev.js.parserExceptions.AbortParsingException import com.google.gwt.dev.js.rhino.CodePosition import com.google.gwt.dev.js.rhino.ErrorReporter -import org.jetbrains.kotlin.KtDiagnosticReporterWithImplicitIrBasedContext import org.jetbrains.kotlin.config.languageVersionSettings +import org.jetbrains.kotlin.ir.IrDiagnosticReporter import org.jetbrains.kotlin.ir.backend.js.checkers.JsKlibCallChecker -import org.jetbrains.kotlin.ir.backend.js.checkers.JsKlibErrors import org.jetbrains.kotlin.ir.backend.js.checkers.JsKlibDiagnosticContext +import org.jetbrains.kotlin.ir.backend.js.checkers.JsKlibErrors import org.jetbrains.kotlin.ir.backend.js.checkers.at import org.jetbrains.kotlin.ir.expressions.IrCall import org.jetbrains.kotlin.ir.expressions.IrConst @@ -28,7 +28,7 @@ import org.jetbrains.kotlin.name.JsStandardClassIds object JsKlibJsCodeCallChecker : JsKlibCallChecker { private val jsCodeFqName = JsStandardClassIds.Callables.JsCode.asSingleFqName() - override fun check(expression: IrCall, context: JsKlibDiagnosticContext, reporter: KtDiagnosticReporterWithImplicitIrBasedContext) { + override fun check(expression: IrCall, context: JsKlibDiagnosticContext, reporter: IrDiagnosticReporter) { // Do not check IR from K1, because there are corresponding K1 FE checks in JsCallChecker if (!context.compilerConfiguration.languageVersionSettings.languageVersion.usesK2) { return @@ -66,7 +66,7 @@ object JsKlibJsCodeCallChecker : JsKlibCallChecker { private class JsErrorReporter( val codeExpression: IrExpression, val context: JsKlibDiagnosticContext, - val reporter: KtDiagnosticReporterWithImplicitIrBasedContext, + val reporter: IrDiagnosticReporter, ) : ErrorReporter { override fun warning(message: String, startPosition: CodePosition, endPosition: CodePosition) { reporter.at(codeExpression, context).report(JsKlibErrors.JSCODE_WARNING, message) diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt index c2a38234a97..16ed58855d5 100644 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt +++ b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt @@ -8,10 +8,7 @@ package org.jetbrains.kotlin.ir.backend.js import com.intellij.openapi.project.Project import com.intellij.openapi.vfs.VfsUtilCore import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.KtIoFileSourceFile -import org.jetbrains.kotlin.KtPsiSourceFile -import org.jetbrains.kotlin.KtSourceFile -import org.jetbrains.kotlin.KtVirtualFileSourceFile +import org.jetbrains.kotlin.* import org.jetbrains.kotlin.analyzer.AbstractAnalyzerWithCompilerReport import org.jetbrains.kotlin.analyzer.AnalysisResult import org.jetbrains.kotlin.analyzer.CompilationErrorException @@ -638,9 +635,10 @@ fun serializeModuleIntoKlib( val moduleExportedNames = moduleFragment.collectExportedNames() + val irDiagnosticReporter = KtDiagnosticReporterWithImplicitIrBasedContext(diagnosticReporter, configuration.languageVersionSettings) if (builtInsPlatform == BuiltInsPlatform.JS) { val cleanFilesIrData = cleanFiles.map { it.irData } - JsKlibCheckers.check(cleanFilesIrData, moduleFragment, moduleExportedNames, diagnosticReporter, configuration) + JsKlibCheckers.check(cleanFilesIrData, moduleFragment, moduleExportedNames, irDiagnosticReporter, configuration) } val serializedIr =