Add ability to use unsigned types in LoadJava tests

This is a temporary solution, which will be completely removed in 1.3, see KT-25226
This commit is contained in:
Mikhail Zarechenskiy
2018-07-06 02:51:16 +03:00
parent dd0e3cd135
commit 8c075bc622
2 changed files with 19 additions and 5 deletions
@@ -46,11 +46,10 @@ private fun specificFeaturesForTests(): Map<LanguageFeature, LanguageFeature.Sta
emptyMap()
}
fun parseLanguageVersionSettingsOrDefault(directiveMap: Map<String, String>): LanguageVersionSettings =
parseLanguageVersionSettings(directiveMap)
?: CompilerTestLanguageVersionSettings(emptyMap(), ApiVersion.LATEST_STABLE, LanguageVersion.LATEST_STABLE)
fun parseLanguageVersionSettingsOrDefault(directiveMap: Map<String, String>): CompilerTestLanguageVersionSettings =
parseLanguageVersionSettings(directiveMap) ?: defaultLanguageVersionSettings()
fun parseLanguageVersionSettings(directiveMap: Map<String, String>): LanguageVersionSettings? {
fun parseLanguageVersionSettings(directiveMap: Map<String, String>): CompilerTestLanguageVersionSettings? {
val apiVersionString = directiveMap[API_VERSION_DIRECTIVE]
val languageFeaturesString = directiveMap[LANGUAGE_DIRECTIVE]
val experimental = directiveMap[EXPERIMENTAL_DIRECTIVE]?.split(' ')?.let { AnalysisFlag.experimental to it }
@@ -78,6 +77,9 @@ fun parseLanguageVersionSettings(directiveMap: Map<String, String>): LanguageVer
)
}
fun defaultLanguageVersionSettings(): CompilerTestLanguageVersionSettings =
CompilerTestLanguageVersionSettings(emptyMap(), ApiVersion.LATEST_STABLE, LanguageVersion.LATEST_STABLE)
fun setupLanguageVersionSettingsForCompilerTests(originalFileText: String, environment: KotlinCoreEnvironment) {
val directives = KotlinTestUtils.parseDirectives(originalFileText)
val languageVersionSettings = parseLanguageVersionSettingsOrDefault(directives)
@@ -10,6 +10,7 @@ import com.intellij.openapi.util.io.FileUtil;
import junit.framework.ComparisonFailure;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.analyzer.AnalysisResult;
import org.jetbrains.kotlin.checkers.CompilerTestLanguageVersionSettings;
import org.jetbrains.kotlin.checkers.CompilerTestLanguageVersionSettingsKt;
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles;
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment;
@@ -39,6 +40,7 @@ import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
import static java.util.Collections.emptyMap;
import static org.jetbrains.kotlin.jvm.compiler.LoadDescriptorUtil.*;
import static org.jetbrains.kotlin.test.KotlinTestUtils.*;
import static org.jetbrains.kotlin.test.util.DescriptorValidator.ValidationVisitor.errorTypesAllowed;
@@ -146,7 +148,17 @@ public abstract class AbstractLoadJavaTest extends TestCaseWithTmpdir {
private static void updateConfigurationWithDirectives(String content, CompilerConfiguration configuration) {
Map<String, String> directives = KotlinTestUtils.parseDirectives(content);
LanguageVersionSettings languageVersionSettings = CompilerTestLanguageVersionSettingsKt.parseLanguageVersionSettingsOrDefault(directives);
LanguageVersionSettings languageVersionSettings = CompilerTestLanguageVersionSettingsKt.parseLanguageVersionSettings(directives);
if (languageVersionSettings == null) {
if (InTextDirectivesUtils.isDirectiveDefined(content, "WITH_UNSIGNED")) {
languageVersionSettings = new CompilerTestLanguageVersionSettings(
emptyMap(), ApiVersion.KOTLIN_1_3, LanguageVersion.KOTLIN_1_3, emptyMap()
);
}
else {
languageVersionSettings = CompilerTestLanguageVersionSettingsKt.defaultLanguageVersionSettings();
}
}
CommonConfigurationKeysKt.setLanguageVersionSettings(configuration, languageVersionSettings);