diff --git a/analysis/analysis-api-fe10/tests/org/jetbrains/kotlin/analysis/api/descriptors/test/components/KtFe10HLExpressionTypeTestGenerated.java b/analysis/analysis-api-fe10/tests/org/jetbrains/kotlin/analysis/api/descriptors/test/components/KtFe10HLExpressionTypeTestGenerated.java index 5c0afbb9eea..8e3de5e674a 100644 --- a/analysis/analysis-api-fe10/tests/org/jetbrains/kotlin/analysis/api/descriptors/test/components/KtFe10HLExpressionTypeTestGenerated.java +++ b/analysis/analysis-api-fe10/tests/org/jetbrains/kotlin/analysis/api/descriptors/test/components/KtFe10HLExpressionTypeTestGenerated.java @@ -24,6 +24,18 @@ public class KtFe10HLExpressionTypeTestGenerated extends AbstractKtFe10HLExpress KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/expressionType"), Pattern.compile("^(.+)\\.kt$"), null, true); } + @Test + @TestMetadata("arrayElement_arrayOfNulls.kt") + public void testArrayElement_arrayOfNulls() throws Exception { + runTest("analysis/analysis-api/testData/components/expressionType/arrayElement_arrayOfNulls.kt"); + } + + @Test + @TestMetadata("array_arrayOfNulls.kt") + public void testArray_arrayOfNulls() throws Exception { + runTest("analysis/analysis-api/testData/components/expressionType/array_arrayOfNulls.kt"); + } + @Test @TestMetadata("assignmentExpressionTarget.kt") public void testAssignmentExpressionTarget() throws Exception { @@ -78,6 +90,30 @@ public class KtFe10HLExpressionTypeTestGenerated extends AbstractKtFe10HLExpress runTest("analysis/analysis-api/testData/components/expressionType/intLiteral.kt"); } + @Test + @TestMetadata("listElement_listOf.kt") + public void testListElement_listOf() throws Exception { + runTest("analysis/analysis-api/testData/components/expressionType/listElement_listOf.kt"); + } + + @Test + @TestMetadata("listElement_mutableListOf.kt") + public void testListElement_mutableListOf() throws Exception { + runTest("analysis/analysis-api/testData/components/expressionType/listElement_mutableListOf.kt"); + } + + @Test + @TestMetadata("list_listOf.kt") + public void testList_listOf() throws Exception { + runTest("analysis/analysis-api/testData/components/expressionType/list_listOf.kt"); + } + + @Test + @TestMetadata("list_mutableListOf.kt") + public void testList_mutableListOf() throws Exception { + runTest("analysis/analysis-api/testData/components/expressionType/list_mutableListOf.kt"); + } + @Test @TestMetadata("nonExpression.kt") public void testNonExpression() throws Exception { diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirExpressionTypeProvider.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirExpressionTypeProvider.kt index dc27e4c8207..5d49b6cef13 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirExpressionTypeProvider.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirExpressionTypeProvider.kt @@ -11,7 +11,6 @@ import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSession import org.jetbrains.kotlin.analysis.api.fir.utils.getReferencedElementType import org.jetbrains.kotlin.analysis.api.fir.utils.unwrap import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken -import org.jetbrains.kotlin.analysis.api.types.KtClassErrorType import org.jetbrains.kotlin.analysis.api.types.KtType import org.jetbrains.kotlin.analysis.api.withValidityAssertion import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getOrBuildFir diff --git a/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/components/FirHLExpressionTypeTestGenerated.java b/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/components/FirHLExpressionTypeTestGenerated.java index f0cddff71c1..1437cd8120a 100644 --- a/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/components/FirHLExpressionTypeTestGenerated.java +++ b/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/components/FirHLExpressionTypeTestGenerated.java @@ -24,6 +24,18 @@ public class FirHLExpressionTypeTestGenerated extends AbstractFirHLExpressionTyp KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/expressionType"), Pattern.compile("^(.+)\\.kt$"), null, true); } + @Test + @TestMetadata("arrayElement_arrayOfNulls.kt") + public void testArrayElement_arrayOfNulls() throws Exception { + runTest("analysis/analysis-api/testData/components/expressionType/arrayElement_arrayOfNulls.kt"); + } + + @Test + @TestMetadata("array_arrayOfNulls.kt") + public void testArray_arrayOfNulls() throws Exception { + runTest("analysis/analysis-api/testData/components/expressionType/array_arrayOfNulls.kt"); + } + @Test @TestMetadata("assignmentExpressionTarget.kt") public void testAssignmentExpressionTarget() throws Exception { @@ -78,6 +90,30 @@ public class FirHLExpressionTypeTestGenerated extends AbstractFirHLExpressionTyp runTest("analysis/analysis-api/testData/components/expressionType/intLiteral.kt"); } + @Test + @TestMetadata("listElement_listOf.kt") + public void testListElement_listOf() throws Exception { + runTest("analysis/analysis-api/testData/components/expressionType/listElement_listOf.kt"); + } + + @Test + @TestMetadata("listElement_mutableListOf.kt") + public void testListElement_mutableListOf() throws Exception { + runTest("analysis/analysis-api/testData/components/expressionType/listElement_mutableListOf.kt"); + } + + @Test + @TestMetadata("list_listOf.kt") + public void testList_listOf() throws Exception { + runTest("analysis/analysis-api/testData/components/expressionType/list_listOf.kt"); + } + + @Test + @TestMetadata("list_mutableListOf.kt") + public void testList_mutableListOf() throws Exception { + runTest("analysis/analysis-api/testData/components/expressionType/list_mutableListOf.kt"); + } + @Test @TestMetadata("nonExpression.kt") public void testNonExpression() throws Exception { diff --git a/analysis/analysis-api/testData/components/expressionType/arrayElement_arrayOfNulls.kt b/analysis/analysis-api/testData/components/expressionType/arrayElement_arrayOfNulls.kt new file mode 100644 index 00000000000..976a635a63d --- /dev/null +++ b/analysis/analysis-api/testData/components/expressionType/arrayElement_arrayOfNulls.kt @@ -0,0 +1,5 @@ +fun foo() { + val arr = arrayOfNulls>(10) + arr[0] = emptyList() + arr[0] +} diff --git a/analysis/analysis-api/testData/components/expressionType/arrayElement_arrayOfNulls.txt b/analysis/analysis-api/testData/components/expressionType/arrayElement_arrayOfNulls.txt new file mode 100644 index 00000000000..7fdd6a520df --- /dev/null +++ b/analysis/analysis-api/testData/components/expressionType/arrayElement_arrayOfNulls.txt @@ -0,0 +1,2 @@ +expression: arr[0] +type: kotlin.collections.List<*>? diff --git a/analysis/analysis-api/testData/components/expressionType/array_arrayOfNulls.kt b/analysis/analysis-api/testData/components/expressionType/array_arrayOfNulls.kt new file mode 100644 index 00000000000..424a417897e --- /dev/null +++ b/analysis/analysis-api/testData/components/expressionType/array_arrayOfNulls.kt @@ -0,0 +1,4 @@ +fun foo() { + val arr = arrayOfNulls>(10) + arr[0] = emptyList() +} diff --git a/analysis/analysis-api/testData/components/expressionType/array_arrayOfNulls.txt b/analysis/analysis-api/testData/components/expressionType/array_arrayOfNulls.txt new file mode 100644 index 00000000000..66dc759f2c4 --- /dev/null +++ b/analysis/analysis-api/testData/components/expressionType/array_arrayOfNulls.txt @@ -0,0 +1,2 @@ +expression: arr +type: kotlin.Array?> diff --git a/analysis/analysis-api/testData/components/expressionType/listElement_listOf.kt b/analysis/analysis-api/testData/components/expressionType/listElement_listOf.kt new file mode 100644 index 00000000000..52765b37475 --- /dev/null +++ b/analysis/analysis-api/testData/components/expressionType/listElement_listOf.kt @@ -0,0 +1,5 @@ +// WITH_STDLIB +fun foo() { + val lst = listOf>(listOf("A"), listOf(42), emptyList()) + lst[0] +} diff --git a/analysis/analysis-api/testData/components/expressionType/listElement_listOf.txt b/analysis/analysis-api/testData/components/expressionType/listElement_listOf.txt new file mode 100644 index 00000000000..19f9a5cd806 --- /dev/null +++ b/analysis/analysis-api/testData/components/expressionType/listElement_listOf.txt @@ -0,0 +1,2 @@ +expression: lst[0] +type: kotlin.collections.List<*> diff --git a/analysis/analysis-api/testData/components/expressionType/listElement_mutableListOf.kt b/analysis/analysis-api/testData/components/expressionType/listElement_mutableListOf.kt new file mode 100644 index 00000000000..0992e19d839 --- /dev/null +++ b/analysis/analysis-api/testData/components/expressionType/listElement_mutableListOf.kt @@ -0,0 +1,6 @@ +// WITH_STDLIB +fun foo() { + val lst = mutableListOf>() + lst[0] = emptyList() + lst[0] +} diff --git a/analysis/analysis-api/testData/components/expressionType/listElement_mutableListOf.txt b/analysis/analysis-api/testData/components/expressionType/listElement_mutableListOf.txt new file mode 100644 index 00000000000..19f9a5cd806 --- /dev/null +++ b/analysis/analysis-api/testData/components/expressionType/listElement_mutableListOf.txt @@ -0,0 +1,2 @@ +expression: lst[0] +type: kotlin.collections.List<*> diff --git a/analysis/analysis-api/testData/components/expressionType/list_listOf.kt b/analysis/analysis-api/testData/components/expressionType/list_listOf.kt new file mode 100644 index 00000000000..0d57edc71a8 --- /dev/null +++ b/analysis/analysis-api/testData/components/expressionType/list_listOf.kt @@ -0,0 +1,5 @@ +// WITH_STDLIB +fun foo() { + val lst = listOf>(listOf("A"), listOf(42), emptyList()) + lst[0] +} diff --git a/analysis/analysis-api/testData/components/expressionType/list_listOf.txt b/analysis/analysis-api/testData/components/expressionType/list_listOf.txt new file mode 100644 index 00000000000..a52ed141c66 --- /dev/null +++ b/analysis/analysis-api/testData/components/expressionType/list_listOf.txt @@ -0,0 +1,2 @@ +expression: lst +type: kotlin.collections.List> diff --git a/analysis/analysis-api/testData/components/expressionType/list_mutableListOf.kt b/analysis/analysis-api/testData/components/expressionType/list_mutableListOf.kt new file mode 100644 index 00000000000..4aed8f507f5 --- /dev/null +++ b/analysis/analysis-api/testData/components/expressionType/list_mutableListOf.kt @@ -0,0 +1,5 @@ +// WITH_STDLIB +fun foo() { + val lst = mutableListOf>() + lst[0] = emptyList() +} diff --git a/analysis/analysis-api/testData/components/expressionType/list_mutableListOf.txt b/analysis/analysis-api/testData/components/expressionType/list_mutableListOf.txt new file mode 100644 index 00000000000..4184f9579f7 --- /dev/null +++ b/analysis/analysis-api/testData/components/expressionType/list_mutableListOf.txt @@ -0,0 +1,2 @@ +expression: lst +type: kotlin.collections.MutableList>