[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
@@ -572,6 +572,7 @@ abstract class FirJavaFacade(
|
||||
// Approximation: all Java methods with name that allows to use it in operator form are considered operators
|
||||
// We need here more detailed checks (see modifierChecks.kt)
|
||||
isOperator = name in ALL_JAVA_OPERATION_NAMES || OperatorNameConventions.COMPONENT_REGEX.matches(name.asString())
|
||||
hasStableParameterNames = false
|
||||
}
|
||||
|
||||
if (!javaMethod.isStatic) {
|
||||
@@ -628,6 +629,7 @@ abstract class FirJavaFacade(
|
||||
visibility.toEffectiveVisibility(ownerClassBuilder.symbol)
|
||||
).apply {
|
||||
isInner = isThisInner
|
||||
hasStableParameterNames = false
|
||||
}
|
||||
this.visibility = visibility
|
||||
isPrimary = javaConstructor == null
|
||||
|
||||
+3
-4
@@ -21,10 +21,7 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl
|
||||
import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty
|
||||
import org.jetbrains.kotlin.fir.declarations.synthetic.buildSyntheticProperty
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isInner
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isStatic
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.modality
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.visibility
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.*
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
import org.jetbrains.kotlin.fir.expressions.FirConstExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.unexpandedClassId
|
||||
@@ -262,6 +259,8 @@ class FirSignatureEnhancement(
|
||||
FirDeclarationStatusImpl(firMethod.visibility, Modality.FINAL)
|
||||
}.apply {
|
||||
isInner = firMethod.isInner
|
||||
// Java annotation class constructors have stable names, copy flag.
|
||||
hasStableParameterNames = firMethod.hasStableParameterNames
|
||||
}
|
||||
this.symbol = symbol
|
||||
dispatchReceiverType = firMethod.dispatchReceiverType
|
||||
|
||||
Reference in New Issue
Block a user