diff --git a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/expressionTypeProvider/Fe10IdeNormalAnalysisSourceModuleHLExpressionTypeTestGenerated.java b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/expressionTypeProvider/Fe10IdeNormalAnalysisSourceModuleHLExpressionTypeTestGenerated.java index 90e92acb696..e6fbdb1812a 100644 --- a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/expressionTypeProvider/Fe10IdeNormalAnalysisSourceModuleHLExpressionTypeTestGenerated.java +++ b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/expressionTypeProvider/Fe10IdeNormalAnalysisSourceModuleHLExpressionTypeTestGenerated.java @@ -100,6 +100,12 @@ public class Fe10IdeNormalAnalysisSourceModuleHLExpressionTypeTestGenerated exte runTest("analysis/analysis-api/testData/components/expressionTypeProvider/expressionType/inParens.kt"); } + @Test + @TestMetadata("incompleteGet.kt") + public void testIncompleteGet() throws Exception { + runTest("analysis/analysis-api/testData/components/expressionTypeProvider/expressionType/incompleteGet.kt"); + } + @Test @TestMetadata("insideStringTemplate.kt") public void testInsideStringTemplate() 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 09131e3a5fb..85917a75394 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 @@ -154,7 +154,7 @@ internal class KtFirExpressionTypeProvider( val assignment = expression.parent as? KtBinaryExpression ?: return null if (assignment.operationToken !in KtTokens.ALL_ASSIGNMENTS) return null if (assignment.left != expression) return null - val setTargetParameterType = fir.argumentsToSubstitutedValueParameters()?.values?.last()?.substitutedType ?: return null + val setTargetParameterType = fir.argumentsToSubstitutedValueParameters()?.values?.lastOrNull()?.substitutedType ?: return null return setTargetParameterType.asKtType() } diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/expressionTypeProvider/FirIdeDependentAnalysisSourceModuleHLExpressionTypeTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/expressionTypeProvider/FirIdeDependentAnalysisSourceModuleHLExpressionTypeTestGenerated.java index 56d84cc6888..899427b671a 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/expressionTypeProvider/FirIdeDependentAnalysisSourceModuleHLExpressionTypeTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/expressionTypeProvider/FirIdeDependentAnalysisSourceModuleHLExpressionTypeTestGenerated.java @@ -100,6 +100,12 @@ public class FirIdeDependentAnalysisSourceModuleHLExpressionTypeTestGenerated ex runTest("analysis/analysis-api/testData/components/expressionTypeProvider/expressionType/inParens.kt"); } + @Test + @TestMetadata("incompleteGet.kt") + public void testIncompleteGet() throws Exception { + runTest("analysis/analysis-api/testData/components/expressionTypeProvider/expressionType/incompleteGet.kt"); + } + @Test @TestMetadata("insideStringTemplate.kt") public void testInsideStringTemplate() throws Exception { diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/expressionTypeProvider/FirIdeNormalAnalysisSourceModuleHLExpressionTypeTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/expressionTypeProvider/FirIdeNormalAnalysisSourceModuleHLExpressionTypeTestGenerated.java index ce092638792..674ce27c444 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/expressionTypeProvider/FirIdeNormalAnalysisSourceModuleHLExpressionTypeTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/expressionTypeProvider/FirIdeNormalAnalysisSourceModuleHLExpressionTypeTestGenerated.java @@ -100,6 +100,12 @@ public class FirIdeNormalAnalysisSourceModuleHLExpressionTypeTestGenerated exten runTest("analysis/analysis-api/testData/components/expressionTypeProvider/expressionType/inParens.kt"); } + @Test + @TestMetadata("incompleteGet.kt") + public void testIncompleteGet() throws Exception { + runTest("analysis/analysis-api/testData/components/expressionTypeProvider/expressionType/incompleteGet.kt"); + } + @Test @TestMetadata("insideStringTemplate.kt") public void testInsideStringTemplate() throws Exception { diff --git a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/expressionTypeProvider/FirStandaloneNormalAnalysisSourceModuleHLExpressionTypeTestGenerated.java b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/expressionTypeProvider/FirStandaloneNormalAnalysisSourceModuleHLExpressionTypeTestGenerated.java index f68aa76683d..86777d78cad 100644 --- a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/expressionTypeProvider/FirStandaloneNormalAnalysisSourceModuleHLExpressionTypeTestGenerated.java +++ b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/expressionTypeProvider/FirStandaloneNormalAnalysisSourceModuleHLExpressionTypeTestGenerated.java @@ -100,6 +100,12 @@ public class FirStandaloneNormalAnalysisSourceModuleHLExpressionTypeTestGenerate runTest("analysis/analysis-api/testData/components/expressionTypeProvider/expressionType/inParens.kt"); } + @Test + @TestMetadata("incompleteGet.kt") + public void testIncompleteGet() throws Exception { + runTest("analysis/analysis-api/testData/components/expressionTypeProvider/expressionType/incompleteGet.kt"); + } + @Test @TestMetadata("insideStringTemplate.kt") public void testInsideStringTemplate() throws Exception { diff --git a/analysis/analysis-api/testData/components/expressionTypeProvider/expressionType/incompleteGet.kt b/analysis/analysis-api/testData/components/expressionTypeProvider/expressionType/incompleteGet.kt new file mode 100644 index 00000000000..9bcaa157c57 --- /dev/null +++ b/analysis/analysis-api/testData/components/expressionTypeProvider/expressionType/incompleteGet.kt @@ -0,0 +1,9 @@ +class Incomplete { + fun get{} +} + + +fun main(args: Array) { + var incomplete: Incomplete = Incomplete(1) + incomplete[0] += 1 +} diff --git a/analysis/analysis-api/testData/components/expressionTypeProvider/expressionType/incompleteGet.txt b/analysis/analysis-api/testData/components/expressionTypeProvider/expressionType/incompleteGet.txt new file mode 100644 index 00000000000..59c2f97714d --- /dev/null +++ b/analysis/analysis-api/testData/components/expressionTypeProvider/expressionType/incompleteGet.txt @@ -0,0 +1,2 @@ +expression: incomplete[0] +type: kotlin.Unit