[FIR IDE] Enable constant evaluation tests in AAPI/FE10
Implementation of constant evaluation was changed, so now it doesn't swallow error values.
This commit is contained in:
+2
-10
@@ -12,7 +12,6 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.bas
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtConstantValue
|
||||
import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken
|
||||
import org.jetbrains.kotlin.psi.KtExpression
|
||||
import org.jetbrains.kotlin.resolve.DelegatingBindingTrace
|
||||
import org.jetbrains.kotlin.resolve.constants.evaluate.ConstantExpressionEvaluator
|
||||
import org.jetbrains.kotlin.types.TypeUtils
|
||||
|
||||
@@ -23,15 +22,8 @@ internal class KtFe10CompileTimeConstantProvider(
|
||||
get() = analysisSession.token
|
||||
|
||||
override fun evaluate(expression: KtExpression): KtConstantValue? {
|
||||
val resolveSession = analysisContext.resolveSession
|
||||
val evaluator = ConstantExpressionEvaluator(
|
||||
resolveSession.moduleDescriptor,
|
||||
resolveSession.languageVersionSettings,
|
||||
resolveSession.project
|
||||
)
|
||||
|
||||
val bindingContext = analysisContext.analyze(expression)
|
||||
val bindingTrace = DelegatingBindingTrace(bindingContext, "Binding trace for constant expression evaluation")
|
||||
return evaluator.evaluateToConstantValue(expression, bindingTrace, TypeUtils.NO_EXPECTED_TYPE)?.toKtConstantValue()
|
||||
val constant = ConstantExpressionEvaluator.getPossiblyErrorConstant(expression, bindingContext)
|
||||
return constant?.toConstantValue(TypeUtils.NO_EXPECTED_TYPE)?.toKtConstantValue()
|
||||
}
|
||||
}
|
||||
|
||||
+122
@@ -0,0 +1,122 @@
|
||||
/*
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.analysis.api.descriptors.test.symbols;
|
||||
|
||||
import com.intellij.testFramework.TestDataPath;
|
||||
import org.jetbrains.kotlin.test.util.KtTestUtil;
|
||||
import org.jetbrains.kotlin.test.TestMetadata;
|
||||
import org.junit.jupiter.api.Nested;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/** This class is generated by {@link GenerateNewCompilerTests.kt}. DO NOT MODIFY MANUALLY */
|
||||
@SuppressWarnings("all")
|
||||
@TestMetadata("analysis/analysis-api/testData/components/compileTimeConstantEvaluator")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
public class KtFe10CompileTimeConstantEvaluatorTestGenerated extends AbstractKtFe10CompileTimeConstantEvaluatorTest {
|
||||
@Test
|
||||
public void testAllFilesPresentInCompileTimeConstantEvaluator() throws Exception {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/compileTimeConstantEvaluator"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationInAnnotation_arrayOf.kt")
|
||||
public void testAnnotationInAnnotation_arrayOf() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/components/compileTimeConstantEvaluator/annotationInAnnotation_arrayOf.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationInAnnotation_collectionLiteral.kt")
|
||||
public void testAnnotationInAnnotation_collectionLiteral() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/components/compileTimeConstantEvaluator/annotationInAnnotation_collectionLiteral.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationInAnnotation_collectionLiteral_spread.kt")
|
||||
public void testAnnotationInAnnotation_collectionLiteral_spread() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/components/compileTimeConstantEvaluator/annotationInAnnotation_collectionLiteral_spread.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationInAnnotation_multipleAnnotations_arrayOf.kt")
|
||||
public void testAnnotationInAnnotation_multipleAnnotations_arrayOf() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/components/compileTimeConstantEvaluator/annotationInAnnotation_multipleAnnotations_arrayOf.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationInAnnotation_multipleAnnotations_collectionLiteral.kt")
|
||||
public void testAnnotationInAnnotation_multipleAnnotations_collectionLiteral() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/components/compileTimeConstantEvaluator/annotationInAnnotation_multipleAnnotations_collectionLiteral.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationInAnnotation_single.kt")
|
||||
public void testAnnotationInAnnotation_single() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/components/compileTimeConstantEvaluator/annotationInAnnotation_single.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationInAnnotation_vararg.kt")
|
||||
public void testAnnotationInAnnotation_vararg() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/components/compileTimeConstantEvaluator/annotationInAnnotation_vararg.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumAsAnnotationValue.kt")
|
||||
public void testEnumAsAnnotationValue() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/components/compileTimeConstantEvaluator/enumAsAnnotationValue.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("propertyInit_Byte.kt")
|
||||
public void testPropertyInit_Byte() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/components/compileTimeConstantEvaluator/propertyInit_Byte.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("propertyInit_DivByZero.kt")
|
||||
public void testPropertyInit_DivByZero() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/components/compileTimeConstantEvaluator/propertyInit_DivByZero.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("propertyInit_Double.kt")
|
||||
public void testPropertyInit_Double() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/components/compileTimeConstantEvaluator/propertyInit_Double.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("propertyInit_Float.kt")
|
||||
public void testPropertyInit_Float() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/components/compileTimeConstantEvaluator/propertyInit_Float.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("propertyInit_Int.kt")
|
||||
public void testPropertyInit_Int() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/components/compileTimeConstantEvaluator/propertyInit_Int.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("propertyInit_Long.kt")
|
||||
public void testPropertyInit_Long() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/components/compileTimeConstantEvaluator/propertyInit_Long.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("propertyInit_UInt.kt")
|
||||
public void testPropertyInit_UInt() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/components/compileTimeConstantEvaluator/propertyInit_UInt.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("stringLiteral.kt")
|
||||
public void testStringLiteral() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/components/compileTimeConstantEvaluator/stringLiteral.kt");
|
||||
}
|
||||
}
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
expression: 42 / 0
|
||||
constant_value: KtErrorValue(Division by zero)
|
||||
constant: null
|
||||
+4
-3
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.generators.tests.analysis.api
|
||||
|
||||
import org.jetbrains.kotlin.analysis.api.descriptors.test.AbstractKtFe10ResolveCallTest
|
||||
import org.jetbrains.kotlin.analysis.api.descriptors.test.components.*
|
||||
import org.jetbrains.kotlin.analysis.api.descriptors.test.symbols.AbstractKtFe10CompileTimeConstantEvaluatorTest
|
||||
import org.jetbrains.kotlin.analysis.api.descriptors.test.symbols.AbstractKtFe10SymbolByFqNameTest
|
||||
import org.jetbrains.kotlin.analysis.api.descriptors.test.symbols.AbstractKtFe10SymbolByPsiTest
|
||||
import org.jetbrains.kotlin.analysis.api.descriptors.test.symbols.AbstractKtFe10SymbolByReferenceTest
|
||||
@@ -141,9 +142,9 @@ fun main(args: Array<String>) {
|
||||
model("symbols/symbolByPsi")
|
||||
}
|
||||
|
||||
// testClass<AbstractKtFe10CompileTimeConstantEvaluatorTest> {
|
||||
// model("components/compileTimeConstantEvaluator")
|
||||
// }
|
||||
testClass<AbstractKtFe10CompileTimeConstantEvaluatorTest> {
|
||||
model("components/compileTimeConstantEvaluator")
|
||||
}
|
||||
|
||||
testClass<AbstractKtFe10SymbolByFqNameTest> {
|
||||
model("symbols/symbolByFqName")
|
||||
|
||||
Reference in New Issue
Block a user