compiler: cleanup 'public', property access syntax
This commit is contained in:
@@ -18,14 +18,14 @@ package org.jetbrains.kotlin.fileClasses
|
||||
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
|
||||
public interface JvmFileClassInfo {
|
||||
public val fileClassFqName: FqName
|
||||
public val facadeClassFqName: FqName
|
||||
public val withJvmName: Boolean
|
||||
public val withJvmMultifileClass: Boolean
|
||||
interface JvmFileClassInfo {
|
||||
val fileClassFqName: FqName
|
||||
val facadeClassFqName: FqName
|
||||
val withJvmName: Boolean
|
||||
val withJvmMultifileClass: Boolean
|
||||
}
|
||||
|
||||
public class JvmSimpleFileClassInfo(
|
||||
class JvmSimpleFileClassInfo(
|
||||
override val fileClassFqName: FqName,
|
||||
override val withJvmName: Boolean
|
||||
) : JvmFileClassInfo {
|
||||
@@ -33,7 +33,7 @@ public class JvmSimpleFileClassInfo(
|
||||
override val withJvmMultifileClass: Boolean get() = false
|
||||
}
|
||||
|
||||
public class JvmMultifileClassPartInfo(
|
||||
class JvmMultifileClassPartInfo(
|
||||
override val fileClassFqName: FqName,
|
||||
override val facadeClassFqName: FqName
|
||||
) : JvmFileClassInfo {
|
||||
|
||||
@@ -26,61 +26,51 @@ import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedCallableMemberDescriptor
|
||||
|
||||
public object JvmFileClassUtil {
|
||||
public val JVM_NAME: FqName = FqName("kotlin.jvm.JvmName")
|
||||
public val JVM_NAME_SHORT: String = JVM_NAME.shortName().asString()
|
||||
object JvmFileClassUtil {
|
||||
val JVM_NAME: FqName = FqName("kotlin.jvm.JvmName")
|
||||
val JVM_NAME_SHORT: String = JVM_NAME.shortName().asString()
|
||||
|
||||
public val JVM_MULTIFILE_CLASS: FqName = FqName("kotlin.jvm.JvmMultifileClass")
|
||||
public val JVM_MULTIFILE_CLASS_SHORT = JVM_MULTIFILE_CLASS.shortName().asString()
|
||||
val JVM_MULTIFILE_CLASS: FqName = FqName("kotlin.jvm.JvmMultifileClass")
|
||||
val JVM_MULTIFILE_CLASS_SHORT = JVM_MULTIFILE_CLASS.shortName().asString()
|
||||
|
||||
@JvmStatic
|
||||
public fun getFileClassInfo(file: KtFile, jvmFileClassAnnotations: ParsedJvmFileClassAnnotations?): JvmFileClassInfo =
|
||||
@JvmStatic fun getFileClassInfo(file: KtFile, jvmFileClassAnnotations: ParsedJvmFileClassAnnotations?): JvmFileClassInfo =
|
||||
if (jvmFileClassAnnotations != null)
|
||||
getFileClassInfoForAnnotation(file, jvmFileClassAnnotations)
|
||||
else
|
||||
getDefaultFileClassInfo(file)
|
||||
|
||||
@JvmStatic
|
||||
public fun getFileClassInfoForAnnotation(file: KtFile, jvmFileClassAnnotations: ParsedJvmFileClassAnnotations): JvmFileClassInfo =
|
||||
@JvmStatic fun getFileClassInfoForAnnotation(file: KtFile, jvmFileClassAnnotations: ParsedJvmFileClassAnnotations): JvmFileClassInfo =
|
||||
if (jvmFileClassAnnotations.multipleFiles)
|
||||
JvmMultifileClassPartInfo(getHiddenPartFqName(file, jvmFileClassAnnotations),
|
||||
getFacadeFqName(file, jvmFileClassAnnotations))
|
||||
else
|
||||
JvmSimpleFileClassInfo(getFacadeFqName(file, jvmFileClassAnnotations), true)
|
||||
|
||||
@JvmStatic
|
||||
public fun getDefaultFileClassInfo(file: KtFile): JvmFileClassInfo =
|
||||
@JvmStatic fun getDefaultFileClassInfo(file: KtFile): JvmFileClassInfo =
|
||||
JvmSimpleFileClassInfo(PackagePartClassUtils.getPackagePartFqName(file.packageFqName, file.name), false)
|
||||
|
||||
@JvmStatic
|
||||
public fun getFacadeFqName(file: KtFile, jvmFileClassAnnotations: ParsedJvmFileClassAnnotations): FqName =
|
||||
@JvmStatic fun getFacadeFqName(file: KtFile, jvmFileClassAnnotations: ParsedJvmFileClassAnnotations): FqName =
|
||||
file.packageFqName.child(Name.identifier(jvmFileClassAnnotations.name))
|
||||
|
||||
@JvmStatic
|
||||
public fun getPartFqNameForDeserializedCallable(callable: DeserializedCallableMemberDescriptor): FqName {
|
||||
@JvmStatic fun getPartFqNameForDeserializedCallable(callable: DeserializedCallableMemberDescriptor): FqName {
|
||||
val implClassName = getImplClassName(callable) ?: error("No implClassName for $callable")
|
||||
val packageFqName = (callable.containingDeclaration as PackageFragmentDescriptor).fqName
|
||||
return packageFqName.child(implClassName)
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
public fun getImplClassName(callable: DeserializedCallableMemberDescriptor): Name? =
|
||||
@JvmStatic fun getImplClassName(callable: DeserializedCallableMemberDescriptor): Name? =
|
||||
callable.getImplClassNameForDeserialized()
|
||||
|
||||
@JvmStatic
|
||||
public fun getHiddenPartFqName(file: KtFile, jvmFileClassAnnotations: ParsedJvmFileClassAnnotations): FqName =
|
||||
@JvmStatic fun getHiddenPartFqName(file: KtFile, jvmFileClassAnnotations: ParsedJvmFileClassAnnotations): FqName =
|
||||
file.packageFqName.child(Name.identifier(manglePartName(jvmFileClassAnnotations.name, file.name)))
|
||||
|
||||
@JvmStatic
|
||||
public fun manglePartName(facadeName: String, fileName: String): String =
|
||||
@JvmStatic fun manglePartName(facadeName: String, fileName: String): String =
|
||||
"${facadeName}__${PackagePartClassUtils.getFilePartShortName(fileName)}"
|
||||
|
||||
@JvmStatic
|
||||
public fun getFileClassInfoNoResolve(file: KtFile): JvmFileClassInfo =
|
||||
@JvmStatic fun getFileClassInfoNoResolve(file: KtFile): JvmFileClassInfo =
|
||||
getFileClassInfo(file, parseJvmNameOnFileNoResolve(file))
|
||||
|
||||
@JvmStatic
|
||||
public fun parseJvmNameOnFileNoResolve(file: KtFile): ParsedJvmFileClassAnnotations? {
|
||||
@JvmStatic fun parseJvmNameOnFileNoResolve(file: KtFile): ParsedJvmFileClassAnnotations? {
|
||||
val jvmName = findAnnotationEntryOnFileNoResolve(file, JVM_NAME_SHORT) ?: return null
|
||||
val nameExpr = jvmName.valueArguments.firstOrNull()?.getArgumentExpression() ?: return null
|
||||
val name = getLiteralStringFromRestrictedConstExpression(nameExpr) ?: return null
|
||||
@@ -89,8 +79,7 @@ public object JvmFileClassUtil {
|
||||
return ParsedJvmFileClassAnnotations(name, isMultifileClassPart)
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
public fun findAnnotationEntryOnFileNoResolve(file: KtFile, shortName: String): KtAnnotationEntry? =
|
||||
@JvmStatic fun findAnnotationEntryOnFileNoResolve(file: KtFile, shortName: String): KtAnnotationEntry? =
|
||||
file.fileAnnotationList?.annotationEntries?.firstOrNull {
|
||||
it.calleeExpression?.constructorReferenceExpression?.getReferencedName() == shortName
|
||||
}
|
||||
@@ -105,9 +94,9 @@ public object JvmFileClassUtil {
|
||||
}
|
||||
}
|
||||
|
||||
private class ParsedJvmFileClassAnnotations(public val name: String, public val multipleFiles: Boolean)
|
||||
private class ParsedJvmFileClassAnnotations(val name: String, val multipleFiles: Boolean)
|
||||
|
||||
public val KtFile.javaFileFacadeFqName: FqName
|
||||
val KtFile.javaFileFacadeFqName: FqName
|
||||
get() {
|
||||
return CachedValuesManager.getCachedValue(this) {
|
||||
val facadeFqName =
|
||||
@@ -117,7 +106,7 @@ public val KtFile.javaFileFacadeFqName: FqName
|
||||
}
|
||||
}
|
||||
|
||||
public fun KtDeclaration.isInsideJvmMultifileClassFile() = JvmFileClassUtil.findAnnotationEntryOnFileNoResolve(
|
||||
fun KtDeclaration.isInsideJvmMultifileClassFile() = JvmFileClassUtil.findAnnotationEntryOnFileNoResolve(
|
||||
getContainingKtFile(),
|
||||
JvmFileClassUtil.JVM_MULTIFILE_CLASS_SHORT
|
||||
) != null
|
||||
|
||||
+1
-1
@@ -19,7 +19,7 @@ package org.jetbrains.kotlin.fileClasses
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
|
||||
|
||||
public object NoResolveFileClassesProvider : JvmFileClassesProvider {
|
||||
object NoResolveFileClassesProvider : JvmFileClassesProvider {
|
||||
override fun getFileClassInfo(file: KtFile): JvmFileClassInfo =
|
||||
JvmFileClassUtil.getFileClassInfo(file, JvmFileClassUtil.parseJvmNameOnFileNoResolve(file))
|
||||
}
|
||||
@@ -42,7 +42,7 @@ import org.jetbrains.kotlin.resolve.lazy.FileScopeProviderImpl
|
||||
import org.jetbrains.kotlin.resolve.lazy.ResolveSession
|
||||
import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactory
|
||||
|
||||
public fun StorageComponentContainer.configureJavaTopDownAnalysis(moduleContentScope: GlobalSearchScope, project: Project, lookupTracker: LookupTracker) {
|
||||
fun StorageComponentContainer.configureJavaTopDownAnalysis(moduleContentScope: GlobalSearchScope, project: Project, lookupTracker: LookupTracker) {
|
||||
useInstance(moduleContentScope)
|
||||
useInstance(lookupTracker)
|
||||
useImpl<ResolveSession>()
|
||||
@@ -66,7 +66,7 @@ public fun StorageComponentContainer.configureJavaTopDownAnalysis(moduleContentS
|
||||
useImpl<JavaFlexibleTypeCapabilitiesProvider>()
|
||||
}
|
||||
|
||||
public fun createContainerForLazyResolveWithJava(
|
||||
fun createContainerForLazyResolveWithJava(
|
||||
moduleContext: ModuleContext, bindingTrace: BindingTrace, declarationProviderFactory: DeclarationProviderFactory,
|
||||
moduleContentScope: GlobalSearchScope, moduleClassResolver: ModuleClassResolver,
|
||||
targetEnvironment: TargetEnvironment = CompilerEnvironment,
|
||||
@@ -91,7 +91,7 @@ public fun createContainerForLazyResolveWithJava(
|
||||
}
|
||||
|
||||
|
||||
public fun createContainerForTopDownAnalyzerForJvm(
|
||||
fun createContainerForTopDownAnalyzerForJvm(
|
||||
moduleContext: ModuleContext,
|
||||
bindingTrace: BindingTrace,
|
||||
declarationProviderFactory: DeclarationProviderFactory,
|
||||
@@ -121,7 +121,7 @@ private fun StorageComponentContainer.javaAnalysisInit() {
|
||||
get<JavaClassFinderPostConstruct>().postCreate()
|
||||
}
|
||||
|
||||
public class ContainerForTopDownAnalyzerForJvm(container: StorageComponentContainer) {
|
||||
class ContainerForTopDownAnalyzerForJvm(container: StorageComponentContainer) {
|
||||
val lazyTopDownAnalyzerForTopLevel: LazyTopDownAnalyzerForTopLevel by container
|
||||
val javaDescriptorResolver: JavaDescriptorResolver by container
|
||||
val deserializationComponentsForJava: DeserializationComponentsForJava by container
|
||||
|
||||
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.serialization.deserialization.TypeTable
|
||||
import org.jetbrains.kotlin.serialization.jvm.BitEncoding
|
||||
import org.jetbrains.kotlin.serialization.jvm.JvmProtoBufUtil
|
||||
|
||||
public fun inlineFunctionsJvmNames(bytes: ByteArray): Set<String> {
|
||||
fun inlineFunctionsJvmNames(bytes: ByteArray): Set<String> {
|
||||
val header = readKotlinHeader(bytes)
|
||||
val annotationData = header.annotationData
|
||||
val strings = header.strings
|
||||
|
||||
@@ -30,8 +30,8 @@ import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue
|
||||
import org.jetbrains.kotlin.types.*
|
||||
import org.jetbrains.kotlin.types.checker.KotlinTypeChecker
|
||||
|
||||
public class RuntimeAssertionInfo(public val needNotNullAssertion: Boolean, public val message: String) {
|
||||
public interface DataFlowExtras {
|
||||
class RuntimeAssertionInfo(val needNotNullAssertion: Boolean, val message: String) {
|
||||
interface DataFlowExtras {
|
||||
class OnlyMessage(message: String) : DataFlowExtras {
|
||||
override val canBeNull: Boolean get() = true
|
||||
override val possibleTypes: Set<KotlinType> get() = setOf()
|
||||
@@ -44,8 +44,7 @@ public class RuntimeAssertionInfo(public val needNotNullAssertion: Boolean, publ
|
||||
}
|
||||
|
||||
companion object {
|
||||
@JvmStatic
|
||||
public fun create(
|
||||
@JvmStatic fun create(
|
||||
expectedType: KotlinType,
|
||||
expressionType: KotlinType,
|
||||
dataFlowExtras: DataFlowExtras
|
||||
@@ -77,11 +76,11 @@ public class RuntimeAssertionInfo(public val needNotNullAssertion: Boolean, publ
|
||||
}
|
||||
|
||||
private fun KotlinType.hasEnhancedNullability()
|
||||
= getAnnotations().findAnnotation(JvmAnnotationNames.ENHANCED_NULLABILITY_ANNOTATION) != null
|
||||
= annotations.findAnnotation(JvmAnnotationNames.ENHANCED_NULLABILITY_ANNOTATION) != null
|
||||
}
|
||||
}
|
||||
|
||||
public object RuntimeAssertionsTypeChecker : AdditionalTypeChecker {
|
||||
object RuntimeAssertionsTypeChecker : AdditionalTypeChecker {
|
||||
override fun checkType(expression: KtExpression, expressionType: KotlinType, expressionTypeWithSmartCast: KotlinType, c: ResolutionContext<*>) {
|
||||
if (TypeUtils.noExpectedType(c.expectedType)) return
|
||||
|
||||
@@ -94,7 +93,7 @@ public object RuntimeAssertionsTypeChecker : AdditionalTypeChecker {
|
||||
override val possibleTypes: Set<KotlinType>
|
||||
get() = c.dataFlowInfo.getCollectedTypes(dataFlowValue)
|
||||
override val presentableText: String
|
||||
get() = StringUtil.trimMiddle(expression.getText(), 50)
|
||||
get() = StringUtil.trimMiddle(expression.text, 50)
|
||||
|
||||
private val dataFlowValue = DataFlowValueFactory.createDataFlowValue(expression, expressionType, c)
|
||||
}
|
||||
|
||||
@@ -23,4 +23,4 @@ import org.jetbrains.kotlin.util.slicedMap.RewritePolicy
|
||||
import org.jetbrains.kotlin.util.slicedMap.WritableSlice
|
||||
import org.jetbrains.kotlin.utils.DO_NOTHING
|
||||
|
||||
public val RUNTIME_ASSERTION_INFO: WritableSlice<KtExpression, RuntimeAssertionInfo> = BasicWritableSlice(RewritePolicy.DO_NOTHING)
|
||||
val RUNTIME_ASSERTION_INFO: WritableSlice<KtExpression, RuntimeAssertionInfo> = BasicWritableSlice(RewritePolicy.DO_NOTHING)
|
||||
|
||||
+7
-7
@@ -23,22 +23,22 @@ import javax.annotation.PostConstruct
|
||||
import org.jetbrains.kotlin.resolve.BindingTrace
|
||||
import org.jetbrains.kotlin.resolve.CodeAnalyzerInitializer
|
||||
|
||||
public open class JavaClassFinderPostConstruct {
|
||||
open class JavaClassFinderPostConstruct {
|
||||
@PostConstruct
|
||||
public open fun postCreate() {}
|
||||
open fun postCreate() {}
|
||||
}
|
||||
|
||||
public class JavaLazyAnalyzerPostConstruct : JavaClassFinderPostConstruct() {
|
||||
public var project: Project? = null
|
||||
class JavaLazyAnalyzerPostConstruct : JavaClassFinderPostConstruct() {
|
||||
var project: Project? = null
|
||||
@Inject set
|
||||
|
||||
public var trace: BindingTrace? = null
|
||||
var trace: BindingTrace? = null
|
||||
@Inject set
|
||||
|
||||
public var codeAnalyzer: KotlinCodeAnalyzer? = null
|
||||
var codeAnalyzer: KotlinCodeAnalyzer? = null
|
||||
@Inject set
|
||||
|
||||
@PostConstruct override fun postCreate() {
|
||||
CodeAnalyzerInitializer.getInstance(project!!).initialize(trace!!, codeAnalyzer!!.getModuleDescriptor(), codeAnalyzer!!)
|
||||
CodeAnalyzerInitializer.getInstance(project!!).initialize(trace!!, codeAnalyzer!!.moduleDescriptor, codeAnalyzer!!)
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -20,6 +20,6 @@ import org.jetbrains.kotlin.resolve.TypeResolver.FlexibleTypeCapabilitiesProvide
|
||||
import org.jetbrains.kotlin.types.FlexibleTypeCapabilities
|
||||
import org.jetbrains.kotlin.load.java.lazy.types.LazyJavaTypeResolver
|
||||
|
||||
public class JavaFlexibleTypeCapabilitiesProvider : FlexibleTypeCapabilitiesProvider() {
|
||||
class JavaFlexibleTypeCapabilitiesProvider : FlexibleTypeCapabilitiesProvider() {
|
||||
override fun getCapabilities(): FlexibleTypeCapabilities = LazyJavaTypeResolver.FlexibleJavaClassifierTypeCapabilities
|
||||
}
|
||||
|
||||
+2
-2
@@ -25,9 +25,9 @@ import org.jetbrains.kotlin.load.java.sources.JavaSourceElement
|
||||
|
||||
private class JavaSourceElementImpl(override val javaElement: JavaElement) : PsiSourceElement, JavaSourceElement {
|
||||
override val psi: PsiElement?
|
||||
get() = (javaElement as JavaElementImpl<*>).getPsi()
|
||||
get() = (javaElement as JavaElementImpl<*>).psi
|
||||
}
|
||||
|
||||
public class JavaSourceElementFactoryImpl : JavaSourceElementFactory {
|
||||
class JavaSourceElementFactoryImpl : JavaSourceElementFactory {
|
||||
override fun source(javaElement: JavaElement): JavaSourceElement = JavaSourceElementImpl(javaElement)
|
||||
}
|
||||
|
||||
+7
-7
@@ -28,7 +28,7 @@ import org.jetbrains.kotlin.resolve.BindingContext.*
|
||||
import org.jetbrains.kotlin.resolve.BindingTrace
|
||||
import org.jetbrains.kotlin.resolve.BindingContextUtils
|
||||
|
||||
public class LazyResolveBasedCache(private val resolveSession: ResolveSession) : JavaResolverCache {
|
||||
class LazyResolveBasedCache(private val resolveSession: ResolveSession) : JavaResolverCache {
|
||||
|
||||
private val trace: BindingTrace get() = resolveSession.trace
|
||||
|
||||
@@ -37,23 +37,23 @@ public class LazyResolveBasedCache(private val resolveSession: ResolveSession) :
|
||||
}
|
||||
|
||||
override fun recordMethod(method: JavaMethod, descriptor: SimpleFunctionDescriptor) {
|
||||
BindingContextUtils.recordFunctionDeclarationToDescriptor(trace, (method as JavaMethodImpl).getPsi(), descriptor)
|
||||
BindingContextUtils.recordFunctionDeclarationToDescriptor(trace, (method as JavaMethodImpl).psi, descriptor)
|
||||
}
|
||||
|
||||
override fun recordConstructor(element: JavaElement, descriptor: ConstructorDescriptor) {
|
||||
trace.record(CONSTRUCTOR, (element as JavaElementImpl<*>).getPsi(), descriptor)
|
||||
trace.record(CONSTRUCTOR, (element as JavaElementImpl<*>).psi, descriptor)
|
||||
}
|
||||
|
||||
override fun recordField(field: JavaField, descriptor: PropertyDescriptor) {
|
||||
trace.record(VARIABLE, (field as JavaFieldImpl).getPsi(), descriptor)
|
||||
trace.record(VARIABLE, (field as JavaFieldImpl).psi, descriptor)
|
||||
}
|
||||
|
||||
override fun recordClass(javaClass: JavaClass, descriptor: ClassDescriptor) {
|
||||
trace.record(CLASS, (javaClass as JavaClassImpl).getPsi(), descriptor)
|
||||
trace.record(CLASS, (javaClass as JavaClassImpl).psi, descriptor)
|
||||
}
|
||||
|
||||
private fun findInPackageFragments(fullFqName: FqName): ClassDescriptor? {
|
||||
var fqName = if (fullFqName.isRoot()) fullFqName else fullFqName.parent()
|
||||
var fqName = if (fullFqName.isRoot) fullFqName else fullFqName.parent()
|
||||
|
||||
while (true) {
|
||||
val packageDescriptor = resolveSession.getPackageFragment(fqName)
|
||||
@@ -62,7 +62,7 @@ public class LazyResolveBasedCache(private val resolveSession: ResolveSession) :
|
||||
val result = ResolveSessionUtils.findClassByRelativePath(packageDescriptor.getMemberScope(), fullFqName.tail(fqName))
|
||||
if (result != null) return result
|
||||
|
||||
if (fqName.isRoot()) break
|
||||
if (fqName.isRoot) break
|
||||
fqName = fqName.parent()
|
||||
}
|
||||
|
||||
|
||||
+7
-9
@@ -27,23 +27,21 @@ import org.jetbrains.kotlin.serialization.deserialization.ErrorReporter
|
||||
import org.jetbrains.kotlin.util.slicedMap.Slices
|
||||
import org.jetbrains.kotlin.util.slicedMap.WritableSlice
|
||||
|
||||
public class TraceBasedErrorReporter(private val trace: BindingTrace) : ErrorReporter {
|
||||
class TraceBasedErrorReporter(private val trace: BindingTrace) : ErrorReporter {
|
||||
|
||||
companion object {
|
||||
private val LOG = Logger.getInstance(TraceBasedErrorReporter::class.java)
|
||||
|
||||
@JvmField
|
||||
public val ABI_VERSION_ERRORS: WritableSlice<String, AbiVersionErrorData> = Slices.createCollectiveSlice()
|
||||
@JvmField val ABI_VERSION_ERRORS: WritableSlice<String, AbiVersionErrorData> = Slices.createCollectiveSlice()
|
||||
|
||||
// TODO: MutableList is a workaround for KT-5792 Covariant types in Kotlin translated to wildcard types in Java
|
||||
@JvmField
|
||||
public val INCOMPLETE_HIERARCHY: WritableSlice<ClassDescriptor, MutableList<String>> = Slices.createCollectiveSlice()
|
||||
@JvmField val INCOMPLETE_HIERARCHY: WritableSlice<ClassDescriptor, MutableList<String>> = Slices.createCollectiveSlice()
|
||||
}
|
||||
|
||||
public data class AbiVersionErrorData(
|
||||
public val actualVersion: BinaryVersion,
|
||||
public val filePath: String,
|
||||
public val classId: ClassId
|
||||
data class AbiVersionErrorData(
|
||||
val actualVersion: BinaryVersion,
|
||||
val filePath: String,
|
||||
val classId: ClassId
|
||||
)
|
||||
|
||||
override fun reportIncompatibleAbiVersion(classId: ClassId, filePath: String, actualVersion: BinaryVersion) {
|
||||
|
||||
+6
-6
@@ -34,7 +34,7 @@ import org.jetbrains.kotlin.types.TypeUtils
|
||||
import org.jetbrains.kotlin.types.checker.KotlinTypeChecker
|
||||
import java.util.*
|
||||
|
||||
public object SamConversionResolverImpl : SamConversionResolver {
|
||||
object SamConversionResolverImpl : SamConversionResolver {
|
||||
override fun resolveSamConstructor(constructorOwner: DeclarationDescriptor, classifier: () -> ClassifierDescriptor?): SamConstructorDescriptor? {
|
||||
val classifierDescriptor = classifier()
|
||||
if (classifierDescriptor !is LazyJavaClassDescriptor || classifierDescriptor.functionTypeForSamInterface == null) return null
|
||||
@@ -55,13 +55,13 @@ public object SamConversionResolverImpl : SamConversionResolver {
|
||||
classDescriptor: JavaClassDescriptor,
|
||||
resolveMethod: (JavaMethod) -> FunctionDescriptor
|
||||
): KotlinType? {
|
||||
val jClass = (classDescriptor.getSource() as? JavaSourceElement)?.javaElement as? JavaClass ?: return null
|
||||
val jClass = (classDescriptor.source as? JavaSourceElement)?.javaElement as? JavaClass ?: return null
|
||||
val samInterfaceMethod = SingleAbstractMethodUtils.getSamInterfaceMethod(jClass) ?: return null
|
||||
val abstractMethod = if (jClass.getFqName() == samInterfaceMethod.getContainingClass().getFqName()) {
|
||||
val abstractMethod = if (jClass.fqName == samInterfaceMethod.containingClass.fqName) {
|
||||
resolveMethod(samInterfaceMethod)
|
||||
}
|
||||
else {
|
||||
findFunctionWithMostSpecificReturnType(TypeUtils.getAllSupertypes(classDescriptor.getDefaultType()))
|
||||
findFunctionWithMostSpecificReturnType(TypeUtils.getAllSupertypes(classDescriptor.defaultType))
|
||||
}
|
||||
return SingleAbstractMethodUtils.getFunctionTypeForAbstractMethod(abstractMethod)
|
||||
}
|
||||
@@ -79,8 +79,8 @@ public object SamConversionResolverImpl : SamConversionResolver {
|
||||
}
|
||||
var currentMostSpecificType = candidates[0]
|
||||
for (candidate in candidates) {
|
||||
val candidateReturnType = candidate.getReturnType()
|
||||
val currentMostSpecificReturnType = currentMostSpecificType.getReturnType()
|
||||
val candidateReturnType = candidate.returnType
|
||||
val currentMostSpecificReturnType = currentMostSpecificType.returnType
|
||||
assert(candidateReturnType != null && currentMostSpecificReturnType != null) { "$candidate, $currentMostSpecificReturnType" }
|
||||
if (KotlinTypeChecker.DEFAULT.isSubtypeOf(candidateReturnType!!, currentMostSpecificReturnType!!)) {
|
||||
currentMostSpecificType = candidate
|
||||
|
||||
+5
-5
@@ -25,17 +25,17 @@ import org.jetbrains.kotlin.load.java.structure.impl.JavaElementCollectionFromPs
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
public class JavaPackageImpl(psiPackage: PsiPackage, private val scope: GlobalSearchScope) : JavaElementImpl<PsiPackage>(psiPackage), JavaPackage {
|
||||
class JavaPackageImpl(psiPackage: PsiPackage, private val scope: GlobalSearchScope) : JavaElementImpl<PsiPackage>(psiPackage), JavaPackage {
|
||||
|
||||
override fun getClasses(nameFilter: (Name) -> Boolean): Collection<JavaClass> {
|
||||
val psiClasses = getPsi().getClasses(scope).filter {
|
||||
val name = it.getName()
|
||||
val psiClasses = psi.getClasses(scope).filter {
|
||||
val name = it.name
|
||||
name != null && nameFilter(Name.identifier(name))
|
||||
}
|
||||
return classes(psiClasses)
|
||||
}
|
||||
|
||||
override fun getSubPackages() = packages(getPsi().getSubPackages(scope), scope)
|
||||
override fun getSubPackages() = packages(psi.getSubPackages(scope), scope)
|
||||
|
||||
override fun getFqName() = FqName(getPsi().getQualifiedName())
|
||||
override fun getFqName() = FqName(psi.qualifiedName)
|
||||
}
|
||||
|
||||
+4
-4
@@ -25,16 +25,16 @@ import org.jetbrains.kotlin.resolve.constants.ConstantValue
|
||||
import org.jetbrains.kotlin.resolve.constants.ConstantValueFactory
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
|
||||
|
||||
public class JavaPropertyInitializerEvaluatorImpl : JavaPropertyInitializerEvaluator {
|
||||
class JavaPropertyInitializerEvaluatorImpl : JavaPropertyInitializerEvaluator {
|
||||
override fun getInitializerConstant(field: JavaField, descriptor: PropertyDescriptor): ConstantValue<*>? {
|
||||
val initializer = (field as JavaFieldImpl).getInitializer()
|
||||
val initializer = (field as JavaFieldImpl).initializer
|
||||
val evaluated = JavaConstantExpressionEvaluator.computeConstantExpression(initializer, false) ?: return null
|
||||
val factory = ConstantValueFactory(descriptor.builtIns)
|
||||
when (evaluated) {
|
||||
//Note: evaluated expression may be of class that does not match field type in some cases
|
||||
// tested for Int, left other checks just in case
|
||||
is Byte, is Short, is Int, is Long -> {
|
||||
return factory.createIntegerConstantValue((evaluated as Number).toLong(), descriptor.getType())
|
||||
return factory.createIntegerConstantValue((evaluated as Number).toLong(), descriptor.type)
|
||||
}
|
||||
else -> {
|
||||
return factory.createConstantValue(evaluated)
|
||||
@@ -45,6 +45,6 @@ public class JavaPropertyInitializerEvaluatorImpl : JavaPropertyInitializerEvalu
|
||||
override fun isNotNullCompileTimeConstant(field: JavaField): Boolean {
|
||||
// PsiUtil.isCompileTimeConstant returns false for null-initialized fields,
|
||||
// see com.intellij.psi.util.IsConstantExpressionVisitor.visitLiteralExpression()
|
||||
return PsiUtil.isCompileTimeConstant((field as JavaFieldImpl).getPsi())
|
||||
return PsiUtil.isCompileTimeConstant((field as JavaFieldImpl).psi)
|
||||
}
|
||||
}
|
||||
|
||||
+4
-4
@@ -25,7 +25,7 @@ abstract class JavaAnnotationArgumentImpl(
|
||||
) : JavaAnnotationArgument {
|
||||
companion object Factory {
|
||||
fun create(argument: PsiAnnotationMemberValue, name: Name?): JavaAnnotationArgument {
|
||||
val value = JavaPsiFacade.getInstance(argument.getProject()).getConstantEvaluationHelper().computeConstantExpression(argument)
|
||||
val value = JavaPsiFacade.getInstance(argument.project).constantEvaluationHelper.computeConstantExpression(argument)
|
||||
if (value is Enum<*>) {
|
||||
return JavaEnumValueAnnotationArgumentImpl(argument as PsiReferenceExpression, name)
|
||||
}
|
||||
@@ -53,7 +53,7 @@ class JavaArrayAnnotationArgumentImpl(
|
||||
private val psiValue: PsiArrayInitializerMemberValue,
|
||||
name: Name?
|
||||
) : JavaAnnotationArgumentImpl(name), JavaArrayAnnotationArgument {
|
||||
override fun getElements() = psiValue.getInitializers().map { JavaAnnotationArgumentImpl.create(it, null) }
|
||||
override fun getElements() = psiValue.initializers.map { JavaAnnotationArgumentImpl.create(it, null) }
|
||||
}
|
||||
|
||||
class JavaEnumValueAnnotationArgumentImpl(
|
||||
@@ -65,7 +65,7 @@ class JavaEnumValueAnnotationArgumentImpl(
|
||||
return when (element) {
|
||||
null -> null
|
||||
is PsiEnumConstant -> JavaFieldImpl(element)
|
||||
else -> throw IllegalStateException("Reference argument should be an enum value, but was $element: ${element.getText()}")
|
||||
else -> throw IllegalStateException("Reference argument should be an enum value, but was $element: ${element.text}")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -74,7 +74,7 @@ class JavaClassObjectAnnotationArgumentImpl(
|
||||
private val psiExpression: PsiClassObjectAccessExpression,
|
||||
name: Name?
|
||||
) : JavaAnnotationArgumentImpl(name), JavaClassObjectAnnotationArgument {
|
||||
override fun getReferencedType() = JavaTypeImpl.create(psiExpression.getOperand().getType())
|
||||
override fun getReferencedType() = JavaTypeImpl.create(psiExpression.operand.type)
|
||||
}
|
||||
|
||||
class JavaAnnotationAsAnnotationArgumentImpl(
|
||||
|
||||
+4
-4
@@ -41,11 +41,11 @@ import org.jetbrains.kotlin.types.KotlinType
|
||||
import org.jetbrains.kotlin.types.TypeUtils
|
||||
import java.lang.annotation.Target
|
||||
|
||||
public class JavaAnnotationCallChecker : CallChecker {
|
||||
class JavaAnnotationCallChecker : CallChecker {
|
||||
override fun <F : CallableDescriptor> check(resolvedCall: ResolvedCall<F>, context: BasicCallResolutionContext) {
|
||||
val resultingDescriptor = resolvedCall.getResultingDescriptor().getOriginal()
|
||||
val resultingDescriptor = resolvedCall.resultingDescriptor.original
|
||||
if (resultingDescriptor !is JavaConstructorDescriptor ||
|
||||
resultingDescriptor.getContainingDeclaration().getKind() != ClassKind.ANNOTATION_CLASS) return
|
||||
resultingDescriptor.containingDeclaration.kind != ClassKind.ANNOTATION_CLASS) return
|
||||
|
||||
reportErrorsOnPositionedArguments(resolvedCall, context)
|
||||
reportDeprecatedJavaAnnotation(resolvedCall, context)
|
||||
@@ -73,7 +73,7 @@ public class JavaAnnotationCallChecker : CallChecker {
|
||||
argument: Map.Entry<ValueParameterDescriptor, ResolvedValueArgument>,
|
||||
diagnostic: DiagnosticFactory0<KtExpression>
|
||||
) {
|
||||
argument.value.getArguments().forEach {
|
||||
argument.value.arguments.forEach {
|
||||
if (it.getArgumentExpression() != null) {
|
||||
context.trace.report(
|
||||
diagnostic.on(
|
||||
|
||||
@@ -20,10 +20,9 @@ import com.intellij.openapi.components.ServiceManager
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
|
||||
public interface JvmVirtualFileFinder : VirtualFileFinder, KotlinClassFinder {
|
||||
public object SERVICE {
|
||||
@JvmStatic
|
||||
public fun getInstance(project: Project): JvmVirtualFileFinder =
|
||||
interface JvmVirtualFileFinder : VirtualFileFinder, KotlinClassFinder {
|
||||
object SERVICE {
|
||||
@JvmStatic fun getInstance(project: Project): JvmVirtualFileFinder =
|
||||
ServiceManager.getService(project, JvmVirtualFileFinderFactory::class.java).create(GlobalSearchScope.allScope(project))
|
||||
}
|
||||
}
|
||||
|
||||
+3
-4
@@ -20,12 +20,11 @@ import com.intellij.openapi.components.ServiceManager
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
|
||||
public interface JvmVirtualFileFinderFactory : VirtualFileFinderFactory {
|
||||
interface JvmVirtualFileFinderFactory : VirtualFileFinderFactory {
|
||||
override fun create(scope: GlobalSearchScope): JvmVirtualFileFinder
|
||||
|
||||
public object SERVICE {
|
||||
@JvmStatic
|
||||
public fun getInstance(project: Project): JvmVirtualFileFinderFactory =
|
||||
object SERVICE {
|
||||
@JvmStatic fun getInstance(project: Project): JvmVirtualFileFinderFactory =
|
||||
ServiceManager.getService(project, JvmVirtualFileFinderFactory::class.java)
|
||||
}
|
||||
}
|
||||
|
||||
+11
-20
@@ -29,14 +29,13 @@ import org.jetbrains.kotlin.psi.KtScript
|
||||
import org.jetbrains.kotlin.resolve.jvm.JvmClassName
|
||||
import java.util.*
|
||||
|
||||
public object PackagePartClassUtils {
|
||||
@JvmStatic
|
||||
public fun getPathHashCode(file: VirtualFile): Int =
|
||||
object PackagePartClassUtils {
|
||||
@JvmStatic fun getPathHashCode(file: VirtualFile): Int =
|
||||
file.path.toLowerCase().hashCode()
|
||||
|
||||
private val PART_CLASS_NAME_SUFFIX = "Kt"
|
||||
|
||||
public @JvmStatic fun getPartClassName(str: String): String =
|
||||
@JvmStatic fun getPartClassName(str: String): String =
|
||||
if (str.isEmpty())
|
||||
"_$PART_CLASS_NAME_SUFFIX"
|
||||
else
|
||||
@@ -51,45 +50,37 @@ public object PackagePartClassUtils {
|
||||
"_$str"
|
||||
|
||||
@TestOnly
|
||||
@JvmStatic
|
||||
public fun getDefaultFileClassFqName(packageFqName: FqName, file: VirtualFile): FqName =
|
||||
@JvmStatic fun getDefaultFileClassFqName(packageFqName: FqName, file: VirtualFile): FqName =
|
||||
getPackagePartFqName(packageFqName, file.name)
|
||||
|
||||
@TestOnly
|
||||
@JvmStatic
|
||||
public fun getDefaultPartFqName(facadeClassFqName: FqName, file: VirtualFile): FqName =
|
||||
@JvmStatic fun getDefaultPartFqName(facadeClassFqName: FqName, file: VirtualFile): FqName =
|
||||
getPackagePartFqName(facadeClassFqName.parent(), file.name)
|
||||
|
||||
@JvmStatic
|
||||
public fun getPackagePartFqName(packageFqName: FqName, fileName: String): FqName {
|
||||
@JvmStatic fun getPackagePartFqName(packageFqName: FqName, fileName: String): FqName {
|
||||
val partClassName = getFilePartShortName(fileName)
|
||||
return packageFqName.child(Name.identifier(partClassName))
|
||||
}
|
||||
|
||||
@Deprecated("Migrate to JvmFileClassesProvider")
|
||||
@JvmStatic
|
||||
public fun getPackagePartInternalName(file: KtFile): String =
|
||||
@JvmStatic fun getPackagePartInternalName(file: KtFile): String =
|
||||
JvmClassName.byFqNameWithoutInnerClasses(getPackagePartFqName(file)).internalName
|
||||
|
||||
@Deprecated("Migrate to JvmFileClassesProvider")
|
||||
@JvmStatic
|
||||
public fun getPackagePartFqName(file: KtFile): FqName =
|
||||
@JvmStatic fun getPackagePartFqName(file: KtFile): FqName =
|
||||
getPackagePartFqName(file.packageFqName, file.name)
|
||||
|
||||
@JvmStatic
|
||||
public fun getFilesWithCallables(files: Collection<KtFile>): List<KtFile> =
|
||||
@JvmStatic fun getFilesWithCallables(files: Collection<KtFile>): List<KtFile> =
|
||||
files.filter { fileHasTopLevelCallables(it) }
|
||||
|
||||
@JvmStatic
|
||||
public fun fileHasTopLevelCallables(file: KtFile): Boolean =
|
||||
@JvmStatic fun fileHasTopLevelCallables(file: KtFile): Boolean =
|
||||
file.declarations.any {
|
||||
it is KtProperty ||
|
||||
it is KtNamedFunction ||
|
||||
it is KtScript
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
public fun getFilePartShortName(fileName: String): String =
|
||||
@JvmStatic fun getFilePartShortName(fileName: String): String =
|
||||
getPartClassName(FileUtil.getNameWithoutExtension(fileName))
|
||||
|
||||
}
|
||||
+6
-6
@@ -26,14 +26,14 @@ import org.jetbrains.kotlin.utils.rethrow
|
||||
import java.io.FileNotFoundException
|
||||
import java.io.IOException
|
||||
|
||||
public class VirtualFileKotlinClass private constructor(
|
||||
public val file: VirtualFile,
|
||||
class VirtualFileKotlinClass private constructor(
|
||||
val file: VirtualFile,
|
||||
className: ClassId,
|
||||
classHeader: KotlinClassHeader,
|
||||
innerClasses: FileBasedKotlinClass.InnerClassesInfo
|
||||
) : FileBasedKotlinClass(className, classHeader, innerClasses) {
|
||||
|
||||
override fun getLocation() = file.getPath()
|
||||
override fun getLocation() = file.path
|
||||
|
||||
override fun getFileContents(): ByteArray {
|
||||
try {
|
||||
@@ -47,7 +47,7 @@ public class VirtualFileKotlinClass private constructor(
|
||||
|
||||
override fun equals(other: Any?) = other is VirtualFileKotlinClass && other.file == file
|
||||
override fun hashCode() = file.hashCode()
|
||||
override fun toString() = "${javaClass.getSimpleName()}: $file"
|
||||
override fun toString() = "${javaClass.simpleName}: $file"
|
||||
|
||||
companion object Factory {
|
||||
private val LOG = Logger.getInstance(VirtualFileKotlinClass::class.java)
|
||||
@@ -56,7 +56,7 @@ public class VirtualFileKotlinClass private constructor(
|
||||
@Deprecated("Use KotlinBinaryClassCache")
|
||||
fun create(file: VirtualFile, fileContent: ByteArray?): VirtualFileKotlinClass? {
|
||||
return perfCounter.time {
|
||||
assert(file.getFileType() == JavaClassFileType.INSTANCE) { "Trying to read binary data from a non-class file $file" }
|
||||
assert(file.fileType == JavaClassFileType.INSTANCE) { "Trying to read binary data from a non-class file $file" }
|
||||
|
||||
try {
|
||||
val byteContent = fileContent ?: file.contentsToByteArray(false)
|
||||
@@ -78,6 +78,6 @@ public class VirtualFileKotlinClass private constructor(
|
||||
}
|
||||
|
||||
private fun renderFileReadingErrorMessage(file: VirtualFile): String =
|
||||
"Could not read file: ${file.getPath()}; size in bytes: ${file.getLength()}; file type: ${file.getFileType().getName()}"
|
||||
"Could not read file: ${file.path}; size in bytes: ${file.length}; file type: ${file.fileType.name}"
|
||||
}
|
||||
}
|
||||
|
||||
+6
-6
@@ -21,29 +21,29 @@ import org.jetbrains.kotlin.load.java.structure.impl.JavaClassImpl
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.utils.sure
|
||||
|
||||
public abstract class VirtualFileKotlinClassFinder : JvmVirtualFileFinder {
|
||||
abstract class VirtualFileKotlinClassFinder : JvmVirtualFileFinder {
|
||||
override fun findKotlinClass(classId: ClassId): KotlinJvmBinaryClass? {
|
||||
val file = findVirtualFileWithHeader(classId) ?: return null
|
||||
return KotlinBinaryClassCache.getKotlinBinaryClass(file)
|
||||
}
|
||||
|
||||
override fun findKotlinClass(javaClass: JavaClass): KotlinJvmBinaryClass? {
|
||||
var file = (javaClass as JavaClassImpl).getPsi().getContainingFile()!!.getVirtualFile() ?: return null
|
||||
var file = (javaClass as JavaClassImpl).psi.containingFile!!.virtualFile ?: return null
|
||||
if (javaClass.getOuterClass() != null) {
|
||||
// For nested classes we get a file of the containing class, to get the actual class file for A.B.C,
|
||||
// we take the file for A, take its parent directory, then in this directory we look for A$B$C.class
|
||||
file = file.getParent()!!.findChild(classFileName(javaClass) + ".class").sure { "Virtual file not found for $javaClass" }
|
||||
file = file.parent!!.findChild(classFileName(javaClass) + ".class").sure { "Virtual file not found for $javaClass" }
|
||||
}
|
||||
|
||||
return KotlinBinaryClassCache.getKotlinBinaryClass(file)
|
||||
}
|
||||
|
||||
private fun classFileName(jClass: JavaClass): String {
|
||||
val outerClass = jClass.getOuterClass()
|
||||
val outerClass = jClass.outerClass
|
||||
if (outerClass == null) {
|
||||
return jClass.getName().asString()
|
||||
return jClass.name.asString()
|
||||
}
|
||||
|
||||
return classFileName(outerClass) + "$" + jClass.getName().asString()
|
||||
return classFileName(outerClass) + "$" + jClass.name.asString()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,10 +23,10 @@ import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall
|
||||
import org.jetbrains.kotlin.resolve.calls.model.ResolvedValueArgument
|
||||
|
||||
fun getJavaAnnotationCallValueArgumentsThatShouldBeNamed(resolvedCall: ResolvedCall<*>): Map<ValueParameterDescriptor, ResolvedValueArgument> =
|
||||
resolvedCall.getValueArguments().filter {
|
||||
resolvedCall.valueArguments.filter {
|
||||
p ->
|
||||
p.key.getName() != JvmAnnotationNames.DEFAULT_ANNOTATION_MEMBER_NAME &&
|
||||
p.key.name != JvmAnnotationNames.DEFAULT_ANNOTATION_MEMBER_NAME &&
|
||||
p.value is ExpressionValueArgument &&
|
||||
!((p.value as ExpressionValueArgument).getValueArgument()?.isNamed() ?: true)
|
||||
!((p.value as ExpressionValueArgument).valueArgument?.isNamed() ?: true)
|
||||
}
|
||||
|
||||
|
||||
+7
-7
@@ -41,7 +41,7 @@ import org.jetbrains.kotlin.storage.StorageManager
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.singletonOrEmptyList
|
||||
import java.util.*
|
||||
|
||||
public class IncrementalPackageFragmentProvider(
|
||||
class IncrementalPackageFragmentProvider(
|
||||
sourceFiles: Collection<KtFile>,
|
||||
val moduleDescriptor: ModuleDescriptor,
|
||||
val storageManager: StorageManager,
|
||||
@@ -51,7 +51,7 @@ public class IncrementalPackageFragmentProvider(
|
||||
) : PackageFragmentProvider {
|
||||
|
||||
companion object {
|
||||
public fun fqNamesToLoad(obsoletePackageParts: Collection<String>, sourceFiles: Collection<KtFile>): Set<FqName> =
|
||||
fun fqNamesToLoad(obsoletePackageParts: Collection<String>, sourceFiles: Collection<KtFile>): Set<FqName> =
|
||||
(obsoletePackageParts.map { JvmClassName.byInternalName(it).packageFqName }
|
||||
+ PackagePartClassUtils.getFilesWithCallables(sourceFiles).map { it.packageFqName }).toSet()
|
||||
}
|
||||
@@ -67,7 +67,7 @@ public class IncrementalPackageFragmentProvider(
|
||||
return
|
||||
}
|
||||
|
||||
if (!fqName.isRoot()) {
|
||||
if (!fqName.isRoot) {
|
||||
val parent = fqName.parent()
|
||||
createPackageFragment(parent)
|
||||
fqNameToSubFqNames.putValue(parent, fqName)
|
||||
@@ -88,8 +88,8 @@ public class IncrementalPackageFragmentProvider(
|
||||
}
|
||||
|
||||
|
||||
public inner class IncrementalPackageFragment(fqName: FqName) : PackageFragmentDescriptorImpl(moduleDescriptor, fqName) {
|
||||
public val target: TargetId
|
||||
inner class IncrementalPackageFragment(fqName: FqName) : PackageFragmentDescriptorImpl(moduleDescriptor, fqName) {
|
||||
val target: TargetId
|
||||
get() = this@IncrementalPackageFragmentProvider.target
|
||||
|
||||
val memberScope: NotNullLazyValue<MemberScope> = storageManager.createLazyValue {
|
||||
@@ -126,7 +126,7 @@ public class IncrementalPackageFragmentProvider(
|
||||
}
|
||||
}
|
||||
|
||||
public fun getPackageFragmentForMultifileClass(multifileClassFqName: FqName): IncrementalMultifileClassPackageFragment? {
|
||||
fun getPackageFragmentForMultifileClass(multifileClassFqName: FqName): IncrementalMultifileClassPackageFragment? {
|
||||
val facadeInternalName = JvmClassName.byFqNameWithoutInnerClasses(multifileClassFqName).internalName
|
||||
val partsNames = incrementalCache.getStableMultifileFacadeParts(facadeInternalName) ?: return null
|
||||
return IncrementalMultifileClassPackageFragment(multifileClassFqName, partsNames)
|
||||
@@ -134,7 +134,7 @@ public class IncrementalPackageFragmentProvider(
|
||||
|
||||
override fun getMemberScope(): MemberScope = memberScope()
|
||||
|
||||
public inner class IncrementalMultifileClassPackageFragment(
|
||||
inner class IncrementalMultifileClassPackageFragment(
|
||||
val multifileClassFqName: FqName,
|
||||
val partsNames: Collection<String>
|
||||
) : PackageFragmentDescriptorImpl(moduleDescriptor, multifileClassFqName.parent()) {
|
||||
|
||||
+1
-2
@@ -43,8 +43,7 @@ internal class IncrementalPackagePartProvider private constructor(
|
||||
}
|
||||
|
||||
companion object {
|
||||
@JvmStatic
|
||||
public fun create(
|
||||
@JvmStatic fun create(
|
||||
parent: PackagePartProvider,
|
||||
sourceFiles: Collection<KtFile>,
|
||||
targets: List<TargetId>?,
|
||||
|
||||
+10
-10
@@ -20,22 +20,22 @@ import java.io.Serializable
|
||||
|
||||
data class JvmPackagePartProto(val data: ByteArray, val strings: Array<String>) : Serializable
|
||||
|
||||
public interface IncrementalCache {
|
||||
public fun getObsoletePackageParts(): Collection<String>
|
||||
interface IncrementalCache {
|
||||
fun getObsoletePackageParts(): Collection<String>
|
||||
|
||||
public fun getObsoleteMultifileClasses(): Collection<String>
|
||||
fun getObsoleteMultifileClasses(): Collection<String>
|
||||
|
||||
public fun getStableMultifileFacadeParts(facadeInternalName: String): Collection<String>?
|
||||
fun getStableMultifileFacadeParts(facadeInternalName: String): Collection<String>?
|
||||
|
||||
public fun getMultifileFacade(partInternalName: String): String?
|
||||
fun getMultifileFacade(partInternalName: String): String?
|
||||
|
||||
public fun getPackagePartData(partInternalName: String): JvmPackagePartProto?
|
||||
fun getPackagePartData(partInternalName: String): JvmPackagePartProto?
|
||||
|
||||
public fun getModuleMappingData(): ByteArray?
|
||||
fun getModuleMappingData(): ByteArray?
|
||||
|
||||
public fun registerInline(fromPath: String, jvmSignature: String, toPath: String)
|
||||
fun registerInline(fromPath: String, jvmSignature: String, toPath: String)
|
||||
|
||||
public fun getClassFilePath(internalClassName: String): String
|
||||
fun getClassFilePath(internalClassName: String): String
|
||||
|
||||
public fun close()
|
||||
fun close()
|
||||
}
|
||||
|
||||
+3
-3
@@ -19,7 +19,7 @@ package org.jetbrains.kotlin.load.kotlin.incremental.components
|
||||
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
||||
import org.jetbrains.kotlin.modules.TargetId
|
||||
|
||||
public interface IncrementalCompilationComponents {
|
||||
public fun getIncrementalCache(target: TargetId): IncrementalCache
|
||||
public fun getLookupTracker(): LookupTracker
|
||||
interface IncrementalCompilationComponents {
|
||||
fun getIncrementalCache(target: TargetId): IncrementalCache
|
||||
fun getLookupTracker(): LookupTracker
|
||||
}
|
||||
|
||||
+4
-5
@@ -34,18 +34,17 @@ interface ModuleVisibilityManager {
|
||||
fun addModule(module: Module)
|
||||
fun addFriendPath(path: String)
|
||||
|
||||
public object SERVICE {
|
||||
@JvmStatic
|
||||
public fun getInstance(project: Project): ModuleVisibilityManager =
|
||||
object SERVICE {
|
||||
@JvmStatic fun getInstance(project: Project): ModuleVisibilityManager =
|
||||
ServiceManager.getService(project, ModuleVisibilityManager::class.java)
|
||||
}
|
||||
}
|
||||
|
||||
public val DeclarationDescriptor.isFromIncrementalPackageFragment: Boolean
|
||||
val DeclarationDescriptor.isFromIncrementalPackageFragment: Boolean
|
||||
get() =
|
||||
DescriptorUtils.getParentOfType(this, PackageFragmentDescriptor::class.java, false) is IncrementalPackageFragmentProvider.IncrementalPackageFragment
|
||||
|
||||
public fun isContainedByCompiledPartOfOurModule(descriptor: DeclarationDescriptor, outDirectory: File?): Boolean {
|
||||
fun isContainedByCompiledPartOfOurModule(descriptor: DeclarationDescriptor, outDirectory: File?): Boolean {
|
||||
val packageFragment = DescriptorUtils.getParentOfType(descriptor, PackageFragmentDescriptor::class.java, false)
|
||||
|
||||
if (packageFragment is IncrementalPackageFragmentProvider.IncrementalPackageFragment) return true
|
||||
|
||||
@@ -26,11 +26,11 @@ import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||
import org.jetbrains.kotlin.resolve.inline.InlineUtil
|
||||
import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm
|
||||
|
||||
public fun DeclarationDescriptor.hasNativeAnnotation(): Boolean {
|
||||
fun DeclarationDescriptor.hasNativeAnnotation(): Boolean {
|
||||
return this is FunctionDescriptor && this.isExternal
|
||||
}
|
||||
|
||||
public class NativeFunChecker : DeclarationChecker {
|
||||
class NativeFunChecker : DeclarationChecker {
|
||||
override fun check(
|
||||
declaration: KtDeclaration,
|
||||
descriptor: DeclarationDescriptor,
|
||||
@@ -39,11 +39,11 @@ public class NativeFunChecker : DeclarationChecker {
|
||||
) {
|
||||
if (!descriptor.hasNativeAnnotation()) return
|
||||
|
||||
if (DescriptorUtils.isInterface(descriptor.getContainingDeclaration())) {
|
||||
if (DescriptorUtils.isInterface(descriptor.containingDeclaration)) {
|
||||
diagnosticHolder.report(ErrorsJvm.EXTERNAL_DECLARATION_IN_INTERFACE.on(declaration))
|
||||
}
|
||||
else if (descriptor is CallableMemberDescriptor &&
|
||||
descriptor.getModality() == Modality.ABSTRACT) {
|
||||
descriptor.modality == Modality.ABSTRACT) {
|
||||
diagnosticHolder.report(ErrorsJvm.EXTERNAL_DECLARATION_CANNOT_BE_ABSTRACT.on(declaration))
|
||||
}
|
||||
|
||||
|
||||
@@ -39,12 +39,12 @@ import org.jetbrains.kotlin.resolve.lazy.ResolveSession
|
||||
import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactoryService
|
||||
import java.util.*
|
||||
|
||||
public class JvmPlatformParameters(
|
||||
public val moduleByJavaClass: (JavaClass) -> ModuleInfo?
|
||||
class JvmPlatformParameters(
|
||||
val moduleByJavaClass: (JavaClass) -> ModuleInfo?
|
||||
) : PlatformAnalysisParameters
|
||||
|
||||
|
||||
public object JvmAnalyzerFacade : AnalyzerFacade<JvmPlatformParameters>() {
|
||||
object JvmAnalyzerFacade : AnalyzerFacade<JvmPlatformParameters>() {
|
||||
override fun <M : ModuleInfo> createResolverForModule(
|
||||
moduleInfo: M,
|
||||
moduleDescriptor: ModuleDescriptorImpl,
|
||||
@@ -105,8 +105,7 @@ public object JvmAnalyzerFacade : AnalyzerFacade<JvmPlatformParameters>() {
|
||||
return ResolverForModule(CompositePackageFragmentProvider(providersForModule), container)
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
public fun getAllFilesToAnalyze(project: Project, moduleInfo: ModuleInfo?, baseFiles: Collection<KtFile>): List<KtFile> {
|
||||
@JvmStatic fun getAllFilesToAnalyze(project: Project, moduleInfo: ModuleInfo?, baseFiles: Collection<KtFile>): List<KtFile> {
|
||||
val allFiles = ArrayList(baseFiles)
|
||||
for (externalDeclarationsProvider in ExternalDeclarationsProvider.getInstances(project)) {
|
||||
allFiles.addAll(externalDeclarationsProvider.getExternalDeclarations(moduleInfo))
|
||||
|
||||
+2
-2
@@ -21,6 +21,6 @@ import com.intellij.psi.impl.file.impl.JavaFileManager
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
|
||||
public interface KotlinCliJavaFileManager : JavaFileManager {
|
||||
public fun findClass(classId: ClassId, searchScope: GlobalSearchScope): PsiClass?
|
||||
interface KotlinCliJavaFileManager : JavaFileManager {
|
||||
fun findClass(classId: ClassId, searchScope: GlobalSearchScope): PsiClass?
|
||||
}
|
||||
@@ -23,11 +23,11 @@ import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||
|
||||
public fun DeclarationDescriptor.hasJvmOverloadsAnnotation(): Boolean {
|
||||
return getAnnotations().findAnnotation(FqName("kotlin.jvm.JvmOverloads")) != null
|
||||
fun DeclarationDescriptor.hasJvmOverloadsAnnotation(): Boolean {
|
||||
return annotations.findAnnotation(FqName("kotlin.jvm.JvmOverloads")) != null
|
||||
}
|
||||
|
||||
public fun DeclarationDescriptor.findJvmFieldAnnotation(): AnnotationDescriptor? {
|
||||
fun DeclarationDescriptor.findJvmFieldAnnotation(): AnnotationDescriptor? {
|
||||
val fqName = FqName("kotlin.jvm.JvmField")
|
||||
val annotation = annotations.findAnnotation(fqName)
|
||||
if (annotation != null) {
|
||||
@@ -37,11 +37,11 @@ public fun DeclarationDescriptor.findJvmFieldAnnotation(): AnnotationDescriptor?
|
||||
return annotations.getUseSiteTargetedAnnotations().asSequence().filter {
|
||||
it.target == AnnotationUseSiteTarget.FIELD
|
||||
}.map { it.annotation }.firstOrNull {
|
||||
val descriptor = it.getType().getConstructor().getDeclarationDescriptor()
|
||||
val descriptor = it.type.constructor.declarationDescriptor
|
||||
descriptor is ClassDescriptor && fqName.toUnsafe() == DescriptorUtils.getFqName(descriptor)
|
||||
}
|
||||
}
|
||||
|
||||
public fun DeclarationDescriptor.hasJvmFieldAnnotation(): Boolean {
|
||||
fun DeclarationDescriptor.hasJvmFieldAnnotation(): Boolean {
|
||||
return findJvmFieldAnnotation() != null
|
||||
}
|
||||
+1
-1
@@ -28,7 +28,7 @@ import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm
|
||||
import org.jetbrains.kotlin.types.KotlinTypeImpl
|
||||
import org.jetbrains.kotlin.types.TypeProjectionImpl
|
||||
|
||||
public class JavaClassOnCompanionChecker : CallChecker {
|
||||
class JavaClassOnCompanionChecker : CallChecker {
|
||||
override fun <F : CallableDescriptor> check(resolvedCall: ResolvedCall<F>, context: BasicCallResolutionContext) {
|
||||
val descriptor = resolvedCall.resultingDescriptor
|
||||
if (descriptor !is PropertyDescriptor || descriptor.name.asString() != "javaClass") return
|
||||
|
||||
+16
-16
@@ -42,22 +42,22 @@ import org.jetbrains.kotlin.types.expressions.SenselessComparisonChecker
|
||||
import org.jetbrains.kotlin.types.flexibility
|
||||
import org.jetbrains.kotlin.types.isFlexible
|
||||
|
||||
public class JavaNullabilityWarningsChecker : AdditionalTypeChecker {
|
||||
class JavaNullabilityWarningsChecker : AdditionalTypeChecker {
|
||||
private fun KotlinType.mayBeNull(): ErrorsJvm.NullabilityInformationSource? {
|
||||
if (!isError() && !isFlexible() && TypeUtils.isNullableType(this)) return ErrorsJvm.NullabilityInformationSource.KOTLIN
|
||||
if (!isError && !isFlexible() && TypeUtils.isNullableType(this)) return ErrorsJvm.NullabilityInformationSource.KOTLIN
|
||||
|
||||
if (isFlexible() && TypeUtils.isNullableType(flexibility().lowerBound)) return ErrorsJvm.NullabilityInformationSource.KOTLIN
|
||||
|
||||
if (getAnnotations().isMarkedNullable()) return ErrorsJvm.NullabilityInformationSource.JAVA
|
||||
if (annotations.isMarkedNullable()) return ErrorsJvm.NullabilityInformationSource.JAVA
|
||||
return null
|
||||
}
|
||||
|
||||
private fun KotlinType.mustNotBeNull(): ErrorsJvm.NullabilityInformationSource? {
|
||||
if (!isError() && !isFlexible() && !TypeUtils.isNullableType(this)) return ErrorsJvm.NullabilityInformationSource.KOTLIN
|
||||
if (!isError && !isFlexible() && !TypeUtils.isNullableType(this)) return ErrorsJvm.NullabilityInformationSource.KOTLIN
|
||||
|
||||
if (isFlexible() && !TypeUtils.isNullableType(flexibility().upperBound)) return ErrorsJvm.NullabilityInformationSource.KOTLIN
|
||||
|
||||
if (!isMarkedNullable() && getAnnotations().isMarkedNotNull()) return ErrorsJvm.NullabilityInformationSource.JAVA
|
||||
if (!isMarkedNullable && annotations.isMarkedNotNull()) return ErrorsJvm.NullabilityInformationSource.JAVA
|
||||
return null
|
||||
}
|
||||
|
||||
@@ -99,10 +99,10 @@ public class JavaNullabilityWarningsChecker : AdditionalTypeChecker {
|
||||
|
||||
when (expression) {
|
||||
is KtWhenExpression ->
|
||||
if (expression.getElseExpression() == null) {
|
||||
if (expression.elseExpression == null) {
|
||||
// Check for conditionally-exhaustive when on platform enums, see KT-6399
|
||||
val type = expression.getSubjectExpression()?.let { c.trace.getType(it) } ?: return
|
||||
if (type.isFlexible() && TypeUtils.isNullableType(type.flexibility().upperBound) && !type.getAnnotations().isMarkedNotNull()) {
|
||||
val type = expression.subjectExpression?.let { c.trace.getType(it) } ?: return
|
||||
if (type.isFlexible() && TypeUtils.isNullableType(type.flexibility().upperBound) && !type.annotations.isMarkedNotNull()) {
|
||||
val enumClassDescriptor = WhenChecker.getClassDescriptorOfTypeIfEnum(type) ?: return
|
||||
|
||||
if (WhenChecker.isWhenOnEnumExhaustive(expression, c.trace, enumClassDescriptor)
|
||||
@@ -113,8 +113,8 @@ public class JavaNullabilityWarningsChecker : AdditionalTypeChecker {
|
||||
}
|
||||
}
|
||||
is KtPostfixExpression ->
|
||||
if (expression.getOperationToken() == KtTokens.EXCLEXCL) {
|
||||
val baseExpression = expression.getBaseExpression() ?: return
|
||||
if (expression.operationToken == KtTokens.EXCLEXCL) {
|
||||
val baseExpression = expression.baseExpression ?: return
|
||||
val baseExpressionType = c.trace.getType(baseExpression) ?: return
|
||||
doIfNotNull(
|
||||
DataFlowValueFactory.createDataFlowValue(baseExpression, baseExpressionType, c),
|
||||
@@ -124,9 +124,9 @@ public class JavaNullabilityWarningsChecker : AdditionalTypeChecker {
|
||||
}
|
||||
}
|
||||
is KtBinaryExpression ->
|
||||
when (expression.getOperationToken()) {
|
||||
when (expression.operationToken) {
|
||||
KtTokens.ELVIS -> {
|
||||
val baseExpression = expression.getLeft()
|
||||
val baseExpression = expression.left
|
||||
val baseExpressionType = baseExpression?.let{ c.trace.getType(it) } ?: return
|
||||
doIfNotNull(
|
||||
DataFlowValueFactory.createDataFlowValue(baseExpression!!, baseExpressionType, c),
|
||||
@@ -139,9 +139,9 @@ public class JavaNullabilityWarningsChecker : AdditionalTypeChecker {
|
||||
KtTokens.EXCLEQ,
|
||||
KtTokens.EQEQEQ,
|
||||
KtTokens.EXCLEQEQEQ -> {
|
||||
if (expression.getLeft() != null && expression.getRight() != null) {
|
||||
if (expression.left != null && expression.right != null) {
|
||||
SenselessComparisonChecker.checkSenselessComparisonWithNull(
|
||||
expression, expression.getLeft()!!, expression.getRight()!!, c,
|
||||
expression, expression.left!!, expression.right!!, c,
|
||||
{ c.trace.getType(it) },
|
||||
{
|
||||
value ->
|
||||
@@ -171,8 +171,8 @@ public class JavaNullabilityWarningsChecker : AdditionalTypeChecker {
|
||||
val dataFlowValue = DataFlowValueFactory.createDataFlowValue(receiverArgument, c)
|
||||
if (!safeAccess) {
|
||||
doCheckType(
|
||||
receiverArgument.getType(),
|
||||
receiverParameter.getType(),
|
||||
receiverArgument.type,
|
||||
receiverParameter.type,
|
||||
dataFlowValue,
|
||||
c.dataFlowInfo
|
||||
) {
|
||||
|
||||
+3
-3
@@ -48,15 +48,15 @@ class ReflectionAPICallChecker(private val module: ModuleDescriptor, storageMana
|
||||
override fun <F : CallableDescriptor> check(resolvedCall: ResolvedCall<F>, context: BasicCallResolutionContext) {
|
||||
if (isReflectionAvailable) return
|
||||
|
||||
val descriptor = resolvedCall.getResultingDescriptor()
|
||||
val containingClass = descriptor.getContainingDeclaration() as? ClassDescriptor ?: return
|
||||
val descriptor = resolvedCall.resultingDescriptor
|
||||
val containingClass = descriptor.containingDeclaration as? ClassDescriptor ?: return
|
||||
if (!ReflectionTypes.isReflectionClass(containingClass)) return
|
||||
|
||||
// Skip some symbols which are supposed to work fine without kotlin-reflect.jar:
|
||||
// - 'name' on anything
|
||||
// - 'invoke' on functions (or on anything else for that matter)
|
||||
// - 'get'/'set' on properties
|
||||
val name = descriptor.getName()
|
||||
val name = descriptor.name
|
||||
when {
|
||||
name == OperatorNameConventions.INVOKE -> return
|
||||
name.asString() == "name" -> return
|
||||
|
||||
+3
-3
@@ -28,13 +28,13 @@ import org.jetbrains.kotlin.resolve.calls.context.BasicCallResolutionContext
|
||||
import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall
|
||||
import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm
|
||||
|
||||
public class TraitDefaultMethodCallChecker : CallChecker {
|
||||
class TraitDefaultMethodCallChecker : CallChecker {
|
||||
|
||||
override fun <F : CallableDescriptor> check(resolvedCall: ResolvedCall<F>, context: BasicCallResolutionContext) {
|
||||
if (getSuperCallExpression(resolvedCall.getCall()) == null) return
|
||||
|
||||
val targetDescriptor = resolvedCall.getResultingDescriptor().getOriginal()
|
||||
val containerDescriptor = targetDescriptor.getContainingDeclaration()
|
||||
val targetDescriptor = resolvedCall.resultingDescriptor.original
|
||||
val containerDescriptor = targetDescriptor.containingDeclaration
|
||||
|
||||
if (containerDescriptor is JavaClassDescriptor && DescriptorUtils.isInterface(containerDescriptor)) {
|
||||
//is java interface default method called from trait
|
||||
|
||||
+2
-2
@@ -33,7 +33,7 @@ import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm
|
||||
import org.jetbrains.kotlin.types.KotlinType
|
||||
import org.jetbrains.kotlin.types.TypeUtils
|
||||
|
||||
public object RepeatableAnnotationChecker: AdditionalAnnotationChecker {
|
||||
object RepeatableAnnotationChecker: AdditionalAnnotationChecker {
|
||||
override fun checkEntries(entries: List<KtAnnotationEntry>, actualTargets: List<KotlinTarget>, trace: BindingTrace) {
|
||||
val entryTypesWithAnnotations = hashMapOf<KotlinType, MutableList<AnnotationUseSiteTarget?>>()
|
||||
|
||||
@@ -57,7 +57,7 @@ public object RepeatableAnnotationChecker: AdditionalAnnotationChecker {
|
||||
}
|
||||
}
|
||||
|
||||
public object FileClassAnnotationsChecker: AdditionalAnnotationChecker {
|
||||
object FileClassAnnotationsChecker: AdditionalAnnotationChecker {
|
||||
// JvmName & JvmMultifileClass annotations are applicable to multi-file class parts regardless of their retention.
|
||||
private val ALWAYS_APPLICABLE = hashSetOf(JvmFileClassUtil.JVM_NAME, JvmFileClassUtil.JVM_MULTIFILE_CLASS)
|
||||
|
||||
|
||||
+14
-14
@@ -34,7 +34,7 @@ import org.jetbrains.kotlin.resolve.jvm.annotations.hasJvmFieldAnnotation
|
||||
import org.jetbrains.kotlin.resolve.jvm.annotations.hasJvmOverloadsAnnotation
|
||||
import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm
|
||||
|
||||
public class LocalFunInlineChecker : DeclarationChecker {
|
||||
class LocalFunInlineChecker : DeclarationChecker {
|
||||
|
||||
override fun check(
|
||||
declaration: KtDeclaration,
|
||||
@@ -44,13 +44,13 @@ public class LocalFunInlineChecker : DeclarationChecker {
|
||||
if (InlineUtil.isInline(descriptor) &&
|
||||
declaration is KtNamedFunction &&
|
||||
descriptor is FunctionDescriptor &&
|
||||
descriptor.getVisibility() == Visibilities.LOCAL) {
|
||||
descriptor.visibility == Visibilities.LOCAL) {
|
||||
diagnosticHolder.report(Errors.NOT_YET_SUPPORTED_IN_INLINE.on(declaration, declaration, descriptor))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class PlatformStaticAnnotationChecker : DeclarationChecker {
|
||||
class PlatformStaticAnnotationChecker : DeclarationChecker {
|
||||
|
||||
override fun check(
|
||||
declaration: KtDeclaration,
|
||||
@@ -98,7 +98,7 @@ public class PlatformStaticAnnotationChecker : DeclarationChecker {
|
||||
}
|
||||
}
|
||||
|
||||
public class JvmNameAnnotationChecker : DeclarationChecker {
|
||||
class JvmNameAnnotationChecker : DeclarationChecker {
|
||||
override fun check(declaration: KtDeclaration, descriptor: DeclarationDescriptor, diagnosticHolder: DiagnosticSink, bindingContext: BindingContext) {
|
||||
val platformNameAnnotation = DescriptorUtils.getJvmNameAnnotation(descriptor)
|
||||
if (platformNameAnnotation != null) {
|
||||
@@ -135,7 +135,7 @@ public class JvmNameAnnotationChecker : DeclarationChecker {
|
||||
}
|
||||
}
|
||||
|
||||
public class VolatileAnnotationChecker : DeclarationChecker {
|
||||
class VolatileAnnotationChecker : DeclarationChecker {
|
||||
|
||||
override fun check(declaration: KtDeclaration,
|
||||
descriptor: DeclarationDescriptor,
|
||||
@@ -150,7 +150,7 @@ public class VolatileAnnotationChecker : DeclarationChecker {
|
||||
}
|
||||
}
|
||||
|
||||
public class SynchronizedAnnotationChecker : DeclarationChecker {
|
||||
class SynchronizedAnnotationChecker : DeclarationChecker {
|
||||
|
||||
override fun check(declaration: KtDeclaration,
|
||||
descriptor: DeclarationDescriptor,
|
||||
@@ -165,7 +165,7 @@ public class SynchronizedAnnotationChecker : DeclarationChecker {
|
||||
}
|
||||
}
|
||||
|
||||
public class OverloadsAnnotationChecker: DeclarationChecker {
|
||||
class OverloadsAnnotationChecker: DeclarationChecker {
|
||||
override fun check(
|
||||
declaration: KtDeclaration,
|
||||
descriptor: DeclarationDescriptor,
|
||||
@@ -181,20 +181,20 @@ public class OverloadsAnnotationChecker: DeclarationChecker {
|
||||
if (descriptor !is CallableDescriptor) {
|
||||
return
|
||||
}
|
||||
if (descriptor is FunctionDescriptor && descriptor.getModality() == Modality.ABSTRACT) {
|
||||
if (descriptor is FunctionDescriptor && descriptor.modality == Modality.ABSTRACT) {
|
||||
diagnosticHolder.report(ErrorsJvm.OVERLOADS_ABSTRACT.on(declaration))
|
||||
}
|
||||
else if ((!descriptor.getVisibility().isPublicAPI && descriptor.getVisibility() != Visibilities.INTERNAL) ||
|
||||
else if ((!descriptor.visibility.isPublicAPI && descriptor.visibility != Visibilities.INTERNAL) ||
|
||||
DescriptorUtils.isLocal(descriptor)) {
|
||||
diagnosticHolder.report(ErrorsJvm.OVERLOADS_PRIVATE.on(declaration))
|
||||
}
|
||||
else if (descriptor.getValueParameters().none { it.declaresDefaultValue() }) {
|
||||
else if (descriptor.valueParameters.none { it.declaresDefaultValue() }) {
|
||||
diagnosticHolder.report(ErrorsJvm.OVERLOADS_WITHOUT_DEFAULT_ARGUMENTS.on(declaration))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class TypeParameterBoundIsNotArrayChecker : DeclarationChecker {
|
||||
class TypeParameterBoundIsNotArrayChecker : DeclarationChecker {
|
||||
override fun check(
|
||||
declaration: KtDeclaration,
|
||||
descriptor: DeclarationDescriptor,
|
||||
@@ -214,7 +214,7 @@ public class TypeParameterBoundIsNotArrayChecker : DeclarationChecker {
|
||||
}
|
||||
}
|
||||
|
||||
public class ReifiedTypeParameterAnnotationChecker : DeclarationChecker {
|
||||
class ReifiedTypeParameterAnnotationChecker : DeclarationChecker {
|
||||
|
||||
override fun check(
|
||||
declaration: KtDeclaration,
|
||||
@@ -223,7 +223,7 @@ public class ReifiedTypeParameterAnnotationChecker : DeclarationChecker {
|
||||
bindingContext: BindingContext
|
||||
) {
|
||||
if (descriptor is CallableDescriptor && !InlineUtil.isInline(descriptor)) {
|
||||
checkTypeParameterDescriptorsAreNotReified(descriptor.getTypeParameters(), diagnosticHolder)
|
||||
checkTypeParameterDescriptorsAreNotReified(descriptor.typeParameters, diagnosticHolder)
|
||||
}
|
||||
|
||||
if (descriptor is ClassDescriptor) {
|
||||
@@ -236,7 +236,7 @@ public class ReifiedTypeParameterAnnotationChecker : DeclarationChecker {
|
||||
typeParameterDescriptors: List<TypeParameterDescriptor>,
|
||||
diagnosticHolder: DiagnosticSink
|
||||
) {
|
||||
for (reifiedTypeParameterDescriptor in typeParameterDescriptors.filter { it.isReified() }) {
|
||||
for (reifiedTypeParameterDescriptor in typeParameterDescriptors.filter { it.isReified }) {
|
||||
val typeParameterDeclaration = DescriptorToSourceUtils.descriptorToDeclaration(reifiedTypeParameterDescriptor)
|
||||
if (typeParameterDeclaration !is KtTypeParameter) throw AssertionError("JetTypeParameter expected")
|
||||
|
||||
|
||||
+5
-5
@@ -16,9 +16,9 @@
|
||||
|
||||
package org.jetbrains.kotlin.resolve.jvm.diagnostics
|
||||
|
||||
public class ConflictingJvmDeclarationsData(
|
||||
public val classInternalName: String?,
|
||||
public val classOrigin: JvmDeclarationOrigin,
|
||||
public val signature: RawSignature,
|
||||
public val signatureOrigins: Collection<JvmDeclarationOrigin>
|
||||
class ConflictingJvmDeclarationsData(
|
||||
val classInternalName: String?,
|
||||
val classOrigin: JvmDeclarationOrigin,
|
||||
val signature: RawSignature,
|
||||
val signatureOrigins: Collection<JvmDeclarationOrigin>
|
||||
)
|
||||
|
||||
+19
-20
@@ -24,11 +24,11 @@ import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
|
||||
import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOriginKind.*
|
||||
|
||||
public enum class MemberKind { FIELD, METHOD }
|
||||
enum class MemberKind { FIELD, METHOD }
|
||||
|
||||
public data class RawSignature(public val name: String, public val desc: String, public val kind: MemberKind)
|
||||
data class RawSignature(val name: String, val desc: String, val kind: MemberKind)
|
||||
|
||||
public enum class JvmDeclarationOriginKind {
|
||||
enum class JvmDeclarationOriginKind {
|
||||
OTHER,
|
||||
PACKAGE_PART,
|
||||
INTERFACE_DEFAULT_IMPL,
|
||||
@@ -40,43 +40,42 @@ public enum class JvmDeclarationOriginKind {
|
||||
SYNTHETIC // this means that there's no proper descriptor for this jvm declaration
|
||||
}
|
||||
|
||||
public class JvmDeclarationOrigin(
|
||||
public val originKind: JvmDeclarationOriginKind,
|
||||
public val element: PsiElement?,
|
||||
public val descriptor: DeclarationDescriptor?
|
||||
class JvmDeclarationOrigin(
|
||||
val originKind: JvmDeclarationOriginKind,
|
||||
val element: PsiElement?,
|
||||
val descriptor: DeclarationDescriptor?
|
||||
) {
|
||||
companion object {
|
||||
@JvmField
|
||||
public val NO_ORIGIN: JvmDeclarationOrigin = JvmDeclarationOrigin(OTHER, null, null)
|
||||
@JvmField val NO_ORIGIN: JvmDeclarationOrigin = JvmDeclarationOrigin(OTHER, null, null)
|
||||
}
|
||||
}
|
||||
|
||||
public fun OtherOrigin(element: PsiElement?, descriptor: DeclarationDescriptor?): JvmDeclarationOrigin =
|
||||
fun OtherOrigin(element: PsiElement?, descriptor: DeclarationDescriptor?): JvmDeclarationOrigin =
|
||||
if (element == null && descriptor == null)
|
||||
JvmDeclarationOrigin.NO_ORIGIN
|
||||
else JvmDeclarationOrigin(OTHER, element, descriptor)
|
||||
|
||||
public fun OtherOrigin(element: PsiElement): JvmDeclarationOrigin = OtherOrigin(element, null)
|
||||
fun OtherOrigin(element: PsiElement): JvmDeclarationOrigin = OtherOrigin(element, null)
|
||||
|
||||
public fun OtherOrigin(descriptor: DeclarationDescriptor): JvmDeclarationOrigin = OtherOrigin(null, descriptor)
|
||||
fun OtherOrigin(descriptor: DeclarationDescriptor): JvmDeclarationOrigin = OtherOrigin(null, descriptor)
|
||||
|
||||
public fun Bridge(descriptor: DeclarationDescriptor, element: PsiElement? = DescriptorToSourceUtils.descriptorToDeclaration(descriptor)): JvmDeclarationOrigin =
|
||||
fun Bridge(descriptor: DeclarationDescriptor, element: PsiElement? = DescriptorToSourceUtils.descriptorToDeclaration(descriptor)): JvmDeclarationOrigin =
|
||||
JvmDeclarationOrigin(BRIDGE, element, descriptor)
|
||||
|
||||
public fun PackagePart(file: KtFile, descriptor: PackageFragmentDescriptor): JvmDeclarationOrigin = JvmDeclarationOrigin(PACKAGE_PART, file, descriptor)
|
||||
fun PackagePart(file: KtFile, descriptor: PackageFragmentDescriptor): JvmDeclarationOrigin = JvmDeclarationOrigin(PACKAGE_PART, file, descriptor)
|
||||
|
||||
/**
|
||||
* @param representativeFile one of the files representing this multifile class (will be used for diagnostics)
|
||||
*/
|
||||
public fun MultifileClass(representativeFile: KtFile?, descriptor: PackageFragmentDescriptor, multifileClassFqName: FqName): JvmDeclarationOrigin =
|
||||
fun MultifileClass(representativeFile: KtFile?, descriptor: PackageFragmentDescriptor, multifileClassFqName: FqName): JvmDeclarationOrigin =
|
||||
JvmDeclarationOrigin(MULTIFILE_CLASS, representativeFile, descriptor)
|
||||
public fun MultifileClassPart(file: KtFile, descriptor: PackageFragmentDescriptor, multifileClassFqName: FqName): JvmDeclarationOrigin =
|
||||
fun MultifileClassPart(file: KtFile, descriptor: PackageFragmentDescriptor, multifileClassFqName: FqName): JvmDeclarationOrigin =
|
||||
JvmDeclarationOrigin(MULTIFILE_CLASS_PART, file, descriptor)
|
||||
|
||||
public fun TraitImpl(element: KtClassOrObject, descriptor: ClassDescriptor): JvmDeclarationOrigin = JvmDeclarationOrigin(INTERFACE_DEFAULT_IMPL, element, descriptor)
|
||||
public fun DelegationToTraitImpl(element: PsiElement?, descriptor: FunctionDescriptor): JvmDeclarationOrigin =
|
||||
fun TraitImpl(element: KtClassOrObject, descriptor: ClassDescriptor): JvmDeclarationOrigin = JvmDeclarationOrigin(INTERFACE_DEFAULT_IMPL, element, descriptor)
|
||||
fun DelegationToTraitImpl(element: PsiElement?, descriptor: FunctionDescriptor): JvmDeclarationOrigin =
|
||||
JvmDeclarationOrigin(DELEGATION_TO_DEFAULT_IMPLS, element, descriptor)
|
||||
|
||||
public fun Delegation(element: PsiElement?, descriptor: FunctionDescriptor): JvmDeclarationOrigin = JvmDeclarationOrigin(DELEGATION, element, descriptor)
|
||||
fun Delegation(element: PsiElement?, descriptor: FunctionDescriptor): JvmDeclarationOrigin = JvmDeclarationOrigin(DELEGATION, element, descriptor)
|
||||
|
||||
public fun Synthetic(element: PsiElement?, descriptor: CallableMemberDescriptor): JvmDeclarationOrigin = JvmDeclarationOrigin(SYNTHETIC, element, descriptor)
|
||||
fun Synthetic(element: PsiElement?, descriptor: CallableMemberDescriptor): JvmDeclarationOrigin = JvmDeclarationOrigin(SYNTHETIC, element, descriptor)
|
||||
+2
-2
@@ -24,13 +24,13 @@ import org.jetbrains.kotlin.extensions.ProjectExtensionDescriptor
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
|
||||
public interface AnalysisCompletedHandlerExtension {
|
||||
interface AnalysisCompletedHandlerExtension {
|
||||
companion object : ProjectExtensionDescriptor<AnalysisCompletedHandlerExtension>(
|
||||
"org.jetbrains.kotlin.analyzeCompleteHandlerExtension",
|
||||
AnalysisCompletedHandlerExtension::class.java
|
||||
)
|
||||
|
||||
public fun analysisCompleted(
|
||||
fun analysisCompleted(
|
||||
project: Project,
|
||||
module: ModuleDescriptor,
|
||||
bindingContext: BindingContext,
|
||||
|
||||
+2
-2
@@ -23,13 +23,13 @@ import org.jetbrains.kotlin.extensions.ProjectExtensionDescriptor
|
||||
import org.jetbrains.kotlin.resolve.BindingTrace
|
||||
import org.jetbrains.kotlin.storage.StorageManager
|
||||
|
||||
public interface PackageFragmentProviderExtension {
|
||||
interface PackageFragmentProviderExtension {
|
||||
companion object : ProjectExtensionDescriptor<PackageFragmentProviderExtension>(
|
||||
"org.jetbrains.kotlin.packageFragmentProviderExtension",
|
||||
PackageFragmentProviderExtension::class.java
|
||||
)
|
||||
|
||||
public fun getPackageFragmentProvider(
|
||||
fun getPackageFragmentProvider(
|
||||
project: Project,
|
||||
module: ModuleDescriptor,
|
||||
storageManager: StorageManager,
|
||||
|
||||
+5
-5
@@ -18,18 +18,18 @@ package org.jetbrains.kotlin.resolve.jvm.jvmSignature
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||
|
||||
public interface KotlinToJvmSignatureMapper {
|
||||
public fun mapToJvmMethodSignature(function: FunctionDescriptor): JvmMethodSignature
|
||||
interface KotlinToJvmSignatureMapper {
|
||||
fun mapToJvmMethodSignature(function: FunctionDescriptor): JvmMethodSignature
|
||||
}
|
||||
|
||||
fun erasedSignaturesEqualIgnoringReturnTypes(subFunction: JvmMethodSignature, superFunction: JvmMethodSignature): Boolean {
|
||||
val subParams = subFunction.getValueParameters()
|
||||
val superParams = superFunction.getValueParameters()
|
||||
val subParams = subFunction.valueParameters
|
||||
val superParams = superFunction.valueParameters
|
||||
|
||||
if (subParams.size != superParams.size) return false
|
||||
|
||||
return subParams.zip(superParams).all {
|
||||
p -> val (subParam, superParam) = p
|
||||
subParam.getAsmType() == superParam.getAsmType()
|
||||
subParam.asmType == superParam.asmType
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -28,7 +28,7 @@ import org.jetbrains.kotlin.types.*
|
||||
import org.jetbrains.kotlin.types.checker.KotlinTypeChecker
|
||||
import org.jetbrains.kotlin.types.checker.TypeCheckingProcedure
|
||||
|
||||
public object JavaGenericVarianceViolationTypeChecker : AdditionalTypeChecker {
|
||||
object JavaGenericVarianceViolationTypeChecker : AdditionalTypeChecker {
|
||||
// Prohibits covariant type argument conversions `List<String> -> (MutableList<Any>..List<Any>)` when expected type's lower bound is invariant.
|
||||
// It's needed to prevent accident unsafe covariant conversions of mutable collections.
|
||||
//
|
||||
|
||||
@@ -29,7 +29,7 @@ import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
|
||||
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
||||
import java.util.*
|
||||
|
||||
public object JvmPlatform : TargetPlatform("JVM") {
|
||||
object JvmPlatform : TargetPlatform("JVM") {
|
||||
override val defaultModuleParameters = object : ModuleParameters {
|
||||
override val platformToKotlinClassMap: PlatformToKotlinClassMap
|
||||
get() = JavaToKotlinClassMap.INSTANCE
|
||||
|
||||
+1
-1
@@ -28,7 +28,7 @@ import org.jetbrains.kotlin.synthetic.JavaSyntheticScopes
|
||||
import org.jetbrains.kotlin.types.DynamicTypesSettings
|
||||
|
||||
|
||||
public object JvmPlatformConfigurator : PlatformConfigurator(
|
||||
object JvmPlatformConfigurator : PlatformConfigurator(
|
||||
DynamicTypesSettings(),
|
||||
additionalDeclarationCheckers = listOf(
|
||||
PlatformStaticAnnotationChecker(),
|
||||
|
||||
+5
-5
@@ -49,12 +49,12 @@ interface SyntheticJavaPropertyDescriptor : PropertyDescriptor {
|
||||
|
||||
companion object {
|
||||
fun findByGetterOrSetter(getterOrSetter: FunctionDescriptor, syntheticScopes: SyntheticScopes): SyntheticJavaPropertyDescriptor? {
|
||||
val name = getterOrSetter.getName()
|
||||
if (name.isSpecial()) return null
|
||||
val identifier = name.getIdentifier()
|
||||
val name = getterOrSetter.name
|
||||
if (name.isSpecial) return null
|
||||
val identifier = name.identifier
|
||||
if (!identifier.startsWith("get") && !identifier.startsWith("is") && !identifier.startsWith("set")) return null // optimization
|
||||
|
||||
val owner = getterOrSetter.getContainingDeclaration() as? ClassDescriptor ?: return null
|
||||
val owner = getterOrSetter.containingDeclaration as? ClassDescriptor ?: return null
|
||||
|
||||
val originalGetterOrSetter = getterOrSetter.original
|
||||
return syntheticScopes.collectSyntheticExtensionProperties(listOf(owner.defaultType))
|
||||
@@ -209,7 +209,7 @@ class JavaSyntheticPropertiesScope(storageManager: StorageManager, private val l
|
||||
|
||||
val classifier = type.declarationDescriptor
|
||||
if (classifier is ClassDescriptor) {
|
||||
for (descriptor in classifier.getUnsubstitutedMemberScope().getContributedDescriptors(DescriptorKindFilter.FUNCTIONS)) {
|
||||
for (descriptor in classifier.unsubstitutedMemberScope.getContributedDescriptors(DescriptorKindFilter.FUNCTIONS)) {
|
||||
if (descriptor is FunctionDescriptor) {
|
||||
val propertyName = SyntheticJavaPropertyDescriptor.propertyNameByGetMethodName(descriptor.getName()) ?: continue
|
||||
addIfNotNull(syntheticPropertyInClass(Pair(classifier, propertyName)).descriptor)
|
||||
|
||||
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.incremental.components.LookupTracker
|
||||
import org.jetbrains.kotlin.resolve.scopes.SyntheticScopes
|
||||
import org.jetbrains.kotlin.storage.StorageManager
|
||||
|
||||
public class JavaSyntheticScopes(storageManager: StorageManager, lookupTracker: LookupTracker): SyntheticScopes {
|
||||
class JavaSyntheticScopes(storageManager: StorageManager, lookupTracker: LookupTracker): SyntheticScopes {
|
||||
|
||||
override val scopes = listOf(JavaSyntheticPropertiesScope(storageManager, lookupTracker), SamAdapterFunctionsScope(storageManager))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user