[FIR] Introduce FirDeclarationStatus.hasStableParameterNames
This flag is true by default but is set to false for - Java methods and constructors - interface delegation methods that delegate to Java The NAMED_ARGUMENTS_NOT_ALLOWED logic is mostly refactored to use the new flag though some custom logic remains for determining the correct message and to work around a corner case with fake overrides. The flag is (de)serialized from/to metadata. For backward compatibility with K1, delegated methods to Java types are deserialized as stable. ^KT-40480 Fixed
This commit is contained in:
committed by
Space Team
parent
152e63b198
commit
314784f435
+2
-2
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.pointers.CanNotCreateSymbolPoin
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointer
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.fir.resolve.getHasStableParameterNames
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.hasStableParameterNames
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.isExtension
|
||||
|
||||
@@ -46,7 +46,7 @@ internal class KtFirAnonymousFunctionSymbol(
|
||||
|
||||
override val hasStableParameterNames: Boolean
|
||||
get() = withValidityAssertion {
|
||||
firSymbol.fir.getHasStableParameterNames(firSymbol.moduleData.session)
|
||||
firSymbol.fir.hasStableParameterNames
|
||||
}
|
||||
override val isExtension: Boolean get() = withValidityAssertion { firSymbol.isExtension }
|
||||
|
||||
|
||||
+2
-2
@@ -24,8 +24,8 @@ import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.fir.containingClassLookupTag
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.hasStableParameterNames
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.visibility
|
||||
import org.jetbrains.kotlin.fir.resolve.getHasStableParameterNames
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
|
||||
@@ -41,7 +41,7 @@ internal class KtFirConstructorSymbol(
|
||||
|
||||
override val hasStableParameterNames: Boolean
|
||||
get() = withValidityAssertion {
|
||||
firSymbol.fir.getHasStableParameterNames(firSymbol.moduleData.session)
|
||||
firSymbol.fir.hasStableParameterNames
|
||||
}
|
||||
|
||||
override val visibility: Visibility get() = withValidityAssertion { firSymbol.visibility }
|
||||
|
||||
+1
-2
@@ -34,7 +34,6 @@ import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.fir.containingClassLookupTag
|
||||
import org.jetbrains.kotlin.fir.contracts.FirEffectDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.*
|
||||
import org.jetbrains.kotlin.fir.resolve.getHasStableParameterNames
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.isExtension
|
||||
import org.jetbrains.kotlin.name.CallableId
|
||||
@@ -65,7 +64,7 @@ internal class KtFirFunctionSymbol(
|
||||
override val valueParameters: List<KtValueParameterSymbol> by cached { firSymbol.createKtValueParameters(builder) }
|
||||
|
||||
override val hasStableParameterNames: Boolean
|
||||
get() = withValidityAssertion { firSymbol.fir.getHasStableParameterNames(firSymbol.moduleData.session) }
|
||||
get() = withValidityAssertion { firSymbol.fir.hasStableParameterNames }
|
||||
|
||||
override val annotationsList by cached {
|
||||
KtFirAnnotationListForDeclaration.create(
|
||||
|
||||
+2
-2
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.KtTypeParameterSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtValueParameterSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.fir.resolve.getHasStableParameterNames
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.hasStableParameterNames
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.isExtension
|
||||
import org.jetbrains.kotlin.name.CallableId
|
||||
@@ -54,7 +54,7 @@ internal class KtFirSamConstructorSymbol(
|
||||
|
||||
override val hasStableParameterNames: Boolean
|
||||
get() = withValidityAssertion {
|
||||
firSymbol.fir.getHasStableParameterNames(firSymbol.moduleData.session)
|
||||
firSymbol.fir.hasStableParameterNames
|
||||
}
|
||||
|
||||
override val isExtension: Boolean get() = withValidityAssertion { firSymbol.isExtension }
|
||||
|
||||
+12
@@ -22094,6 +22094,18 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag
|
||||
runTest("compiler/testData/diagnostics/tests/namedArguments/ambiguousNamedArgumentsWithGenerics3.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("disallowForDelegationToJavaMethods.kt")
|
||||
public void testDisallowForDelegationToJavaMethods() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/tests/namedArguments/disallowForDelegationToJavaMethods.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("disallowForFunctionTypes.kt")
|
||||
public void testDisallowForFunctionTypes() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/tests/namedArguments/disallowForFunctionTypes.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("disallowForJavaConstructor.kt")
|
||||
public void testDisallowForJavaConstructor() throws Exception {
|
||||
|
||||
Reference in New Issue
Block a user