From 2f8a64fff2765e5d1ee616e0386bcc479a7487a1 Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Wed, 23 Aug 2023 17:25:56 +0200 Subject: [PATCH] [AA FIR] fix exception from vararg parameter with invalid type It is true that for vararg parameter `arrayElementType` always have to be not null, but it required resolution to TYPES phase. But in case of the error type, the type reference is treated as resolved, so we are not obligatory to resolve such reference to TYPES, because we already have the resolved type. So we can make the rule of KtFirValueParameterSymbol#returnType less strict, and varargElementType will effectively do the same as lazy resolve + arrayElementType ^KT-61422 Fixed --- ...sSourceModuleSymbolByPsiTestGenerated.java | 12 +++++ .../fir/symbols/KtFirValueParameterSymbol.kt | 13 ++--- ...sSourceModuleSymbolByPsiTestGenerated.java | 12 +++++ ...sSourceModuleSymbolByPsiTestGenerated.java | 12 +++++ .../symbolByPsi/valueParameters/vararg.kt | 4 ++ .../valueParameters/vararg.pretty.txt | 1 + .../symbolByPsi/valueParameters/vararg.txt | 54 +++++++++++++++++++ .../varargWithoutType.descriptors.pretty.txt | 1 + .../varargWithoutType.descriptors.txt | 53 ++++++++++++++++++ .../valueParameters/varargWithoutType.kt | 4 ++ .../varargWithoutType.pretty.txt | 1 + .../valueParameters/varargWithoutType.txt | 53 ++++++++++++++++++ ...htClassesByPsiForLibraryTestGenerated.java | 6 +++ ...sEqualityByPsiForLibraryTestGenerated.java | 6 +++ ...ParentingByPsiForLibraryTestGenerated.java | 6 +++ ...ghtClassesByPsiForSourceTestGenerated.java | 6 +++ ...esEqualityByPsiForSourceTestGenerated.java | 6 +++ ...sParentingByPsiForSourceTestGenerated.java | 6 +++ ...arargParameterWithoutType.descriptors.java | 3 ++ .../facades/varargParameterWithoutType.java | 3 ++ .../facades/varargParameterWithoutType.kt | 3 ++ 21 files changed, 255 insertions(+), 10 deletions(-) create mode 100644 analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/vararg.kt create mode 100644 analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/vararg.pretty.txt create mode 100644 analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/vararg.txt create mode 100644 analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/varargWithoutType.descriptors.pretty.txt create mode 100644 analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/varargWithoutType.descriptors.txt create mode 100644 analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/varargWithoutType.kt create mode 100644 analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/varargWithoutType.pretty.txt create mode 100644 analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/varargWithoutType.txt create mode 100644 compiler/testData/asJava/lightClasses/lightClassByPsi/facades/varargParameterWithoutType.descriptors.java create mode 100644 compiler/testData/asJava/lightClasses/lightClassByPsi/facades/varargParameterWithoutType.java create mode 100644 compiler/testData/asJava/lightClasses/lightClassByPsi/facades/varargParameterWithoutType.kt diff --git a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/symbols/Fe10IdeNormalAnalysisSourceModuleSymbolByPsiTestGenerated.java b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/symbols/Fe10IdeNormalAnalysisSourceModuleSymbolByPsiTestGenerated.java index 1da670fe087..f2b2531c2aa 100644 --- a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/symbols/Fe10IdeNormalAnalysisSourceModuleSymbolByPsiTestGenerated.java +++ b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/symbols/Fe10IdeNormalAnalysisSourceModuleSymbolByPsiTestGenerated.java @@ -364,5 +364,17 @@ public class Fe10IdeNormalAnalysisSourceModuleSymbolByPsiTestGenerated extends A public void testParameterNotFunctionalType() throws Exception { runTest("analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/parameterNotFunctionalType.kt"); } + + @Test + @TestMetadata("vararg.kt") + public void testVararg() throws Exception { + runTest("analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/vararg.kt"); + } + + @Test + @TestMetadata("varargWithoutType.kt") + public void testVarargWithoutType() throws Exception { + runTest("analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/varargWithoutType.kt"); + } } } diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirValueParameterSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirValueParameterSymbol.kt index 2cfca827b34..8527bfe93e9 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirValueParameterSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirValueParameterSymbol.kt @@ -24,10 +24,8 @@ import org.jetbrains.kotlin.fir.correspondingProperty import org.jetbrains.kotlin.fir.declarations.FirFunction import org.jetbrains.kotlin.fir.renderWithType import org.jetbrains.kotlin.fir.symbols.impl.FirValueParameterSymbol -import org.jetbrains.kotlin.fir.types.arrayElementType -import org.jetbrains.kotlin.fir.utils.exceptions.withFirEntry +import org.jetbrains.kotlin.fir.types.varargElementType import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment internal class KtFirValueParameterSymbol( override val firSymbol: FirValueParameterSymbol, @@ -50,13 +48,8 @@ internal class KtFirValueParameterSymbol( override val returnType by cached { val returnType = firSymbol.resolvedReturnType - return@cached if (firSymbol.isVararg) { - // There SHOULD always be an array element type (even if it is an error type, e.g., unresolved). - val arrayElementType = returnType.arrayElementType() - ?: errorWithAttachment("No array element type for vararg value parameter") { - withFirEntry("fir", firSymbol.fir) - } - builder.typeBuilder.buildKtType(arrayElementType) + if (firSymbol.isVararg) { + builder.typeBuilder.buildKtType(returnType.varargElementType()) } else { builder.typeBuilder.buildKtType(returnType) } diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/symbols/FirIdeNormalAnalysisSourceModuleSymbolByPsiTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/symbols/FirIdeNormalAnalysisSourceModuleSymbolByPsiTestGenerated.java index 324fe2aa623..13b5b0c510a 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/symbols/FirIdeNormalAnalysisSourceModuleSymbolByPsiTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/symbols/FirIdeNormalAnalysisSourceModuleSymbolByPsiTestGenerated.java @@ -364,5 +364,17 @@ public class FirIdeNormalAnalysisSourceModuleSymbolByPsiTestGenerated extends Ab public void testParameterNotFunctionalType() throws Exception { runTest("analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/parameterNotFunctionalType.kt"); } + + @Test + @TestMetadata("vararg.kt") + public void testVararg() throws Exception { + runTest("analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/vararg.kt"); + } + + @Test + @TestMetadata("varargWithoutType.kt") + public void testVarargWithoutType() throws Exception { + runTest("analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/varargWithoutType.kt"); + } } } diff --git a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/symbols/FirStandaloneNormalAnalysisSourceModuleSymbolByPsiTestGenerated.java b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/symbols/FirStandaloneNormalAnalysisSourceModuleSymbolByPsiTestGenerated.java index 149d91a51cb..e564862742f 100644 --- a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/symbols/FirStandaloneNormalAnalysisSourceModuleSymbolByPsiTestGenerated.java +++ b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/symbols/FirStandaloneNormalAnalysisSourceModuleSymbolByPsiTestGenerated.java @@ -364,5 +364,17 @@ public class FirStandaloneNormalAnalysisSourceModuleSymbolByPsiTestGenerated ext public void testParameterNotFunctionalType() throws Exception { runTest("analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/parameterNotFunctionalType.kt"); } + + @Test + @TestMetadata("vararg.kt") + public void testVararg() throws Exception { + runTest("analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/vararg.kt"); + } + + @Test + @TestMetadata("varargWithoutType.kt") + public void testVarargWithoutType() throws Exception { + runTest("analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/varargWithoutType.kt"); + } } } diff --git a/analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/vararg.kt b/analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/vararg.kt new file mode 100644 index 00000000000..e701672d9b1 --- /dev/null +++ b/analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/vararg.kt @@ -0,0 +1,4 @@ +// DO_NOT_CHECK_NON_PSI_SYMBOL_RESTORE_K1 +fun foo(vararg ints: Int) { + +} diff --git a/analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/vararg.pretty.txt b/analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/vararg.pretty.txt new file mode 100644 index 00000000000..41c117ce372 --- /dev/null +++ b/analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/vararg.pretty.txt @@ -0,0 +1 @@ +fun foo(vararg ints: kotlin.Int) diff --git a/analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/vararg.txt b/analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/vararg.txt new file mode 100644 index 00000000000..5045fd92bdc --- /dev/null +++ b/analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/vararg.txt @@ -0,0 +1,54 @@ +KtFunctionSymbol: + annotationsList: [] + callableIdIfNonLocal: /foo + contextReceivers: [] + contractEffects: [] + hasStableParameterNames: true + isActual: false + isBuiltinFunctionInvoke: false + isExpect: false + isExtension: false + isExternal: false + isInfix: false + isInline: false + isOperator: false + isOverride: false + isStatic: false + isSuspend: false + modality: FINAL + name: foo + origin: SOURCE + receiverParameter: null + returnType: KtUsualClassType: + annotationsList: [] + ownTypeArguments: [] + type: kotlin/Unit + symbolKind: TOP_LEVEL + typeParameters: [] + valueParameters: [ + KtValueParameterSymbol: + annotationsList: [] + callableIdIfNonLocal: null + contextReceivers: [] + generatedPrimaryConstructorProperty: null + hasDefaultValue: false + isCrossinline: false + isExtension: false + isImplicitLambdaParameter: false + isNoinline: false + isVararg: true + name: ints + origin: SOURCE + receiverParameter: null + returnType: KtUsualClassType: + annotationsList: [] + ownTypeArguments: [] + type: kotlin/Int + symbolKind: LOCAL + typeParameters: [] + getContainingModule: KtSourceModule "Sources of main" + deprecationStatus: null + ] + visibility: Public + getContainingModule: KtSourceModule "Sources of main" + deprecationStatus: null diff --git a/analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/varargWithoutType.descriptors.pretty.txt b/analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/varargWithoutType.descriptors.pretty.txt new file mode 100644 index 00000000000..bb973fd98ca --- /dev/null +++ b/analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/varargWithoutType.descriptors.pretty.txt @@ -0,0 +1 @@ +fun foo(vararg ints: ERROR(No type specified for unknown element)) \ No newline at end of file diff --git a/analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/varargWithoutType.descriptors.txt b/analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/varargWithoutType.descriptors.txt new file mode 100644 index 00000000000..90a09e810d1 --- /dev/null +++ b/analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/varargWithoutType.descriptors.txt @@ -0,0 +1,53 @@ +KtFunctionSymbol: + annotationsList: [] + callableIdIfNonLocal: /foo + contextReceivers: [] + contractEffects: [] + hasStableParameterNames: true + isActual: false + isBuiltinFunctionInvoke: false + isExpect: false + isExtension: false + isExternal: false + isInfix: false + isInline: false + isOperator: false + isOverride: false + isStatic: false + isSuspend: false + modality: FINAL + name: foo + origin: SOURCE + receiverParameter: null + returnType: KtUsualClassType: + annotationsList: [] + ownTypeArguments: [] + type: kotlin/Unit + symbolKind: TOP_LEVEL + typeParameters: [] + valueParameters: [ + KtValueParameterSymbol: + annotationsList: [] + callableIdIfNonLocal: null + contextReceivers: [] + generatedPrimaryConstructorProperty: null + hasDefaultValue: false + isCrossinline: false + isExtension: false + isImplicitLambdaParameter: false + isNoinline: false + isVararg: true + name: ints + origin: SOURCE + receiverParameter: null + returnType: KtTypeErrorType: + annotationsList: [] + type: ERROR_TYPE + symbolKind: LOCAL + typeParameters: [] + getContainingModule: KtSourceModule "Sources of main" + deprecationStatus: null + ] + visibility: Public + getContainingModule: KtSourceModule "Sources of main" + deprecationStatus: null \ No newline at end of file diff --git a/analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/varargWithoutType.kt b/analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/varargWithoutType.kt new file mode 100644 index 00000000000..c53f5b98e90 --- /dev/null +++ b/analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/varargWithoutType.kt @@ -0,0 +1,4 @@ +// DO_NOT_CHECK_NON_PSI_SYMBOL_RESTORE_K1 +fun foo(vararg ints:) { + +} diff --git a/analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/varargWithoutType.pretty.txt b/analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/varargWithoutType.pretty.txt new file mode 100644 index 00000000000..c890a8f1525 --- /dev/null +++ b/analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/varargWithoutType.pretty.txt @@ -0,0 +1 @@ +fun foo(vararg ints: ERROR(Incomplete code)) \ No newline at end of file diff --git a/analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/varargWithoutType.txt b/analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/varargWithoutType.txt new file mode 100644 index 00000000000..3bae8379e95 --- /dev/null +++ b/analysis/analysis-api/testData/symbols/symbolByPsi/valueParameters/varargWithoutType.txt @@ -0,0 +1,53 @@ +KtFunctionSymbol: + annotationsList: [] + callableIdIfNonLocal: /foo + contextReceivers: [] + contractEffects: [] + hasStableParameterNames: true + isActual: false + isBuiltinFunctionInvoke: false + isExpect: false + isExtension: false + isExternal: false + isInfix: false + isInline: false + isOperator: false + isOverride: false + isStatic: false + isSuspend: false + modality: FINAL + name: foo + origin: SOURCE + receiverParameter: null + returnType: KtUsualClassType: + annotationsList: [] + ownTypeArguments: [] + type: kotlin/Unit + symbolKind: TOP_LEVEL + typeParameters: [] + valueParameters: [ + KtValueParameterSymbol: + annotationsList: [] + callableIdIfNonLocal: null + contextReceivers: [] + generatedPrimaryConstructorProperty: null + hasDefaultValue: false + isCrossinline: false + isExtension: false + isImplicitLambdaParameter: false + isNoinline: false + isVararg: true + name: ints + origin: SOURCE + receiverParameter: null + returnType: KtTypeErrorType: + annotationsList: [] + type: ERROR CLASS: Incomplete code + symbolKind: LOCAL + typeParameters: [] + getContainingModule: KtSourceModule "Sources of main" + deprecationStatus: null + ] + visibility: Public + getContainingModule: KtSourceModule "Sources of main" + deprecationStatus: null \ No newline at end of file diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesByPsiForLibraryTestGenerated.java b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesByPsiForLibraryTestGenerated.java index 6bf3b43d75d..056aee7aa69 100644 --- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesByPsiForLibraryTestGenerated.java +++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesByPsiForLibraryTestGenerated.java @@ -453,6 +453,12 @@ public class SymbolLightClassesByPsiForLibraryTestGenerated extends AbstractSymb runTest("compiler/testData/asJava/lightClasses/lightClassByPsi/facades/valueClassInSignature.kt"); } + @Test + @TestMetadata("varargParameterWithoutType.kt") + public void testVarargParameterWithoutType() throws Exception { + runTest("compiler/testData/asJava/lightClasses/lightClassByPsi/facades/varargParameterWithoutType.kt"); + } + @Test @TestMetadata("wildcardOptimization.kt") public void testWildcardOptimization() throws Exception { diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesEqualityByPsiForLibraryTestGenerated.java b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesEqualityByPsiForLibraryTestGenerated.java index 4cad3d0d5dc..3fde5e8c168 100644 --- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesEqualityByPsiForLibraryTestGenerated.java +++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesEqualityByPsiForLibraryTestGenerated.java @@ -453,6 +453,12 @@ public class SymbolLightClassesEqualityByPsiForLibraryTestGenerated extends Abst runTest("compiler/testData/asJava/lightClasses/lightClassByPsi/facades/valueClassInSignature.kt"); } + @Test + @TestMetadata("varargParameterWithoutType.kt") + public void testVarargParameterWithoutType() throws Exception { + runTest("compiler/testData/asJava/lightClasses/lightClassByPsi/facades/varargParameterWithoutType.kt"); + } + @Test @TestMetadata("wildcardOptimization.kt") public void testWildcardOptimization() throws Exception { diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesParentingByPsiForLibraryTestGenerated.java b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesParentingByPsiForLibraryTestGenerated.java index ea3a2bdd945..3765d883cbe 100644 --- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesParentingByPsiForLibraryTestGenerated.java +++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/SymbolLightClassesParentingByPsiForLibraryTestGenerated.java @@ -453,6 +453,12 @@ public class SymbolLightClassesParentingByPsiForLibraryTestGenerated extends Abs runTest("compiler/testData/asJava/lightClasses/lightClassByPsi/facades/valueClassInSignature.kt"); } + @Test + @TestMetadata("varargParameterWithoutType.kt") + public void testVarargParameterWithoutType() throws Exception { + runTest("compiler/testData/asJava/lightClasses/lightClassByPsi/facades/varargParameterWithoutType.kt"); + } + @Test @TestMetadata("wildcardOptimization.kt") public void testWildcardOptimization() throws Exception { diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesByPsiForSourceTestGenerated.java b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesByPsiForSourceTestGenerated.java index 13ac52965c2..f14a12d03e8 100644 --- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesByPsiForSourceTestGenerated.java +++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesByPsiForSourceTestGenerated.java @@ -453,6 +453,12 @@ public class SymbolLightClassesByPsiForSourceTestGenerated extends AbstractSymbo runTest("compiler/testData/asJava/lightClasses/lightClassByPsi/facades/valueClassInSignature.kt"); } + @Test + @TestMetadata("varargParameterWithoutType.kt") + public void testVarargParameterWithoutType() throws Exception { + runTest("compiler/testData/asJava/lightClasses/lightClassByPsi/facades/varargParameterWithoutType.kt"); + } + @Test @TestMetadata("wildcardOptimization.kt") public void testWildcardOptimization() throws Exception { diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesEqualityByPsiForSourceTestGenerated.java b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesEqualityByPsiForSourceTestGenerated.java index 7784759c6f1..f2e97abc769 100644 --- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesEqualityByPsiForSourceTestGenerated.java +++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesEqualityByPsiForSourceTestGenerated.java @@ -453,6 +453,12 @@ public class SymbolLightClassesEqualityByPsiForSourceTestGenerated extends Abstr runTest("compiler/testData/asJava/lightClasses/lightClassByPsi/facades/valueClassInSignature.kt"); } + @Test + @TestMetadata("varargParameterWithoutType.kt") + public void testVarargParameterWithoutType() throws Exception { + runTest("compiler/testData/asJava/lightClasses/lightClassByPsi/facades/varargParameterWithoutType.kt"); + } + @Test @TestMetadata("wildcardOptimization.kt") public void testWildcardOptimization() throws Exception { diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesParentingByPsiForSourceTestGenerated.java b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesParentingByPsiForSourceTestGenerated.java index be37a78087b..e5f6c914fdd 100644 --- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesParentingByPsiForSourceTestGenerated.java +++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesParentingByPsiForSourceTestGenerated.java @@ -453,6 +453,12 @@ public class SymbolLightClassesParentingByPsiForSourceTestGenerated extends Abst runTest("compiler/testData/asJava/lightClasses/lightClassByPsi/facades/valueClassInSignature.kt"); } + @Test + @TestMetadata("varargParameterWithoutType.kt") + public void testVarargParameterWithoutType() throws Exception { + runTest("compiler/testData/asJava/lightClasses/lightClassByPsi/facades/varargParameterWithoutType.kt"); + } + @Test @TestMetadata("wildcardOptimization.kt") public void testWildcardOptimization() throws Exception { diff --git a/compiler/testData/asJava/lightClasses/lightClassByPsi/facades/varargParameterWithoutType.descriptors.java b/compiler/testData/asJava/lightClasses/lightClassByPsi/facades/varargParameterWithoutType.descriptors.java new file mode 100644 index 00000000000..13a3d1a41e1 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByPsi/facades/varargParameterWithoutType.descriptors.java @@ -0,0 +1,3 @@ +public final class VarargParameterWithoutTypeKt /* VarargParameterWithoutTypeKt*/ { + public static final /* vararg */ void someFun(error.NonExistentClass...);// someFun(error.NonExistentClass[]) +} diff --git a/compiler/testData/asJava/lightClasses/lightClassByPsi/facades/varargParameterWithoutType.java b/compiler/testData/asJava/lightClasses/lightClassByPsi/facades/varargParameterWithoutType.java new file mode 100644 index 00000000000..d45e9ab3604 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByPsi/facades/varargParameterWithoutType.java @@ -0,0 +1,3 @@ +public final class VarargParameterWithoutTypeKt /* VarargParameterWithoutTypeKt*/ { + public static final /* vararg */ void someFun(@org.jetbrains.annotations.NotNull() error.NonExistentClass...);// someFun(error.NonExistentClass[]) +} diff --git a/compiler/testData/asJava/lightClasses/lightClassByPsi/facades/varargParameterWithoutType.kt b/compiler/testData/asJava/lightClasses/lightClassByPsi/facades/varargParameterWithoutType.kt new file mode 100644 index 00000000000..ea509bcfedb --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByPsi/facades/varargParameterWithoutType.kt @@ -0,0 +1,3 @@ +fun someFun(vararg values: ) + +// COMPILATION_ERRORS \ No newline at end of file