Files
kotlin-fork/compiler/testData/diagnostics/tests/objects/kt21515/callableReferencesNew.kt
T
Dmitriy Novozhilov e6b5cb5216 [TD] Update diagnostics test data due to new test runners
Update includes:
- Changing syntax of `OI/`NI` tags from `<!NI;TAG!>` to `<!TAG{NI}!>`
- Fix some incorrect directives
- Change order of diagnostics in some places
- Remove ignored diagnostics from FIR test data (previously `DIAGNOSTICS` didn't work)
- Update FIR dumps in some places and add `FIR_IDENTICAL` if needed
- Replace all JAVAC_SKIP with SKIP_JAVAC directive
2020-12-16 19:52:25 +03:00

143 lines
3.7 KiB
Kotlin
Vendored

// !LANGUAGE: +ProhibitVisibilityOfNestedClassifiersFromSupertypesOfCompanion
// See KT-21515 for a class diagram and details
// class is to prevent accidental short-name import
class O {
open class Alpha {
open fun foo() = 42
class FromAlpha {
fun foo() = 42
}
companion object {
class FromCompanionAlpha {
fun foo() = 42
}
}
}
open class Beta : Alpha() {
override fun foo() = 42
class FromBeta {
fun foo() = 42
}
companion object {
class FromCompanionBeta {
fun foo() = 42
}
}
}
open class A {
open fun foo() = 42
class FromA {
fun foo() = 42
}
companion object : Beta() {
class FromCompanionA {
fun foo() = 42
}
}
}
//////////////////////////
open class FarAway {
open fun foo() = 42
class FromFarAway {
fun foo() = 42
}
}
open class Gamma {
open fun foo() = 42
class FromGamma {
fun foo() = 42
}
companion object : FarAway() {
class FromCompanionGamma {
fun foo() = 42
}
}
}
open class B : A() {
override fun foo() = 42
class FromB {
fun foo() = 42
}
companion object : Gamma() {
override fun foo() = 42
class FromCompanionB {
fun foo() = 42
}
}
}
}
///////////////////////////////
open class Delta {
open fun foo() = 42
class FromDelta {
fun foo() = 42
}
}
class C : O.B() {
override fun foo() = 42
companion object : Delta() {
class FromCompanionC {
fun foo() = 42
}
}
// VISIBLE: Classifiers from direct superclasses
val c = FromA::foo
val d = FromB::foo
// VISIBLE: Classifiers from our own companion
val n = FromCompanionC::foo
// INVISIBLE: direct superclasses themselves.
val a = <!UNRESOLVED_REFERENCE!>A<!>::<!DEBUG_INFO_MISSING_UNRESOLVED!>foo<!>
val b = <!UNRESOLVED_REFERENCE!>A<!>::<!DEBUG_INFO_MISSING_UNRESOLVED!>foo<!>
// DEPRECATED: Classifiers from companions of direct superclasses
val e = <!UNRESOLVED_REFERENCE!>FromCompanionA<!>::<!DEBUG_INFO_MISSING_UNRESOLVED!>foo<!>
val f = <!UNRESOLVED_REFERENCE!>FromCompanionB<!>::<!DEBUG_INFO_MISSING_UNRESOLVED!>foo<!>
// INVISIBLE: "cousin" supertypes themselves
val g = <!UNRESOLVED_REFERENCE!>Alpha<!>::<!DEBUG_INFO_MISSING_UNRESOLVED!>foo<!>
val h = <!UNRESOLVED_REFERENCE!>Beta<!>::<!DEBUG_INFO_MISSING_UNRESOLVED!>foo<!>
val i = <!UNRESOLVED_REFERENCE!>Gamma<!>::<!DEBUG_INFO_MISSING_UNRESOLVED!>foo<!>
// DEPRECATED: classifiers from "cousin" superclasses
val k = <!UNRESOLVED_REFERENCE!>FromAlpha<!>::<!DEBUG_INFO_MISSING_UNRESOLVED!>foo<!>
val l = <!UNRESOLVED_REFERENCE!>FromBeta<!>::<!DEBUG_INFO_MISSING_UNRESOLVED!>foo<!>
val m = <!UNRESOLVED_REFERENCE!>FromGamma<!>::<!DEBUG_INFO_MISSING_UNRESOLVED!>foo<!>
// INVISIBLE: We don't see classifiers from companions of "cousin" superclasses
val o = <!UNRESOLVED_REFERENCE!>FromCompanionAlpha<!>::<!DEBUG_INFO_MISSING_UNRESOLVED!>foo<!>
val p = <!UNRESOLVED_REFERENCE!>FromCompanionBeta<!>::<!DEBUG_INFO_MISSING_UNRESOLVED!>foo<!>
val q = <!UNRESOLVED_REFERENCE!>FromCompanionGamma<!>::<!DEBUG_INFO_MISSING_UNRESOLVED!>foo<!>
// DEPRECATED: Classifiers from supertypes of our own companion
val r = <!UNRESOLVED_REFERENCE!>FromDelta<!>::<!DEBUG_INFO_MISSING_UNRESOLVED!>foo<!>
}