From 39b05a0a1cf8713d1945023793f0fa3677079990 Mon Sep 17 00:00:00 2001 From: Ilya Chernikov Date: Tue, 27 Feb 2024 16:28:08 +0100 Subject: [PATCH] K2 IC: fix classifiers lookups in particular nested classifiers and companions. #KTIJ-24833 fixed #KTIJ-24830 fixed #KT-55195 fixed --- .../scopes/impl/FirNestedClassifierScope.kt | 7 +++ .../kotlin/fir/QualifiedNameResolution.kt | 22 +++++-- .../kotlin/fir/resolve/ResolveUtils.kt | 17 +++--- .../calls/tower/FirTowerResolveTask.kt | 2 +- .../fir/resolve/calls/tower/TowerLevels.kt | 2 +- .../impl/FirQualifierResolverImpl.kt | 5 +- .../providers/impl/FirTypeResolverImpl.kt | 8 ++- .../FirSpecificTypeResolverTransformer.kt | 6 +- .../transformers/FirSupertypesResolution.kt | 16 ++--- .../FirExpressionsResolveTransformer.kt | 13 ++++- .../kotlin/fir/FirLookupTrackerComponent.kt | 35 +++++++---- .../build/JvmLookupTrackerTestGenerated.java | 15 +++++ .../K1JvmLookupTrackerTestGenerated.java | 15 +++++ .../companionObjectNameChanged/fir-build.log | 21 ++----- .../jsKlib/classifierMembers/constraints.kt | 4 +- .../jsKlib/classifierMembers/foo.kt | 12 ++-- .../jsKlib/classifierMembers/usages.kt | 54 ++++++++--------- .../jsKlib/classifierMembers/usages.kt.new.2 | 58 +++++++++---------- .../jsKlib/conventions/comparison.kt | 24 ++++---- .../jsKlib/conventions/delegateProperty.kt | 8 +-- .../jsKlib/conventions/mathematicalLike.kt | 20 +++---- .../lookupTracker/jsKlib/conventions/other.kt | 8 +-- .../jsKlib/expressionType/genericType.kt | 4 +- .../jsKlib/expressionType/inferredType.kt | 4 +- .../expressionType/lambdaParameterType.kt | 6 +- .../jsKlib/packageDeclarations/foo1.kt | 8 +-- .../lookupTracker/jsKlib/simple/main.kt | 4 +- .../lookupTracker/jvm/SAM/usages.kt | 6 +- .../jvm/classifierMembers/constraints.kt | 4 +- .../jvm/classifierMembers/foo.kt | 12 ++-- .../jvm/classifierMembers/usages.kt | 56 +++++++++--------- .../jvm/classifierMembers/usages.kt.new.2 | 58 +++++++++---------- .../lookupTracker/jvm/companion/MainClass.kt | 9 +++ .../lookupTracker/jvm/companion/usages.K1.kt | 23 ++++++++ .../lookupTracker/jvm/companion/usages.kt | 23 ++++++++ .../jvm/conventions/comparison.kt | 24 ++++---- .../jvm/conventions/delegateProperty.kt | 8 +-- .../jvm/conventions/mathematicalLike.kt | 20 +++---- .../lookupTracker/jvm/conventions/other.kt | 8 +-- .../jvm/expressionType/genericType.kt | 4 +- .../jvm/expressionType/inferredType.kt | 4 +- .../jvm/expressionType/lambdaParameterType.kt | 6 +- .../lookupTracker/jvm/java/usages.kt | 32 +++++----- .../lookupTracker/jvm/jvmNameChanged/A.kt | 2 +- .../lookupTracker/jvm/jvmNameChanged/A.kt.new | 2 +- .../jvm/jvmNameChanged/useAChild.kt | 2 +- .../jvm/namedCompanion/MainClass.kt | 9 +++ .../jvm/namedCompanion/usages.K1.kt | 23 ++++++++ .../jvm/namedCompanion/usages.kt | 23 ++++++++ .../lookupTracker/jvm/nested/MainClass.kt | 11 ++++ .../lookupTracker/jvm/nested/build.log | 5 ++ .../lookupTracker/jvm/nested/usage.K1.kt | 7 +++ .../lookupTracker/jvm/nested/usage.kt | 7 +++ .../jvm/packageDeclarations/foo1.kt | 8 +-- .../lookupTracker/jvm/simple/main.kt | 4 +- .../jvm/syntheticProperties/KotlinClass.kt | 2 +- .../jvm/syntheticProperties/usages.kt | 40 ++++++------- .../jvm/typeAliasAndUsage/usage.kt | 2 +- .../removeAndRestoreCompanion/fir-build.log | 33 +++++++++++ .../fir-build.log | 20 ++----- tests/mute-common.csv | 6 -- 61 files changed, 560 insertions(+), 341 deletions(-) create mode 100644 jps/jps-plugin/testData/incremental/lookupTracker/jvm/companion/MainClass.kt create mode 100644 jps/jps-plugin/testData/incremental/lookupTracker/jvm/companion/usages.K1.kt create mode 100644 jps/jps-plugin/testData/incremental/lookupTracker/jvm/companion/usages.kt create mode 100644 jps/jps-plugin/testData/incremental/lookupTracker/jvm/namedCompanion/MainClass.kt create mode 100644 jps/jps-plugin/testData/incremental/lookupTracker/jvm/namedCompanion/usages.K1.kt create mode 100644 jps/jps-plugin/testData/incremental/lookupTracker/jvm/namedCompanion/usages.kt create mode 100644 jps/jps-plugin/testData/incremental/lookupTracker/jvm/nested/MainClass.kt create mode 100644 jps/jps-plugin/testData/incremental/lookupTracker/jvm/nested/build.log create mode 100644 jps/jps-plugin/testData/incremental/lookupTracker/jvm/nested/usage.K1.kt create mode 100644 jps/jps-plugin/testData/incremental/lookupTracker/jvm/nested/usage.kt create mode 100644 jps/jps-plugin/testData/incremental/pureKotlin/removeAndRestoreCompanion/fir-build.log diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirNestedClassifierScope.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirNestedClassifierScope.kt index 897b3f4cdb1..8c0e67cce43 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirNestedClassifierScope.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirNestedClassifierScope.kt @@ -10,6 +10,8 @@ import org.jetbrains.kotlin.fir.declarations.FirClass import org.jetbrains.kotlin.fir.declarations.FirRegularClass import org.jetbrains.kotlin.fir.declarations.FirTypeAlias import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef +import org.jetbrains.kotlin.fir.declarations.utils.classId +import org.jetbrains.kotlin.fir.declarations.utils.isLocal import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutorByMap import org.jetbrains.kotlin.fir.scopes.FirContainingNamesAwareScope @@ -21,6 +23,7 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol import org.jetbrains.kotlin.fir.types.ConeTypeParameterType import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.utils.SmartList import org.jetbrains.kotlin.utils.addToStdlib.shouldNotBeCalled abstract class FirNestedClassifierScope(val klass: FirClass, val useSiteSession: FirSession) : FirContainingNamesAwareScope() { @@ -45,6 +48,10 @@ abstract class FirNestedClassifierScope(val klass: FirClass, val useSiteSession: abstract fun isEmpty(): Boolean override fun getCallableNames(): Set = emptySet() + + override val scopeOwnerLookupNames: List = + if (klass.isLocal) emptyList() + else SmartList(klass.classId.asFqNameString()) } class FirNestedClassifierScopeImpl(klass: FirClass, useSiteSession: FirSession) : FirNestedClassifierScope(klass, useSiteSession) { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/QualifiedNameResolution.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/QualifiedNameResolution.kt index 26ee9e55d29..e30f087c019 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/QualifiedNameResolution.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/QualifiedNameResolution.kt @@ -43,11 +43,18 @@ fun BodyResolveComponents.resolveRootPartOfQualifier( this.nonFatalDiagnostics.addAll(nonFatalDiagnosticsFromExpression.orEmpty()) annotations += qualifiedAccess.annotations }.apply { - setTypeOfQualifier(session) + setTypeOfQualifier(this@resolveRootPartOfQualifier) } } - for (scope in createCurrentScopeList()) { + val scopes = createCurrentScopeList() + session.lookupTracker?.recordNameLookup( + name, + scopes.asSequence().flatMap { it.scopeOwnerLookupNames }.asIterable(), + qualifiedAccess.source, + file.source + ) + for (scope in scopes) { scope.getSingleVisibleClassifier(session, this, name)?.let { val klass = (it as? FirClassLikeSymbol<*>)?.fullyExpandedClass(session) ?: return@let @@ -79,7 +86,7 @@ fun BodyResolveComponents.resolveRootPartOfQualifier( ) annotations += qualifiedAccess.annotations }.apply { - setTypeOfQualifier(session) + setTypeOfQualifier(this@resolveRootPartOfQualifier) } } } @@ -104,6 +111,9 @@ fun FirResolvedQualifier.continueQualifier( val firClass = outerClassSymbol.fir if (firClass !is FirClass) return null return firClass.scopeProvider.getNestedClassifierScope(firClass, components.session, components.scopeSession) + ?.also { + session.lookupTracker?.recordNameLookup(name, it.scopeOwnerLookupNames, qualifiedAccess.source, components.file.source) + } ?.getSingleVisibleClassifier(session, components, name) ?.takeIf { it is FirClassLikeSymbol<*> } ?.let { nestedClassSymbol -> @@ -128,7 +138,7 @@ fun FirResolvedQualifier.continueQualifier( ) ) }.apply { - setTypeOfQualifier(components.session) + setTypeOfQualifier(components) } } } @@ -156,7 +166,7 @@ private fun FqName.continueQualifierInPackage( this.nonFatalDiagnostics.addAll(nonFatalDiagnosticsFromExpression.orEmpty()) annotations += qualifiedAccess.annotations }.apply { - setTypeOfQualifier(components.session) + setTypeOfQualifier(components) } } @@ -181,7 +191,7 @@ private fun FqName.continueQualifierInPackage( isFullyQualified = true annotations += qualifiedAccess.annotations }.apply { - setTypeOfQualifier(components.session) + setTypeOfQualifier(components) } } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt index ad3799cdbda..30b3d24f36b 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt @@ -213,22 +213,22 @@ fun BodyResolveComponents.buildResolvedQualifierForClass( this.annotations.addAll(annotations) }.build().apply { if (classId.isLocal) { - resultType = typeForQualifierByDeclaration(regularClass.fir, session) + resultType = typeForQualifierByDeclaration(regularClass.fir, session, element = this@apply, file) ?.also { replaceCanBeValue(true) } ?: session.builtinTypes.unitType.type } else { - setTypeOfQualifier(session) + setTypeOfQualifier(this@buildResolvedQualifierForClass) } } } -fun FirResolvedQualifier.setTypeOfQualifier(session: FirSession) { +fun FirResolvedQualifier.setTypeOfQualifier(components: BodyResolveComponents) { val classSymbol = symbol if (classSymbol != null) { classSymbol.lazyResolveToPhase(FirResolvePhase.TYPES) val declaration = classSymbol.fir if (declaration !is FirTypeAlias || typeArguments.isEmpty()) { - val typeByDeclaration = typeForQualifierByDeclaration(declaration, session) + val typeByDeclaration = typeForQualifierByDeclaration(declaration, components.session, element = this, components.file) if (typeByDeclaration != null) { this.resultType = typeByDeclaration replaceCanBeValue(true) @@ -236,7 +236,7 @@ fun FirResolvedQualifier.setTypeOfQualifier(session: FirSession) { } } } - this.resultType = session.builtinTypes.unitType.type + this.resultType = components.session.builtinTypes.unitType.type } internal fun typeForReifiedParameterReference(parameterReferenceBuilder: FirResolvedReifiedParameterReferenceBuilder): ConeLookupTagBasedType { @@ -244,10 +244,12 @@ internal fun typeForReifiedParameterReference(parameterReferenceBuilder: FirReso return typeParameterSymbol.constructType(emptyArray(), false) } -internal fun typeForQualifierByDeclaration(declaration: FirDeclaration, session: FirSession): ConeKotlinType? { +internal fun typeForQualifierByDeclaration( + declaration: FirDeclaration, session: FirSession, element: FirElement, file: FirFile +): ConeKotlinType? { if (declaration is FirTypeAlias) { val expandedDeclaration = declaration.expandedConeType?.lookupTag?.toSymbol(session)?.fir ?: return null - return typeForQualifierByDeclaration(expandedDeclaration, session) + return typeForQualifierByDeclaration(expandedDeclaration, session, element, file) } if (declaration is FirRegularClass) { if (declaration.classKind == ClassKind.OBJECT) { @@ -255,6 +257,7 @@ internal fun typeForQualifierByDeclaration(declaration: FirDeclaration, session: } else { val companionObjectSymbol = declaration.companionObjectSymbol if (companionObjectSymbol != null) { + session.lookupTracker?.recordCompanionLookup(companionObjectSymbol.classId, element.source, file.source) return companionObjectSymbol.constructType(emptyArray(), false) } } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/tower/FirTowerResolveTask.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/tower/FirTowerResolveTask.kt index e79f94c78a1..c23d79bde97 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/tower/FirTowerResolveTask.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/tower/FirTowerResolveTask.kt @@ -119,7 +119,7 @@ internal abstract class FirBaseTowerResolveTask( this.symbol = it this.source = source?.fakeElement(KtFakeSourceElementKind.ImplicitReceiver) }.apply { - setTypeOfQualifier(components.session) + setTypeOfQualifier(components) } ExpressionReceiverValue(resolvedQualifier) } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/tower/TowerLevels.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/tower/TowerLevels.kt index 5505948a31c..c4c5a82c91f 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/tower/TowerLevels.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/tower/TowerLevels.kt @@ -363,7 +363,7 @@ internal class ScopeTowerLevel( this.symbol = this@toResolvedQualifierExpressionReceiver this.source = source?.fakeElement(KtFakeSourceElementKind.ImplicitReceiver) }.apply { - setTypeOfQualifier(bodyResolveComponents.session) + setTypeOfQualifier(bodyResolveComponents) } return ExpressionReceiverValue(resolvedQualifier) } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirQualifierResolverImpl.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirQualifierResolverImpl.kt index 63248edf271..4be4eb379bd 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirQualifierResolverImpl.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirQualifierResolverImpl.kt @@ -18,7 +18,10 @@ import org.jetbrains.kotlin.name.FqName @NoMutableState class FirQualifierResolverImpl(val session: FirSession) : FirQualifierResolver() { - override fun resolveSymbolWithPrefix(parts: List, prefix: ClassId): FirClassifierSymbol<*>? { + override fun resolveSymbolWithPrefix( + parts: List, prefix: ClassId + ): FirClassifierSymbol<*>? { + val symbolProvider = session.symbolProvider val fqName = ClassId( diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirTypeResolverImpl.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirTypeResolverImpl.kt index 02f181de887..17af1d0a3c2 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirTypeResolverImpl.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirTypeResolverImpl.kt @@ -118,6 +118,10 @@ class FirTypeResolverImpl(private val session: FirSession) : FirTypeResolver() { } } + session.lookupTracker?.recordUserTypeRefLookup( + typeRef, scopes.asSequence().flatMap { it.scopeOwnerLookupNames }.asIterable(), useSiteFile?.source + ) + for (scope in scopes) { if (applicability == CandidateApplicability.RESOLVED) break scope.processClassifiersByNameWithSubstitution(qualifier.first().name) { symbol, substitutorFromScope -> @@ -205,7 +209,7 @@ class FirTypeResolverImpl(private val session: FirSession) : FirTypeResolver() { @OptIn(SymbolInternals::class) private fun FirQualifierResolver.resolveEnumEntrySymbol( qualifier: List, - classId: ClassId + classId: ClassId, ): FirVariableSymbol? { // Assuming the current qualifier refers to an enum entry, we drop the last part so we get a reference to the enum class. val enumClassSymbol = resolveSymbolWithPrefix(qualifier.dropLast(1), classId) ?: return null @@ -453,6 +457,8 @@ class FirTypeResolverImpl(private val session: FirSession) : FirTypeResolver() { } } else -> error(typeRef.render()) + }.also { + session.lookupTracker?.recordTypeResolveAsLookup(it.type, typeRef.source, useSiteFile?.source) } } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirSpecificTypeResolverTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirSpecificTypeResolverTransformer.kt index 681d1be2b24..40ecd065b4e 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirSpecificTypeResolverTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirSpecificTypeResolverTransformer.kt @@ -15,8 +15,6 @@ import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic import org.jetbrains.kotlin.fir.diagnostics.ConeSimpleDiagnostic import org.jetbrains.kotlin.fir.diagnostics.ConeUnexpectedTypeArgumentsError import org.jetbrains.kotlin.fir.expressions.FirStatement -import org.jetbrains.kotlin.fir.lookupTracker -import org.jetbrains.kotlin.fir.recordTypeLookup import org.jetbrains.kotlin.fir.render import org.jetbrains.kotlin.fir.resolve.FirTypeResolutionResult import org.jetbrains.kotlin.fir.resolve.SupertypeSupplier @@ -87,11 +85,11 @@ class FirSpecificTypeResolverTransformer( @OptIn(PrivateForInline::class) override fun transformTypeRef(typeRef: FirTypeRef, data: ScopeClassDeclaration): FirResolvedTypeRef { - session.lookupTracker?.recordTypeLookup(typeRef, data.scopes.flatMap { it.scopeOwnerLookupNames }, currentFile?.source) withBareTypes(allowed = false) { typeRef.transformChildren(this, data) } val (resolvedType, diagnostic) = resolveType(typeRef, data) + return transformType(typeRef, resolvedType, diagnostic, data) } @@ -101,7 +99,6 @@ class FirSpecificTypeResolverTransformer( data: ScopeClassDeclaration ): FirResolvedTypeRef { functionTypeRef.transformChildren(this, data) - session.lookupTracker?.recordTypeLookup(functionTypeRef, data.scopes.flatMap { it.scopeOwnerLookupNames }, currentFile?.source) val resolvedTypeWithDiagnostic = resolveType(functionTypeRef, data) val resolvedType = resolvedTypeWithDiagnostic.type.takeIfAcceptable() val diagnostic = resolvedTypeWithDiagnostic.diagnostic @@ -254,6 +251,7 @@ class FirSpecificTypeResolverTransformer( val typeRefToTry = buildUserTypeRef { qualifier += qualifiersToTry isMarkedNullable = false + source = typeRef.source } val (resolvedType, diagnostic) = resolveType(typeRefToTry, data) if (resolvedType is ConeErrorType || diagnostic != null) continue diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirSupertypesResolution.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirSupertypesResolution.kt index 56f10e20dda..d36fce8cf95 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirSupertypesResolution.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirSupertypesResolution.kt @@ -8,7 +8,8 @@ package org.jetbrains.kotlin.fir.resolve.transformers import kotlinx.collections.immutable.PersistentList import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toPersistentList -import org.jetbrains.kotlin.fir.* +import org.jetbrains.kotlin.fir.FirElement +import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.utils.expandedConeType import org.jetbrains.kotlin.fir.declarations.utils.isCompanion @@ -20,6 +21,7 @@ import org.jetbrains.kotlin.fir.expressions.FirStatement import org.jetbrains.kotlin.fir.extensions.FirSupertypeGenerationExtension import org.jetbrains.kotlin.fir.extensions.extensionService import org.jetbrains.kotlin.fir.extensions.supertypeGenerators +import org.jetbrains.kotlin.fir.render import org.jetbrains.kotlin.fir.resolve.* import org.jetbrains.kotlin.fir.resolve.dfa.cfg.isLocalClassOrAnonymousObject import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeTypeParameterSupertype @@ -41,7 +43,7 @@ import org.jetbrains.kotlin.fir.types.builder.buildErrorTypeRef import org.jetbrains.kotlin.fir.types.impl.FirImplicitBuiltinTypeRef import org.jetbrains.kotlin.fir.visitors.FirDefaultTransformer import org.jetbrains.kotlin.fir.visitors.FirDefaultVisitor -import org.jetbrains.kotlin.fir.visitors.FirTransformer +import org.jetbrains.kotlin.fir.withFileAnalysisExceptionWrapping import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.types.model.TypeArgumentMarker import org.jetbrains.kotlin.util.PrivateForInline @@ -450,16 +452,6 @@ open class FirSupertypeResolverVisitor( supertypeRefs: List, ): List { return resolveSpecificClassLikeSupertypes(classLikeDeclaration) { transformer, scopeDeclaration -> - if (!classLikeDeclaration.isLocalClassOrAnonymousObject()) { - session.lookupTracker?.let { - val fileSource = getFirClassifierContainerFileIfAny(classLikeDeclaration.symbol)?.source - val scopeOwnerLookupNames = scopeDeclaration.scopes.flatMap { scope -> scope.scopeOwnerLookupNames } - for (supertypeRef in supertypeRefs) { - it.recordTypeLookup(supertypeRef, scopeOwnerLookupNames, fileSource) - } - } - } - supertypeRefs.mapTo(mutableListOf()) { val superTypeRef = it.transform(transformer, scopeDeclaration) val typeParameterType = superTypeRef.coneTypeSafe() diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt index 6a20a6b99e3..33afd025695 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt @@ -158,16 +158,25 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT }, data, ) + + fun FirStatement.alsoRecordLookup() = also { + if (transformedCallee is FirExpression && transformedCallee.isResolved) { + session.lookupTracker?.recordTypeResolveAsLookup( + transformedCallee.resolvedType, callee.source, components.file.source + ) + } + } + // NB: here we can get raw expression because of dropped qualifiers (see transform callee), // so candidate existence must be checked before calling completion if (transformedCallee is FirQualifiedAccessExpression && transformedCallee.candidate() != null) { if (!transformedCallee.isAcceptableResolvedQualifiedAccess()) { - return qualifiedAccessExpression + return qualifiedAccessExpression.alsoRecordLookup() } callCompleter.completeCall(transformedCallee, data) } else { transformedCallee - } + }.alsoRecordLookup() } } diff --git a/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/FirLookupTrackerComponent.kt b/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/FirLookupTrackerComponent.kt index ec4209f8aeb..3ae90b53291 100644 --- a/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/FirLookupTrackerComponent.kt +++ b/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/FirLookupTrackerComponent.kt @@ -40,20 +40,22 @@ fun FirLookupTrackerComponent.recordCallLookup(callInfo: AbstractCallInfo, inSco recordNameLookup(callInfo.name, inScopes, callInfo.callSite.source, callInfo.containingFile.source) } -fun FirLookupTrackerComponent.recordTypeLookup(typeRef: FirTypeRef, inScopes: Iterable, fileSource: KtSourceElement?) { - if (typeRef is FirUserTypeRef) recordNameLookup(typeRef.qualifier.first().name, inScopes, typeRef.source, fileSource) -} - fun FirLookupTrackerComponent.recordClassLikeLookup(classId: ClassId, source: KtSourceElement?, fileSource: KtSourceElement?) { if (!classId.isLocal && classId !in StandardClassIds.allBuiltinTypes) { - recordLookup(classId.relativeClassName.asString(), classId.packageFqName.asString(), source, fileSource) - if (classId.shortClassName == DEFAULT_NAME_FOR_COMPANION_OBJECT) { - recordLookup( - classId.outerClassId!!.relativeClassName.asString(), - classId.outerClassId!!.packageFqName.asString(), - source, fileSource - ) - } + val classFqName = classId.asSingleFqName() + recordLookup(classFqName.shortName().asString(), classFqName.parent().asString(), source, fileSource) + } +} + +fun FirLookupTrackerComponent.recordCompanionLookup(classId: ClassId, source: KtSourceElement?, fileSource: KtSourceElement?) { + if (!classId.isLocal && classId !in StandardClassIds.allBuiltinTypes) { + val classFqName = classId.asSingleFqName() + recordLookup(classFqName.shortName().asString(), classFqName.parent().asString(), source, fileSource) + recordLookup( + classFqName.parent().shortName().asString(), + classFqName.parent().parent().asString(), + source, fileSource + ) } } @@ -82,6 +84,15 @@ fun FirLookupTrackerComponent.recordTypeResolveAsLookup(typeRef: FirTypeRef, sou recordTypeResolveAsLookup(typeRef.type, source, fileSource) } +fun FirLookupTrackerComponent.recordUserTypeRefLookup(typeRef: FirUserTypeRef, inScopes: Iterable, fileSource: KtSourceElement?) { + inScopes.forEach { scope -> + typeRef.qualifier.fold(FqName(scope)) { result, suffix -> + recordLookup(suffix.name.asString(), result.asString(), typeRef.source, fileSource) + result.child(suffix.name) + } + } +} + // TODO: review all places that record resolved type as lookup and consider minimize the number of them; see #KT-66366 fun FirLookupTrackerComponent.recordTypeResolveAsLookup(type: ConeKotlinType?, source: KtSourceElement?, fileSource: KtSourceElement?) { if (type == null) return diff --git a/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/JvmLookupTrackerTestGenerated.java b/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/JvmLookupTrackerTestGenerated.java index 187582960b4..a36de98b12e 100644 --- a/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/JvmLookupTrackerTestGenerated.java +++ b/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/JvmLookupTrackerTestGenerated.java @@ -34,6 +34,11 @@ public class JvmLookupTrackerTestGenerated extends AbstractJvmLookupTrackerTest runTest("jps/jps-plugin/testData/incremental/lookupTracker/jvm/classifierMembers/"); } + @TestMetadata("companion") + public void testCompanion() { + runTest("jps/jps-plugin/testData/incremental/lookupTracker/jvm/companion/"); + } + @TestMetadata("conventions") public void testConventions() { runTest("jps/jps-plugin/testData/incremental/lookupTracker/jvm/conventions/"); @@ -64,6 +69,16 @@ public class JvmLookupTrackerTestGenerated extends AbstractJvmLookupTrackerTest runTest("jps/jps-plugin/testData/incremental/lookupTracker/jvm/localDeclarations/"); } + @TestMetadata("namedCompanion") + public void testNamedCompanion() { + runTest("jps/jps-plugin/testData/incremental/lookupTracker/jvm/namedCompanion/"); + } + + @TestMetadata("nested") + public void testNested() { + runTest("jps/jps-plugin/testData/incremental/lookupTracker/jvm/nested/"); + } + @TestMetadata("packageDeclarations") public void testPackageDeclarations() { runTest("jps/jps-plugin/testData/incremental/lookupTracker/jvm/packageDeclarations/"); diff --git a/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/K1JvmLookupTrackerTestGenerated.java b/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/K1JvmLookupTrackerTestGenerated.java index 0f23527f1e8..8e25e455c18 100644 --- a/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/K1JvmLookupTrackerTestGenerated.java +++ b/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/K1JvmLookupTrackerTestGenerated.java @@ -34,6 +34,11 @@ public class K1JvmLookupTrackerTestGenerated extends AbstractK1JvmLookupTrackerT runTest("jps/jps-plugin/testData/incremental/lookupTracker/jvm/classifierMembers/"); } + @TestMetadata("companion") + public void testCompanion() { + runTest("jps/jps-plugin/testData/incremental/lookupTracker/jvm/companion/"); + } + @TestMetadata("conventions") public void testConventions() { runTest("jps/jps-plugin/testData/incremental/lookupTracker/jvm/conventions/"); @@ -64,6 +69,16 @@ public class K1JvmLookupTrackerTestGenerated extends AbstractK1JvmLookupTrackerT runTest("jps/jps-plugin/testData/incremental/lookupTracker/jvm/localDeclarations/"); } + @TestMetadata("namedCompanion") + public void testNamedCompanion() { + runTest("jps/jps-plugin/testData/incremental/lookupTracker/jvm/namedCompanion/"); + } + + @TestMetadata("nested") + public void testNested() { + runTest("jps/jps-plugin/testData/incremental/lookupTracker/jvm/nested/"); + } + @TestMetadata("packageDeclarations") public void testPackageDeclarations() { runTest("jps/jps-plugin/testData/incremental/lookupTracker/jvm/packageDeclarations/"); diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/companionObjectNameChanged/fir-build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/companionObjectNameChanged/fir-build.log index cf5408145f4..6544c7c62e7 100644 --- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/companionObjectNameChanged/fir-build.log +++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/companionObjectNameChanged/fir-build.log @@ -2,27 +2,19 @@ After chunkBuildStarted. Marked as dirty by Kotlin: src/A.kt -Cleaning output files: - out/production/module/A$Companion.class - out/production/module/A.class - out/production/module/META-INF/module.kotlin_module -End of files -Compiling files: - src/A.kt -End of files -After build round. Marked as dirty by Kotlin: src/companionExtension.kt src/companionReferenceExplicit.kt src/companionReferenceImplicit.kt -Exit code: ADDITIONAL_PASS_REQUIRED ------------------------------------------- Cleaning output files: + out/production/module/A$Companion.class + out/production/module/A.class out/production/module/CompanionExtensionKt.class out/production/module/CompanionReferenceExplicitKt.class out/production/module/CompanionReferenceImplicitKt.class out/production/module/META-INF/module.kotlin_module End of files Compiling files: + src/A.kt src/companionExtension.kt src/companionReferenceExplicit.kt src/companionReferenceImplicit.kt @@ -30,13 +22,12 @@ End of files Exit code: ABORT ------------------------------------------ COMPILATION FAILED +Unresolved reference 'Companion'. +Unresolved reference 'x'. +Unresolved reference 'Companion'. ================ Step #2 ================= -Cleaning output files: - out/production/module/A$AA.class - out/production/module/A.class -End of files Compiling files: src/A.kt src/companionExtension.kt diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/classifierMembers/constraints.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/classifierMembers/constraints.kt index 4464ec19bfa..1694d4a455a 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/classifierMembers/constraints.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/classifierMembers/constraints.kt @@ -2,6 +2,6 @@ package foo import bar.* -/*p:foo*/fun , C, D> test() - where C : /*p:bar p:foo*/Number, C : /*p:bar p:foo*/Comparable, D : /*p:bar p:foo*/B +/*p:foo*/fun , C, D> test() + where C : /*p:bar p:foo p:kotlin*/Number, C : /*p:bar p:foo p:kotlin p:kotlin(Number)*/Comparable, D : /*p:bar p:foo*/B {} diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/classifierMembers/foo.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/classifierMembers/foo.kt index 897bc92e0bf..8e1adc93c7f 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/classifierMembers/foo.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/classifierMembers/foo.kt @@ -6,10 +6,10 @@ import bar.* val a = 1 var b = "" - val c: /*p:bar p:foo*/String + val c: /*p:bar p:foo p:foo.A*/String get() = /*p:foo.A*/b - var d: /*p:bar p:foo*/String = "ddd" + var d: /*p:bar p:foo p:foo.A*/String = "ddd" get() = field set(v) { field = v } @@ -27,7 +27,7 @@ import bar.* val a = 1 companion object CO { - fun bar(a: /*p:bar p:foo*/Int) {} + fun bar(a: /*p:bar p:foo p:foo.A p:foo.A.B*/Int) {} } } @@ -44,7 +44,7 @@ import bar.* } /*p:foo*/interface I { - var a: /*p:bar p:foo*/Int + var a: /*p:bar p:foo p:foo.I*/Int fun foo() class NI @@ -64,8 +64,8 @@ import bar.* val a = 1 fun foo() { /*p:foo.E*/a - /*p:bar p:foo p:foo.E p:foo.E(a) p:kotlin.Enum p:kotlin.Enum.Companion*/Y.a + /*p:bar p:foo p:foo(E) p:foo.E p:foo.E(a) p:kotlin(Enum) p:kotlin.Enum p:kotlin.Enum(Companion) p:kotlin.Enum.Companion*/Y.a /*p:foo.E*/foo() - /*p:bar p:foo p:foo.E p:foo.E(foo) p:kotlin.Enum p:kotlin.Enum.Companion*/X.foo() + /*p:bar p:foo p:foo(E) p:foo.E p:foo.E(foo) p:kotlin(Enum) p:kotlin.Enum p:kotlin.Enum(Companion) p:kotlin.Enum.Companion*/X.foo() } } diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/classifierMembers/usages.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/classifierMembers/usages.kt index 61ed91c349f..676737d327a 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/classifierMembers/usages.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/classifierMembers/usages.kt @@ -8,43 +8,43 @@ import bar.* /*p:foo p:foo.A(c)*/A().c /*p:foo p:foo.A(d)*/A().d = "new value" /*p:foo p:foo.A(foo)*/A().foo() - /*p:foo p:foo.A.B(a)*/A.B().a - /*p:bar(bar) p:foo p:foo(bar) p:foo.A.B.CO(bar)*/A.B.bar(1) - /*p:bar(bar) p:foo p:foo(bar) p:foo.A.B.CO(bar)*/A.B.CO.bar(1) - /*p:foo*/A - /*p:foo p:foo.A(a) p:foo.A.Companion(a)*/A.a - /*p:bar(baz) p:foo p:foo(baz) p:foo.A(baz) p:foo.A.Companion(baz)*/A.baz() - /*p:foo*/A.Companion - /*p:bar(baz) p:foo p:foo(baz) p:foo.A(baz) p:foo.A.Companion(baz)*/A.Companion.baz() - /*p:foo*/A.O - /*p:foo p:foo.A.O(v)*/A.O.v = "OK" + /*p:bar p:foo p:foo.A(B) p:foo.A(Companion) p:foo.A.B(a)*/A.B().a + /*p:bar p:bar(bar) p:foo p:foo(bar) p:foo.A(B) p:foo.A(Companion) p:foo.A.B(CO) p:foo.A.B(bar) p:foo.A.B.CO(bar)*/A./*p:foo.A.B(CO)*/B.bar(1) + /*p:bar p:bar(bar) p:foo p:foo(bar) p:foo.A(B) p:foo.A(Companion) p:foo.A.B(CO) p:foo.A.B.CO(bar)*/A./*p:foo.A.B(CO)*/B./*p:foo.A.B*/CO.bar(1) + /*p:foo p:foo.A(Companion)*/A + /*p:bar p:foo p:foo.A(Companion) p:foo.A(a) p:foo.A.Companion(a)*/A.a + /*p:bar p:bar(baz) p:foo p:foo(baz) p:foo.A(Companion) p:foo.A(baz) p:foo.A.Companion(baz)*/A.baz() + /*p:bar p:foo p:foo.A(Companion)*/A./*p:foo.A*/Companion + /*p:bar p:bar(baz) p:foo p:foo(baz) p:foo.A(Companion) p:foo.A(baz) p:foo.A.Companion(baz)*/A./*p:foo.A*/Companion.baz() + /*p:bar p:foo p:foo.A(Companion) p:foo.A(O)*/A./*p:foo.A*/O + /*p:bar p:foo p:foo.A(Companion) p:foo.A(O) p:foo.A.O(v)*/A./*p:foo.A*/O.v = "OK" - /*p:foo.I(a)*/i.a = 2 - /*p:foo p:foo.Obj(a)*/Obj.a - /*p:bar(foo) p:foo p:foo(foo) p:foo.Obj(foo)*/Obj.foo() + /*p:foo(I) p:foo.I(a)*/i.a = 2 + /*p:bar p:foo p:foo.Obj(a)*/Obj.a + /*p:bar p:bar(foo) p:foo p:foo(foo) p:foo.Obj(foo)*/Obj.foo() var ii: /*p:bar p:foo*/I = /*p:foo*/Obj - /*p:foo.I(a)*/ii.a - /*p:foo.I(foo)*/ii.foo() - /*p:foo p:foo.Obj(b)*/Obj.b - val iii = /*p:bar(bar) p:foo p:foo(I) p:foo(bar) p:foo.Obj(bar)*/Obj.bar() - /*p:foo.I(foo)*/iii.foo() + /*p:foo(I) p:foo.I(a)*/ii.a + /*p:foo(I) p:foo.I(foo)*/ii.foo() + /*p:bar p:foo p:foo.Obj(b)*/Obj.b + val iii = /*p:bar p:bar(bar) p:foo p:foo(I) p:foo(bar) p:foo.Obj(bar)*/Obj.bar() + /*p:foo(I) p:foo.I(foo)*/iii.foo() - /*p:bar p:foo p:foo.E(X)*/E.X - /*p:bar p:foo p:foo.E(X) p:foo.E(a)*/E.X.a - /*p:bar p:foo p:foo.E(Y) p:foo.E(foo)*/E.Y.foo() + /*p:bar p:foo p:foo.E(X)*/E./*p:foo(E)*/X + /*p:bar p:foo p:foo.E(X) p:foo.E(a)*/E./*p:foo(E)*/X.a + /*p:bar p:foo p:foo.E(Y) p:foo.E(foo)*/E./*p:foo(E)*/Y.foo() /*p:bar p:foo p:foo.E(values) p:kotlin(Array)*/E.values() /*p:bar p:foo p:foo.E(valueOf)*/E.valueOf("") } /*p:foo*/fun classifiers( a: /*p:bar p:foo*/A, - ab: /*p:bar p:foo*/A.B, - ac: /*p:bar p:foo*/A.C, - abCo: /*p:bar p:foo*/A.B.CO, - aCompanion: /*p:bar p:foo*/A.Companion, - aO: /*p:bar p:foo*/A.O, + ab: /*p:bar p:bar.A(B) p:foo p:foo.A(B)*/A.B, + ac: /*p:bar p:bar.A(C) p:foo p:foo.A(C)*/A.C, + abCo: /*p:bar p:bar.A(B) p:bar.A.B(CO) p:foo p:foo.A(B) p:foo.A.B(CO)*/A.B.CO, + aCompanion: /*p:bar p:bar.A(Companion) p:foo p:foo.A(Companion)*/A.Companion, + aO: /*p:bar p:bar.A(O) p:foo p:foo.A(O)*/A.O, i: /*p:bar p:foo*/I, - ni: /*p:bar p:foo*/I.NI, + ni: /*p:bar p:bar.I(NI) p:foo p:foo.I(NI)*/I.NI, obj: /*p:bar p:foo*/Obj, e: /*p:bar p:foo*/E ) {} diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/classifierMembers/usages.kt.new.2 b/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/classifierMembers/usages.kt.new.2 index f8082c8ab06..b6c2d28c28e 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/classifierMembers/usages.kt.new.2 +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/classifierMembers/usages.kt.new.2 @@ -8,32 +8,32 @@ import bar.* /*p:foo p:foo.A(c)*/A().c /*p:foo p:foo.A(d)*/A().d = "new value" /*p:foo p:foo.A(foo)*/A().foo() - /*p:foo p:foo.A.B(a)*/A.B().a - /*p:bar(bar) p:foo p:foo(bar) p:foo.A.B.CO(bar)*/A.B.bar(1) - /*p:bar(bar) p:foo p:foo(bar) p:foo.A.B.CO(bar)*/A.B.CO.bar(1) - /*p:foo*/A - /*p:foo p:foo.A(a) p:foo.A.Companion(a)*/A.a - /*p:bar(baz) p:foo p:foo(baz) p:foo.A(baz) p:foo.A.Companion(baz)*/A.baz() - /*p:foo*/A.Companion - /*p:bar(baz) p:foo p:foo(baz) p:foo.A(baz) p:foo.A.Companion(baz)*/A.Companion.baz() - /*p:foo*/A.O - /*p:foo p:foo.A.O(v)*/A.O.v = "OK" - /*p:bar(vala) p:foo p:foo(vala) p:foo.A(vala) p:foo.A.Companion(vala)*/A.vala - /*p:bar(vara) p:foo p:foo(vara) p:foo.A(vara) p:foo.A.Companion(vara)*/A.vara() + /*p:bar p:foo p:foo.A(B) p:foo.A(Companion) p:foo.A.B(a)*/A.B().a + /*p:bar p:bar(bar) p:foo p:foo(bar) p:foo.A(B) p:foo.A(Companion) p:foo.A.B(CO) p:foo.A.B(bar) p:foo.A.B.CO(bar)*/A./*p:foo.A.B(CO)*/B.bar(1) + /*p:bar p:bar(bar) p:foo p:foo(bar) p:foo.A(B) p:foo.A(Companion) p:foo.A.B(CO) p:foo.A.B.CO(bar)*/A./*p:foo.A.B(CO)*/B./*p:foo.A.B*/CO.bar(1) + /*p:foo p:foo.A(Companion)*/A + /*p:bar p:foo p:foo.A(Companion) p:foo.A(a) p:foo.A.Companion(a)*/A.a + /*p:bar p:bar(baz) p:foo p:foo(baz) p:foo.A(Companion) p:foo.A(baz) p:foo.A.Companion(baz)*/A.baz() + /*p:bar p:foo p:foo.A(Companion)*/A./*p:foo.A*/Companion + /*p:bar p:bar(baz) p:foo p:foo(baz) p:foo.A(Companion) p:foo.A(baz) p:foo.A.Companion(baz)*/A./*p:foo.A*/Companion.baz() + /*p:bar p:foo p:foo.A(Companion) p:foo.A(O)*/A./*p:foo.A*/O + /*p:bar p:foo p:foo.A(Companion) p:foo.A(O) p:foo.A.O(v)*/A./*p:foo.A*/O.v = "OK" + /*p:bar p:bar(vala) p:foo p:foo(vala) p:foo.A(Companion) p:foo.A(vala) p:foo.A.Companion(vala)*/A.vala + /*p:bar p:bar(vara) p:foo p:foo(vara) p:foo.A(Companion) p:foo.A(vara) p:foo.A.Companion(vara)*/A.vara() - /*p:foo.I(a)*/i.a = 2 - /*p:foo p:foo.Obj(a)*/Obj.a - /*p:bar(foo) p:foo p:foo(foo) p:foo.Obj(foo)*/Obj.foo() + /*p:foo(I) p:foo.I(a)*/i.a = 2 + /*p:bar p:foo p:foo.Obj(a)*/Obj.a + /*p:bar p:bar(foo) p:foo p:foo(foo) p:foo.Obj(foo)*/Obj.foo() var ii: /*p:bar p:foo*/I = /*p:foo*/Obj - /*p:foo.I(a)*/ii.a - /*p:foo.I(foo)*/ii.foo() - /*p:foo p:foo.Obj(b)*/Obj.b - val iii = /*p:bar(bar) p:foo p:foo(I) p:foo(bar) p:foo.Obj(bar)*/Obj.bar() - /*p:foo.I(foo)*/iii.foo() + /*p:foo(I) p:foo.I(a)*/ii.a + /*p:foo(I) p:foo.I(foo)*/ii.foo() + /*p:bar p:foo p:foo.Obj(b)*/Obj.b + val iii = /*p:bar p:bar(bar) p:foo p:foo(I) p:foo(bar) p:foo.Obj(bar)*/Obj.bar() + /*p:foo(I) p:foo.I(foo)*/iii.foo() - /*p:bar p:foo p:foo.E(X)*/E.X - /*p:bar p:foo p:foo.E(X) p:foo.E(a)*/E.X.a - /*p:bar p:foo p:foo.E(Y) p:foo.E(foo)*/E.Y.foo() + /*p:bar p:foo p:foo.E(X)*/E./*p:foo(E)*/X + /*p:bar p:foo p:foo.E(X) p:foo.E(a)*/E./*p:foo(E)*/X.a + /*p:bar p:foo p:foo.E(Y) p:foo.E(foo)*/E./*p:foo(E)*/Y.foo() /*p:bar p:foo p:foo.E(values) p:kotlin(Array)*/E.values() /*p:bar p:foo p:foo.E(valueOf)*/E.valueOf("") /*p:bar p:bar(foo) p:foo p:foo(foo) p:foo.E(foo)*/E.foo @@ -42,13 +42,13 @@ import bar.* /*p:foo*/fun classifiers( a: /*p:bar p:foo*/A, - ab: /*p:bar p:foo*/A.B, - ac: /*p:bar p:foo*/A.C, - abCo: /*p:bar p:foo*/A.B.CO, - aCompanion: /*p:bar p:foo*/A.Companion, - aO: /*p:bar p:foo*/A.O, + ab: /*p:bar p:bar.A(B) p:foo p:foo.A(B)*/A.B, + ac: /*p:bar p:bar.A(C) p:foo p:foo.A(C)*/A.C, + abCo: /*p:bar p:bar.A(B) p:bar.A.B(CO) p:foo p:foo.A(B) p:foo.A.B(CO)*/A.B.CO, + aCompanion: /*p:bar p:bar.A(Companion) p:foo p:foo.A(Companion)*/A.Companion, + aO: /*p:bar p:bar.A(O) p:foo p:foo.A(O)*/A.O, i: /*p:bar p:foo*/I, - ni: /*p:bar p:foo*/I.NI, + ni: /*p:bar p:bar.I(NI) p:foo p:foo.I(NI)*/I.NI, obj: /*p:bar p:foo*/Obj, e: /*p:bar p:foo*/E ) {} diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/conventions/comparison.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/conventions/comparison.kt index c25e7353bb7..9c2ca577213 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/conventions/comparison.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/conventions/comparison.kt @@ -1,18 +1,18 @@ package foo.bar /*p:foo.bar*/fun testComparisons(a: /*p:foo.bar*/A, b: /*p:foo.bar*/Int, c: /*p:foo.bar*/Any, na: /*p:foo.bar*/A?) { - a == c - a != c - na == a - na == null + /*p:foo.bar(A)*/a == c + /*p:foo.bar(A)*/a != c + /*p:foo.bar(A)*/na == /*p:foo.bar(A)*/a + /*p:foo.bar(A)*/na == null - /*p:foo.bar.A(compareTo)*/a > b - /*p:foo.bar.A(compareTo)*/a < b - /*p:foo.bar.A(compareTo)*/a >= b - /*p:foo.bar.A(compareTo)*/a <= b + /*p:foo.bar(A) p:foo.bar.A(compareTo)*/a > b + /*p:foo.bar(A) p:foo.bar.A(compareTo)*/a < b + /*p:foo.bar(A) p:foo.bar.A(compareTo)*/a >= b + /*p:foo.bar(A) p:foo.bar.A(compareTo)*/a <= b - /*p:foo.bar(compareTo) p:foo.bar.A(compareTo)*/a > c - /*p:foo.bar(compareTo) p:foo.bar.A(compareTo)*/a < c - /*p:foo.bar(compareTo) p:foo.bar.A(compareTo)*/a >= c - /*p:foo.bar(compareTo) p:foo.bar.A(compareTo)*/a <= c + /*p:foo.bar(A) p:foo.bar(compareTo) p:foo.bar.A(compareTo)*/a > c + /*p:foo.bar(A) p:foo.bar(compareTo) p:foo.bar.A(compareTo)*/a < c + /*p:foo.bar(A) p:foo.bar(compareTo) p:foo.bar.A(compareTo)*/a >= c + /*p:foo.bar(A) p:foo.bar(compareTo) p:foo.bar.A(compareTo)*/a <= c } diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/conventions/delegateProperty.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/conventions/delegateProperty.kt index e296afaaf7f..568d8e9a8ac 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/conventions/delegateProperty.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/conventions/delegateProperty.kt @@ -3,16 +3,16 @@ package foo.bar /*p:kotlin.reflect(KProperty)*/import kotlin.reflect.KProperty /*p:foo.bar*/class D1 { - operator fun getValue(t: /*p:foo.bar*/Any?, p: /*p:foo.bar*/KProperty<*>) = 1 + operator fun getValue(t: /*p:foo.bar*/Any?, p: /*p:foo.bar p:kotlin.reflect*/KProperty<*>) = 1 } -/*p:foo.bar*/operator fun /*p:foo.bar*/D1.setValue(t: /*p:foo.bar*/Any?, p: /*p:foo.bar*/KProperty<*>, v: /*p:foo.bar*/Int) {} +/*p:foo.bar*/operator fun /*p:foo.bar*/D1.setValue(t: /*p:foo.bar*/Any?, p: /*p:foo.bar p:kotlin.reflect*/KProperty<*>, v: /*p:foo.bar*/Int) {} /*p:foo.bar(D2)*/open class D2 { - operator fun setValue(t: /*p:foo.bar*/Any?, p: /*p:foo.bar*/KProperty<*>, v: /*p:foo.bar*/Int) {} + operator fun setValue(t: /*p:foo.bar*/Any?, p: /*p:foo.bar p:kotlin.reflect*/KProperty<*>, v: /*p:foo.bar*/Int) {} } -/*p:foo.bar*/operator fun /*p:foo.bar*/D2.getValue(t: /*p:foo.bar*/Any?, p: /*p:foo.bar*/KProperty<*>) = 1 +/*p:foo.bar*/operator fun /*p:foo.bar*/D2.getValue(t: /*p:foo.bar*/Any?, p: /*p:foo.bar p:kotlin.reflect*/KProperty<*>) = 1 /*p:foo.bar*/operator fun /*p:foo.bar*/D2.provideDelegate(p: /*p:foo.bar*/Any?, k: /*p:foo.bar*/Any) = this /*p:foo.bar*/class D3 : /*p:foo.bar*/D2() { diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/conventions/mathematicalLike.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/conventions/mathematicalLike.kt index ca00c982bc8..a194ba1b297 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/conventions/mathematicalLike.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/conventions/mathematicalLike.kt @@ -1,24 +1,24 @@ package foo.bar /*p:foo.bar*/fun testOperators(a: /*p:foo.bar*/A, b: /*p:foo.bar*/Int) { - var d = a + var d = /*p:foo.bar(A)*/a - d/*p:foo.bar(A) p:foo.bar.A(inc)*/++ - /*p:foo.bar(A) p:foo.bar.A(inc)*/++d - d/*p:foo.bar(A) p:foo.bar(dec) p:foo.bar.A(dec)*/-- - /*p:foo.bar(A) p:foo.bar(dec) p:foo.bar.A(dec)*/--d + /*p:foo.bar(A)*/d/*p:foo.bar(A) p:foo.bar.A(inc)*/++ + /*p:foo.bar(A) p:foo.bar.A(inc)*/++/*p:foo.bar(A)*/d + /*p:foo.bar(A)*/d/*p:foo.bar(A) p:foo.bar(dec) p:foo.bar.A(dec)*/-- + /*p:foo.bar(A) p:foo.bar(dec) p:foo.bar.A(dec)*/--/*p:foo.bar(A)*/d /*p:foo.bar(A) p:foo.bar.A(plus)*/a + b /*p:foo.bar(A) p:foo.bar(minus) p:foo.bar.A(minus)*/a - b - /*p:foo.bar(not) p:foo.bar.A(not)*/!a + /*p:foo.bar(not) p:foo.bar.A(not)*/!/*p:foo.bar(A)*/a // for val - /*p:foo.bar(times) p:foo.bar.A(times) p:foo.bar.A(timesAssign)*/a *= b - /*p:foo.bar(div) p:foo.bar(divAssign) p:foo.bar.A(div) p:foo.bar.A(divAssign)*/a /= b + /*p:foo.bar(A) p:foo.bar(times) p:foo.bar.A(times) p:foo.bar.A(timesAssign)*/a *= b + /*p:foo.bar(A) p:foo.bar(div) p:foo.bar(divAssign) p:foo.bar.A(div) p:foo.bar.A(divAssign)*/a /= b // for var /*p:foo.bar(A) p:foo.bar(plusAssign) p:foo.bar.A(plus) p:foo.bar.A(plusAssign)*/d += b /*p:foo.bar(A) p:foo.bar(minus) p:foo.bar(minusAssign) p:foo.bar.A(minus) p:foo.bar.A(minusAssign)*/d -= b - /*p:foo.bar(times) p:foo.bar.A(times) p:foo.bar.A(timesAssign)*/d *= b - /*p:foo.bar(div) p:foo.bar(divAssign) p:foo.bar.A(div) p:foo.bar.A(divAssign)*/d /= b + /*p:foo.bar(A) p:foo.bar(times) p:foo.bar.A(times) p:foo.bar.A(timesAssign)*/d *= b + /*p:foo.bar(A) p:foo.bar(div) p:foo.bar(divAssign) p:foo.bar.A(div) p:foo.bar.A(divAssign)*/d /= b } diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/conventions/other.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/conventions/other.kt index 7ef4fb5cea8..7e9c46c270a 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/conventions/other.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/conventions/other.kt @@ -1,15 +1,15 @@ package foo.bar /*p:foo.bar*/fun testOther(a: /*p:foo.bar*/A, b: /*p:foo.bar*/Int, c: /*p:foo.bar*/Any, na: /*p:foo.bar*/A?) { - /*p:foo.bar(set) p:foo.bar.A(set)*/a[1] = /*p:foo.bar.A(get)*/a[2] + /*p:foo.bar(A) p:foo.bar(set) p:foo.bar.A(set)*/a[1] = /*p:foo.bar(A) p:foo.bar.A(get)*/a[2] - /*p:foo.bar.A(contains)*/b in a - /*p:foo.bar(contains) p:foo.bar.A(contains) p:kotlin.Boolean(not)*/"s" !in a + /*p:foo.bar.A(contains)*/b in /*p:foo.bar(A)*/a + /*p:foo.bar(contains) p:foo.bar.A(contains) p:kotlin.Boolean(not)*/"s" !in /*p:foo.bar(A)*/a /*p:foo.bar(A) p:foo.bar.A(invoke)*/a() /*p:foo.bar p:foo.bar(A) p:foo.bar(invoke) p:foo.bar.A(invoke)*/a(1) - val (/*p:foo.bar(A) p:foo.bar.A(component1)*/h, /*p:foo.bar(A) p:foo.bar(component2) p:foo.bar.A(component2)*/t) = a; + val (/*p:foo.bar(A) p:foo.bar.A(component1)*/h, /*p:foo.bar(A) p:foo.bar(component2) p:foo.bar.A(component2)*/t) = /*p:foo.bar(A)*/a; for ((/*p:foo.bar(A) p:foo.bar.A(component1)*/f, /*p:foo.bar(A) p:foo.bar(component2) p:foo.bar.A(component2)*/s) in /*p:foo.bar(A) p:foo.bar(hasNext) p:foo.bar.A(hasNext) p:foo.bar.A(iterator) p:foo.bar.A(next)*/a); for ((/*p:foo.bar(A) p:foo.bar.A(component1)*/f, /*p:foo.bar(A) p:foo.bar(component2) p:foo.bar.A(component2)*/s) in /*p:foo.bar(A) p:foo.bar(hasNext) p:foo.bar(iterator) p:foo.bar.A(hasNext) p:foo.bar.A(iterator) p:foo.bar.A(next)*/na); diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/expressionType/genericType.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/expressionType/genericType.kt index 54d4ae90d41..636eb57e35c 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/expressionType/genericType.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/expressionType/genericType.kt @@ -2,9 +2,9 @@ package foo // From KT-10772 Problem with daemon on Idea 15.0.3 & 1-dev-25 -/*p:foo*/fun identity(): (/*p:foo*/T) -> /*p:foo*/T = null as (/*p:foo*/T) -> /*p:foo*/T +/*p:foo*/fun identity(): /*p:kotlin(Function1)*/(/*p:foo*/T) -> /*p:foo*/T = null as /*p:kotlin(Function1)*/(/*p:foo*/T) -> /*p:foo*/T -/*p:foo*/fun compute(f: () -> /*p:foo*/T) { +/*p:foo*/fun compute(f: /*p:kotlin(Function0)*/() -> /*p:foo*/T) { val result = /*p:kotlin(Function0) p:kotlin.Function0(invoke)*/f() } diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/expressionType/inferredType.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/expressionType/inferredType.kt index c4b4b3cf273..3812b68f664 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/expressionType/inferredType.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/expressionType/inferredType.kt @@ -9,8 +9,8 @@ package foo /*p:foo*/fun getListOfA() = /*p:foo p:foo(A) p:kotlin.collections(List)*/listOf(/*p:foo*/A()) /*p:foo*/fun getListOfB() = /*p:foo p:foo(B) p:kotlin.collections(List)*/listOf(/*p:foo*/B()) -/*p:foo*/fun useListOfA(a: /*p:foo*/List) {} -/*p:foo*/fun useListOfB(b: /*p:foo*/List) {} +/*p:foo*/fun useListOfA(a: /*p:foo p:foo(A) p:kotlin.collections*/List) {} +/*p:foo*/fun useListOfB(b: /*p:foo p:foo(B) p:kotlin.collections*/List) {} /*p:foo*/fun testInferredType() { /*p:foo*/useListOfA(/*p:foo p:foo(A) p:kotlin.collections(List)*/getListOfA()) diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/expressionType/lambdaParameterType.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/expressionType/lambdaParameterType.kt index 8c046593b3d..d2102a10aca 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/expressionType/lambdaParameterType.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/expressionType/lambdaParameterType.kt @@ -2,10 +2,10 @@ package foo /*p:foo*/class C -/*p:foo*/fun lambdaConsumer(fn: (/*p:foo*/A)->/*p:foo*/Unit) {} -/*p:foo*/fun extensionConsumer(fn: /*p:foo*/A.()->/*p:foo*/Unit) {} +/*p:foo*/fun lambdaConsumer(fn: /*p:foo(A) p:kotlin(Function1)*/(/*p:foo*/A)->/*p:foo*/Unit) {} +/*p:foo*/fun extensionConsumer(fn: /*p:foo p:kotlin(Function1)*/A.()->/*p:foo*/Unit) {} /*p:foo*/fun testLambdaParameterType() { - /*p:foo*/lambdaConsumer /*p:foo(A) p:kotlin(Function1)*/{ it } + /*p:foo*/lambdaConsumer /*p:foo(A) p:kotlin(Function1)*/{ /*p:foo(A)*/it } /*p:foo*/extensionConsumer /*p:foo(A) p:kotlin(Function1)*/{ this } } diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/packageDeclarations/foo1.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/packageDeclarations/foo1.kt index 42d02bb9c35..7c1f5aa6469 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/packageDeclarations/foo1.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/packageDeclarations/foo1.kt @@ -4,14 +4,14 @@ import bar.* /*p:baz(C)*/import baz.C /*p:foo*/val a = /*p:bar p:foo*/A() -/*p:foo*/var b: /*p:bar p:foo*/baz.B = /*p:bar p:baz(B) p:foo*/baz.B() +/*p:foo*/var b: /*p:bar p:bar.baz(B) p:baz(B) p:foo p:foo.baz(B)*/baz.B = /*p:bar p:baz(B) p:foo*/baz.B() /*p:foo*/fun function(p: /*p:bar p:foo*/B): /*p:bar p:foo*/B { - /*p:foo*/a + /*p:bar(A) p:foo*/a return /*p:bar p:foo*/B() } -/*p:foo*/fun /*p:bar p:foo*/MyClass.extFunc(p: /**p:foo p:bar*//*p:bar p:foo*/Array, e: /*p:bar p:foo*/MyEnum, c: /**???*//*p:bar p:foo*/C): /*p:bar p:foo*/MyInterface { - /*p:bar p:foo p:foo.MyClass*/b +/*p:foo*/fun /*p:bar p:foo*/MyClass.extFunc(p: /**p:foo p:bar*//*p:bar p:bar(B) p:foo p:kotlin*/Array, e: /*p:bar p:foo*/MyEnum, c: /**???*//*p:bar p:baz p:foo*/C): /*p:bar p:foo*/MyInterface { + /*p:bar p:baz(B) p:foo p:foo.MyClass*/b return /*p:bar p:foo p:foo.MyClass*/MyClass() } diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/simple/main.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/simple/main.kt index 33b7fbf143c..c97ea456f9e 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/simple/main.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jsKlib/simple/main.kt @@ -1,6 +1,6 @@ package foo.bar -/*p:foo.bar*/fun main(args: /*p:foo.bar*/Array) { - val f: /*p:foo.bar*/Array +/*p:foo.bar*/fun main(args: /*p:foo.bar p:kotlin*/Array) { + val f: /*p:foo.bar p:kotlin*/Array val s: /*p:foo.bar*/String } diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/SAM/usages.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/SAM/usages.kt index 6df85ec9bc0..48aefff152e 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/SAM/usages.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/SAM/usages.kt @@ -2,9 +2,9 @@ package foo /*p:bar(C)*/import bar.C /*p:bar(SAMInterface)*/import bar.SAMInterface -/*p:foo*/fun foo(c: /*p:foo*/C) { - /*p:bar.C(foo) p:foo(foo)*/c.foo() - /*p:bar(SAMInterface) p:bar.C(foo) p:bar.SAMInterface()*/c.foo /*p:kotlin(Function1)*/{ } +/*p:foo*/fun foo(c: /*p:bar p:foo*/C) { + /*p:bar(C) p:bar.C(foo) p:foo(foo)*/c.foo() + /*p:bar(C) p:bar(SAMInterface) p:bar.C(foo) p:bar.SAMInterface()*/c.foo /*p:kotlin(Function1)*/{ } /*p:bar.C(bar) p:foo p:foo(bar)*/C.bar() /*p:bar(SAMInterface) p:bar.C(bar) p:bar.SAMInterface() p:foo*/C.bar /*p:kotlin(Function1)*/{} diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/classifierMembers/constraints.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/classifierMembers/constraints.kt index 4464ec19bfa..1694d4a455a 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/classifierMembers/constraints.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/classifierMembers/constraints.kt @@ -2,6 +2,6 @@ package foo import bar.* -/*p:foo*/fun , C, D> test() - where C : /*p:bar p:foo*/Number, C : /*p:bar p:foo*/Comparable, D : /*p:bar p:foo*/B +/*p:foo*/fun , C, D> test() + where C : /*p:bar p:foo p:kotlin*/Number, C : /*p:bar p:foo p:kotlin p:kotlin(Number)*/Comparable, D : /*p:bar p:foo*/B {} diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/classifierMembers/foo.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/classifierMembers/foo.kt index 897bc92e0bf..8e1adc93c7f 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/classifierMembers/foo.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/classifierMembers/foo.kt @@ -6,10 +6,10 @@ import bar.* val a = 1 var b = "" - val c: /*p:bar p:foo*/String + val c: /*p:bar p:foo p:foo.A*/String get() = /*p:foo.A*/b - var d: /*p:bar p:foo*/String = "ddd" + var d: /*p:bar p:foo p:foo.A*/String = "ddd" get() = field set(v) { field = v } @@ -27,7 +27,7 @@ import bar.* val a = 1 companion object CO { - fun bar(a: /*p:bar p:foo*/Int) {} + fun bar(a: /*p:bar p:foo p:foo.A p:foo.A.B*/Int) {} } } @@ -44,7 +44,7 @@ import bar.* } /*p:foo*/interface I { - var a: /*p:bar p:foo*/Int + var a: /*p:bar p:foo p:foo.I*/Int fun foo() class NI @@ -64,8 +64,8 @@ import bar.* val a = 1 fun foo() { /*p:foo.E*/a - /*p:bar p:foo p:foo.E p:foo.E(a) p:kotlin.Enum p:kotlin.Enum.Companion*/Y.a + /*p:bar p:foo p:foo(E) p:foo.E p:foo.E(a) p:kotlin(Enum) p:kotlin.Enum p:kotlin.Enum(Companion) p:kotlin.Enum.Companion*/Y.a /*p:foo.E*/foo() - /*p:bar p:foo p:foo.E p:foo.E(foo) p:kotlin.Enum p:kotlin.Enum.Companion*/X.foo() + /*p:bar p:foo p:foo(E) p:foo.E p:foo.E(foo) p:kotlin(Enum) p:kotlin.Enum p:kotlin.Enum(Companion) p:kotlin.Enum.Companion*/X.foo() } } diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/classifierMembers/usages.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/classifierMembers/usages.kt index 61ed91c349f..66303d50aad 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/classifierMembers/usages.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/classifierMembers/usages.kt @@ -8,43 +8,43 @@ import bar.* /*p:foo p:foo.A(c)*/A().c /*p:foo p:foo.A(d)*/A().d = "new value" /*p:foo p:foo.A(foo)*/A().foo() - /*p:foo p:foo.A.B(a)*/A.B().a - /*p:bar(bar) p:foo p:foo(bar) p:foo.A.B.CO(bar)*/A.B.bar(1) - /*p:bar(bar) p:foo p:foo(bar) p:foo.A.B.CO(bar)*/A.B.CO.bar(1) - /*p:foo*/A - /*p:foo p:foo.A(a) p:foo.A.Companion(a)*/A.a - /*p:bar(baz) p:foo p:foo(baz) p:foo.A(baz) p:foo.A.Companion(baz)*/A.baz() - /*p:foo*/A.Companion - /*p:bar(baz) p:foo p:foo(baz) p:foo.A(baz) p:foo.A.Companion(baz)*/A.Companion.baz() - /*p:foo*/A.O - /*p:foo p:foo.A.O(v)*/A.O.v = "OK" + /*p:bar p:foo p:foo.A(B) p:foo.A(Companion) p:foo.A.B(a)*/A.B().a + /*p:bar p:bar(bar) p:foo p:foo(bar) p:foo.A(B) p:foo.A(Companion) p:foo.A.B(CO) p:foo.A.B(bar) p:foo.A.B.CO(bar)*/A./*p:foo.A.B(CO)*/B.bar(1) + /*p:bar p:bar(bar) p:foo p:foo(bar) p:foo.A(B) p:foo.A(Companion) p:foo.A.B(CO) p:foo.A.B.CO(bar)*/A./*p:foo.A.B(CO)*/B./*p:foo.A.B*/CO.bar(1) + /*p:foo p:foo.A(Companion)*/A + /*p:bar p:foo p:foo.A(Companion) p:foo.A(a) p:foo.A.Companion(a)*/A.a + /*p:bar p:bar(baz) p:foo p:foo(baz) p:foo.A(Companion) p:foo.A(baz) p:foo.A.Companion(baz)*/A.baz() + /*p:bar p:foo p:foo.A(Companion)*/A./*p:foo.A*/Companion + /*p:bar p:bar(baz) p:foo p:foo(baz) p:foo.A(Companion) p:foo.A(baz) p:foo.A.Companion(baz)*/A./*p:foo.A*/Companion.baz() + /*p:bar p:foo p:foo.A(Companion) p:foo.A(O)*/A./*p:foo.A*/O + /*p:bar p:foo p:foo.A(Companion) p:foo.A(O) p:foo.A.O(v)*/A./*p:foo.A*/O.v = "OK" - /*p:foo.I(a)*/i.a = 2 - /*p:foo p:foo.Obj(a)*/Obj.a - /*p:bar(foo) p:foo p:foo(foo) p:foo.Obj(foo)*/Obj.foo() + /*p:foo(I) p:foo.I(a)*/i.a = 2 + /*p:bar p:foo p:foo.Obj(a)*/Obj.a + /*p:bar p:bar(foo) p:foo p:foo(foo) p:foo.Obj(foo)*/Obj.foo() var ii: /*p:bar p:foo*/I = /*p:foo*/Obj - /*p:foo.I(a)*/ii.a - /*p:foo.I(foo)*/ii.foo() - /*p:foo p:foo.Obj(b)*/Obj.b - val iii = /*p:bar(bar) p:foo p:foo(I) p:foo(bar) p:foo.Obj(bar)*/Obj.bar() - /*p:foo.I(foo)*/iii.foo() + /*p:foo(I) p:foo.I(a)*/ii.a + /*p:foo(I) p:foo.I(foo)*/ii.foo() + /*p:bar p:foo p:foo.Obj(b)*/Obj.b + val iii = /*p:bar p:bar(bar) p:foo p:foo(I) p:foo(bar) p:foo.Obj(bar)*/Obj.bar() + /*p:foo(I) p:foo.I(foo)*/iii.foo() - /*p:bar p:foo p:foo.E(X)*/E.X - /*p:bar p:foo p:foo.E(X) p:foo.E(a)*/E.X.a - /*p:bar p:foo p:foo.E(Y) p:foo.E(foo)*/E.Y.foo() + /*p:bar p:foo p:foo.E(X)*/E./*p:foo(E)*/X + /*p:bar p:foo p:foo.E(X) p:foo.E(a)*/E./*p:foo(E)*/X.a + /*p:bar p:foo p:foo.E(Y) p:foo.E(foo)*/E./*p:foo(E)*/Y.foo() /*p:bar p:foo p:foo.E(values) p:kotlin(Array)*/E.values() /*p:bar p:foo p:foo.E(valueOf)*/E.valueOf("") } /*p:foo*/fun classifiers( a: /*p:bar p:foo*/A, - ab: /*p:bar p:foo*/A.B, - ac: /*p:bar p:foo*/A.C, - abCo: /*p:bar p:foo*/A.B.CO, - aCompanion: /*p:bar p:foo*/A.Companion, - aO: /*p:bar p:foo*/A.O, + ab: /*p:bar p:bar.A(B) p:foo p:foo.A(B)*/A.B, + ac: /*p:bar p:bar.A(C) p:foo p:foo.A(C)*/A.C, + abCo: /*p:bar p:bar.A(B) p:bar.A.B(CO) p:foo p:foo.A(B) p:foo.A.B(CO)*/A.B.CO, + aCompanion: /*p:bar p:bar.A(Companion) p:foo p:foo.A(Companion)*/A.Companion, + aO: /*p:bar p:bar.A(O) p:foo p:foo.A(O)*/A.O, i: /*p:bar p:foo*/I, - ni: /*p:bar p:foo*/I.NI, + ni: /*p:bar p:bar.I(NI) p:foo p:foo.I(NI)*/I.NI, obj: /*p:bar p:foo*/Obj, e: /*p:bar p:foo*/E -) {} +) {} \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/classifierMembers/usages.kt.new.2 b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/classifierMembers/usages.kt.new.2 index f8082c8ab06..b6c2d28c28e 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/classifierMembers/usages.kt.new.2 +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/classifierMembers/usages.kt.new.2 @@ -8,32 +8,32 @@ import bar.* /*p:foo p:foo.A(c)*/A().c /*p:foo p:foo.A(d)*/A().d = "new value" /*p:foo p:foo.A(foo)*/A().foo() - /*p:foo p:foo.A.B(a)*/A.B().a - /*p:bar(bar) p:foo p:foo(bar) p:foo.A.B.CO(bar)*/A.B.bar(1) - /*p:bar(bar) p:foo p:foo(bar) p:foo.A.B.CO(bar)*/A.B.CO.bar(1) - /*p:foo*/A - /*p:foo p:foo.A(a) p:foo.A.Companion(a)*/A.a - /*p:bar(baz) p:foo p:foo(baz) p:foo.A(baz) p:foo.A.Companion(baz)*/A.baz() - /*p:foo*/A.Companion - /*p:bar(baz) p:foo p:foo(baz) p:foo.A(baz) p:foo.A.Companion(baz)*/A.Companion.baz() - /*p:foo*/A.O - /*p:foo p:foo.A.O(v)*/A.O.v = "OK" - /*p:bar(vala) p:foo p:foo(vala) p:foo.A(vala) p:foo.A.Companion(vala)*/A.vala - /*p:bar(vara) p:foo p:foo(vara) p:foo.A(vara) p:foo.A.Companion(vara)*/A.vara() + /*p:bar p:foo p:foo.A(B) p:foo.A(Companion) p:foo.A.B(a)*/A.B().a + /*p:bar p:bar(bar) p:foo p:foo(bar) p:foo.A(B) p:foo.A(Companion) p:foo.A.B(CO) p:foo.A.B(bar) p:foo.A.B.CO(bar)*/A./*p:foo.A.B(CO)*/B.bar(1) + /*p:bar p:bar(bar) p:foo p:foo(bar) p:foo.A(B) p:foo.A(Companion) p:foo.A.B(CO) p:foo.A.B.CO(bar)*/A./*p:foo.A.B(CO)*/B./*p:foo.A.B*/CO.bar(1) + /*p:foo p:foo.A(Companion)*/A + /*p:bar p:foo p:foo.A(Companion) p:foo.A(a) p:foo.A.Companion(a)*/A.a + /*p:bar p:bar(baz) p:foo p:foo(baz) p:foo.A(Companion) p:foo.A(baz) p:foo.A.Companion(baz)*/A.baz() + /*p:bar p:foo p:foo.A(Companion)*/A./*p:foo.A*/Companion + /*p:bar p:bar(baz) p:foo p:foo(baz) p:foo.A(Companion) p:foo.A(baz) p:foo.A.Companion(baz)*/A./*p:foo.A*/Companion.baz() + /*p:bar p:foo p:foo.A(Companion) p:foo.A(O)*/A./*p:foo.A*/O + /*p:bar p:foo p:foo.A(Companion) p:foo.A(O) p:foo.A.O(v)*/A./*p:foo.A*/O.v = "OK" + /*p:bar p:bar(vala) p:foo p:foo(vala) p:foo.A(Companion) p:foo.A(vala) p:foo.A.Companion(vala)*/A.vala + /*p:bar p:bar(vara) p:foo p:foo(vara) p:foo.A(Companion) p:foo.A(vara) p:foo.A.Companion(vara)*/A.vara() - /*p:foo.I(a)*/i.a = 2 - /*p:foo p:foo.Obj(a)*/Obj.a - /*p:bar(foo) p:foo p:foo(foo) p:foo.Obj(foo)*/Obj.foo() + /*p:foo(I) p:foo.I(a)*/i.a = 2 + /*p:bar p:foo p:foo.Obj(a)*/Obj.a + /*p:bar p:bar(foo) p:foo p:foo(foo) p:foo.Obj(foo)*/Obj.foo() var ii: /*p:bar p:foo*/I = /*p:foo*/Obj - /*p:foo.I(a)*/ii.a - /*p:foo.I(foo)*/ii.foo() - /*p:foo p:foo.Obj(b)*/Obj.b - val iii = /*p:bar(bar) p:foo p:foo(I) p:foo(bar) p:foo.Obj(bar)*/Obj.bar() - /*p:foo.I(foo)*/iii.foo() + /*p:foo(I) p:foo.I(a)*/ii.a + /*p:foo(I) p:foo.I(foo)*/ii.foo() + /*p:bar p:foo p:foo.Obj(b)*/Obj.b + val iii = /*p:bar p:bar(bar) p:foo p:foo(I) p:foo(bar) p:foo.Obj(bar)*/Obj.bar() + /*p:foo(I) p:foo.I(foo)*/iii.foo() - /*p:bar p:foo p:foo.E(X)*/E.X - /*p:bar p:foo p:foo.E(X) p:foo.E(a)*/E.X.a - /*p:bar p:foo p:foo.E(Y) p:foo.E(foo)*/E.Y.foo() + /*p:bar p:foo p:foo.E(X)*/E./*p:foo(E)*/X + /*p:bar p:foo p:foo.E(X) p:foo.E(a)*/E./*p:foo(E)*/X.a + /*p:bar p:foo p:foo.E(Y) p:foo.E(foo)*/E./*p:foo(E)*/Y.foo() /*p:bar p:foo p:foo.E(values) p:kotlin(Array)*/E.values() /*p:bar p:foo p:foo.E(valueOf)*/E.valueOf("") /*p:bar p:bar(foo) p:foo p:foo(foo) p:foo.E(foo)*/E.foo @@ -42,13 +42,13 @@ import bar.* /*p:foo*/fun classifiers( a: /*p:bar p:foo*/A, - ab: /*p:bar p:foo*/A.B, - ac: /*p:bar p:foo*/A.C, - abCo: /*p:bar p:foo*/A.B.CO, - aCompanion: /*p:bar p:foo*/A.Companion, - aO: /*p:bar p:foo*/A.O, + ab: /*p:bar p:bar.A(B) p:foo p:foo.A(B)*/A.B, + ac: /*p:bar p:bar.A(C) p:foo p:foo.A(C)*/A.C, + abCo: /*p:bar p:bar.A(B) p:bar.A.B(CO) p:foo p:foo.A(B) p:foo.A.B(CO)*/A.B.CO, + aCompanion: /*p:bar p:bar.A(Companion) p:foo p:foo.A(Companion)*/A.Companion, + aO: /*p:bar p:bar.A(O) p:foo p:foo.A(O)*/A.O, i: /*p:bar p:foo*/I, - ni: /*p:bar p:foo*/I.NI, + ni: /*p:bar p:bar.I(NI) p:foo p:foo.I(NI)*/I.NI, obj: /*p:bar p:foo*/Obj, e: /*p:bar p:foo*/E ) {} diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/companion/MainClass.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/companion/MainClass.kt new file mode 100644 index 00000000000..53a5b4b6fec --- /dev/null +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/companion/MainClass.kt @@ -0,0 +1,9 @@ +/*p:*/class MainClass { + companion object { + fun f() { + + } + + class T + } +} \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/companion/usages.K1.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/companion/usages.K1.kt new file mode 100644 index 00000000000..bb495850f2c --- /dev/null +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/companion/usages.K1.kt @@ -0,0 +1,23 @@ +/*p:*/fun Explicit() /*p:MainClass(Companion)*/{ + /*p: p:MainClass(Companion)*/MainClass./*p:MainClass p:MainClass.Companion*/Companion +} + +/*p:*/fun ExplicitMethod() { + /*p:*/MainClass./*p:MainClass*/Companion./*p:MainClass.Companion*/f() +} + +/*p:*/fun Implicit() /*p:MainClass(Companion)*/{ + /*p: p:MainClass(Companion)*/MainClass +} + +/*p:*/fun ImplicitMethod() { + /*p:*/MainClass./*p:MainClass p:MainClass.Companion*/f() +} + +/*p:*/fun InstanceExplicit() { + val t = /*p: p:MainClass(Companion)*/MainClass./*p:MainClass p:MainClass.Companion*/Companion +} + +/*p:*/fun Type(t: /*p:*/MainClass./*p:MainClass*/Companion) { + +} diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/companion/usages.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/companion/usages.kt new file mode 100644 index 00000000000..afb4cde49ff --- /dev/null +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/companion/usages.kt @@ -0,0 +1,23 @@ +/*p:*/fun Explicit() { + /*p: p:MainClass(Companion)*/MainClass./*p:MainClass*/Companion +} + +/*p:*/fun ExplicitMethod() { + /*p: p:(f) p:MainClass(Companion) p:MainClass(f) p:MainClass.Companion(f)*/MainClass./*p:MainClass*/Companion.f() +} + +/*p:*/fun Implicit() { + /*p: p:MainClass(Companion)*/MainClass +} + +/*p:*/fun ImplicitMethod() { + /*p: p:(f) p:MainClass(Companion) p:MainClass(f) p:MainClass.Companion(f)*/MainClass.f() +} + +/*p:*/fun InstanceExplicit() { + val t = /*p: p:MainClass(Companion)*/MainClass./*p:MainClass*/Companion +} + +/*p:*/fun Type(t: /*p: p:MainClass(Companion)*/MainClass.Companion) { + +} diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/conventions/comparison.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/conventions/comparison.kt index c25e7353bb7..9c2ca577213 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/conventions/comparison.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/conventions/comparison.kt @@ -1,18 +1,18 @@ package foo.bar /*p:foo.bar*/fun testComparisons(a: /*p:foo.bar*/A, b: /*p:foo.bar*/Int, c: /*p:foo.bar*/Any, na: /*p:foo.bar*/A?) { - a == c - a != c - na == a - na == null + /*p:foo.bar(A)*/a == c + /*p:foo.bar(A)*/a != c + /*p:foo.bar(A)*/na == /*p:foo.bar(A)*/a + /*p:foo.bar(A)*/na == null - /*p:foo.bar.A(compareTo)*/a > b - /*p:foo.bar.A(compareTo)*/a < b - /*p:foo.bar.A(compareTo)*/a >= b - /*p:foo.bar.A(compareTo)*/a <= b + /*p:foo.bar(A) p:foo.bar.A(compareTo)*/a > b + /*p:foo.bar(A) p:foo.bar.A(compareTo)*/a < b + /*p:foo.bar(A) p:foo.bar.A(compareTo)*/a >= b + /*p:foo.bar(A) p:foo.bar.A(compareTo)*/a <= b - /*p:foo.bar(compareTo) p:foo.bar.A(compareTo)*/a > c - /*p:foo.bar(compareTo) p:foo.bar.A(compareTo)*/a < c - /*p:foo.bar(compareTo) p:foo.bar.A(compareTo)*/a >= c - /*p:foo.bar(compareTo) p:foo.bar.A(compareTo)*/a <= c + /*p:foo.bar(A) p:foo.bar(compareTo) p:foo.bar.A(compareTo)*/a > c + /*p:foo.bar(A) p:foo.bar(compareTo) p:foo.bar.A(compareTo)*/a < c + /*p:foo.bar(A) p:foo.bar(compareTo) p:foo.bar.A(compareTo)*/a >= c + /*p:foo.bar(A) p:foo.bar(compareTo) p:foo.bar.A(compareTo)*/a <= c } diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/conventions/delegateProperty.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/conventions/delegateProperty.kt index e296afaaf7f..568d8e9a8ac 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/conventions/delegateProperty.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/conventions/delegateProperty.kt @@ -3,16 +3,16 @@ package foo.bar /*p:kotlin.reflect(KProperty)*/import kotlin.reflect.KProperty /*p:foo.bar*/class D1 { - operator fun getValue(t: /*p:foo.bar*/Any?, p: /*p:foo.bar*/KProperty<*>) = 1 + operator fun getValue(t: /*p:foo.bar*/Any?, p: /*p:foo.bar p:kotlin.reflect*/KProperty<*>) = 1 } -/*p:foo.bar*/operator fun /*p:foo.bar*/D1.setValue(t: /*p:foo.bar*/Any?, p: /*p:foo.bar*/KProperty<*>, v: /*p:foo.bar*/Int) {} +/*p:foo.bar*/operator fun /*p:foo.bar*/D1.setValue(t: /*p:foo.bar*/Any?, p: /*p:foo.bar p:kotlin.reflect*/KProperty<*>, v: /*p:foo.bar*/Int) {} /*p:foo.bar(D2)*/open class D2 { - operator fun setValue(t: /*p:foo.bar*/Any?, p: /*p:foo.bar*/KProperty<*>, v: /*p:foo.bar*/Int) {} + operator fun setValue(t: /*p:foo.bar*/Any?, p: /*p:foo.bar p:kotlin.reflect*/KProperty<*>, v: /*p:foo.bar*/Int) {} } -/*p:foo.bar*/operator fun /*p:foo.bar*/D2.getValue(t: /*p:foo.bar*/Any?, p: /*p:foo.bar*/KProperty<*>) = 1 +/*p:foo.bar*/operator fun /*p:foo.bar*/D2.getValue(t: /*p:foo.bar*/Any?, p: /*p:foo.bar p:kotlin.reflect*/KProperty<*>) = 1 /*p:foo.bar*/operator fun /*p:foo.bar*/D2.provideDelegate(p: /*p:foo.bar*/Any?, k: /*p:foo.bar*/Any) = this /*p:foo.bar*/class D3 : /*p:foo.bar*/D2() { diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/conventions/mathematicalLike.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/conventions/mathematicalLike.kt index ca00c982bc8..a194ba1b297 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/conventions/mathematicalLike.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/conventions/mathematicalLike.kt @@ -1,24 +1,24 @@ package foo.bar /*p:foo.bar*/fun testOperators(a: /*p:foo.bar*/A, b: /*p:foo.bar*/Int) { - var d = a + var d = /*p:foo.bar(A)*/a - d/*p:foo.bar(A) p:foo.bar.A(inc)*/++ - /*p:foo.bar(A) p:foo.bar.A(inc)*/++d - d/*p:foo.bar(A) p:foo.bar(dec) p:foo.bar.A(dec)*/-- - /*p:foo.bar(A) p:foo.bar(dec) p:foo.bar.A(dec)*/--d + /*p:foo.bar(A)*/d/*p:foo.bar(A) p:foo.bar.A(inc)*/++ + /*p:foo.bar(A) p:foo.bar.A(inc)*/++/*p:foo.bar(A)*/d + /*p:foo.bar(A)*/d/*p:foo.bar(A) p:foo.bar(dec) p:foo.bar.A(dec)*/-- + /*p:foo.bar(A) p:foo.bar(dec) p:foo.bar.A(dec)*/--/*p:foo.bar(A)*/d /*p:foo.bar(A) p:foo.bar.A(plus)*/a + b /*p:foo.bar(A) p:foo.bar(minus) p:foo.bar.A(minus)*/a - b - /*p:foo.bar(not) p:foo.bar.A(not)*/!a + /*p:foo.bar(not) p:foo.bar.A(not)*/!/*p:foo.bar(A)*/a // for val - /*p:foo.bar(times) p:foo.bar.A(times) p:foo.bar.A(timesAssign)*/a *= b - /*p:foo.bar(div) p:foo.bar(divAssign) p:foo.bar.A(div) p:foo.bar.A(divAssign)*/a /= b + /*p:foo.bar(A) p:foo.bar(times) p:foo.bar.A(times) p:foo.bar.A(timesAssign)*/a *= b + /*p:foo.bar(A) p:foo.bar(div) p:foo.bar(divAssign) p:foo.bar.A(div) p:foo.bar.A(divAssign)*/a /= b // for var /*p:foo.bar(A) p:foo.bar(plusAssign) p:foo.bar.A(plus) p:foo.bar.A(plusAssign)*/d += b /*p:foo.bar(A) p:foo.bar(minus) p:foo.bar(minusAssign) p:foo.bar.A(minus) p:foo.bar.A(minusAssign)*/d -= b - /*p:foo.bar(times) p:foo.bar.A(times) p:foo.bar.A(timesAssign)*/d *= b - /*p:foo.bar(div) p:foo.bar(divAssign) p:foo.bar.A(div) p:foo.bar.A(divAssign)*/d /= b + /*p:foo.bar(A) p:foo.bar(times) p:foo.bar.A(times) p:foo.bar.A(timesAssign)*/d *= b + /*p:foo.bar(A) p:foo.bar(div) p:foo.bar(divAssign) p:foo.bar.A(div) p:foo.bar.A(divAssign)*/d /= b } diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/conventions/other.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/conventions/other.kt index 7ef4fb5cea8..7e9c46c270a 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/conventions/other.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/conventions/other.kt @@ -1,15 +1,15 @@ package foo.bar /*p:foo.bar*/fun testOther(a: /*p:foo.bar*/A, b: /*p:foo.bar*/Int, c: /*p:foo.bar*/Any, na: /*p:foo.bar*/A?) { - /*p:foo.bar(set) p:foo.bar.A(set)*/a[1] = /*p:foo.bar.A(get)*/a[2] + /*p:foo.bar(A) p:foo.bar(set) p:foo.bar.A(set)*/a[1] = /*p:foo.bar(A) p:foo.bar.A(get)*/a[2] - /*p:foo.bar.A(contains)*/b in a - /*p:foo.bar(contains) p:foo.bar.A(contains) p:kotlin.Boolean(not)*/"s" !in a + /*p:foo.bar.A(contains)*/b in /*p:foo.bar(A)*/a + /*p:foo.bar(contains) p:foo.bar.A(contains) p:kotlin.Boolean(not)*/"s" !in /*p:foo.bar(A)*/a /*p:foo.bar(A) p:foo.bar.A(invoke)*/a() /*p:foo.bar p:foo.bar(A) p:foo.bar(invoke) p:foo.bar.A(invoke)*/a(1) - val (/*p:foo.bar(A) p:foo.bar.A(component1)*/h, /*p:foo.bar(A) p:foo.bar(component2) p:foo.bar.A(component2)*/t) = a; + val (/*p:foo.bar(A) p:foo.bar.A(component1)*/h, /*p:foo.bar(A) p:foo.bar(component2) p:foo.bar.A(component2)*/t) = /*p:foo.bar(A)*/a; for ((/*p:foo.bar(A) p:foo.bar.A(component1)*/f, /*p:foo.bar(A) p:foo.bar(component2) p:foo.bar.A(component2)*/s) in /*p:foo.bar(A) p:foo.bar(hasNext) p:foo.bar.A(hasNext) p:foo.bar.A(iterator) p:foo.bar.A(next)*/a); for ((/*p:foo.bar(A) p:foo.bar.A(component1)*/f, /*p:foo.bar(A) p:foo.bar(component2) p:foo.bar.A(component2)*/s) in /*p:foo.bar(A) p:foo.bar(hasNext) p:foo.bar(iterator) p:foo.bar.A(hasNext) p:foo.bar.A(iterator) p:foo.bar.A(next)*/na); diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/expressionType/genericType.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/expressionType/genericType.kt index 54d4ae90d41..636eb57e35c 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/expressionType/genericType.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/expressionType/genericType.kt @@ -2,9 +2,9 @@ package foo // From KT-10772 Problem with daemon on Idea 15.0.3 & 1-dev-25 -/*p:foo*/fun identity(): (/*p:foo*/T) -> /*p:foo*/T = null as (/*p:foo*/T) -> /*p:foo*/T +/*p:foo*/fun identity(): /*p:kotlin(Function1)*/(/*p:foo*/T) -> /*p:foo*/T = null as /*p:kotlin(Function1)*/(/*p:foo*/T) -> /*p:foo*/T -/*p:foo*/fun compute(f: () -> /*p:foo*/T) { +/*p:foo*/fun compute(f: /*p:kotlin(Function0)*/() -> /*p:foo*/T) { val result = /*p:kotlin(Function0) p:kotlin.Function0(invoke)*/f() } diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/expressionType/inferredType.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/expressionType/inferredType.kt index c4b4b3cf273..3812b68f664 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/expressionType/inferredType.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/expressionType/inferredType.kt @@ -9,8 +9,8 @@ package foo /*p:foo*/fun getListOfA() = /*p:foo p:foo(A) p:kotlin.collections(List)*/listOf(/*p:foo*/A()) /*p:foo*/fun getListOfB() = /*p:foo p:foo(B) p:kotlin.collections(List)*/listOf(/*p:foo*/B()) -/*p:foo*/fun useListOfA(a: /*p:foo*/List) {} -/*p:foo*/fun useListOfB(b: /*p:foo*/List) {} +/*p:foo*/fun useListOfA(a: /*p:foo p:foo(A) p:kotlin.collections*/List) {} +/*p:foo*/fun useListOfB(b: /*p:foo p:foo(B) p:kotlin.collections*/List) {} /*p:foo*/fun testInferredType() { /*p:foo*/useListOfA(/*p:foo p:foo(A) p:kotlin.collections(List)*/getListOfA()) diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/expressionType/lambdaParameterType.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/expressionType/lambdaParameterType.kt index 8c046593b3d..d2102a10aca 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/expressionType/lambdaParameterType.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/expressionType/lambdaParameterType.kt @@ -2,10 +2,10 @@ package foo /*p:foo*/class C -/*p:foo*/fun lambdaConsumer(fn: (/*p:foo*/A)->/*p:foo*/Unit) {} -/*p:foo*/fun extensionConsumer(fn: /*p:foo*/A.()->/*p:foo*/Unit) {} +/*p:foo*/fun lambdaConsumer(fn: /*p:foo(A) p:kotlin(Function1)*/(/*p:foo*/A)->/*p:foo*/Unit) {} +/*p:foo*/fun extensionConsumer(fn: /*p:foo p:kotlin(Function1)*/A.()->/*p:foo*/Unit) {} /*p:foo*/fun testLambdaParameterType() { - /*p:foo*/lambdaConsumer /*p:foo(A) p:kotlin(Function1)*/{ it } + /*p:foo*/lambdaConsumer /*p:foo(A) p:kotlin(Function1)*/{ /*p:foo(A)*/it } /*p:foo*/extensionConsumer /*p:foo(A) p:kotlin(Function1)*/{ this } } diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/java/usages.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/java/usages.kt index 550fbf12086..974bdb54320 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/java/usages.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/java/usages.kt @@ -6,40 +6,40 @@ import baz.* /*p:foo*/fun usages() { val c = /*p:bar*/C() - /*p:bar.C(field)*/c.field - /*p:bar.C(field)*/c.field = 2 - /*p:bar.C(func)*/c.func() - /*p:bar(C.B) p:bar.C(B)*/c.B() + /*p:bar(C) p:bar.C(field)*/c.field + /*p:bar(C) p:bar.C(field)*/c.field = 2 + /*p:bar(C) p:bar.C(func)*/c.func() + /*p:bar(C) p:bar.C(B)*/c.B() /*p:bar.C(sfield) p:baz p:foo*/C.sfield /*p:bar.C(sfield) p:baz p:foo*/C.sfield = "new" /*p:bar.C(sfunc) p:baz p:foo*/C.sfunc() - /*p:bar p:bar.C(S) p:baz p:foo*/C.S() + /*p:bar.C(S) p:baz p:foo*/C.S() // inherited from I - /*p:bar.C(ifunc)*/c.ifunc() + /*p:bar(C) p:bar.C(ifunc)*/c.ifunc() /*p:bar.C(isfield) p:baz p:foo*/C.isfield // expected error: Unresolved reference: IS /*p:bar.C(IS) p:baz p:baz(IS) p:foo p:foo(IS)*/C.IS() - val i: /*p:baz p:foo*/I = c - /*p:foo.I(ifunc)*/i.ifunc() + val i: /*p:baz p:foo*/I = /*p:bar(C)*/c + /*p:foo(I) p:foo.I(ifunc)*/i.ifunc() /*p:baz p:foo p:foo.I(isfield)*/I.isfield /*p:baz p:foo p:foo.I(IS)*/I.IS() - /*p:baz p:baz.E(F) p:foo*/E.F - /*p:baz p:baz.E(F) p:baz.E(field) p:foo*/E.F.field - /*p:baz p:baz.E(S) p:baz.E(func) p:foo*/E.S.func() + /*p:baz p:baz.E(F) p:foo*/E./*p:baz(E)*/F + /*p:baz p:baz.E(F) p:baz.E(field) p:foo*/E./*p:baz(E)*/F.field + /*p:baz p:baz.E(S) p:baz.E(func) p:foo*/E./*p:baz(E)*/S.func() } fun classifiers( - c: /*p:baz p:foo*/C, - b: /*p:baz p:foo*/C.B, - s: /*p:baz p:foo*/C.S, - cis: /*p:baz p:foo*/C.IS, + c: /*p:bar p:baz p:foo*/C, + b: /*p:bar.C(B) p:baz p:baz.C(B) p:foo p:foo.C(B)*/C.B, + s: /*p:bar.C(S) p:baz p:baz.C(S) p:foo p:foo.C(S)*/C.S, + cis: /*p:bar p:baz p:baz.C(IS) p:foo p:foo.C(IS)*/C.IS, i: /*p:baz p:foo*/I, - iis: /*p:baz p:foo*/I.IS, + iis: /*p:baz p:baz.I(IS) p:foo p:foo.I(IS)*/I.IS, e: /*p:baz p:foo*/E ) {} diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/jvmNameChanged/A.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/jvmNameChanged/A.kt index 9b47724d75b..084e26f2e30 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/jvmNameChanged/A.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/jvmNameChanged/A.kt @@ -1,6 +1,6 @@ package foo /*p:foo(A)*/open class A { - /*p:kotlin.jvm(JvmName)*/@/*p:foo*/JvmName("g") + /*p:kotlin.jvm(JvmName)*/@/*p:foo p:kotlin.jvm*/JvmName("g") fun f() {} } \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/jvmNameChanged/A.kt.new b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/jvmNameChanged/A.kt.new index 218297e6c38..5c8398ceb52 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/jvmNameChanged/A.kt.new +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/jvmNameChanged/A.kt.new @@ -1,6 +1,6 @@ package foo /*p:foo(A)*/open class A { - /*p:kotlin.jvm(JvmName)*/@/*p:foo*/JvmName("h") + /*p:kotlin.jvm(JvmName)*/@/*p:foo p:kotlin.jvm*/JvmName("h") fun f() {} } \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/jvmNameChanged/useAChild.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/jvmNameChanged/useAChild.kt index 79f73fd899f..9215b7af10b 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/jvmNameChanged/useAChild.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/jvmNameChanged/useAChild.kt @@ -1,5 +1,5 @@ package foo /*p:foo*/fun useAChild(a: /*p:foo*/AChild) { - /*p:foo.A(f) p:foo.AChild(f)*/a.f() + /*p:foo(AChild) p:foo.A(f) p:foo.AChild(f)*/a.f() } \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/namedCompanion/MainClass.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/namedCompanion/MainClass.kt new file mode 100644 index 00000000000..7e759de49ff --- /dev/null +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/namedCompanion/MainClass.kt @@ -0,0 +1,9 @@ +/*p:*/class MainClass { + companion object Name { + fun f() { + + } + + class T + } +} \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/namedCompanion/usages.K1.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/namedCompanion/usages.K1.kt new file mode 100644 index 00000000000..4978da39738 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/namedCompanion/usages.K1.kt @@ -0,0 +1,23 @@ +/*p:*/fun Explicit() /*p:MainClass(Name)*/{ + /*p: p:MainClass(Name)*/MainClass./*p:MainClass p:MainClass.Name*/Name +} + +/*p:*/fun ExplicitMethod() { + /*p:*/MainClass./*p:MainClass*/Name./*p:MainClass.Name*/f() +} + +/*p:*/fun Implicit() /*p:MainClass(Name)*/{ + /*p: p:MainClass(Name)*/MainClass +} + +/*p:*/fun ImplicitMethod() { + /*p:*/MainClass./*p:MainClass p:MainClass.Name*/f() +} + +/*p:*/fun InstanceExplicit() { + val t = /*p: p:MainClass(Name)*/MainClass./*p:MainClass p:MainClass.Name*/Name +} + +/*p:*/fun Type(t: /*p:*/MainClass./*p:MainClass*/Name) { + +} diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/namedCompanion/usages.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/namedCompanion/usages.kt new file mode 100644 index 00000000000..c4c4a67979b --- /dev/null +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/namedCompanion/usages.kt @@ -0,0 +1,23 @@ +/*p:*/fun Explicit() { + /*p: p:MainClass(Name)*/MainClass./*p:MainClass*/Name +} + +/*p:*/fun ExplicitMethod() { + /*p: p:(f) p:MainClass(Name) p:MainClass.Name(f)*/MainClass./*p:MainClass*/Name.f() +} + +/*p:*/fun Implicit() { + /*p: p:MainClass(Name)*/MainClass +} + +/*p:*/fun ImplicitMethod() { + /*p: p:(f) p:MainClass(Name) p:MainClass(f) p:MainClass.Name(f)*/MainClass.f() +} + +/*p:*/fun InstanceExplicit() { + val t = /*p: p:MainClass(Name)*/MainClass./*p:MainClass*/Name +} + +/*p:*/fun Type(t: /*p: p:MainClass(Name)*/MainClass.Name) { + +} diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/nested/MainClass.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/nested/MainClass.kt new file mode 100644 index 00000000000..e3eb2af5074 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/nested/MainClass.kt @@ -0,0 +1,11 @@ +/*p:*/class MainClass { + class NestedClass { + object A { + class B { + object F { + val x = 42 + } + } + } + } +} \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/nested/build.log b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/nested/build.log new file mode 100644 index 00000000000..5492c5c679c --- /dev/null +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/nested/build.log @@ -0,0 +1,5 @@ +==== INITIAL BUILD ==== +Compiling files: + src/MainClass.kt + src/usage.kt +Exit code: OK \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/nested/usage.K1.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/nested/usage.K1.kt new file mode 100644 index 00000000000..5062940c886 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/nested/usage.K1.kt @@ -0,0 +1,7 @@ + +/*p:*/fun usageAsCall(): /*p:*/Int /*p:kotlin(Nothing)*/{ + val f = /*p: p:MainClass.NestedClass.A.B(F) p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/MainClass./*p:MainClass*/NestedClass./*p:MainClass.NestedClass*/A./*p:MainClass.NestedClass.A*/B./*p:MainClass.NestedClass.A.B*/F + /*p:kotlin(Nothing)*/return /*p: p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/MainClass./*p:MainClass*/NestedClass./*p:MainClass.NestedClass*/A./*p:MainClass.NestedClass.A*/B./*p:MainClass.NestedClass.A.B*/F./*p:MainClass.NestedClass.A.B.F*/x +} + +/*p:*/fun usageAsType(f: /*p:*/MainClass./*p:MainClass*/NestedClass./*p:MainClass.NestedClass*/A./*p:MainClass.NestedClass.A*/B./*p:MainClass.NestedClass.A.B*/F) {} diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/nested/usage.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/nested/usage.kt new file mode 100644 index 00000000000..000456329c0 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/nested/usage.kt @@ -0,0 +1,7 @@ + +/*p:*/fun usageAsCall(): /*p:*/Int { + val f = /*p: p:MainClass(NestedClass) p:MainClass.NestedClass(A) p:MainClass.NestedClass.A(B) p:MainClass.NestedClass.A.B(F)*/MainClass.NestedClass./*p:MainClass.NestedClass*/A.B./*p:MainClass.NestedClass.A.B*/F + return /*p: p:MainClass(NestedClass) p:MainClass.NestedClass(A) p:MainClass.NestedClass.A(B) p:MainClass.NestedClass.A.B(F) p:MainClass.NestedClass.A.B.F(x)*/MainClass.NestedClass./*p:MainClass.NestedClass*/A.B./*p:MainClass.NestedClass.A.B*/F.x +} + +/*p:*/fun usageAsType(f: /*p: p:MainClass(NestedClass) p:MainClass.NestedClass(A) p:MainClass.NestedClass.A(B) p:MainClass.NestedClass.A.B(F)*/MainClass.NestedClass.A.B.F) = /*p:MainClass.NestedClass.A.B(F)*/f diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/packageDeclarations/foo1.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/packageDeclarations/foo1.kt index 9ca545b6481..49e0c28fe93 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/packageDeclarations/foo1.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/packageDeclarations/foo1.kt @@ -4,14 +4,14 @@ import bar.* /*p:baz(C)*/import baz.C /*p:foo*/val a = /*p:bar p:foo*/A() -/*p:foo*/var b: /*p:bar p:foo*/baz.B = /*p:bar p:baz(B) p:foo*/baz.B() +/*p:foo*/var b: /*p:bar p:bar.baz(B) p:baz(B) p:foo p:foo.baz(B)*/baz.B = /*p:bar p:baz(B) p:foo*/baz.B() /*p:foo*/fun function(p: /*p:bar p:foo*/B): /*p:bar p:foo*/B { - /*p:foo*/a + /*p:bar(A) p:foo*/a return /*p:bar p:foo*/B() } -/*p:foo*/fun /*p:bar p:foo*/MyClass.extFunc(p: /**p:foo p:bar*//*p:bar p:foo*/Array, e: /*p:bar p:foo*/MyEnum, c: /*p:bar p:foo*/C): /*p:bar p:foo*/MyInterface { - /*p:bar p:foo p:foo.MyClass*/b +/*p:foo*/fun /*p:bar p:foo*/MyClass.extFunc(p: /**p:foo p:bar*//*p:bar p:bar(B) p:foo p:kotlin*/Array, e: /*p:bar p:foo*/MyEnum, c: /*p:bar p:baz p:foo*/C): /*p:bar p:foo*/MyInterface { + /*p:bar p:baz(B) p:foo p:foo.MyClass*/b return /*p:bar p:foo p:foo.MyClass*/MyClass() } diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/simple/main.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/simple/main.kt index 33b7fbf143c..c97ea456f9e 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/simple/main.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/simple/main.kt @@ -1,6 +1,6 @@ package foo.bar -/*p:foo.bar*/fun main(args: /*p:foo.bar*/Array) { - val f: /*p:foo.bar*/Array +/*p:foo.bar*/fun main(args: /*p:foo.bar p:kotlin*/Array) { + val f: /*p:foo.bar p:kotlin*/Array val s: /*p:foo.bar*/String } diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/syntheticProperties/KotlinClass.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/syntheticProperties/KotlinClass.kt index 0af6ee67797..1634c8d6982 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/syntheticProperties/KotlinClass.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/syntheticProperties/KotlinClass.kt @@ -2,7 +2,7 @@ package foo /*p:(JavaClass)*/import JavaClass -/*p:foo*/class KotlinClass : /*p:foo*/JavaClass() { +/*p:foo*/class KotlinClass : /*p: p:foo*/JavaClass() { override fun getFoo() = 2 fun setFoo(i: /*p:foo*/Int) {} } diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/syntheticProperties/usages.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/syntheticProperties/usages.kt index 1f2e6dbcc21..c05cb4ff7d7 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/syntheticProperties/usages.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/syntheticProperties/usages.kt @@ -7,24 +7,24 @@ package foo.bar val j = /*p:*/JavaClass() val k = /*p:foo*/KotlinClass() - /*p:JavaClass(getFoo)*/j.getFoo() - /*p:JavaClass(setFoo) p:foo.bar(setFoo)*/j.setFoo(2) - /*p:JavaClass(foo)*/j.foo = 2 - /*p:JavaClass(foo)*/j.foo - /*p:JavaClass(bar)*/j.bar - /*p:JavaClass(bar)*/j.bar = "" - /*p:JavaClass(bazBaz)*/j.bazBaz - /*p:JavaClass(bazBaz)*/j.bazBaz = "" - /*p:JavaClass(setBoo)*/j.setBoo(2) - /*p:JavaClass(boo) p:foo.bar(boo)*/j.boo = 2 - /*p:foo.KotlinClass(getFoo)*/k.getFoo() // getFoo may be an inner class in JavaClass - /*p:foo.KotlinClass(setFoo)*/k.setFoo(2) - /*p:foo.KotlinClass(foo)*/k.foo = 2 - /*p:foo.KotlinClass(foo)*/k.foo - /*p:JavaClass(bar) p:foo.KotlinClass(bar)*/k.bar - /*p:JavaClass(bar) p:foo.KotlinClass(bar)*/k.bar = "" - /*p:JavaClass(bazBaz) p:foo.KotlinClass(bazBaz)*/k.bazBaz - /*p:JavaClass(bazBaz) p:foo.KotlinClass(bazBaz)*/k.bazBaz = "" - /*p:JavaClass(setBoo) p:foo.KotlinClass(setBoo)*/k.setBoo(2) - /*p:foo.KotlinClass(boo) p:foo.bar(boo)*/k.boo = 2 + /*p:(JavaClass) p:JavaClass(getFoo)*/j.getFoo() + /*p:(JavaClass) p:JavaClass(setFoo) p:foo.bar(setFoo)*/j.setFoo(2) + /*p:(JavaClass) p:JavaClass(foo)*/j.foo = 2 + /*p:(JavaClass) p:JavaClass(foo)*/j.foo + /*p:(JavaClass) p:JavaClass(bar)*/j.bar + /*p:(JavaClass) p:JavaClass(bar)*/j.bar = "" + /*p:(JavaClass) p:JavaClass(bazBaz)*/j.bazBaz + /*p:(JavaClass) p:JavaClass(bazBaz)*/j.bazBaz = "" + /*p:(JavaClass) p:JavaClass(setBoo)*/j.setBoo(2) + /*p:(JavaClass) p:JavaClass(boo) p:foo.bar(boo)*/j.boo = 2 + /*p:foo(KotlinClass) p:foo.KotlinClass(getFoo)*/k.getFoo() // getFoo may be an inner class in JavaClass + /*p:foo(KotlinClass) p:foo.KotlinClass(setFoo)*/k.setFoo(2) + /*p:foo(KotlinClass) p:foo.KotlinClass(foo)*/k.foo = 2 + /*p:foo(KotlinClass) p:foo.KotlinClass(foo)*/k.foo + /*p:JavaClass(bar) p:foo(KotlinClass) p:foo.KotlinClass(bar)*/k.bar + /*p:JavaClass(bar) p:foo(KotlinClass) p:foo.KotlinClass(bar)*/k.bar = "" + /*p:JavaClass(bazBaz) p:foo(KotlinClass) p:foo.KotlinClass(bazBaz)*/k.bazBaz + /*p:JavaClass(bazBaz) p:foo(KotlinClass) p:foo.KotlinClass(bazBaz)*/k.bazBaz = "" + /*p:JavaClass(setBoo) p:foo(KotlinClass) p:foo.KotlinClass(setBoo)*/k.setBoo(2) + /*p:foo(KotlinClass) p:foo.KotlinClass(boo) p:foo.bar(boo)*/k.boo = 2 } diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/typeAliasAndUsage/usage.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/typeAliasAndUsage/usage.kt index 7f19e100dc0..5f6c5117aa6 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/typeAliasAndUsage/usage.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/typeAliasAndUsage/usage.kt @@ -1,5 +1,5 @@ package top /*p:top*/fun typeAliasUsage(a: /*p:top*/TypeAlias) { - /*p:top.Foo(prop) p:top.TypeAlias(prop)*/a.prop + /*p:top(TypeAlias) p:top.Foo(prop) p:top.TypeAlias(prop)*/a.prop } diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/removeAndRestoreCompanion/fir-build.log b/jps/jps-plugin/testData/incremental/pureKotlin/removeAndRestoreCompanion/fir-build.log new file mode 100644 index 00000000000..bc6209727ee --- /dev/null +++ b/jps/jps-plugin/testData/incremental/pureKotlin/removeAndRestoreCompanion/fir-build.log @@ -0,0 +1,33 @@ +================ Step #1 ================= + +After chunkBuildStarted. Marked as dirty by Kotlin: + src/A.kt + src/useAbar.kt + src/useAfoo.kt +Cleaning output files: + out/production/module/META-INF/module.kotlin_module + out/production/module/foo/A$Companion.class + out/production/module/foo/A.class + out/production/module/use/UseAbarKt.class + out/production/module/use/UseAfooKt.class +End of files +Compiling files: + src/A.kt + src/useAbar.kt + src/useAfoo.kt +End of files +Exit code: ABORT +------------------------------------------ +COMPILATION FAILED +Unresolved reference 'bar'. +Unresolved reference 'foo'. + +================ Step #2 ================= + +Compiling files: + src/A.kt + src/useAbar.kt + src/useAfoo.kt +End of files +Exit code: OK +------------------------------------------ \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/removeAndRestoreCompanionWithImplicitUsages/fir-build.log b/jps/jps-plugin/testData/incremental/pureKotlin/removeAndRestoreCompanionWithImplicitUsages/fir-build.log index cdae8ce6fb0..b5a0576bada 100644 --- a/jps/jps-plugin/testData/incremental/pureKotlin/removeAndRestoreCompanionWithImplicitUsages/fir-build.log +++ b/jps/jps-plugin/testData/incremental/pureKotlin/removeAndRestoreCompanionWithImplicitUsages/fir-build.log @@ -2,25 +2,16 @@ After chunkBuildStarted. Marked as dirty by Kotlin: src/A.kt -Cleaning output files: - out/production/module/META-INF/module.kotlin_module - out/production/module/foo/A$Companion.class - out/production/module/foo/A.class -End of files -Compiling files: - src/A.kt -End of files -After build round. Marked as dirty by Kotlin: src/getACompanion.kt src/getACompanionShort.kt src/useACompanionImplicitly.kt src/useACompanionShortImplicitly.kt src/useAbarWithImplicitReceiver.kt src/useAfooWithImplicitReceiver.kt -Exit code: ADDITIONAL_PASS_REQUIRED ------------------------------------------- Cleaning output files: out/production/module/META-INF/module.kotlin_module + out/production/module/foo/A$Companion.class + out/production/module/foo/A.class out/production/module/use/GetACompanionKt.class out/production/module/use/GetACompanionShortKt.class out/production/module/use/UseACompanionImplicitlyKt.class @@ -29,6 +20,7 @@ Cleaning output files: out/production/module/use/UseAfooWithImplicitReceiverKt.class End of files Compiling files: + src/A.kt src/getACompanion.kt src/getACompanionShort.kt src/useACompanionImplicitly.kt @@ -39,12 +31,12 @@ End of files Exit code: ABORT ------------------------------------------ COMPILATION FAILED +Unresolved reference 'Companion'. +Classifier 'class A : Any' does not have a companion object, so it cannot be used as an expression. +Unresolved reference 'bar'. ================ Step #2 ================= -Cleaning output files: - out/production/module/foo/A.class -End of files Compiling files: src/A.kt src/getACompanion.kt diff --git a/tests/mute-common.csv b/tests/mute-common.csv index 40b215139d6..699a700395c 100644 --- a/tests/mute-common.csv +++ b/tests/mute-common.csv @@ -79,12 +79,6 @@ org.jetbrains.uast.test.kotlin.SimpleKotlinRenderLogTest.testReceiverFun, Analys org.jetbrains.kotlin.checkers.FirKotlinHighlightingPassTestGenerated.Regression.testJet53,,, FLAKY org.jetbrains.kotlin.checkers.FirKotlinHighlightingPassTestGenerated.Checker.testResolveTypeInAnnotationArgumentRuntime,,, FLAKY org.jetbrains.kotlin.idea.caches.resolve.MultiModuleHighlightingTest.testLanguageVersionsViaFacets,,, FLAKY -org.jetbrains.kotlin.jps.build.IncrementalK2JvmJpsTestGenerated.PureKotlin.testRemoveMemberTypeAlias, KT-55195,, -org.jetbrains.kotlin.jps.build.IncrementalK2LightTreeJvmJpsTestGenerated.PureKotlin.testRemoveMemberTypeAlias, KT-55195,, -org.jetbrains.kotlin.jps.build.IncrementalK2FirICLightTreeJvmJpsTestGenerated.PureKotlin.testRemoveMemberTypeAlias, KT-55195,, -org.jetbrains.kotlin.jps.build.IncrementalK2JvmJpsTestGenerated.PureKotlin.testAddMemberTypeAlias, KT-55195,, -org.jetbrains.kotlin.jps.build.IncrementalK2LightTreeJvmJpsTestGenerated.PureKotlin.testAddMemberTypeAlias, KT-55195,, -org.jetbrains.kotlin.jps.build.IncrementalK2FirICLightTreeJvmJpsTestGenerated.PureKotlin.testAddMemberTypeAlias, KT-55195,, org.jetbrains.kotlin.jps.build.IncrementalK2JvmJpsTestGenerated.IncrementalJvmCompilerOnly.testChangeAnnotationInJavaClass, KT-55696,, org.jetbrains.kotlin.jps.build.IncrementalK2LightTreeJvmJpsTestGenerated.IncrementalJvmCompilerOnly.testChangeAnnotationInJavaClass, KT-55696,, org.jetbrains.kotlin.jps.build.IncrementalK2FirICLightTreeJvmJpsTestGenerated.IncrementalJvmCompilerOnly.testChangeAnnotationInJavaClass, KT-55696,,