Load compiler language version settings for resolved calls tests

This commit is contained in:
Mikhail Zarechenskiy
2017-11-08 11:22:32 +03:00
parent 20bf238006
commit 91a6591b70
3 changed files with 21 additions and 19 deletions
@@ -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<String, String> 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<KtElement, Pseudocode> data = LinkedHashMultimap.create();
AnalysisResult analysisResult = KotlinTestUtils.analyzeFile(jetFile, environment);
List<KtDeclaration> declarations = jetFile.getDeclarations();
AnalysisResult analysisResult = KotlinTestUtils.analyzeFile(ktFile, environment);
List<KtDeclaration> declarations = ktFile.getDeclarations();
BindingContext bindingContext = analysisResult.getBindingContext();
for (KtDeclaration declaration : declarations) {
addDeclaration(data, bindingContext, declaration);