From c94b21edd573f776e5e81d2aaebe4944811f75f2 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Fri, 7 Jul 2017 18:44:18 +0300 Subject: [PATCH] Remove obsolete code about runtime versions conflict --- .../messages/AnalyzerWithCompilerReport.kt | 14 +--- .../jetbrains/kotlin/cli/js/K2JSCompiler.java | 21 +---- .../compiler/KotlinToJVMBytecodeCompiler.kt | 73 +++++------------- .../kotlin/cli/metadata/MetadataSerializer.kt | 9 +-- .../cli/jvm/conflictingRuntimeVersion.args | 5 -- .../cli/jvm/conflictingRuntimeVersion.out | 5 -- .../jvm/conflictingRuntimeVersionNoError.args | 5 -- .../jvm/conflictingRuntimeVersionNoError.out | 1 - .../cli/jvm/conflictingRuntimeVersions.kt | 1 - .../kotlin-runtime.jar | Bin 6106 -> 0 bytes .../kotlin/cli/CliTestGenerated.java | 12 --- 11 files changed, 28 insertions(+), 118 deletions(-) delete mode 100644 compiler/testData/cli/jvm/conflictingRuntimeVersion.args delete mode 100644 compiler/testData/cli/jvm/conflictingRuntimeVersion.out delete mode 100644 compiler/testData/cli/jvm/conflictingRuntimeVersionNoError.args delete mode 100644 compiler/testData/cli/jvm/conflictingRuntimeVersionNoError.out delete mode 100644 compiler/testData/cli/jvm/conflictingRuntimeVersions.kt delete mode 100644 compiler/testData/cli/jvm/kotlin-runtime-4584-stub/kotlin-runtime.jar diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/common/messages/AnalyzerWithCompilerReport.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/common/messages/AnalyzerWithCompilerReport.kt index c04992a8ec9..9b096980f0f 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/common/messages/AnalyzerWithCompilerReport.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/common/messages/AnalyzerWithCompilerReport.kt @@ -92,19 +92,9 @@ class AnalyzerWithCompilerReport(private val messageCollector: MessageCollector) return messageCollector.hasErrors() } - interface Analyzer { - fun analyze(): AnalysisResult - - fun reportEnvironmentErrors() { - } - } - - fun analyzeAndReport(files: Collection, analyzer: Analyzer) { - analysisResult = analyzer.analyze() + fun analyzeAndReport(files: Collection, analyze: () -> AnalysisResult) { + analysisResult = analyze() reportSyntaxErrors(files) - if (analysisResult.bindingContext.diagnostics.any { it.isValid && it.severity == Severity.ERROR }) { - analyzer.reportEnvironmentErrors() - } reportDiagnostics(analysisResult.bindingContext.diagnostics, messageCollector) reportIncompleteHierarchies() reportAlternativeSignatureErrors() diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/js/K2JSCompiler.java b/compiler/cli/src/org/jetbrains/kotlin/cli/js/K2JSCompiler.java index ca6f267b4f4..d883bb8fc41 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/js/K2JSCompiler.java +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/js/K2JSCompiler.java @@ -162,7 +162,8 @@ public class K2JSCompiler extends CLICompiler { return COMPILATION_ERROR; } - AnalyzerWithCompilerReport analyzerWithCompilerReport = analyzeAndReportErrors(messageCollector, sourcesFiles, config); + AnalyzerWithCompilerReport analyzerWithCompilerReport = new AnalyzerWithCompilerReport(messageCollector); + analyzerWithCompilerReport.analyzeAndReport(sourcesFiles, () -> TopDownAnalyzerFacadeForJS.analyzeFiles(sourcesFiles, config)); if (analyzerWithCompilerReport.hasErrors()) { return COMPILATION_ERROR; } @@ -280,24 +281,6 @@ public class K2JSCompiler extends CLICompiler { messageCollector.report(LOGGING, "Compiling source files: " + StringsKt.join(fileNames, ", "), null); } - private static AnalyzerWithCompilerReport analyzeAndReportErrors( - @NotNull MessageCollector messageCollector, @NotNull List sources, @NotNull JsConfig config - ) { - AnalyzerWithCompilerReport analyzerWithCompilerReport = new AnalyzerWithCompilerReport(messageCollector); - analyzerWithCompilerReport.analyzeAndReport(sources, new AnalyzerWithCompilerReport.Analyzer() { - @NotNull - @Override - public AnalysisResult analyze() { - return TopDownAnalyzerFacadeForJS.analyzeFiles(sources, config); - } - - @Override - public void reportEnvironmentErrors() { - } - }); - return analyzerWithCompilerReport; - } - @Override protected void setupPlatformSpecificArgumentsAndServices( @NotNull CompilerConfiguration configuration, @NotNull K2JSCompilerArguments arguments, diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt index 7dfb7fe5f1d..ebab9224f3b 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt @@ -18,7 +18,6 @@ package org.jetbrains.kotlin.cli.jvm.compiler import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.project.Project -import com.intellij.openapi.util.io.JarUtil import com.intellij.openapi.vfs.VfsUtilCore import com.intellij.openapi.vfs.VirtualFile import com.intellij.psi.PsiManager @@ -34,7 +33,8 @@ import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys import org.jetbrains.kotlin.cli.common.ExitCode import org.jetbrains.kotlin.cli.common.checkKotlinPackageUsage import org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport -import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.* +import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.OUTPUT +import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.WARNING import org.jetbrains.kotlin.cli.common.messages.MessageCollector import org.jetbrains.kotlin.cli.common.messages.OutputMessageUtil import org.jetbrains.kotlin.cli.common.output.outputUtils.writeAll @@ -59,14 +59,11 @@ import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.script.tryConstructClassFromStringArgs import org.jetbrains.kotlin.util.PerformanceCounter import org.jetbrains.kotlin.utils.KotlinPaths -import org.jetbrains.kotlin.utils.PathUtil import org.jetbrains.kotlin.utils.newLinkedHashMapWithExpectedSize import java.io.File -import java.io.IOException import java.lang.reflect.InvocationTargetException import java.net.URLClassLoader import java.util.concurrent.TimeUnit -import java.util.jar.Attributes object KotlinToJVMBytecodeCompiler { @@ -365,30 +362,24 @@ object KotlinToJVMBytecodeCompiler { val analysisStart = PerformanceCounter.currentTime() val analyzerWithCompilerReport = AnalyzerWithCompilerReport(collector) - analyzerWithCompilerReport.analyzeAndReport(sourceFiles, object : AnalyzerWithCompilerReport.Analyzer { - override fun analyze(): AnalysisResult { - val project = environment.project - val moduleOutputs = environment.configuration.get(JVMConfigurationKeys.MODULES)?.mapNotNull { module -> - environment.findLocalFile(module.getOutputDirectory()) - }.orEmpty() - val sourcesOnly = TopDownAnalyzerFacadeForJVM.newModuleSearchScope(project, sourceFiles) - // To support partial and incremental compilation, we add the scope which contains binaries from output directories - // of the compiled modules (.class) to the list of scopes of the source module - val scope = if (moduleOutputs.isEmpty()) sourcesOnly else sourcesOnly.uniteWith(DirectoriesScope(project, moduleOutputs)) - return TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration( - project, - sourceFiles, - CliLightClassGenerationSupport.NoScopeRecordCliBindingTrace(), - environment.configuration, - environment::createPackagePartProvider, - sourceModuleSearchScope = scope - ) - } - - override fun reportEnvironmentErrors() { - reportRuntimeConflicts(collector, environment.configuration.jvmClasspathRoots) - } - }) + analyzerWithCompilerReport.analyzeAndReport(sourceFiles) { + val project = environment.project + val moduleOutputs = environment.configuration.get(JVMConfigurationKeys.MODULES)?.mapNotNull { module -> + environment.findLocalFile(module.getOutputDirectory()) + }.orEmpty() + val sourcesOnly = TopDownAnalyzerFacadeForJVM.newModuleSearchScope(project, sourceFiles) + // To support partial and incremental compilation, we add the scope which contains binaries from output directories + // of the compiled modules (.class) to the list of scopes of the source module + val scope = if (moduleOutputs.isEmpty()) sourcesOnly else sourcesOnly.uniteWith(DirectoriesScope(project, moduleOutputs)) + TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration( + project, + sourceFiles, + CliLightClassGenerationSupport.NoScopeRecordCliBindingTrace(), + environment.configuration, + environment::createPackagePartProvider, + sourceModuleSearchScope = scope + ) + } val analysisNanos = PerformanceCounter.currentTime() - analysisStart @@ -476,28 +467,4 @@ object KotlinToJVMBytecodeCompiler { private val KotlinCoreEnvironment.messageCollector: MessageCollector get() = configuration.getNotNull(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY) - - private fun reportRuntimeConflicts(messageCollector: MessageCollector, jvmClasspathRoots: List) { - fun String.removeIdeaVersionSuffix(): String { - val versionIndex = indexOfAny(arrayListOf("-IJ", "-Idea")) - return if (versionIndex >= 0) substring(0, versionIndex) else this - } - - val runtimes = jvmClasspathRoots.map { - try { - it.canonicalFile - } - catch (e: IOException) { - it - } - }.filter { it.name == PathUtil.KOTLIN_JAVA_RUNTIME_JAR && it.exists() } - - val runtimeVersions = runtimes.map { - JarUtil.getJarAttribute(it, Attributes.Name.IMPLEMENTATION_VERSION).orEmpty().removeIdeaVersionSuffix() - } - - if (runtimeVersions.toSet().size > 1) { - messageCollector.report(ERROR, "Conflicting versions of Kotlin runtime on classpath: " + runtimes.joinToString { it.path }) - } - } } diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/MetadataSerializer.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/MetadataSerializer.kt index c2643861465..5f7be36d5df 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/MetadataSerializer.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/MetadataSerializer.kt @@ -16,7 +16,6 @@ package org.jetbrains.kotlin.cli.metadata -import org.jetbrains.kotlin.analyzer.AnalysisResult import org.jetbrains.kotlin.analyzer.common.DefaultAnalyzerFacade import org.jetbrains.kotlin.builtins.BuiltInsBinaryVersion import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys @@ -63,11 +62,11 @@ open class MetadataSerializer(private val dependOnOldBuiltIns: Boolean) { } val analyzer = AnalyzerWithCompilerReport(messageCollector) - analyzer.analyzeAndReport(files, object : AnalyzerWithCompilerReport.Analyzer { - override fun analyze(): AnalysisResult = DefaultAnalyzerFacade.analyzeFiles(files, moduleName, dependOnOldBuiltIns) { - _, content -> environment.createPackagePartProvider(content.moduleContentScope) + analyzer.analyzeAndReport(files) { + DefaultAnalyzerFacade.analyzeFiles(files, moduleName, dependOnOldBuiltIns) { _, content -> + environment.createPackagePartProvider(content.moduleContentScope) } - }) + } if (analyzer.hasErrors()) return diff --git a/compiler/testData/cli/jvm/conflictingRuntimeVersion.args b/compiler/testData/cli/jvm/conflictingRuntimeVersion.args deleted file mode 100644 index 4ba510281f2..00000000000 --- a/compiler/testData/cli/jvm/conflictingRuntimeVersion.args +++ /dev/null @@ -1,5 +0,0 @@ -$TESTDATA_DIR$/conflictingRuntimeVersions.kt --classpath -$TESTDATA_DIR$/kotlin-runtime-4584-stub/kotlin-runtime.jar --d -$TEMP_DIR$ diff --git a/compiler/testData/cli/jvm/conflictingRuntimeVersion.out b/compiler/testData/cli/jvm/conflictingRuntimeVersion.out deleted file mode 100644 index a2533c39072..00000000000 --- a/compiler/testData/cli/jvm/conflictingRuntimeVersion.out +++ /dev/null @@ -1,5 +0,0 @@ -error: conflicting versions of Kotlin runtime on classpath: $TESTDATA_DIR$/kotlin-runtime-4584-stub/kotlin-runtime.jar, $PROJECT_DIR$/lib/kotlin-runtime.jar -compiler/testData/cli/jvm/conflictingRuntimeVersions.kt:1:9: error: unresolved reference: unresolvedFunction -val f = unresolvedFunction() - ^ -COMPILATION_ERROR \ No newline at end of file diff --git a/compiler/testData/cli/jvm/conflictingRuntimeVersionNoError.args b/compiler/testData/cli/jvm/conflictingRuntimeVersionNoError.args deleted file mode 100644 index f468c786298..00000000000 --- a/compiler/testData/cli/jvm/conflictingRuntimeVersionNoError.args +++ /dev/null @@ -1,5 +0,0 @@ -$TESTDATA_DIR$/simple.kt --classpath -$TESTDATA_DIR$/kotlin-runtime-4584-stub/kotlin-runtime.jar --d -$TEMP_DIR$ diff --git a/compiler/testData/cli/jvm/conflictingRuntimeVersionNoError.out b/compiler/testData/cli/jvm/conflictingRuntimeVersionNoError.out deleted file mode 100644 index a0aba9318ad..00000000000 --- a/compiler/testData/cli/jvm/conflictingRuntimeVersionNoError.out +++ /dev/null @@ -1 +0,0 @@ -OK \ No newline at end of file diff --git a/compiler/testData/cli/jvm/conflictingRuntimeVersions.kt b/compiler/testData/cli/jvm/conflictingRuntimeVersions.kt deleted file mode 100644 index 39dd7f75cad..00000000000 --- a/compiler/testData/cli/jvm/conflictingRuntimeVersions.kt +++ /dev/null @@ -1 +0,0 @@ -val f = unresolvedFunction() diff --git a/compiler/testData/cli/jvm/kotlin-runtime-4584-stub/kotlin-runtime.jar b/compiler/testData/cli/jvm/kotlin-runtime-4584-stub/kotlin-runtime.jar deleted file mode 100644 index 16c58570900dfa81f09280a881f4dc0b7d8bee47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6106 zcmc&&c{tQ-8y@@EGGy#z3uTO960&4uX=qA}Ez8)Mnv^X>5<;>ilq~1uC@mtpBOOAP zlkBNP*(x+7Wh?Q`FVW0|qwkM%X0Df+xvt;+Ecg39_w&3)hII5SAmDX_fZY4-!}mWN zAPDHlF>eCiUCz_T-5Y<@S>Duw4MYpiFq@alFq@*`1{ska<_3XDZ|aBnetsCPV}djB zKIZ8Rpa2NVC}SyBgcn%8`bzo7C62y?Y~^H^?#M$1^@;fpvbaIW)2`Ir<(g_^y@j#(Z|=`?kP>!uE<-l@_a zjJk;#Ey?I&?^WF+i554G+9?m8o|-523+m`u_bhP-<{;kaIW^pm4<>{knd)@(cq~`6kly}e+=30T*{o6DgQwBd< z%ITJN6Pxrb4o0h|pqV#$km-JY&|)XT2~P3o-&=4T$oa-w`=yswWPmTQHz$vT-iM+g;TOXCh5 zW+t!_MV;#IZ222cylDRDs@8cOXu{p+%oA63{%Mn0lBn`nDluX_xhCvZd)U=1rBL&+ zBsFFY@vW@$>VD3pJ%*zQ7{)ng&VQ$Ns`(7lH0Ngq)e(^|HyqR)Egw5Y>_!}K6@Fq@ zTqx<(9TR!$*7bz02KWV;QBBV)R~gFfch}krU}dUR{WxtylUOu2!+LrZgB_H{kQwZ!n)YC&PJCHqjS}4Sn%i_{sItA!m=UZp|2$ zda1@u@IYmT@xBNd3(Mbs>RM)n8s7=@b)|}8og3TR*ejCqM~pFFD~fS1-%c7TPj=C$ z8kZ-?On6!$q&TCX&rHvbEAAQJPB$)K9r3=;b(SH>ad$G<{Q+paHsJ1A`>t?~K3iff zoLEPv63iJr00|{<*CS%DkRjhD>0-&va6!=t7}TBvCKlf+Aw8)Q0&BSvuKpNM30EFlrJhowtX@wg)e)-0`#c2GxG zI|sW7%s#UT4zoz3VA^;-I%$X?O}-!`bQY@B1Tq(^3Z_#D52Ht=KoK^>Kn9q=pZK3v z>>%lYA8Gx_NGerERw?orT`Woty9M_NDJrzR9I zycRPn9sq_{r-(WZ*hb*sxHUssn=20u5?6x!k+iX5Vkjf2z4dIO$vP(0kq}-?bITJ$ zm`nrui7X5QGiZ`+Y%+9~=~PA_kVQL{3K0qj#DU@yk6;FvM|pQ$mbjHoEz@)&B_{uS za+WrnTOcJXO6#!leHR0fc;nr@;7i|eM~^xA5WcCqWd2DrU;#`y+S%E;kd{+0NDq#O zmk{R@(wfx8Q1zLawFWH}37Jh515HB?@44Vmcu-`Pt&1)C@IhOL*mygwgFz<`9`^8X z39@xVyKFK_Qs?ExnwnYW#{X_^nd`OR!6W~e0}AD0yUXYd!zF|^O|?u=;~TIcWI;53qoQ{+E$>gDZ3z&rfRs2zz- zU;&Jt!uA?(R^YZh&Up0qdHPo4Gi|7PHJ7vx)mAcnk=T@yYG-MpNOyz#2~5GWN!yom zY=1?{_oE9c$K2%0rC<3rH=>(;2mD`3w0z`IpRp3H)KZ+nh zr>8EKp8Saofu6bH99_JL5kld`ty>IKy+)X^vSd3oCsbiC@Qeu7I z6bKE&XQJDMs&sgv2|L9sr(TUql(#dd82ec<^GZyH7a5Mn|B-dguHSw;_dSO0;Y{m; zikF9=md!#EIVtX^(a~2}zLxplwssdEtlh^eQ|?JC7M=4k@JnMrdy}^0{$1rA8D9@M zJM;9y@@XZvG@RtQ*%!b<>(y?yTRELEilO(Wf@u_yd+Uvx?U3hPgJYsoxhf@$*GAsa zEL?gY-iX!DF=%XgXz+~QwFK$Xj;3MH9x4_H2aWW5DS8Y^o#0?S?j=jh%@lGE+WOfH zXHaf#pN@ao2PzorUd+4@pjv-(a;tCumqjmy(X_WVeO>BjhEFia*%w$@TSXb`3BTCs zRItDb$X&hMkW@1*2y~8dNiUX4BK7gn{G|f1k(2b_mi!{B@&NQ0R1M0C3}R6G(R#Wj zSU5%xP{aw6suwMngSh-nAqZ~W8L6)kvAc?BP?>~2`f%Nt+uJ6hF~hR>Ep(^l%ZKf( z-)sCSUE1b04%ut_fN2oHn;)ejJ0ZJGuUA70_S|^fwC?$XP^n>O)ymm@x}}oIM-!u- z_-nUaZoY?Lq7~FRn|{d4Y`@Fz$~d|tTS2xo(-T5fvgx!8 z@)+Pa%3Z$f`tp6mf8#n0EtGDpix@T%N#9;tRVd&;rT?T}8@zHYV`K;b{TL$1XB$4y z51_0w8b1S(%@N?0E1D(5)rT8qGQ_Va2m|OxLk&2!+&HfXLGIL7ls-AcDq&J0{s@zN zV38nmD(g(lI*1gL)9MjZp9XSw$57%V!JzVT`9Q3&0-OkPR)D#Id_WPSaMx`eM6%HV zyfO`~ms@h^uc&?!^akb~YTA~P40ugGIlw5qMlfvvnqu~$4q(X&FolqJ>q-<>7D!gs z%J%o)*P2Pdpyio_oC?4kc~Dvu<|e=!3hMu|4D=S{T?dlFay#=s2D*BC0R}BM>f~Vp z#>m6eq%g+G{wrbrid{ff$px44V16LkU5iZ$Wd*Oa8{|O&;N$`ZrwHoHrVRzP0Xske zAWxn+g&i DuaZ=l diff --git a/compiler/tests/org/jetbrains/kotlin/cli/CliTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/cli/CliTestGenerated.java index 34b6da70052..f031c9e6e61 100644 --- a/compiler/tests/org/jetbrains/kotlin/cli/CliTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/cli/CliTestGenerated.java @@ -116,18 +116,6 @@ public class CliTestGenerated extends AbstractCliTest { doJvmTest(fileName); } - @TestMetadata("conflictingRuntimeVersion.args") - public void testConflictingRuntimeVersion() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/conflictingRuntimeVersion.args"); - doJvmTest(fileName); - } - - @TestMetadata("conflictingRuntimeVersionNoError.args") - public void testConflictingRuntimeVersionNoError() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/conflictingRuntimeVersionNoError.args"); - doJvmTest(fileName); - } - @TestMetadata("coroutinesEnable.args") public void testCoroutinesEnable() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/coroutinesEnable.args");