[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
+3
@@ -0,0 +1,3 @@
|
||||
public interface JavaInterface {
|
||||
public void foo(int javaName);
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
public class JavaSuperClass implements JavaInterface {
|
||||
@Override
|
||||
public void foo(int javaName) {}
|
||||
}
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
class KtClass : JavaInterface by JavaSuperClass()
|
||||
+1
@@ -0,0 +1 @@
|
||||
OK
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
fun test() {
|
||||
val ktInstance = KtClass()
|
||||
// Shouldn't work but is kept for backward compatibility with K1
|
||||
// When KT-4758 is fixed, this should break.
|
||||
ktInstance.foo(javaName = 1)
|
||||
}
|
||||
Reference in New Issue
Block a user