From d114913cd2bb0d4218163abbaa68ebdf188a1db4 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Mon, 19 Apr 2021 13:36:30 +0300 Subject: [PATCH] Replace usages of addToStdlib.firstNotNullResult with firstNotNullOfOrNull --- .../LightTreePositioningStrategies.kt | 7 +++---- .../impl/FirBuiltinSymbolProvider.kt | 3 +-- .../kotlin/fir/backend/PrimitiveComparison.kt | 3 +-- .../kotlin/fir/java/JavaScopeProvider.kt | 3 +-- .../KotlinDeserializedJvmSymbolsProvider.kt | 5 ++--- .../FirAnnotationTypeQualifierResolver.kt | 3 +-- .../fir/java/enhancement/nullabilityUtils.kt | 3 +-- .../scopes/JavaClassUseSiteMemberScope.kt | 5 ++--- .../impl/FirCompositeSymbolProvider.kt | 5 ++--- .../impl/FirDependenciesSymbolProviderImpl.kt | 5 ++--- .../FirDeclarationsResolveTransformer.kt | 3 +-- .../BadInheritedJavaSignaturesChecker.kt | 3 +-- .../resolve/jvm/checkers/JvmDefaultChecker.kt | 5 ++--- .../checkers/JvmRecordApplicabilityChecker.kt | 3 +-- .../common/CommonResolverForModuleFactory.kt | 5 ++--- .../rendering/DefaultErrorMessages.java | 6 ++---- ...PreprocessedVirtualFileFactoryExtension.kt | 5 ++--- .../resolve/calls/smartcasts/DataFlowUtils.kt | 5 ++--- .../resolve/calls/tower/PSICallResolver.kt | 3 +-- .../PrimitiveNumericComparisonCallChecker.kt | 5 ++--- .../extensions/SyntheticResolveExtension.kt | 3 +-- .../backend/common/lower/loops/HeaderInfo.kt | 7 +++---- .../kotlin/ir/interpreter/stack/Stack.kt | 5 ++--- .../ir/util/ExternalDependenciesGenerator.kt | 3 +-- .../common/serialization/KotlinIrLinker.kt | 10 ++-------- .../resolve/scopes/LexicalChainedScope.kt | 3 +-- .../codegen/AbstractBytecodeListingTest.kt | 3 +-- ...DeserializedPackageFragmentsFactoryImpl.kt | 4 +--- .../java/AnnotationTypeQualifierResolver.kt | 3 +-- .../descriptors/LazyJavaClassMemberScope.kt | 7 +++---- .../typeEnhancement/signatureEnhancement.kt | 3 +-- .../org/jetbrains/kotlin/utils/addToStdlib.kt | 19 ++++++++----------- .../caches/resolve/ProjectResolutionFacade.kt | 3 +-- .../navigation/SourceNavigationHelper.kt | 3 +-- .../AfterAnalysisHighlightingVisitor.kt | 5 ++--- .../FunctionsHighlightingVisitor.kt | 3 +-- .../PropertiesHighlightingVisitor.kt | 3 +-- .../completion/BasicLookupElementFactory.kt | 5 ++--- .../GenerateMembersHandler.kt | 5 ++--- .../KtGenerateMembersHandler.kt | 5 ++--- .../idea/fir/low/level/api/IndexHelper.kt | 10 ++-------- ...FirModuleWithDependenciesSymbolProvider.kt | 11 +++++------ .../references/FirReferenceResolveHelper.kt | 3 +-- .../KotlinMPPGradleProjectResolver.kt | 13 +------------ .../kotlin/platform/IdePlatformKind.kt | 5 ++--- .../RedundantVisibilityModifierInspection.kt | 3 +-- .../quickfix/AddWhenRemainingBranchesFix.kt | 4 +--- .../quickfix/ConvertToAnonymousObjectFix.kt | 5 ++--- .../js/analyze/TopDownAnalyzerFacadeForJS.kt | 5 ++--- .../intrinsic/functions/FunctionIntrinsics.kt | 3 +-- .../operation/binaryOperationIntrinsics.kt | 5 ++--- .../kotlin/backend/konan/CachedLibraries.kt | 5 ++--- .../kotlin/backend/konan/ObjCInterop.kt | 18 +++++++----------- .../konan/TopDownAnalyzerFacadeForKonan.kt | 7 +++---- .../ir/interop/cenum/CEnumClassGenerator.kt | 5 ++--- .../backend/konan/lower/TestProcessor.kt | 5 ++--- .../kotlin/nj2k/conversions/resolveUtil.kt | 4 +--- .../compiler/resolve/SearchUtils.kt | 3 +-- 58 files changed, 107 insertions(+), 194 deletions(-) diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/LightTreePositioningStrategies.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/LightTreePositioningStrategies.kt index 71e8a70700d..3cf25b920e7 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/LightTreePositioningStrategies.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/LightTreePositioningStrategies.kt @@ -20,7 +20,6 @@ import org.jetbrains.kotlin.lexer.KtTokens.VISIBILITY_MODIFIERS import org.jetbrains.kotlin.psi.KtParameter.VAL_VAR_TOKEN_SET import org.jetbrains.kotlin.psi.stubs.elements.KtConstantExpressionElementType import org.jetbrains.kotlin.psi.stubs.elements.KtStringTemplateExpressionElementType -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult object LightTreePositioningStrategies { val DEFAULT = object : LightTreePositioningStrategy() { @@ -900,14 +899,14 @@ fun FlyweightCapableTreeStructure.findDescendantByType(node: Lig val childrenRef = Ref>() getChildren(node, childrenRef) return childrenRef.get()?.firstOrNull { it?.tokenType == type } ?: childrenRef.get() - ?.firstNotNullResult { child -> child?.let { findDescendantByType(it, type) } } + ?.firstNotNullOfOrNull { child -> child?.let { findDescendantByType(it, type) } } } fun FlyweightCapableTreeStructure.findDescendantByTypes(node: LighterASTNode, types: TokenSet): LighterASTNode? { val childrenRef = Ref>() getChildren(node, childrenRef) return childrenRef.get()?.firstOrNull { types.contains(it?.tokenType) } ?: childrenRef.get() - ?.firstNotNullResult { child -> child?.let { findDescendantByTypes(it, types) } } + ?.firstNotNullOfOrNull { child -> child?.let { findDescendantByTypes(it, types) } } } fun FlyweightCapableTreeStructure.findFirstDescendant( @@ -917,7 +916,7 @@ fun FlyweightCapableTreeStructure.findFirstDescendant( val childrenRef = Ref>() getChildren(node, childrenRef) return childrenRef.get()?.firstOrNull { it != null && predicate(it) } - ?: childrenRef.get()?.firstNotNullResult { child -> child?.let { findFirstDescendant(it, predicate) } } + ?: childrenRef.get()?.firstNotNullOfOrNull { child -> child?.let { findFirstDescendant(it, predicate) } } } fun FlyweightCapableTreeStructure.collectDescendantsOfType( diff --git a/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirBuiltinSymbolProvider.kt b/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirBuiltinSymbolProvider.kt index d3451d469c7..0a28a4fc893 100644 --- a/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirBuiltinSymbolProvider.kt +++ b/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirBuiltinSymbolProvider.kt @@ -41,7 +41,6 @@ import org.jetbrains.kotlin.serialization.deserialization.builtins.BuiltInSerial import org.jetbrains.kotlin.serialization.deserialization.getName import org.jetbrains.kotlin.types.Variance import org.jetbrains.kotlin.util.OperatorNameConventions -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult import org.jetbrains.kotlin.utils.addToStdlib.getOrPut import java.io.InputStream @@ -72,7 +71,7 @@ open class FirBuiltinSymbolProvider(session: FirSession, val kotlinScopeProvider } override fun getClassLikeSymbolByFqName(classId: ClassId): FirRegularClassSymbol? { - return allPackageFragments[classId.packageFqName]?.firstNotNullResult { + return allPackageFragments[classId.packageFqName]?.firstNotNullOfOrNull { it.getClassLikeSymbolByFqName(classId) } ?: trySyntheticFunctionalInterface(classId) } diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/PrimitiveComparison.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/PrimitiveComparison.kt index 7b58b2eb0bb..7df51185b10 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/PrimitiveComparison.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/PrimitiveComparison.kt @@ -11,7 +11,6 @@ import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.arguments import org.jetbrains.kotlin.name.StandardClassIds import org.jetbrains.kotlin.fir.types.* -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult class PrimitiveConeNumericComparisonInfo( val comparisonType: ConeClassLikeType, @@ -61,7 +60,7 @@ private fun ConeClassLikeType.promoteIntegerTypeToIntIfRequired(): ConeClassLike private fun ConeKotlinType.getPrimitiveTypeOrSupertype(): ConeClassLikeType? = when { this is ConeTypeParameterType -> - this.lookupTag.typeParameterSymbol.fir.bounds.firstNotNullResult { + this.lookupTag.typeParameterSymbol.fir.bounds.firstNotNullOfOrNull { it.coneType.getPrimitiveTypeOrSupertype() } this is ConeClassLikeType && isPrimitiveNumberType() -> diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaScopeProvider.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaScopeProvider.kt index c476278b314..c1580aad3ba 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaScopeProvider.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaScopeProvider.kt @@ -16,7 +16,6 @@ import org.jetbrains.kotlin.fir.scopes.impl.* import org.jetbrains.kotlin.name.StandardClassIds import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol import org.jetbrains.kotlin.utils.DFS -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult class JavaScopeProvider( val symbolProvider: JavaSymbolProvider @@ -150,7 +149,7 @@ class JavaScopeProvider( } private tailrec fun FirRegularClass.findJavaSuperClass(useSiteSession: FirSession): FirRegularClass? { - val superClass = superConeTypes.firstNotNullResult { + val superClass = superConeTypes.firstNotNullOfOrNull { (it.lookupTag.toSymbol(useSiteSession)?.fir as? FirRegularClass)?.takeIf { superClass -> superClass.classKind == ClassKind.CLASS } diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/KotlinDeserializedJvmSymbolsProvider.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/KotlinDeserializedJvmSymbolsProvider.kt index edd1063446d..e08a9511365 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/KotlinDeserializedJvmSymbolsProvider.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/KotlinDeserializedJvmSymbolsProvider.kt @@ -37,7 +37,6 @@ import org.jetbrains.kotlin.name.isOneSegmentFQN import org.jetbrains.kotlin.resolve.jvm.JvmClassName import org.jetbrains.kotlin.serialization.deserialization.IncompatibleVersionErrorData import org.jetbrains.kotlin.serialization.deserialization.getName -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult @ThreadSafeMutableState class KotlinDeserializedJvmSymbolsProvider( @@ -142,9 +141,9 @@ class KotlinDeserializedJvmSymbolsProvider( } private fun findAndDeserializeTypeAlias(classId: ClassId): FirTypeAliasSymbol? { - return getPackageParts(classId.packageFqName).firstNotNullResult { part -> + return getPackageParts(classId.packageFqName).firstNotNullOfOrNull { part -> val ids = part.typeAliasNameIndex[classId.shortClassName] - if (ids == null || ids.isEmpty()) return@firstNotNullResult null + if (ids == null || ids.isEmpty()) return@firstNotNullOfOrNull null val aliasProto = ids.map { part.proto.getTypeAlias(it) }.single() part.context.memberDeserializer.loadTypeAlias(aliasProto).symbol } diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/FirAnnotationTypeQualifierResolver.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/FirAnnotationTypeQualifierResolver.kt index df459b94478..c0bebef3aa6 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/FirAnnotationTypeQualifierResolver.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/FirAnnotationTypeQualifierResolver.kt @@ -16,7 +16,6 @@ import org.jetbrains.kotlin.load.java.JvmAnnotationNames.DEFAULT_ANNOTATION_MEMB import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.utils.JavaTypeEnhancementState import org.jetbrains.kotlin.utils.ReportLevel -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult class FirAnnotationTypeQualifierResolver(private val session: FirSession, private val javaTypeEnhancementState: JavaTypeEnhancementState) { @@ -40,7 +39,7 @@ class FirAnnotationTypeQualifierResolver(private val session: FirSession, privat private fun computeTypeQualifierNickname(klass: FirRegularClass): FirAnnotationCall? { if (klass.annotations.none { it.classId == TYPE_QUALIFIER_NICKNAME_ID }) return null - return klass.annotations.firstNotNullResult(this::resolveTypeQualifierAnnotation) + return klass.annotations.firstNotNullOfOrNull(this::resolveTypeQualifierAnnotation) } private fun resolveTypeQualifierNickname(klass: FirRegularClass): FirAnnotationCall? { diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/nullabilityUtils.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/nullabilityUtils.kt index 59d1b235b3a..8371ea4604e 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/nullabilityUtils.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/nullabilityUtils.kt @@ -14,13 +14,12 @@ import org.jetbrains.kotlin.load.java.typeEnhancement.NullabilityQualifier import org.jetbrains.kotlin.load.java.typeEnhancement.NullabilityQualifierWithMigrationStatus import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.utils.JavaTypeEnhancementState -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult fun List.extractNullability( annotationTypeQualifierResolver: FirAnnotationTypeQualifierResolver, javaTypeEnhancementState: JavaTypeEnhancementState ): NullabilityQualifierWithMigrationStatus? = - this.firstNotNullResult { annotationCall -> + this.firstNotNullOfOrNull { annotationCall -> annotationCall.extractNullability(annotationTypeQualifierResolver, javaTypeEnhancementState) } diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassUseSiteMemberScope.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassUseSiteMemberScope.kt index bbd4ad54102..d9158387868 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassUseSiteMemberScope.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassUseSiteMemberScope.kt @@ -30,7 +30,6 @@ import org.jetbrains.kotlin.load.java.SpecialGenericSignatures.Companion.sameAsR import org.jetbrains.kotlin.load.java.getPropertyNamesCandidatesByAccessorName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.types.AbstractTypeChecker -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult class JavaClassUseSiteMemberScope( klass: FirJavaClass, @@ -151,7 +150,7 @@ class JavaClassUseSiteMemberScope( ): FirNamedFunctionSymbol? { val propertyFromSupertype = fir val expectedReturnType = propertyFromSupertype.returnTypeRef.coneTypeSafe() - return scope.getFunctions(Name.identifier(getterName)).firstNotNullResult factory@{ candidateSymbol -> + return scope.getFunctions(Name.identifier(getterName)).firstNotNullOfOrNull factory@{ candidateSymbol -> val candidate = candidateSymbol.fir if (candidate.valueParameters.isNotEmpty()) return@factory null @@ -168,7 +167,7 @@ class JavaClassUseSiteMemberScope( scope: FirScope, ): FirNamedFunctionSymbol? { val propertyType = fir.returnTypeRef.coneTypeSafe() ?: return null - return scope.getFunctions(Name.identifier(JvmAbi.setterName(fir.name.asString()))).firstNotNullResult factory@{ candidateSymbol -> + return scope.getFunctions(Name.identifier(JvmAbi.setterName(fir.name.asString()))).firstNotNullOfOrNull factory@{ candidateSymbol -> val candidate = candidateSymbol.fir if (candidate.valueParameters.size != 1) return@factory null diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirCompositeSymbolProvider.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirCompositeSymbolProvider.kt index 1709c13c3c7..035f09bfe72 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirCompositeSymbolProvider.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirCompositeSymbolProvider.kt @@ -16,7 +16,6 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult @NoMutableState class FirCompositeSymbolProvider(session: FirSession, val providers: List) : FirSymbolProvider(session) { @@ -44,10 +43,10 @@ class FirCompositeSymbolProvider(session: FirSession, val providers: List? { - return providers.firstNotNullResult { it.getClassLikeSymbolByFqName(classId) } + return providers.firstNotNullOfOrNull { it.getClassLikeSymbolByFqName(classId) } } } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirDependenciesSymbolProviderImpl.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirDependenciesSymbolProviderImpl.kt index 43d4375d068..bba734c533f 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirDependenciesSymbolProviderImpl.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirDependenciesSymbolProviderImpl.kt @@ -20,7 +20,6 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult @ThreadSafeMutableState open class FirDependenciesSymbolProviderImpl(session: FirSession) : FirSymbolProvider(session) { @@ -54,10 +53,10 @@ open class FirDependenciesSymbolProviderImpl(session: FirSession) : FirSymbolPro } private fun computePackage(it: FqName): FqName? = - dependencyProviders.firstNotNullResult { provider -> provider.getPackage(it) } + dependencyProviders.firstNotNullOfOrNull { provider -> provider.getPackage(it) } private fun computeClass(classId: ClassId): FirClassLikeSymbol<*>? = - dependencyProviders.firstNotNullResult { provider -> provider.getClassLikeSymbolByFqName(classId) } + dependencyProviders.firstNotNullOfOrNull { provider -> provider.getClassLikeSymbolByFqName(classId) } @FirSymbolProviderInternals diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt index 2224ea86e21..621e35735a1 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt @@ -37,7 +37,6 @@ import org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef import org.jetbrains.kotlin.fir.types.impl.FirImplicitUnitTypeRef import org.jetbrains.kotlin.fir.visitors.* import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult open class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransformer) : FirPartialBodyResolveTransformer(transformer) { private val statusResolver: FirStatusResolver = FirStatusResolver(session, scopeSession) @@ -434,7 +433,7 @@ open class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransfor // should be replaced there properly val returnType = dataFlowAnalyzer.returnExpressionsOfAnonymousFunction(result) - .firstNotNullResult { (it as? FirExpression)?.resultType?.coneTypeSafe() } + .firstNotNullOfOrNull { (it as? FirExpression)?.resultType?.coneTypeSafe() } if (returnType != null) { result.transformReturnTypeRef(transformer, withExpectedType(returnType)) diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/checkers/BadInheritedJavaSignaturesChecker.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/checkers/BadInheritedJavaSignaturesChecker.kt index ccb9932a58f..4b5de39eb8c 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/checkers/BadInheritedJavaSignaturesChecker.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/checkers/BadInheritedJavaSignaturesChecker.kt @@ -18,14 +18,13 @@ import org.jetbrains.kotlin.renderer.DescriptorRenderer import org.jetbrains.kotlin.resolve.checkers.DeclarationChecker import org.jetbrains.kotlin.resolve.checkers.DeclarationCheckerContext import org.jetbrains.kotlin.resolve.deprecation.DEPRECATED_FUNCTION_KEY -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult object BadInheritedJavaSignaturesChecker : DeclarationChecker { override fun check(declaration: KtDeclaration, descriptor: DeclarationDescriptor, context: DeclarationCheckerContext) { if (descriptor !is ClassDescriptor) return val badSignatureOverriddenDescriptor = - descriptor.unsubstitutedMemberScope.getContributedDescriptors().firstNotNullResult(::findFirstBadJavaSignatureOverridden) + descriptor.unsubstitutedMemberScope.getContributedDescriptors().firstNotNullOfOrNull(::findFirstBadJavaSignatureOverridden) if (badSignatureOverriddenDescriptor != null) { val reportOn = diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/checkers/JvmDefaultChecker.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/checkers/JvmDefaultChecker.kt index 0697206dd0b..881880e7bf5 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/checkers/JvmDefaultChecker.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/checkers/JvmDefaultChecker.kt @@ -26,7 +26,6 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.module import org.jetbrains.kotlin.resolve.jvm.annotations.* import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm import org.jetbrains.kotlin.util.getNonPrivateTraitMembersForDelegation -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult class JvmDefaultChecker(private val jvmTarget: JvmTarget, private val project: Project) : DeclarationChecker { @@ -212,7 +211,7 @@ class JvmDefaultChecker(private val jvmTarget: JvmTarget, private val project: P getNonPrivateTraitMembersForDelegation(it, true)?.isCompiledToJvmDefaultWithProperMode(jvmDefaultMode) == false } if (implicitDefaultImplsDelegate != null) return implicitDefaultImplsDelegate - return classMembers.firstNotNullResult { findPossibleClashMember(it, jvmDefaultMode) } + return classMembers.firstNotNullOfOrNull { findPossibleClashMember(it, jvmDefaultMode) } } private fun checkJvmDefaultsInHierarchy(descriptor: DeclarationDescriptor, jvmDefaultMode: JvmDefaultMode): Boolean { @@ -235,4 +234,4 @@ class JvmDefaultChecker(private val jvmTarget: JvmTarget, private val project: P return isCompiledToJvmDefault(jvmDefault) } -} \ No newline at end of file +} diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/checkers/JvmRecordApplicabilityChecker.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/checkers/JvmRecordApplicabilityChecker.kt index 344a2b1c56b..04703f8c411 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/checkers/JvmRecordApplicabilityChecker.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/checkers/JvmRecordApplicabilityChecker.kt @@ -26,7 +26,6 @@ import org.jetbrains.kotlin.resolve.jvm.JAVA_LANG_RECORD_FQ_NAME import org.jetbrains.kotlin.resolve.jvm.annotations.JVM_RECORD_ANNOTATION_FQ_NAME import org.jetbrains.kotlin.resolve.jvm.annotations.isJvmRecord import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult class JvmRecordApplicabilityChecker(private val jvmTarget: JvmTarget) : DeclarationChecker { override fun check(declaration: KtDeclaration, descriptor: DeclarationDescriptor, context: DeclarationCheckerContext) { @@ -161,7 +160,7 @@ class JvmRecordApplicabilityChecker(private val jvmTarget: JvmTarget) : Declarat } private fun KtModifierList.findOneOfModifiers(vararg modifierTokens: KtModifierKeywordToken): PsiElement? = - modifierTokens.firstNotNullResult(this::getModifier) + modifierTokens.firstNotNullOfOrNull(this::getModifier) private fun JvmTarget.areRecordsAllowed(enableJvmPreview: Boolean): Boolean { if (majorVersion < JvmTarget.JVM_15.majorVersion) return false diff --git a/compiler/frontend/src/org/jetbrains/kotlin/analyzer/common/CommonResolverForModuleFactory.kt b/compiler/frontend/src/org/jetbrains/kotlin/analyzer/common/CommonResolverForModuleFactory.kt index 086a69d1d42..d21edfbe947 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/analyzer/common/CommonResolverForModuleFactory.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/analyzer/common/CommonResolverForModuleFactory.kt @@ -46,7 +46,6 @@ import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactory import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactoryService import org.jetbrains.kotlin.serialization.deserialization.MetadataPackageFragmentProvider import org.jetbrains.kotlin.serialization.deserialization.MetadataPartProvider -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult class CommonAnalysisParameters( val metadataPartProviderFactory: (ModuleContent<*>) -> MetadataPartProvider @@ -176,14 +175,14 @@ class CommonResolverForModuleFactory( // Mimic the behavior in the jvm frontend. The extensions have 2 chances to override the normal analysis: // * If any of the extensions returns a non-null result, it. Otherwise do the normal analysis. // * `analysisCompleted` can be used to override the result, too. - var result = analysisHandlerExtensions.firstNotNullResult { extension -> + var result = analysisHandlerExtensions.firstNotNullOfOrNull { extension -> extension.doAnalysis(project, moduleDescriptor, projectContext, files, trace, container) } ?: run { container.get().analyzeDeclarations(TopDownAnalysisMode.TopLevelDeclarations, files) AnalysisResult.success(trace.bindingContext, moduleDescriptor) } - result = analysisHandlerExtensions.firstNotNullResult { extension -> + result = analysisHandlerExtensions.firstNotNullOfOrNull { extension -> extension.analysisCompleted(project, moduleDescriptor, trace, files) } ?: result diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java index 8f372ed221b..7773b2a55d5 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java @@ -12,11 +12,9 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.config.LanguageVersion; import org.jetbrains.kotlin.diagnostics.DiagnosticFactory; -import org.jetbrains.kotlin.diagnostics.DiagnosticFactory0; import org.jetbrains.kotlin.diagnostics.Errors; import org.jetbrains.kotlin.diagnostics.UnboundDiagnostic; import org.jetbrains.kotlin.metadata.deserialization.VersionRequirement; -import org.jetbrains.kotlin.psi.KtExpression; import org.jetbrains.kotlin.resolve.VarianceConflictDiagnosticData; import org.jetbrains.kotlin.types.KotlinTypeKt; import org.jetbrains.kotlin.util.OperatorNameConventions; @@ -29,8 +27,6 @@ import java.util.List; import java.util.ServiceLoader; import static org.jetbrains.kotlin.diagnostics.Errors.*; -import static org.jetbrains.kotlin.diagnostics.Severity.ERROR; -import static org.jetbrains.kotlin.diagnostics.Severity.WARNING; import static org.jetbrains.kotlin.diagnostics.rendering.Renderers.*; import static org.jetbrains.kotlin.diagnostics.rendering.RenderingContext.of; @@ -60,6 +56,8 @@ public class DefaultErrorMessages { @Nullable public static DiagnosticRenderer getRendererForDiagnostic(@NotNull UnboundDiagnostic diagnostic) { + // firstNotNullOfOrNull from stdlib can not be used here because it is InlineOnly function and can not be accessed from Java + @SuppressWarnings("deprecation") DiagnosticRenderer renderer = AddToStdlibKt.firstNotNullResult(RENDERER_MAPS, map -> map.get(diagnostic.getFactory())); if (renderer != null) return renderer; diff --git a/compiler/frontend/src/org/jetbrains/kotlin/extensions/PreprocessedVirtualFileFactoryExtension.kt b/compiler/frontend/src/org/jetbrains/kotlin/extensions/PreprocessedVirtualFileFactoryExtension.kt index 822bdc8cfb1..db04b38db8b 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/extensions/PreprocessedVirtualFileFactoryExtension.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/extensions/PreprocessedVirtualFileFactoryExtension.kt @@ -19,7 +19,6 @@ package org.jetbrains.kotlin.extensions import com.intellij.openapi.project.Project import com.intellij.openapi.vfs.VirtualFile import com.intellij.testFramework.LightVirtualFile -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult /** * The interface for the extensions that are used to substitute VirtualFile on the creation of KtFile, allows to preprocess a file before @@ -43,10 +42,10 @@ class PreprocessedFileCreator(val project: Project) { PreprocessedVirtualFileFactoryExtension.getInstances(project).filterNot { it.isPassThrough() }.toTypedArray() } - fun create(file: VirtualFile): VirtualFile = validExts.firstNotNullResult { it.createPreprocessedFile(file) } ?: file + fun create(file: VirtualFile): VirtualFile = validExts.firstNotNullOfOrNull { it.createPreprocessedFile(file) } ?: file // unused now, but could be used in the IDE at some point fun createLight(file: LightVirtualFile): LightVirtualFile = - validExts.firstNotNullResult { it.createPreprocessedLightFile(file) } ?: file + validExts.firstNotNullOfOrNull { it.createPreprocessedLightFile(file) } ?: file } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/smartcasts/DataFlowUtils.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/smartcasts/DataFlowUtils.kt index ecb6ed6da38..71d7037709f 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/smartcasts/DataFlowUtils.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/smartcasts/DataFlowUtils.kt @@ -13,7 +13,6 @@ import org.jetbrains.kotlin.psi.KtProperty import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.bindingContextUtil.getDataFlowInfoBefore import org.jetbrains.kotlin.types.KotlinType -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult fun KtExpression.getKotlinTypeForComparison(bindingContext: BindingContext): KotlinType? = when { @@ -41,7 +40,7 @@ fun KtExpression?.getKotlinTypeWithPossibleSmartCastToFP( if (descriptor != null) { val dataFlow = dataFlowValueFactory.createDataFlowValue(this, givenType, bindingContext, descriptor) val stableTypes = bindingContext.getDataFlowInfoBefore(this).getStableTypes(dataFlow, languageVersionSettings) - return stableTypes.firstNotNullResult { + return stableTypes.firstNotNullOfOrNull { when { KotlinBuiltIns.isDoubleOrNullableDouble(it) -> it KotlinBuiltIns.isFloatOrNullableFloat(it) -> it @@ -50,4 +49,4 @@ fun KtExpression?.getKotlinTypeWithPossibleSmartCastToFP( } ?: defaultType(givenType, stableTypes) } return givenType -} \ No newline at end of file +} diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/PSICallResolver.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/PSICallResolver.kt index dc0eb8cfda1..7934a4beaf2 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/PSICallResolver.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/PSICallResolver.kt @@ -48,7 +48,6 @@ import org.jetbrains.kotlin.types.expressions.* import org.jetbrains.kotlin.types.model.TypeSystemInferenceExtensionContext import org.jetbrains.kotlin.utils.KotlinExceptionWithAttachments import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult import java.util.* class PSICallResolver( @@ -124,7 +123,7 @@ class PSICallResolver( resolutionCandidates: Collection>, tracingStrategy: TracingStrategy ): OverloadResolutionResults { - val dispatchReceiver = resolutionCandidates.firstNotNullResult { it.dispatchReceiver } + val dispatchReceiver = resolutionCandidates.firstNotNullOfOrNull { it.dispatchReceiver } val isSpecialFunction = resolutionCandidates.any { it.descriptor.name in SPECIAL_FUNCTION_NAMES } val kotlinCall = toKotlinCall( diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/PrimitiveNumericComparisonCallChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/PrimitiveNumericComparisonCallChecker.kt index 41fb58ed048..05fb7e24806 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/PrimitiveNumericComparisonCallChecker.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/PrimitiveNumericComparisonCallChecker.kt @@ -18,7 +18,6 @@ import org.jetbrains.kotlin.resolve.calls.checkers.CallCheckerContext import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.types.typeUtil.* -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult class PrimitiveNumericComparisonInfo( val comparisonType: KotlinType, @@ -107,12 +106,12 @@ object PrimitiveNumericComparisonCallChecker : CallChecker { } private fun List.findPrimitiveOrNullablePrimitiveType() = - firstNotNullResult { it.getPrimitiveTypeOrSupertype() } + firstNotNullOfOrNull { it.getPrimitiveTypeOrSupertype() } private fun KotlinType.getPrimitiveTypeOrSupertype(): KotlinType? = when { constructor.declarationDescriptor is TypeParameterDescriptor -> - immediateSupertypes().firstNotNullResult { + immediateSupertypes().firstNotNullOfOrNull { it.getPrimitiveTypeOrSupertype() } isPrimitiveNumberOrNullableType() -> diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/extensions/SyntheticResolveExtension.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/extensions/SyntheticResolveExtension.kt index d619c7c8e90..6577e867d6a 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/extensions/SyntheticResolveExtension.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/extensions/SyntheticResolveExtension.kt @@ -25,7 +25,6 @@ import org.jetbrains.kotlin.resolve.lazy.LazyClassContext import org.jetbrains.kotlin.resolve.lazy.declarations.ClassMemberDeclarationProvider import org.jetbrains.kotlin.resolve.lazy.declarations.PackageMemberDeclarationProvider import org.jetbrains.kotlin.types.KotlinType -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult import org.jetbrains.kotlin.utils.addToStdlib.flatMapToNullable import java.util.* @@ -80,7 +79,7 @@ interface SyntheticResolveExtension { } override fun getSyntheticCompanionObjectNameIfNeeded(thisDescriptor: ClassDescriptor): Name? = - instances.firstNotNullResult { withLinkageErrorLogger(it) { getSyntheticCompanionObjectNameIfNeeded(thisDescriptor) } } + instances.firstNotNullOfOrNull { withLinkageErrorLogger(it) { getSyntheticCompanionObjectNameIfNeeded(thisDescriptor) } } override fun addSyntheticSupertypes(thisDescriptor: ClassDescriptor, supertypes: MutableList) = instances.forEach { withLinkageErrorLogger(it) { addSyntheticSupertypes(thisDescriptor, supertypes) } } diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/loops/HeaderInfo.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/loops/HeaderInfo.kt index 8627b2151d8..5669e3590e4 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/loops/HeaderInfo.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/loops/HeaderInfo.kt @@ -18,7 +18,6 @@ import org.jetbrains.kotlin.ir.expressions.IrCall import org.jetbrains.kotlin.ir.expressions.IrExpression import org.jetbrains.kotlin.ir.symbols.IrSymbol import org.jetbrains.kotlin.ir.visitors.IrElementVisitor -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult internal enum class ProgressionDirection { DECREASING { @@ -282,21 +281,21 @@ internal abstract class HeaderInfoBuilder( override fun visitCall(expression: IrCall, data: IrCall?): HeaderInfo? { // Return the HeaderInfo from the first successful match. // First, try to match a `reversed()` or `withIndex()` call. - val callHeaderInfo = callHandlers.firstNotNullResult { it.handle(expression, data, null, scopeOwnerSymbol()) } + val callHeaderInfo = callHandlers.firstNotNullOfOrNull { it.handle(expression, data, null, scopeOwnerSymbol()) } if (callHeaderInfo != null) return callHeaderInfo // Try to match a call to build a progression (e.g., `.indices`, `downTo`). val progressionType = ProgressionType.fromIrType(expression.type, symbols, allowUnsignedBounds) val progressionHeaderInfo = - progressionType?.run { progressionHandlers.firstNotNullResult { it.handle(expression, data, this, scopeOwnerSymbol()) } } + progressionType?.run { progressionHandlers.firstNotNullOfOrNull { it.handle(expression, data, this, scopeOwnerSymbol()) } } return progressionHeaderInfo ?: super.visitCall(expression, data) } /** Builds a [HeaderInfo] for iterable expressions not handled in [visitCall]. */ override fun visitExpression(expression: IrExpression, data: IrCall?): HeaderInfo? { - return expressionHandlers.firstNotNullResult { it.handle(expression, data, null, scopeOwnerSymbol()) } + return expressionHandlers.firstNotNullOfOrNull { it.handle(expression, data, null, scopeOwnerSymbol()) } ?: super.visitExpression(expression, data) } } diff --git a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/stack/Stack.kt b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/stack/Stack.kt index 9ec877c690e..254763b5612 100644 --- a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/stack/Stack.kt +++ b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/stack/Stack.kt @@ -16,7 +16,6 @@ import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol import org.jetbrains.kotlin.ir.util.file import org.jetbrains.kotlin.ir.util.fileEntry import org.jetbrains.kotlin.ir.util.fqNameWhenAvailable -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult internal interface Stack { fun newFrame(asSubFrame: Boolean = false, initPool: List = listOf(), block: () -> ExecutionResult): ExecutionResult @@ -132,7 +131,7 @@ private class FrameContainer(current: Frame = InterpreterFrame()) { fun addAll(variables: List) = getTopFrame().addAll(variables) fun getAll() = innerStack.flatMap { it.getAll() } fun getVariable(symbol: IrSymbol): Variable { - return innerStack.firstNotNullResult { it.getVariable(symbol) } + return innerStack.firstNotNullOfOrNull { it.getVariable(symbol) } ?: throw InterpreterException("$symbol not found") // TODO better message } @@ -144,4 +143,4 @@ private class FrameContainer(current: Frame = InterpreterFrame()) { fun peekReturnValue() = getTopFrame().peekReturnValue() override fun toString() = frameEntryPoint ?: "Not defined" -} \ No newline at end of file +} diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/ExternalDependenciesGenerator.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/ExternalDependenciesGenerator.kt index 20b7345f734..82303420405 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/ExternalDependenciesGenerator.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/ExternalDependenciesGenerator.kt @@ -21,7 +21,6 @@ import org.jetbrains.kotlin.ir.declarations.IrDeclaration import org.jetbrains.kotlin.ir.linkage.IrProvider import org.jetbrains.kotlin.ir.linkage.KotlinIrLinkerInternalException import org.jetbrains.kotlin.ir.symbols.IrSymbol -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult class ExternalDependenciesGenerator( val symbolTable: SymbolTable, @@ -57,6 +56,6 @@ class ExternalDependenciesGenerator( } fun List.getDeclaration(symbol: IrSymbol): IrDeclaration? = - firstNotNullResult { provider -> + firstNotNullOfOrNull { provider -> provider.getDeclaration(symbol) } diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinIrLinker.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinIrLinker.kt index 143594d75cf..6446525dc63 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinIrLinker.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinIrLinker.kt @@ -13,22 +13,16 @@ import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.ir.builders.TranslationPluginContext import org.jetbrains.kotlin.ir.declarations.IrDeclaration -import org.jetbrains.kotlin.ir.declarations.IrFile import org.jetbrains.kotlin.ir.declarations.IrModuleFragment import org.jetbrains.kotlin.ir.descriptors.* -import org.jetbrains.kotlin.ir.expressions.IrBody import org.jetbrains.kotlin.ir.linkage.IrDeserializer import org.jetbrains.kotlin.ir.linkage.KotlinIrLinkerInternalException import org.jetbrains.kotlin.ir.symbols.* import org.jetbrains.kotlin.ir.util.* import org.jetbrains.kotlin.library.IrLibrary import org.jetbrains.kotlin.library.KotlinLibrary -import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.protobuf.CodedInputStream -import org.jetbrains.kotlin.protobuf.ExtensionRegistryLite.newInstance import org.jetbrains.kotlin.resolve.descriptorUtil.module -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult abstract class KotlinIrLinker( private val currentModule: ModuleDescriptor?, @@ -141,7 +135,7 @@ abstract class KotlinIrLinker( } return translationPluginContext?.let { ctx -> - linkerExtensions.firstNotNullResult { + linkerExtensions.firstNotNullOfOrNull { it.resolveSymbol(symbol, ctx) }?.also { require(symbol.owner == it) @@ -342,4 +336,4 @@ enum class DeserializationStrategy( EXPLICITLY_EXPORTED(true, true, false, true), ONLY_DECLARATION_HEADERS(false, false, false, false), WITH_INLINE_BODIES(false, false, false, true) -} \ No newline at end of file +} diff --git a/compiler/resolution/src/org/jetbrains/kotlin/resolve/scopes/LexicalChainedScope.kt b/compiler/resolution/src/org/jetbrains/kotlin/resolve/scopes/LexicalChainedScope.kt index e338fb3631c..b502459d272 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/resolve/scopes/LexicalChainedScope.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/resolve/scopes/LexicalChainedScope.kt @@ -27,7 +27,6 @@ import org.jetbrains.kotlin.util.collectionUtils.getFirstClassifierDiscriminateH import org.jetbrains.kotlin.util.collectionUtils.getFromAllScopes import org.jetbrains.kotlin.util.collectionUtils.listOfNonEmptyScopes import org.jetbrains.kotlin.utils.Printer -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult class LexicalChainedScope private constructor( parent: LexicalScope, @@ -50,7 +49,7 @@ class LexicalChainedScope private constructor( getFirstClassifierDiscriminateHeaders(memberScopes) { it.getContributedClassifier(name, location) } override fun getContributedClassifierIncludeDeprecated(name: Name, location: LookupLocation): DescriptorWithDeprecation? { - val (firstClassifier, isFirstDeprecated) = memberScopes.firstNotNullResult { + val (firstClassifier, isFirstDeprecated) = memberScopes.firstNotNullOfOrNull { it.getContributedClassifierIncludeDeprecated(name, location) } ?: return null diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/AbstractBytecodeListingTest.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/AbstractBytecodeListingTest.kt index 10bcf4bb391..f6de9823028 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/AbstractBytecodeListingTest.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/AbstractBytecodeListingTest.kt @@ -7,7 +7,6 @@ package org.jetbrains.kotlin.codegen import org.jetbrains.kotlin.ObsoleteTestInfrastructure import org.jetbrains.kotlin.test.KotlinTestUtils -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult import org.jetbrains.kotlin.utils.sure import java.io.File @@ -28,7 +27,7 @@ abstract class AbstractBytecodeListingTest : CodegenTestCase() { } val txtFile = - prefixes.firstNotNullResult { File(wholeFile.parentFile, wholeFile.nameWithoutExtension + "$it.txt").takeIf(File::exists) } + prefixes.firstNotNullOfOrNull { File(wholeFile.parentFile, wholeFile.nameWithoutExtension + "$it.txt").takeIf(File::exists) } .sure { "No testData file exists: ${wholeFile.nameWithoutExtension}.txt" } KotlinTestUtils.assertEqualsToFile(txtFile, actualTxt) diff --git a/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/impl/KlibMetadataDeserializedPackageFragmentsFactoryImpl.kt b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/impl/KlibMetadataDeserializedPackageFragmentsFactoryImpl.kt index 7b4db57402a..bb65e7971c6 100644 --- a/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/impl/KlibMetadataDeserializedPackageFragmentsFactoryImpl.kt +++ b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/impl/KlibMetadataDeserializedPackageFragmentsFactoryImpl.kt @@ -6,7 +6,6 @@ import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor import org.jetbrains.kotlin.descriptors.impl.PackageFragmentDescriptorImpl import org.jetbrains.kotlin.incremental.components.LookupLocation -import org.jetbrains.kotlin.incremental.components.NoLookupLocation import org.jetbrains.kotlin.library.* import org.jetbrains.kotlin.library.metadata.KlibMetadataCachedPackageFragment import org.jetbrains.kotlin.library.metadata.KlibMetadataDeserializedPackageFragment @@ -20,7 +19,6 @@ import org.jetbrains.kotlin.resolve.scopes.MemberScopeImpl import org.jetbrains.kotlin.serialization.konan.impl.ForwardDeclarationsFqNames import org.jetbrains.kotlin.storage.StorageManager import org.jetbrains.kotlin.utils.Printer -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult // TODO decouple and move interop-specific logic back to Kotlin/Native. open class KlibMetadataDeserializedPackageFragmentsFactoryImpl : KlibMetadataDeserializedPackageFragmentsFactory { @@ -125,7 +123,7 @@ class ClassifierAliasingPackageFragmentDescriptor( private val memberScope = object : MemberScopeImpl() { override fun getContributedClassifier(name: Name, location: LookupLocation) = - targets.firstNotNullResult { + targets.firstNotNullOfOrNull { if (it.hasTopLevelClassifier(name)) { it.getMemberScope().getContributedClassifier(name, location) } else { diff --git a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/AnnotationTypeQualifierResolver.kt b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/AnnotationTypeQualifierResolver.kt index a7917957232..4177e5fe75e 100644 --- a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/AnnotationTypeQualifierResolver.kt +++ b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/AnnotationTypeQualifierResolver.kt @@ -29,7 +29,6 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe import org.jetbrains.kotlin.storage.StorageManager import org.jetbrains.kotlin.utils.JavaTypeEnhancementState import org.jetbrains.kotlin.utils.ReportLevel -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult class AnnotationTypeQualifierResolver(storageManager: StorageManager, private val javaTypeEnhancementState: JavaTypeEnhancementState) { class TypeQualifierWithApplicability( @@ -59,7 +58,7 @@ class AnnotationTypeQualifierResolver(storageManager: StorageManager, private va private fun computeTypeQualifierNickname(classDescriptor: ClassDescriptor): AnnotationDescriptor? { if (!classDescriptor.annotations.hasAnnotation(TYPE_QUALIFIER_NICKNAME_FQNAME)) return null - return classDescriptor.annotations.firstNotNullResult(this::resolveTypeQualifierAnnotation) + return classDescriptor.annotations.firstNotNullOfOrNull(this::resolveTypeQualifierAnnotation) } private fun resolveTypeQualifierNickname(classDescriptor: ClassDescriptor): AnnotationDescriptor? { diff --git a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassMemberScope.kt b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassMemberScope.kt index 817a7a65d35..43b46fea0e4 100644 --- a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassMemberScope.kt +++ b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassMemberScope.kt @@ -57,7 +57,6 @@ import org.jetbrains.kotlin.types.checker.KotlinTypeChecker import org.jetbrains.kotlin.types.refinement.TypeRefinement import org.jetbrains.kotlin.utils.SmartSet import org.jetbrains.kotlin.utils.addIfNotNull -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult import org.jetbrains.kotlin.utils.ifEmpty import java.util.* @@ -288,7 +287,7 @@ class LazyJavaClassMemberScope( getterName: String, functions: (Name) -> Collection ): SimpleFunctionDescriptor? { - return functions(Name.identifier(getterName)).firstNotNullResult factory@{ descriptor -> + return functions(Name.identifier(getterName)).firstNotNullOfOrNull factory@{ descriptor -> if (descriptor.valueParameters.size != 0) return@factory null descriptor.takeIf { KotlinTypeChecker.DEFAULT.isSubtypeOf(descriptor.returnType ?: return@takeIf false, type) } @@ -298,7 +297,7 @@ class LazyJavaClassMemberScope( private fun PropertyDescriptor.findSetterOverride( functions: (Name) -> Collection ): SimpleFunctionDescriptor? { - return functions(Name.identifier(JvmAbi.setterName(name.asString()))).firstNotNullResult factory@{ descriptor -> + return functions(Name.identifier(JvmAbi.setterName(name.asString()))).firstNotNullOfOrNull factory@{ descriptor -> if (descriptor.valueParameters.size != 1) return@factory null if (!KotlinBuiltIns.isUnit(descriptor.returnType ?: return@factory null)) return@factory null @@ -448,7 +447,7 @@ class LazyJavaClassMemberScope( ): SimpleFunctionDescriptor? { if (!descriptor.isSuspend) return null - return functions(descriptor.name).firstNotNullResult { overrideCandidate -> + return functions(descriptor.name).firstNotNullOfOrNull { overrideCandidate -> overrideCandidate.createSuspendView()?.takeIf { suspendView -> suspendView.doesOverride(descriptor) } } } diff --git a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/typeEnhancement/signatureEnhancement.kt b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/typeEnhancement/signatureEnhancement.kt index 4b6251754eb..63c304b99bc 100644 --- a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/typeEnhancement/signatureEnhancement.kt +++ b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/typeEnhancement/signatureEnhancement.kt @@ -41,7 +41,6 @@ import org.jetbrains.kotlin.types.typeUtil.contains import org.jetbrains.kotlin.types.typeUtil.isTypeParameter import org.jetbrains.kotlin.utils.JavaTypeEnhancementState import org.jetbrains.kotlin.utils.ReportLevel -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult import org.jetbrains.kotlin.utils.addToStdlib.safeAs class SignatureEnhancement( @@ -461,7 +460,7 @@ class SignatureEnhancement( areImprovementsEnabled: Boolean, typeParameterBounds: Boolean ): NullabilityQualifierWithMigrationStatus? = - this.firstNotNullResult { extractNullability(it, areImprovementsEnabled, typeParameterBounds) } + this.firstNotNullOfOrNull { extractNullability(it, areImprovementsEnabled, typeParameterBounds) } private fun computeIndexedQualifiersForOverride(): (Int) -> JavaTypeQualifiers { diff --git a/core/util.runtime/src/org/jetbrains/kotlin/utils/addToStdlib.kt b/core/util.runtime/src/org/jetbrains/kotlin/utils/addToStdlib.kt index 01f3d7bf302..0e302974688 100644 --- a/core/util.runtime/src/org/jetbrains/kotlin/utils/addToStdlib.kt +++ b/core/util.runtime/src/org/jetbrains/kotlin/utils/addToStdlib.kt @@ -93,11 +93,16 @@ fun constant(calculator: () -> T): T { private val constantMap = ConcurrentHashMap, Any>() fun String.indexOfOrNull(char: Char, startIndex: Int = 0, ignoreCase: Boolean = false): Int? = - indexOf(char, startIndex, ignoreCase).takeIf { it >= 0 } + indexOf(char, startIndex, ignoreCase).takeIf { it >= 0 } fun String.lastIndexOfOrNull(char: Char, startIndex: Int = lastIndex, ignoreCase: Boolean = false): Int? = - lastIndexOf(char, startIndex, ignoreCase).takeIf { it >= 0 } + lastIndexOf(char, startIndex, ignoreCase).takeIf { it >= 0 } +@Deprecated( + message = "Use firstNotNullOfOrNull from stdlib instead", + replaceWith = ReplaceWith("firstNotNullOfOrNull(transform)"), + level = DeprecationLevel.ERROR +) inline fun Iterable.firstNotNullResult(transform: (T) -> R?): R? { for (element in this) { val result = transform(element) @@ -106,14 +111,6 @@ inline fun Iterable.firstNotNullResult(transform: (T) -> R?): R? return null } -inline fun Array.firstNotNullResult(transform: (T) -> R?): R? { - for (element in this) { - val result = transform(element) - if (result != null) return result - } - return null -} - inline fun Iterable.sumByLong(selector: (T) -> Long): Long { var sum: Long = 0 for (element in this) { @@ -126,7 +123,7 @@ inline fun , O> C.ifNotEmpty(body: C.() -> O?): O? = if (is inline fun Array.ifNotEmpty(body: Array.() -> O?): O? = if (isNotEmpty()) this.body() else null -inline fun measureTimeMillisWithResult(block: () -> T) : Pair { +inline fun measureTimeMillisWithResult(block: () -> T): Pair { val start = System.currentTimeMillis() val result = block() return Pair(System.currentTimeMillis() - start, result) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ProjectResolutionFacade.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ProjectResolutionFacade.kt index 50750a43a97..a980903cd34 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ProjectResolutionFacade.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ProjectResolutionFacade.kt @@ -27,7 +27,6 @@ import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.resolve.CompositeBindingContext import org.jetbrains.kotlin.storage.CancellableSimpleLock import org.jetbrains.kotlin.storage.guarded -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult import java.util.concurrent.locks.ReentrantLock internal class ProjectResolutionFacade( @@ -132,7 +131,7 @@ internal class ProjectResolutionFacade( internal fun resolverForElement(element: PsiElement): ResolverForModule { val infos = element.getModuleInfos() - return infos.asIterable().firstNotNullResult { cachedResolverForProject.tryGetResolverForModule(it) } + return infos.asIterable().firstNotNullOfOrNull { cachedResolverForProject.tryGetResolverForModule(it) } ?: cachedResolverForProject.tryGetResolverForModule(NotUnderContentRootModuleInfo) ?: cachedResolverForProject.diagnoseUnknownModuleInfo(infos.toList()) } diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/SourceNavigationHelper.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/SourceNavigationHelper.kt index 0bfe3baa2ba..57e059a018e 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/SourceNavigationHelper.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/SourceNavigationHelper.kt @@ -38,7 +38,6 @@ import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.debugText.getDebugText import org.jetbrains.kotlin.platform.isCommon -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult object SourceNavigationHelper { private val LOG = Logger.getInstance(SourceNavigationHelper::class.java) @@ -213,7 +212,7 @@ object SourceNavigationHelper { index: StringStubIndexExtension ): T? { val classFqName = entity.fqName ?: return null - return targetScopes(entity, navigationKind).firstNotNullResult { scope -> + return targetScopes(entity, navigationKind).firstNotNullOfOrNull { scope -> index.get(classFqName.asString(), entity.project, scope).minByOrNull { it.isExpectDeclaration() } } } diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/AfterAnalysisHighlightingVisitor.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/AfterAnalysisHighlightingVisitor.kt index 2e28e24c0da..969d73eb712 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/AfterAnalysisHighlightingVisitor.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/AfterAnalysisHighlightingVisitor.kt @@ -25,7 +25,6 @@ import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.psi.KtSimpleNameExpression import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult abstract class AfterAnalysisHighlightingVisitor protected constructor( holder: HighlightInfoHolder, protected var bindingContext: BindingContext @@ -33,7 +32,7 @@ abstract class AfterAnalysisHighlightingVisitor protected constructor( protected fun attributeKeyForDeclarationFromExtensions(element: PsiElement, descriptor: DeclarationDescriptor): TextAttributesKey? { @Suppress("DEPRECATION") - return Extensions.getExtensions(HighlighterExtension.EP_NAME).firstNotNullResult { extension -> + return Extensions.getExtensions(HighlighterExtension.EP_NAME).firstNotNullOfOrNull { extension -> extension.highlightDeclaration(element, descriptor) } } @@ -43,7 +42,7 @@ abstract class AfterAnalysisHighlightingVisitor protected constructor( resolvedCall: ResolvedCall ): TextAttributesKey? { @Suppress("DEPRECATION") - return Extensions.getExtensions(HighlighterExtension.EP_NAME).firstNotNullResult { extension -> + return Extensions.getExtensions(HighlighterExtension.EP_NAME).firstNotNullOfOrNull { extension -> extension.highlightCall(expression, resolvedCall) } } diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/FunctionsHighlightingVisitor.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/FunctionsHighlightingVisitor.kt index b706434c715..651c38259b6 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/FunctionsHighlightingVisitor.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/FunctionsHighlightingVisitor.kt @@ -23,7 +23,6 @@ import org.jetbrains.kotlin.resolve.calls.model.VariableAsFunctionResolvedCall import org.jetbrains.kotlin.resolve.calls.tasks.isDynamic import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameOrNull import org.jetbrains.kotlin.serialization.deserialization.KOTLIN_SUSPEND_BUILT_IN_FUNCTION_FQ_NAME -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult internal class FunctionsHighlightingVisitor(holder: HighlightInfoHolder, bindingContext: BindingContext) : AfterAnalysisHighlightingVisitor(holder, bindingContext) { @@ -54,7 +53,7 @@ internal class FunctionsHighlightingVisitor(holder: HighlightInfoHolder, binding @Suppress("DEPRECATION") val extensions = Extensions.getExtensions(HighlighterExtension.EP_NAME) - val key = extensions.firstNotNullResult { extension -> + val key = extensions.firstNotNullOfOrNull { extension -> extension.highlightCall(callee, resolvedCall) } ?: when { calleeDescriptor.fqNameOrNull() == KOTLIN_SUSPEND_BUILT_IN_FUNCTION_FQ_NAME -> KEYWORD diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/PropertiesHighlightingVisitor.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/PropertiesHighlightingVisitor.kt index bf52183a5a7..d4cc5d16b82 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/PropertiesHighlightingVisitor.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/PropertiesHighlightingVisitor.kt @@ -21,7 +21,6 @@ import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall import org.jetbrains.kotlin.resolve.calls.tasks.isDynamic import org.jetbrains.kotlin.resolve.calls.tower.isSynthesized -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult internal class PropertiesHighlightingVisitor(holder: HighlightInfoHolder, bindingContext: BindingContext) : AfterAnalysisHighlightingVisitor(holder, bindingContext) { @@ -43,7 +42,7 @@ internal class PropertiesHighlightingVisitor(holder: HighlightInfoHolder, bindin val attributesKey = resolvedCall?.let { call -> @Suppress("DEPRECATION") - Extensions.getExtensions(HighlighterExtension.EP_NAME).firstNotNullResult { extension -> + Extensions.getExtensions(HighlighterExtension.EP_NAME).firstNotNullOfOrNull { extension -> extension.highlightCall(expression, call) } } ?: attributeKeyByPropertyType(target) diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/BasicLookupElementFactory.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/BasicLookupElementFactory.kt index 2b842b1ac77..142ed88e674 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/BasicLookupElementFactory.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/BasicLookupElementFactory.kt @@ -31,7 +31,6 @@ import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.descriptorUtil.isExtension import org.jetbrains.kotlin.synthetic.SamAdapterExtensionFunctionDescriptor import org.jetbrains.kotlin.synthetic.SyntheticJavaPropertyDescriptor -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult import java.awt.Font class BasicLookupElementFactory( @@ -277,7 +276,7 @@ class BasicLookupElementFactory( } fun appendContainerAndReceiverInformation(descriptor: CallableDescriptor, appendTailText: (String) -> Unit) { - val information = CompletionInformationProvider.EP_NAME.extensions.firstNotNullResult { + val information = CompletionInformationProvider.EP_NAME.extensions.firstNotNullOfOrNull { it.getContainerAndReceiverInformation(descriptor) } @@ -345,4 +344,4 @@ class BasicLookupElementFactory( presentation.icon = DefaultLookupItemRenderer.getRawIcon(this@withIconFromLookupObject, presentation.isReal) } } -} \ No newline at end of file +} diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/overrideImplement/GenerateMembersHandler.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/overrideImplement/GenerateMembersHandler.kt index 68434d4c571..db43f0a4816 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/overrideImplement/GenerateMembersHandler.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/overrideImplement/GenerateMembersHandler.kt @@ -33,7 +33,6 @@ import org.jetbrains.kotlin.psi.psiUtil.startOffset import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.source.getPsi import org.jetbrains.kotlin.util.findCallableMemberBySignature -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult abstract class GenerateMembersHandler : AbstractGenerateMembersHandler() { @@ -100,12 +99,12 @@ abstract class GenerateMembersHandler : AbstractGenerateMembersHandler() { @OptIn(HackToForceAllowRunningAnalyzeOnEDT::class) @@ -70,7 +69,7 @@ internal abstract class KtGenerateMembersHandler : AbstractGenerateMembersHandle } } } - insertedBlocks.firstOrNull()?.declarations?.firstNotNullResult { it.element }?.let { + insertedBlocks.firstOrNull()?.declarations?.firstNotNullOfOrNull { it.element }?.let { moveCaretIntoGeneratedElement(editor, it) } } @@ -317,4 +316,4 @@ internal abstract class KtGenerateMembersHandler : AbstractGenerateMembersHandle /** A block of generated code. The code is represented as a list of Kotlin declarations that are defined one after another. */ private data class InsertedBlock(val declarations: List>) -} \ No newline at end of file +} diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/IndexHelper.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/IndexHelper.kt index 3aef27f2748..d12532f0cf8 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/IndexHelper.kt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/IndexHelper.kt @@ -7,23 +7,17 @@ package org.jetbrains.kotlin.idea.fir.low.level.api import com.intellij.openapi.progress.ProgressManager import com.intellij.openapi.project.Project -import com.intellij.psi.PsiClass import com.intellij.psi.PsiElement import com.intellij.psi.search.GlobalSearchScope -import com.intellij.psi.search.PsiShortNamesCache import com.intellij.psi.stubs.StringStubIndexExtension import com.intellij.psi.stubs.StubIndex import com.intellij.psi.stubs.StubIndexKey -import org.jetbrains.kotlin.descriptors.ClassDescriptor -import org.jetbrains.kotlin.idea.caches.resolve.util.resolveToDescriptor -import org.jetbrains.kotlin.name.CallableId import org.jetbrains.kotlin.idea.stubindex.* +import org.jetbrains.kotlin.name.CallableId import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.* -import org.jetbrains.kotlin.psi.psiUtil.contains -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult /* * Move to another module @@ -163,4 +157,4 @@ public class IndexHelper(val project: Project, private val scope: GlobalSearchSc private fun getShortName(fqName: String) = Name.identifier(fqName.substringAfterLast('.')) } -} \ No newline at end of file +} diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/providers/FirModuleWithDependenciesSymbolProvider.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/providers/FirModuleWithDependenciesSymbolProvider.kt index 90901bec8be..ce4389c56f4 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/providers/FirModuleWithDependenciesSymbolProvider.kt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/providers/FirModuleWithDependenciesSymbolProvider.kt @@ -15,7 +15,6 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult internal class FirModuleWithDependenciesSymbolProvider( session: FirSession, @@ -30,7 +29,7 @@ internal class FirModuleWithDependenciesSymbolProvider( fun getClassLikeSymbolByFqNameWithoutDependencies(classId: ClassId): FirClassLikeSymbol<*>? = - providers.firstNotNullResult { it.getClassLikeSymbolByFqName(classId) } + providers.firstNotNullOfOrNull { it.getClassLikeSymbolByFqName(classId) } @FirSymbolProviderInternals override fun getTopLevelCallableSymbolsTo(destination: MutableList>, packageFqName: FqName, name: Name) { @@ -75,12 +74,12 @@ internal class FirModuleWithDependenciesSymbolProvider( fun getPackageWithoutDependencies(fqName: FqName): FqName? = - providers.firstNotNullResult { it.getPackage(fqName) } + providers.firstNotNullOfOrNull { it.getPackage(fqName) } } private class DependentModuleProviders(session: FirSession, private val providers: List) : FirSymbolProvider(session) { override fun getClassLikeSymbolByFqName(classId: ClassId): FirClassLikeSymbol<*>? = - providers.firstNotNullResult { provider -> + providers.firstNotNullOfOrNull { provider -> when (provider) { is FirModuleWithDependenciesSymbolProvider -> provider.getClassLikeSymbolByFqNameWithoutDependencies(classId) else -> provider.getClassLikeSymbolByFqName(classId) @@ -122,10 +121,10 @@ private class DependentModuleProviders(session: FirSession, private val provider } override fun getPackage(fqName: FqName): FqName? = - providers.firstNotNullResult { provider -> + providers.firstNotNullOfOrNull { provider -> when (provider) { is FirModuleWithDependenciesSymbolProvider -> provider.getPackageWithoutDependencies(fqName) else -> provider.getPackage(fqName) } } -} \ No newline at end of file +} diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/references/FirReferenceResolveHelper.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/references/FirReferenceResolveHelper.kt index 44713ccc8a6..4d7c807a3f5 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/references/FirReferenceResolveHelper.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/references/FirReferenceResolveHelper.kt @@ -42,7 +42,6 @@ import org.jetbrains.kotlin.psi.psiUtil.collectDescendantsOfType import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType import org.jetbrains.kotlin.psi.psiUtil.getQualifiedExpressionForSelector import org.jetbrains.kotlin.psi.psiUtil.unwrapNullability -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult internal object FirReferenceResolveHelper { fun FirResolvedTypeRef.toTargetSymbol(session: FirSession, symbolBuilder: KtSymbolByFirBuilder): KtSymbol? { @@ -220,7 +219,7 @@ internal object FirReferenceResolveHelper { } private fun FirCall.findCorrespondingParameter(ktValueArgument: KtValueArgument): FirValueParameter? = - argumentMapping?.entries?.firstNotNullResult { (firArgument, firParameter) -> + argumentMapping?.entries?.firstNotNullOfOrNull { (firArgument, firParameter) -> if (firArgument.psi == ktValueArgument) firParameter else null } diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinMPPGradleProjectResolver.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinMPPGradleProjectResolver.kt index 13ac254d1a3..a80895e26a9 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinMPPGradleProjectResolver.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinMPPGradleProjectResolver.kt @@ -5,9 +5,6 @@ package org.jetbrains.kotlin.idea.configuration -import com.google.common.graph.GraphBuilder -import com.google.common.graph.Graphs -import com.intellij.build.events.MessageEvent import com.intellij.ide.plugins.PluginManager import com.intellij.openapi.extensions.PluginId import com.intellij.openapi.externalSystem.model.DataNode @@ -18,7 +15,6 @@ import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil.normalizeP import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil.toCanonicalPath import com.intellij.openapi.externalSystem.util.ExternalSystemConstants import com.intellij.openapi.externalSystem.util.Order -import com.intellij.openapi.roots.DependencyScope import com.intellij.openapi.util.Key import com.intellij.openapi.util.Pair import com.intellij.openapi.util.io.FileUtil @@ -30,7 +26,6 @@ import com.intellij.util.text.VersionComparatorUtil import org.gradle.tooling.model.UnsupportedMethodException import org.gradle.tooling.model.idea.IdeaContentRoot import org.gradle.tooling.model.idea.IdeaModule -import org.jetbrains.annotations.NonNls import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments import org.jetbrains.kotlin.cli.common.arguments.ManualLanguageFeatureSetting @@ -40,11 +35,7 @@ import org.jetbrains.kotlin.config.ExternalSystemRunTask import org.jetbrains.kotlin.config.ExternalSystemTestRunTask import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.gradle.* -import org.jetbrains.kotlin.idea.PlatformVersion import org.jetbrains.kotlin.idea.configuration.GradlePropertiesFileFacade.Companion.KOTLIN_NOT_IMPORTED_COMMON_SOURCE_SETS_SETTING -import org.jetbrains.kotlin.idea.configuration.klib.KotlinNativeLibrariesDependencySubstitutor -import org.jetbrains.kotlin.idea.configuration.klib.KotlinNativeLibrariesFixer -import org.jetbrains.kotlin.idea.configuration.klib.KotlinNativeLibraryNameUtil.KOTLIN_NATIVE_LIBRARY_PREFIX_PLUS_SPACE import org.jetbrains.kotlin.idea.configuration.mpp.createPopulateModuleDependenciesContext import org.jetbrains.kotlin.idea.configuration.mpp.getCompilations import org.jetbrains.kotlin.idea.configuration.mpp.populateModuleDependenciesByCompilations @@ -54,14 +45,12 @@ import org.jetbrains.kotlin.idea.configuration.utils.predictedProductionSourceSe import org.jetbrains.kotlin.idea.platform.IdePlatformKindTooling import org.jetbrains.kotlin.idea.util.NotNullableCopyableDataNodeUserDataProperty import org.jetbrains.kotlin.util.removeSuffixIfPresent -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult import org.jetbrains.plugins.gradle.model.* import org.jetbrains.plugins.gradle.model.data.BuildScriptClasspathData import org.jetbrains.plugins.gradle.model.data.GradleSourceSetData import org.jetbrains.plugins.gradle.service.project.GradleProjectResolver import org.jetbrains.plugins.gradle.service.project.GradleProjectResolver.CONFIGURATION_ARTIFACTS import org.jetbrains.plugins.gradle.service.project.GradleProjectResolver.MODULES_OUTPUTS -import org.jetbrains.plugins.gradle.service.project.GradleProjectResolverUtil.buildDependencies import org.jetbrains.plugins.gradle.service.project.GradleProjectResolverUtil.getModuleId import org.jetbrains.plugins.gradle.service.project.ProjectResolverContext import org.jetbrains.plugins.gradle.util.GradleConstants @@ -372,7 +361,7 @@ open class KotlinMPPGradleProjectResolver : AbstractProjectResolverExtensionComp resolverCtx ) ?: continue kotlinSourceSet.externalSystemRunTasks = - compilation.declaredSourceSets.firstNotNullResult { sourceSetToRunTasks[it] } ?: emptyList() + compilation.declaredSourceSets.firstNotNullOfOrNull { sourceSetToRunTasks[it] } ?: emptyList() if (compilation.platform == KotlinPlatform.JVM || compilation.platform == KotlinPlatform.ANDROID) { compilationData.targetCompatibility = (kotlinSourceSet.compilerArguments as? K2JVMCompilerArguments)?.jvmTarget diff --git a/idea/idea-jps-common/src/org/jetbrains/kotlin/platform/IdePlatformKind.kt b/idea/idea-jps-common/src/org/jetbrains/kotlin/platform/IdePlatformKind.kt index fe75bbad037..94b8426268f 100644 --- a/idea/idea-jps-common/src/org/jetbrains/kotlin/platform/IdePlatformKind.kt +++ b/idea/idea-jps-common/src/org/jetbrains/kotlin/platform/IdePlatformKind.kt @@ -15,7 +15,6 @@ import org.jetbrains.kotlin.platform.impl.CommonIdePlatformKind import org.jetbrains.kotlin.platform.impl.JsIdePlatformKind import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind import org.jetbrains.kotlin.platform.impl.NativeIdePlatformKind -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult abstract class IdePlatformKind> { abstract fun supportsTargetPlatform(platform: TargetPlatform): Boolean @@ -66,7 +65,7 @@ abstract class IdePlatformKind> { fun platformByCompilerArguments(arguments: Args): TargetPlatform? = - ALL_KINDS.firstNotNullResult { it.platformByCompilerArguments(arguments) } + ALL_KINDS.firstNotNullOfOrNull { it.platformByCompilerArguments(arguments) } } } @@ -80,4 +79,4 @@ val TargetPlatform.idePlatformKind: IdePlatformKind<*> } else -> error("Unknown platform $this") } - } \ No newline at end of file + } diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/RedundantVisibilityModifierInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/RedundantVisibilityModifierInspection.kt index 63d0d33d610..681f69bcab2 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/RedundantVisibilityModifierInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/RedundantVisibilityModifierInspection.kt @@ -28,7 +28,6 @@ import org.jetbrains.kotlin.psi.declarationVisitor import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject import org.jetbrains.kotlin.psi.psiUtil.isPrivate import org.jetbrains.kotlin.psi.psiUtil.visibilityModifier -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult import org.jetbrains.kotlin.resolve.descriptorUtil.isEffectivelyPublicApi class RedundantVisibilityModifierInspection : AbstractKotlinInspection(), CleanupLocalInspectionTool { @@ -79,7 +78,7 @@ class RedundantVisibilityModifierInspection : AbstractKotlinInspection(), Cleanu } return (descriptor as? CallableMemberDescriptor) ?.overriddenDescriptors - ?.firstNotNullResult { (it as? PropertyDescriptor)?.setter } + ?.firstNotNullOfOrNull { (it as? PropertyDescriptor)?.setter } ?.visibility } } diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/AddWhenRemainingBranchesFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/AddWhenRemainingBranchesFix.kt index b1a3545103e..c4476cf9220 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/AddWhenRemainingBranchesFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/AddWhenRemainingBranchesFix.kt @@ -32,8 +32,6 @@ import org.jetbrains.kotlin.idea.core.quoteIfNeeded import org.jetbrains.kotlin.idea.intentions.ImportAllMembersIntention import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType -import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult class AddWhenRemainingBranchesFix( expression: KtWhenExpression, @@ -122,7 +120,7 @@ class AddWhenRemainingBranchesFix( element.entries .map { it.conditions.toList() } .flatten() - .firstNotNullResult { + .firstNotNullOfOrNull { (it as? KtWhenConditionWithExpression)?.expression as? KtDotQualifiedExpression }?.importReceiverMembers() } diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/ConvertToAnonymousObjectFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/ConvertToAnonymousObjectFix.kt index 64bc8f61de4..b0ad48948ce 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/ConvertToAnonymousObjectFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/ConvertToAnonymousObjectFix.kt @@ -22,7 +22,6 @@ import org.jetbrains.kotlin.psi.KtNameReferenceExpression import org.jetbrains.kotlin.psi.KtReferenceExpression import org.jetbrains.kotlin.resolve.calls.tower.WrongResolutionToClassifier import org.jetbrains.kotlin.resolve.sam.getAbstractMembers -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult class ConvertToAnonymousObjectFix(element: KtNameReferenceExpression) : KotlinQuickFixAction(element) { override fun getFamilyName() = KotlinBundle.message("convert.to.anonymous.object") @@ -33,7 +32,7 @@ class ConvertToAnonymousObjectFix(element: KtNameReferenceExpression) : KotlinQu val nameReference = element ?: return val call = nameReference.parent as? KtCallExpression ?: return val lambda = SamConversionToAnonymousObjectIntention.getLambdaExpression(call) ?: return - val functionDescriptor = nameReference.analyze().diagnostics.forElement(nameReference).firstNotNullResult { + val functionDescriptor = nameReference.analyze().diagnostics.forElement(nameReference).firstNotNullOfOrNull { if (it.factory == Errors.RESOLUTION_TO_CLASSIFIER) getFunctionDescriptor(Errors.RESOLUTION_TO_CLASSIFIER.cast(it)) else null } ?: return val functionName = functionDescriptor.name.asString() @@ -59,4 +58,4 @@ class ConvertToAnonymousObjectFix(element: KtNameReferenceExpression) : KotlinQu return if (singleAbstractFunction.typeParameters.isEmpty()) singleAbstractFunction else null } } -} \ No newline at end of file +} diff --git a/js/js.frontend/src/org/jetbrains/kotlin/js/analyze/TopDownAnalyzerFacadeForJS.kt b/js/js.frontend/src/org/jetbrains/kotlin/js/analyze/TopDownAnalyzerFacadeForJS.kt index 0a34101e610..b1b20e1db36 100644 --- a/js/js.frontend/src/org/jetbrains/kotlin/js/analyze/TopDownAnalyzerFacadeForJS.kt +++ b/js/js.frontend/src/org/jetbrains/kotlin/js/analyze/TopDownAnalyzerFacadeForJS.kt @@ -39,7 +39,6 @@ import org.jetbrains.kotlin.serialization.js.KotlinJavascriptSerializationUtil import org.jetbrains.kotlin.serialization.js.ModuleKind import org.jetbrains.kotlin.serialization.js.PackagesWithHeaderMetadata import org.jetbrains.kotlin.utils.JsMetadataVersion -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult abstract class AbstractTopDownAnalyzerFacadeForJS { @@ -126,14 +125,14 @@ abstract class AbstractTopDownAnalyzerFacadeForJS { // Mimic the behavior in the jvm frontend. The extensions have 2 chances to override the normal analysis: // * If any of the extensions returns a non-null result, it. Otherwise do the normal analysis. // * `analysisCompleted` can be used to override the result, too. - var result = analysisHandlerExtensions.firstNotNullResult { extension -> + var result = analysisHandlerExtensions.firstNotNullOfOrNull { extension -> extension.doAnalysis(project, moduleContext.module, moduleContext, files, trace, container) } ?: run { container.get().analyzeDeclarations(TopDownAnalysisMode.TopLevelDeclarations, files) AnalysisResult.success(trace.bindingContext, moduleContext.module) } - result = analysisHandlerExtensions.firstNotNullResult { extension -> + result = analysisHandlerExtensions.firstNotNullOfOrNull { extension -> extension.analysisCompleted(project, moduleContext.module, trace, files) } ?: result diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/intrinsic/functions/FunctionIntrinsics.kt b/js/js.translator/src/org/jetbrains/kotlin/js/translate/intrinsic/functions/FunctionIntrinsics.kt index ec2bc3a01ff..602134ec77e 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/intrinsic/functions/FunctionIntrinsics.kt +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/intrinsic/functions/FunctionIntrinsics.kt @@ -20,7 +20,6 @@ import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.js.translate.context.TranslationContext import org.jetbrains.kotlin.js.translate.intrinsic.functions.basic.FunctionIntrinsic import org.jetbrains.kotlin.js.translate.intrinsic.functions.factories.* -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult class FunctionIntrinsics { @@ -46,7 +45,7 @@ class FunctionIntrinsics { fun getIntrinsic(descriptor: FunctionDescriptor, context: TranslationContext): FunctionIntrinsic? { if (descriptor in intrinsicCache) return intrinsicCache[descriptor] - return factories.firstNotNullResult { it.getIntrinsic(descriptor, context) }.also { + return factories.firstNotNullOfOrNull { it.getIntrinsic(descriptor, context) }.also { intrinsicCache[descriptor] = it } } diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/intrinsic/operation/binaryOperationIntrinsics.kt b/js/js.translator/src/org/jetbrains/kotlin/js/translate/intrinsic/operation/binaryOperationIntrinsics.kt index 09fce1933a6..9be39427d1e 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/intrinsic/operation/binaryOperationIntrinsics.kt +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/intrinsic/operation/binaryOperationIntrinsics.kt @@ -30,7 +30,6 @@ import org.jetbrains.kotlin.js.translate.utils.getPrimitiveNumericComparisonInfo import org.jetbrains.kotlin.lexer.KtToken import org.jetbrains.kotlin.psi.KtBinaryExpression import org.jetbrains.kotlin.types.KotlinType -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult class BinaryOperationIntrinsics { @@ -59,7 +58,7 @@ class BinaryOperationIntrinsics { private fun computeAndCache(key: IntrinsicKey): BinaryOperationIntrinsic? { if (key in intrinsicCache) return intrinsicCache[key] - val result = factories.firstNotNullResult { factory -> + val result = factories.firstNotNullOfOrNull { factory -> if (factory.getSupportTokens().contains(key.token)) { factory.getIntrinsic(key.function, key.leftType, key.rightType) } else null @@ -111,4 +110,4 @@ fun binaryIntrinsic( fun coerceTo(type: KotlinType): (JsExpression, TranslationContext) -> JsExpression = { e, c -> TranslationUtils.coerce(c, e, type) - } \ No newline at end of file + } diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/CachedLibraries.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/CachedLibraries.kt index 52a28d85f39..1f208e9e82b 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/CachedLibraries.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/CachedLibraries.kt @@ -10,7 +10,6 @@ import org.jetbrains.kotlin.konan.target.CompilerOutputKind import org.jetbrains.kotlin.konan.target.KonanTarget import org.jetbrains.kotlin.library.KotlinLibrary import org.jetbrains.kotlin.library.uniqueName -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult class CachedLibraries( private val target: KonanTarget, @@ -57,7 +56,7 @@ class CachedLibraries( selectCache(library, File(explicitPath)) ?: error("No cache found for library ${library.libraryName} at $explicitPath") } else { - implicitCacheDirectories.firstNotNullResult { dir -> + implicitCacheDirectories.firstNotNullOfOrNull { dir -> selectCache(library, dir.child(getCachedLibraryName(library))) } } @@ -93,4 +92,4 @@ class CachedLibraries( fun getCachedLibraryName(libraryName: String): String = "$libraryName-cache" const val BITCODE_DEPENDENCIES_FILE_NAME = "bitcode_deps" } -} \ No newline at end of file +} diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ObjCInterop.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ObjCInterop.kt index 8b069430730..ae948401462 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ObjCInterop.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ObjCInterop.kt @@ -5,13 +5,10 @@ package org.jetbrains.kotlin.backend.konan -import org.jetbrains.kotlin.backend.konan.descriptors.findPackage -import org.jetbrains.kotlin.backend.konan.descriptors.getArgumentValueOrNull -import org.jetbrains.kotlin.backend.konan.descriptors.getAnnotationValueOrNull -import org.jetbrains.kotlin.backend.konan.descriptors.getStringValue -import org.jetbrains.kotlin.backend.konan.descriptors.getAnnotationStringValue -import org.jetbrains.kotlin.backend.konan.descriptors.getStringValueOrNull -import org.jetbrains.kotlin.backend.konan.ir.* +import org.jetbrains.kotlin.backend.konan.descriptors.* +import org.jetbrains.kotlin.backend.konan.ir.getAnnotationArgumentValue +import org.jetbrains.kotlin.backend.konan.ir.isOverridable +import org.jetbrains.kotlin.backend.konan.ir.parentDeclarationsWithSelf import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor import org.jetbrains.kotlin.incremental.components.NoLookupLocation @@ -31,7 +28,6 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.parentsWithSelf import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.types.TypeUtils import org.jetbrains.kotlin.types.typeUtil.supertypes -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult internal val interopPackageName = InteropFqNames.packageName internal val objCObjectFqName = interopPackageName.child(Name.identifier("ObjCObject")) @@ -155,7 +151,7 @@ private fun FunctionDescriptor.getObjCMethodInfo(onlyExternal: Boolean): ObjCMet } } - return overriddenDescriptors.firstNotNullResult { it.getObjCMethodInfo(onlyExternal) } + return overriddenDescriptors.firstNotNullOfOrNull { it.getObjCMethodInfo(onlyExternal) } } /** @@ -170,7 +166,7 @@ private fun IrSimpleFunction.getObjCMethodInfo(onlyExternal: Boolean): ObjCMetho } } - return overriddenSymbols.firstNotNullResult { it.owner.getObjCMethodInfo(onlyExternal) } + return overriddenSymbols.firstNotNullOfOrNull { it.owner.getObjCMethodInfo(onlyExternal) } } fun FunctionDescriptor.getExternalObjCMethodInfo(): ObjCMethodInfo? = this.getObjCMethodInfo(onlyExternal = true) @@ -332,4 +328,4 @@ fun ClassDescriptor.getExternalObjCMetaClassBinaryName(): String = ?: this.name.asString().removeSuffix("Meta") private fun ClassDescriptor.getExplicitExternalObjCClassBinaryName() = - this.annotations.findAnnotation(externalObjCClassFqName)!!.getStringValueOrNull("binaryName") \ No newline at end of file + this.annotations.findAnnotation(externalObjCClassFqName)!!.getStringValueOrNull("binaryName") diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/TopDownAnalyzerFacadeForKonan.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/TopDownAnalyzerFacadeForKonan.kt index a33c7c84fbf..1caca4843c5 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/TopDownAnalyzerFacadeForKonan.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/TopDownAnalyzerFacadeForKonan.kt @@ -5,7 +5,6 @@ package org.jetbrains.kotlin.backend.konan -import org.jetbrains.kotlin.library.resolver.KotlinLibraryResolveResult import org.jetbrains.kotlin.analyzer.AnalysisResult import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.builtins.functions.functionInterfacePackageFragmentProvider @@ -25,6 +24,7 @@ import org.jetbrains.kotlin.konan.util.KlibMetadataFactories import org.jetbrains.kotlin.library.KotlinLibrary import org.jetbrains.kotlin.library.metadata.NativeTypeTransformer import org.jetbrains.kotlin.library.metadata.NullFlexibleTypeDeserializer +import org.jetbrains.kotlin.library.resolver.KotlinLibraryResolveResult import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.resolve.* @@ -32,7 +32,6 @@ import org.jetbrains.kotlin.resolve.extensions.AnalysisHandlerExtension import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProviderFactory import org.jetbrains.kotlin.serialization.konan.KotlinResolvedModuleDescriptors import org.jetbrains.kotlin.storage.StorageManager -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult internal object TopDownAnalyzerFacadeForKonan { @@ -102,14 +101,14 @@ internal object TopDownAnalyzerFacadeForKonan { // Mimic the behavior in the jvm frontend. The extensions have 2 chances to override the normal analysis: // * If any of the extensions returns a non-null result, use it. Otherwise do the normal analysis. // * `analysisCompleted` can be used to override the result, too. - var result = analysisHandlerExtensions.firstNotNullResult { extension -> + var result = analysisHandlerExtensions.firstNotNullOfOrNull { extension -> extension.doAnalysis(project, moduleDescriptor, projectContext, files, trace, container) } ?: run { analyzerForKonan.analyzeDeclarations(TopDownAnalysisMode.TopLevelDeclarations, files) AnalysisResult.success(trace.bindingContext, moduleDescriptor) } - result = analysisHandlerExtensions.firstNotNullResult { extension -> + result = analysisHandlerExtensions.firstNotNullOfOrNull { extension -> extension.analysisCompleted(project, moduleDescriptor, trace, files) } ?: result diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/interop/cenum/CEnumClassGenerator.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/interop/cenum/CEnumClassGenerator.kt index 3117c5dd3ad..0f959bd84f5 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/interop/cenum/CEnumClassGenerator.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/interop/cenum/CEnumClassGenerator.kt @@ -10,8 +10,8 @@ import org.jetbrains.kotlin.backend.konan.ir.interop.findDeclarationByName import org.jetbrains.kotlin.backend.konan.ir.interop.irInstanceInitializer import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.DeclarationDescriptor -import org.jetbrains.kotlin.descriptors.PropertyDescriptor import org.jetbrains.kotlin.descriptors.DescriptorVisibilities +import org.jetbrains.kotlin.descriptors.PropertyDescriptor import org.jetbrains.kotlin.ir.builders.* import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns @@ -25,7 +25,6 @@ import org.jetbrains.kotlin.psi2ir.generators.DeclarationGenerator import org.jetbrains.kotlin.psi2ir.generators.EnumClassMembersGenerator import org.jetbrains.kotlin.psi2ir.generators.GeneratorContext import org.jetbrains.kotlin.resolve.constants.ConstantValue -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult private fun extractConstantValue(descriptor: DeclarationDescriptor, type: String): ConstantValue<*>? = descriptor.annotations @@ -148,7 +147,7 @@ internal class CEnumClassGenerator( * This function extracts value from the annotation. */ private fun extractEnumEntryValue(entryDescriptor: ClassDescriptor): IrExpression = - cEnumEntryValueTypes.firstNotNullResult { extractConstantValue(entryDescriptor, it) } ?.let { + cEnumEntryValueTypes.firstNotNullOfOrNull { extractConstantValue(entryDescriptor, it) }?.let { context.constantValueGenerator.generateConstantValueAsExpression(SYNTHETIC_OFFSET, SYNTHETIC_OFFSET, it) } ?: error("Enum entry $entryDescriptor has no appropriate @$cEnumEntryValueAnnotationName annotation!") diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/TestProcessor.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/TestProcessor.kt index 81ea780dab7..a451a9f4753 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/TestProcessor.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/TestProcessor.kt @@ -36,7 +36,6 @@ import org.jetbrains.kotlin.load.kotlin.PackagePartClassUtils import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.resolve.descriptorUtil.module -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult internal class TestProcessor (val context: Context) { @@ -203,7 +202,7 @@ internal class TestProcessor (val context: Context) { return (owner as? IrSimpleFunction) ?.overriddenSymbols - ?.firstNotNullResult { + ?.firstNotNullOfOrNull { it.findAnnotatedFunction(testAnnotation) } } @@ -614,4 +613,4 @@ internal class TestProcessor (val context: Context) { irFile.acceptChildrenVoid(annotationCollector) createTestSuites(irFile, annotationCollector) } -} \ No newline at end of file +} diff --git a/nj2k/src/org/jetbrains/kotlin/nj2k/conversions/resolveUtil.kt b/nj2k/src/org/jetbrains/kotlin/nj2k/conversions/resolveUtil.kt index b06bb7bd750..d963fcae9fe 100644 --- a/nj2k/src/org/jetbrains/kotlin/nj2k/conversions/resolveUtil.kt +++ b/nj2k/src/org/jetbrains/kotlin/nj2k/conversions/resolveUtil.kt @@ -21,8 +21,6 @@ import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.getChildOfType import org.jetbrains.kotlin.resolve.ImportPath -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult - class JKResolver(val project: Project, module: Module?, private val contextElement: PsiElement) { private val scope = module?.let { @@ -79,7 +77,7 @@ class JKResolver(val project: Project, module: Module?, private val contextEleme .getChildOfType() ?.selectorExpression ?.references - ?.firstNotNullResult(PsiReference::resolve) + ?.firstNotNullOfOrNull(PsiReference::resolve) } diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/resolve/SearchUtils.kt b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/resolve/SearchUtils.kt index 437ab3f2653..a7edcd8fe4b 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/resolve/SearchUtils.kt +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/resolve/SearchUtils.kt @@ -18,7 +18,6 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.module import org.jetbrains.kotlin.resolve.lazy.descriptors.LazyAnnotationDescriptor import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.types.KotlinTypeFactory -import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult internal fun ClassConstructorDescriptor.isSerializationCtor(): Boolean { /*kind == CallableMemberDescriptor.Kind.SYNTHESIZED does not work because DeserializedClassConstructorDescriptor loses its kind*/ @@ -104,7 +103,7 @@ internal fun getSerializationPackageFqn(classSimpleName: String): FqName = SerializationPackages.packageFqName.child(Name.identifier(classSimpleName)) internal fun ModuleDescriptor.getClassFromSerializationPackage(classSimpleName: String) = - SerializationPackages.allPublicPackages.firstNotNullResult { pkg -> + SerializationPackages.allPublicPackages.firstNotNullOfOrNull { pkg -> module.findClassAcrossModuleDependencies(ClassId( pkg, Name.identifier(classSimpleName)