Files
kotlin-fork/compiler/testData/diagnostics/tests/j+k/collectionOverrides/irrelevantCharAtAbstract.kt
T
Denis Zharkov fc5217f7fc Fix signature clash problems caused by special built-ins
Do not treat members with already changed signature as a reason
to create a hidden copy

See tests for clarification:
- There are `charAt` method in B that has different name in Kotlin - `get`,
  i.e. relevant descriptor has initialSignatureDescriptor != null
- When collecting methods from supertypes, `charAt` from A is also get
  transformed to `get`
- So it has effectively the same signature as B.get (already declared)
- If by an accident B.get had been declared with Kotlin signature
  we would have add A.charAt (after transformation) with special flag:
  HiddenToOvercomeSignatureClash (hides it from resolution)
- But here B.charAt was artificially changed to `get`, so no signature clash
  actually happened

 #KT-13730 Fixed
2016-09-09 16:33:32 +03:00

20 lines
322 B
Kotlin
Vendored

// FILE: A.java
public abstract class A {
abstract public char charAt(int i);
}
// FILE: B.java
abstract public class B extends A implements CharSequence {
public char charAt(int i) { return '1'; }
}
// FILE: main.kt
abstract class C1 : B()
abstract class C2 : B() {
override fun get(index: Int) = '1'
}