| // WITH_STDLIB | |
| // LANGUAGE: +CompanionBlocks +CompanionExtensions | |
| class GenericHost<T> { | |
| companion { | |
| fun foo(value: String): String = "foo:$value" | |
| val marker: String = "marker" | |
| } | |
| } | |
| typealias StringHost = GenericHost<String> | |
| fun box(): String { | |
| val directFun: (String) -> String = GenericHost::foo | |
| val directProp: () -> String = GenericHost::marker | |
| val aliasFun: (String) -> String = StringHost::foo | |
| val aliasProp: () -> String = StringHost::marker | |
| val directResult = directFun("O") | |
| if (directResult != "foo:O") return "FAIL: direct fun ref: $directResult" | |
| val directPropResult = directProp() | |
| if (directPropResult != "marker") return "FAIL: direct prop ref: $directPropResult" | |
| val aliasFunResult = aliasFun("K") | |
| if (aliasFunResult != "foo:K") return "FAIL: alias fun ref: $aliasFunResult" | |
| val aliasPropResult = aliasProp() | |
| if (aliasPropResult != "marker") return "FAIL: alias prop ref: $aliasPropResult" | |
| return "OK" | |
| } |