| interface Substitutable<out T : DeclarationDescriptorNonRoot> { |
| |
| } |
| |
| abstract class ResolutionPart { |
| constructor() /* primary */ { |
| super/*Any*/() |
| /* <init>() */ |
| |
| } |
| |
| abstract fun KotlinResolutionCandidate.process(): String |
| |
| } |
| |
| class KotlinResolutionCandidate { |
| constructor(resolvedCall: Atom) /* primary */ { |
| super/*Any*/() |
| /* <init>() */ |
| |
| } |
| |
| val resolvedCall: Atom |
| field = resolvedCall |
| get |
| |
| } |
| |
| class Atom { |
| constructor(candidateDescriptor: CallableDescriptor) /* primary */ { |
| super/*Any*/() |
| /* <init>() */ |
| |
| } |
| |
| val candidateDescriptor: CallableDescriptor |
| field = candidateDescriptor |
| get |
| |
| } |
| |
| object Owner : ResolutionPart { |
| private constructor() /* primary */ { |
| super/*ResolutionPart*/() |
| /* <init>() */ |
| |
| } |
| |
| override fun KotlinResolutionCandidate.process(): String { |
| val candidateDescriptor: CallableDescriptor = <this>.<get-resolvedCall>().<get-candidateDescriptor>() |
| when { |
| when { |
| candidateDescriptor is MemberDescriptor -> EQEQ(arg0 = candidateDescriptor /*as MemberDescriptor */.getModality(), arg1 = null).not() |
| else -> false |
| } -> return "OK" |
| } |
| return "FAIL" |
| } |
| |
| } |
| |
| object Final : Modality { |
| private constructor() /* primary */ { |
| super/*Any*/() |
| /* <init>() */ |
| |
| } |
| |
| } |