From 91a6591b70e4c0e7cfde82b19c4bc566628304db Mon Sep 17 00:00:00 2001 From: Mikhail Zarechenskiy Date: Wed, 8 Nov 2017 11:22:32 +0300 Subject: [PATCH] Load compiler language version settings for resolved calls tests --- .../CompilerTestLanguageVersionSettings.kt | 10 ++++++++ .../calls/AbstractResolvedCallsTest.kt | 5 +++- .../kotlin/cfg/AbstractPseudocodeTest.java | 25 ++++++------------- 3 files changed, 21 insertions(+), 19 deletions(-) diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/CompilerTestLanguageVersionSettings.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/CompilerTestLanguageVersionSettings.kt index d3fd3f3732c..b667312d5e2 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/CompilerTestLanguageVersionSettings.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/CompilerTestLanguageVersionSettings.kt @@ -16,7 +16,9 @@ package org.jetbrains.kotlin.checkers +import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.config.* +import org.jetbrains.kotlin.test.KotlinTestUtils import org.junit.Assert import java.util.* import java.util.regex.Pattern @@ -62,6 +64,14 @@ fun parseLanguageVersionSettings(directiveMap: Map): LanguageVer return CompilerTestLanguageVersionSettings(languageFeatures, apiVersion, LanguageVersion.LATEST_STABLE) } +fun setupLanguageVersionSettings(originalFileText: String, environment: KotlinCoreEnvironment) { + val directives = KotlinTestUtils.parseDirectives(originalFileText) + val languageVersionSettings = parseLanguageVersionSettings(directives) + if (languageVersionSettings != null) { + environment.configuration.languageVersionSettings = languageVersionSettings + } +} + private val languagePattern = Pattern.compile("(\\+|\\-|warn:)(\\w+)\\s*") private fun collectLanguageFeatureMap(directives: String): Map { diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/resolve/calls/AbstractResolvedCallsTest.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/resolve/calls/AbstractResolvedCallsTest.kt index 03423711250..9a093fd605e 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/resolve/calls/AbstractResolvedCallsTest.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/resolve/calls/AbstractResolvedCallsTest.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2015 JetBrains s.r.o. + * Copyright 2010-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,6 +18,7 @@ package org.jetbrains.kotlin.resolve.calls import com.intellij.openapi.util.io.FileUtil import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.checkers.setupLanguageVersionSettings import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.descriptors.CallableDescriptor import org.jetbrains.kotlin.descriptors.DeclarationDescriptor @@ -51,6 +52,8 @@ abstract class AbstractResolvedCallsTest : KotlinTestWithEnvironment() { val originalText = KotlinTestUtils.doLoadFile(File(filePath))!! val (text, carets) = extractCarets(originalText) + setupLanguageVersionSettings(originalText, environment) + val ktFile = KtPsiFactory(project).createFile(text) val bindingContext = JvmResolveUtil.analyze(ktFile, environment).bindingContext diff --git a/compiler/tests/org/jetbrains/kotlin/cfg/AbstractPseudocodeTest.java b/compiler/tests/org/jetbrains/kotlin/cfg/AbstractPseudocodeTest.java index ce504a549d8..6ceacb7cd6e 100644 --- a/compiler/tests/org/jetbrains/kotlin/cfg/AbstractPseudocodeTest.java +++ b/compiler/tests/org/jetbrains/kotlin/cfg/AbstractPseudocodeTest.java @@ -32,9 +32,8 @@ import org.jetbrains.kotlin.cfg.pseudocode.PseudocodeUtil; import org.jetbrains.kotlin.cfg.pseudocode.instructions.Instruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionImpl; import org.jetbrains.kotlin.cfg.pseudocode.instructions.special.LocalFunctionDeclarationInstruction; +import org.jetbrains.kotlin.checkers.CompilerTestLanguageVersionSettingsKt; import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment; -import org.jetbrains.kotlin.config.CommonConfigurationKeysKt; -import org.jetbrains.kotlin.config.LanguageVersionSettings; import org.jetbrains.kotlin.psi.*; import org.jetbrains.kotlin.resolve.BindingContext; import org.jetbrains.kotlin.test.ConfigurationKind; @@ -45,11 +44,8 @@ import java.io.File; import java.io.IOException; import java.util.Collection; import java.util.List; -import java.util.Map; import java.util.Set; -import static org.jetbrains.kotlin.checkers.CompilerTestLanguageVersionSettingsKt.parseLanguageVersionSettings; - public abstract class AbstractPseudocodeTest extends KotlinTestWithEnvironmentManagement { protected void doTestWithStdLib(String fileName) throws Exception { doTestWithEnvironment(fileName, createEnvironmentWithMockJdk(ConfigurationKind.NO_KOTLIN_REFLECT)); @@ -59,23 +55,16 @@ public abstract class AbstractPseudocodeTest extends KotlinTestWithEnvironmentMa doTestWithEnvironment(fileName, createEnvironmentWithMockJdk(ConfigurationKind.JDK_ONLY)); } - private static void setupLanguageVersionSettings(File file, KotlinCoreEnvironment environment) throws IOException { - String fileText = FileUtil.loadFile(file, true); - Map directives = KotlinTestUtils.parseDirectives(fileText); - LanguageVersionSettings languageVersionSettings = parseLanguageVersionSettings(directives); - if (languageVersionSettings != null) { - CommonConfigurationKeysKt.setLanguageVersionSettings(environment.getConfiguration(), languageVersionSettings); - } - } - private void doTestWithEnvironment(String fileName, KotlinCoreEnvironment environment) throws Exception { File file = new File(fileName); - setupLanguageVersionSettings(file, environment); - KtFile jetFile = KotlinTestUtils.loadJetFile(environment.getProject(), file); + + CompilerTestLanguageVersionSettingsKt.setupLanguageVersionSettings(FileUtil.loadFile(file, true), environment); + + KtFile ktFile = KotlinTestUtils.loadJetFile(environment.getProject(), file); SetMultimap data = LinkedHashMultimap.create(); - AnalysisResult analysisResult = KotlinTestUtils.analyzeFile(jetFile, environment); - List declarations = jetFile.getDeclarations(); + AnalysisResult analysisResult = KotlinTestUtils.analyzeFile(ktFile, environment); + List declarations = ktFile.getDeclarations(); BindingContext bindingContext = analysisResult.getBindingContext(); for (KtDeclaration declaration : declarations) { addDeclaration(data, bindingContext, declaration);