New default checks for mixed hierarchies
Old and new schemes
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.resolve
|
||||
|
||||
import com.intellij.openapi.components.ServiceManager
|
||||
import com.intellij.openapi.project.Project
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
|
||||
interface LanguageVersionSettingsProvider {
|
||||
|
||||
fun getModuleLanguageVersionSettings(module: ModuleDescriptor): LanguageVersionSettings?
|
||||
|
||||
companion object {
|
||||
fun getInstance(project: Project): LanguageVersionSettingsProvider? =
|
||||
ServiceManager.getService(project, LanguageVersionSettingsProvider::class.java)
|
||||
}
|
||||
}
|
||||
@@ -98,13 +98,19 @@ fun getNonPrivateTraitMembersForDelegation(
|
||||
val result = linkedMapOf<CallableMemberDescriptor, CallableMemberDescriptor>()
|
||||
for (declaration in DescriptorUtils.getAllDescriptors(descriptor.defaultType.memberScope)) {
|
||||
if (declaration !is CallableMemberDescriptor) continue
|
||||
|
||||
val traitMember = findInterfaceImplementation(declaration, returnImplNotDelegate)
|
||||
if (traitMember == null ||
|
||||
Visibilities.isPrivate(traitMember.visibility) ||
|
||||
traitMember.visibility == Visibilities.INVISIBLE_FAKE
|
||||
) continue
|
||||
result[declaration] = traitMember
|
||||
result[declaration] = getNonPrivateTraitMembersForDelegation(declaration, returnImplNotDelegate) ?: continue
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
fun getNonPrivateTraitMembersForDelegation(
|
||||
descriptor: CallableMemberDescriptor,
|
||||
returnImplNotDelegate: Boolean = false,
|
||||
): CallableMemberDescriptor? {
|
||||
val traitMember = findInterfaceImplementation(descriptor, returnImplNotDelegate)
|
||||
if (traitMember == null ||
|
||||
Visibilities.isPrivate(traitMember.visibility) ||
|
||||
traitMember.visibility == Visibilities.INVISIBLE_FAKE
|
||||
) return null
|
||||
return traitMember
|
||||
}
|
||||
Reference in New Issue
Block a user