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
@@ -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<String, String>): 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<LanguageFeature, LanguageFeature.State> {
@@ -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