From 15f6fe2627296d27c5a278b6286fb05fd25246ad Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Fri, 30 Jun 2023 15:38:56 +0200 Subject: [PATCH] Move `ExceptionAttachmentBuilder` near `KotlinExceptionWithAttachments` so it's accessible from `KotlinExceptionWithAttachments` --- .../KtFe10MultiplatformInfoProvider.kt | 2 +- .../analysis/api/fir/KtSymbolByFirBuilder.kt | 2 +- .../api/fir/annotations/firAnnotationUtils.kt | 3 +- .../api/fir/components/KtFirCallResolver.kt | 2 +- .../KtFirMultiplatformInfoProvider.kt | 2 +- ...tFirSymbolContainingDeclarationProvider.kt | 3 +- .../fir/references/KtFirReferenceResolver.kt | 4 +- .../analysis/api/fir/symbols/KtFirSymbol.kt | 2 +- .../api/fir/symbols/KtFirSymbolProvider.kt | 2 +- .../UsualClassTypeQualifierBuilder.kt | 2 +- .../analysis/api/fir/utils/errorUtils.kt | 2 +- .../exceptionWithAttachmentBuilderHelpers.kt | 1 + .../utils/errors/unexpectedElementError.kt | 2 + .../low/level/api/fir/api/FirDesignation.kt | 4 +- .../fir/api/InvalidFirElementTypeException.kt | 2 +- .../LowLevelFirApiFacadeForResolveOnAir.kt | 2 +- .../api/fir/file/builder/LLFirFileBuilder.kt | 2 +- .../LLFirModuleLazyDeclarationResolver.kt | 2 +- .../RawFirNonLocalDeclarationBuilder.kt | 2 +- .../LLFirFirClassByPsiClassProvider.kt | 2 + .../state/LLFirResolvableResolveSession.kt | 2 +- .../fir/transformers/LLFirBodyLazyResolver.kt | 4 +- ...irDeclarationForCompiledElementSearcher.kt | 2 +- .../level/api/fir/util/FirElementFinder.kt | 2 +- .../low/level/api/fir/util/exceptionUtils.kt | 4 +- .../api/fir/util/firCheckResolvedUtils.kt | 4 +- .../util/firDeclarationDesignationUtils.kt | 2 +- .../symbol/classes/SymbolLightClassBase.kt | 2 - .../light/classes/symbol/symbolLightUtils.kt | 2 +- .../deserialization/FirTypeDeserializer.kt | 2 +- compiler/util/build.gradle.kts | 1 + .../exceptions}/ExceptionAttachmentBuilder.kt | 60 +++++++++---------- .../exceptions}/platformExceptionUtils.kt | 6 +- 33 files changed, 66 insertions(+), 72 deletions(-) rename {analysis/analysis-internal-utils/src/org/jetbrains/kotlin/analysis/utils/errors => compiler/util/src/org/jetbrains/kotlin/utils/exceptions}/ExceptionAttachmentBuilder.kt (55%) rename compiler/{frontend.common/src/org/jetbrains/kotlin/util => util/src/org/jetbrains/kotlin/utils/exceptions}/platformExceptionUtils.kt (64%) diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/components/KtFe10MultiplatformInfoProvider.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/components/KtFe10MultiplatformInfoProvider.kt index cb7c334a814..ab984b52afd 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/components/KtFe10MultiplatformInfoProvider.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/components/KtFe10MultiplatformInfoProvider.kt @@ -12,7 +12,7 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.bas import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtDeclarationSymbol import org.jetbrains.kotlin.analysis.api.symbols.psiSafe -import org.jetbrains.kotlin.analysis.utils.errors.checkWithAttachmentBuilder +import org.jetbrains.kotlin.utils.exceptions.checkWithAttachmentBuilder import org.jetbrains.kotlin.descriptors.MemberDescriptor import org.jetbrains.kotlin.psi.KtDeclaration import org.jetbrains.kotlin.psi.psiUtil.hasActualModifier diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/KtSymbolByFirBuilder.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/KtSymbolByFirBuilder.kt index e9f12518ca5..f190a595899 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/KtSymbolByFirBuilder.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/KtSymbolByFirBuilder.kt @@ -25,7 +25,7 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.util.withConeTypeEntry import org.jetbrains.kotlin.analysis.low.level.api.fir.util.withFirEntry import org.jetbrains.kotlin.analysis.low.level.api.fir.util.withFirSymbolEntry import org.jetbrains.kotlin.analysis.providers.KotlinPackageProvider -import org.jetbrains.kotlin.analysis.utils.errors.buildErrorWithAttachment +import org.jetbrains.kotlin.utils.exceptions.buildErrorWithAttachment import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.* diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/annotations/firAnnotationUtils.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/annotations/firAnnotationUtils.kt index e2072ef60cc..4bf75fceea2 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/annotations/firAnnotationUtils.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/annotations/firAnnotationUtils.kt @@ -15,7 +15,7 @@ import org.jetbrains.kotlin.analysis.api.annotations.KtNamedAnnotationValue import org.jetbrains.kotlin.analysis.api.fir.toKtAnnotationApplication import org.jetbrains.kotlin.analysis.api.fir.toKtAnnotationInfo import org.jetbrains.kotlin.analysis.low.level.api.fir.util.withFirEntry -import org.jetbrains.kotlin.analysis.utils.errors.checkWithAttachmentBuilder +import org.jetbrains.kotlin.utils.exceptions.checkWithAttachmentBuilder import org.jetbrains.kotlin.analysis.utils.errors.withClassEntry import org.jetbrains.kotlin.descriptors.annotations.KotlinTarget import org.jetbrains.kotlin.fir.FirAnnotationContainer @@ -42,7 +42,6 @@ import org.jetbrains.kotlin.fir.expressions.unwrapAndFlattenArgument import org.jetbrains.kotlin.fir.references.toResolvedCallableSymbol import org.jetbrains.kotlin.name.CallableId import org.jetbrains.kotlin.name.StandardClassIds -import org.jetbrains.kotlin.name.StandardClassIds.Annotations.ParameterNames import org.jetbrains.kotlin.utils.addToStdlib.ifNotEmpty internal fun mapAnnotationParameters(annotation: FirAnnotation): Map { diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirCallResolver.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirCallResolver.kt index 6ae824e8153..f6e584bab30 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirCallResolver.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirCallResolver.kt @@ -30,7 +30,7 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.api.resolveToFirSymbolOfT import org.jetbrains.kotlin.analysis.low.level.api.fir.resolver.AllCandidatesResolver import org.jetbrains.kotlin.analysis.low.level.api.fir.util.errorWithFirSpecificEntries import org.jetbrains.kotlin.analysis.low.level.api.fir.util.withFirEntry -import org.jetbrains.kotlin.analysis.utils.errors.rethrowExceptionWithDetails +import org.jetbrains.kotlin.utils.exceptions.rethrowExceptionWithDetails import org.jetbrains.kotlin.analysis.utils.errors.withPsiEntry import org.jetbrains.kotlin.analysis.utils.printer.parentOfType import org.jetbrains.kotlin.fir.FirElement diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirMultiplatformInfoProvider.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirMultiplatformInfoProvider.kt index cdc34620c5e..8da74cf762c 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirMultiplatformInfoProvider.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirMultiplatformInfoProvider.kt @@ -11,7 +11,7 @@ import org.jetbrains.kotlin.analysis.api.fir.symbols.KtFirSymbol import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken import org.jetbrains.kotlin.analysis.api.symbols.KtDeclarationSymbol import org.jetbrains.kotlin.analysis.low.level.api.fir.util.withFirSymbolEntry -import org.jetbrains.kotlin.analysis.utils.errors.checkWithAttachmentBuilder +import org.jetbrains.kotlin.utils.exceptions.checkWithAttachmentBuilder import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus import org.jetbrains.kotlin.fir.declarations.expectForActual import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirSymbolContainingDeclarationProvider.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirSymbolContainingDeclarationProvider.kt index a5872dbc97d..9794ad19624 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirSymbolContainingDeclarationProvider.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirSymbolContainingDeclarationProvider.kt @@ -10,7 +10,6 @@ import org.jetbrains.kotlin.KtFakeSourceElementKind import org.jetbrains.kotlin.KtRealSourceElementKind import org.jetbrains.kotlin.analysis.api.components.KtSymbolContainingDeclarationProvider import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSession -import org.jetbrains.kotlin.analysis.api.fir.symbols.KtFirErrorVariableSymbol import org.jetbrains.kotlin.analysis.api.fir.utils.firSymbol import org.jetbrains.kotlin.analysis.api.fir.utils.getContainingKtModule import org.jetbrains.kotlin.analysis.api.fir.utils.withSymbolAttachment @@ -21,7 +20,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithKind import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.llFirSession import org.jetbrains.kotlin.analysis.low.level.api.fir.util.originalDeclaration import org.jetbrains.kotlin.analysis.project.structure.KtModule -import org.jetbrains.kotlin.analysis.utils.errors.buildErrorWithAttachment +import org.jetbrains.kotlin.utils.exceptions.buildErrorWithAttachment import org.jetbrains.kotlin.analysis.utils.printer.parentOfType import org.jetbrains.kotlin.fir.analysis.checkers.getContainingClassSymbol import org.jetbrains.kotlin.fir.diagnostics.ConeDestructuringDeclarationsOnTopLevel diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/references/KtFirReferenceResolver.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/references/KtFirReferenceResolver.kt index 10cce2907f9..c74ecd4d191 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/references/KtFirReferenceResolver.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/references/KtFirReferenceResolver.kt @@ -12,11 +12,9 @@ import com.intellij.psi.impl.source.resolve.ResolveCache import org.jetbrains.kotlin.analysis.api.KtAllowAnalysisOnEdt import org.jetbrains.kotlin.analysis.api.analyze import org.jetbrains.kotlin.analysis.api.lifetime.allowAnalysisOnEdt -import org.jetbrains.kotlin.analysis.utils.errors.buildErrorWithAttachment -import org.jetbrains.kotlin.analysis.utils.errors.withPsiEntry import org.jetbrains.kotlin.diagnostics.PsiDiagnosticUtils -import org.jetbrains.kotlin.util.shouldIjPlatformExceptionBeRethrown import org.jetbrains.kotlin.utils.KotlinExceptionWithAttachments +import org.jetbrains.kotlin.utils.exceptions.shouldIjPlatformExceptionBeRethrown object KtFirReferenceResolver : ResolveCache.PolyVariantResolver { class KotlinResolveResult(element: PsiElement) : PsiElementResolveResult(element) diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirSymbol.kt index 75fdace6b8f..66d727f5246 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirSymbol.kt @@ -18,7 +18,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.KtSymbolOrigin import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolKind import org.jetbrains.kotlin.analysis.low.level.api.fir.util.errorWithFirSpecificEntries import org.jetbrains.kotlin.analysis.low.level.api.fir.util.withFirEntry -import org.jetbrains.kotlin.analysis.utils.errors.buildErrorWithAttachment +import org.jetbrains.kotlin.utils.exceptions.buildErrorWithAttachment import org.jetbrains.kotlin.fir.containingClassForLocalAttr import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirSymbolProvider.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirSymbolProvider.kt index 86b43106996..7a695affc69 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirSymbolProvider.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirSymbolProvider.kt @@ -14,7 +14,7 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.api.resolveToFirSymbolOfT import org.jetbrains.kotlin.analysis.low.level.api.fir.api.throwUnexpectedFirElementError import org.jetbrains.kotlin.analysis.low.level.api.fir.util.errorWithFirSpecificEntries import org.jetbrains.kotlin.analysis.low.level.api.fir.util.withFirSymbolEntry -import org.jetbrains.kotlin.analysis.utils.errors.buildErrorWithAttachment +import org.jetbrains.kotlin.utils.exceptions.buildErrorWithAttachment import org.jetbrains.kotlin.analysis.utils.errors.withPsiEntry import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.fullyExpandedClass diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/types/qualifiers/UsualClassTypeQualifierBuilder.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/types/qualifiers/UsualClassTypeQualifierBuilder.kt index 82a37c69d59..acb6c99ca8d 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/types/qualifiers/UsualClassTypeQualifierBuilder.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/types/qualifiers/UsualClassTypeQualifierBuilder.kt @@ -10,7 +10,7 @@ import org.jetbrains.kotlin.analysis.api.types.KtClassTypeQualifier import org.jetbrains.kotlin.analysis.low.level.api.fir.api.tryCollectDesignation import org.jetbrains.kotlin.analysis.low.level.api.fir.util.errorWithFirSpecificEntries import org.jetbrains.kotlin.analysis.low.level.api.fir.util.withFirEntry -import org.jetbrains.kotlin.analysis.utils.errors.checkWithAttachmentBuilder +import org.jetbrains.kotlin.utils.exceptions.checkWithAttachmentBuilder import org.jetbrains.kotlin.fir.containingClassForLocal import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.utils.isInner diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/utils/errorUtils.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/utils/errorUtils.kt index 832f42c9a25..5c1979d6085 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/utils/errorUtils.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/utils/errorUtils.kt @@ -11,7 +11,7 @@ import org.jetbrains.kotlin.analysis.api.getModule import org.jetbrains.kotlin.analysis.api.symbols.DebugSymbolRenderer import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol import org.jetbrains.kotlin.analysis.low.level.api.fir.util.withFirEntry -import org.jetbrains.kotlin.analysis.utils.errors.ExceptionAttachmentBuilder +import org.jetbrains.kotlin.utils.exceptions.ExceptionAttachmentBuilder import org.jetbrains.kotlin.analysis.utils.errors.withPsiEntry diff --git a/analysis/analysis-internal-utils/src/org/jetbrains/kotlin/analysis/utils/errors/exceptionWithAttachmentBuilderHelpers.kt b/analysis/analysis-internal-utils/src/org/jetbrains/kotlin/analysis/utils/errors/exceptionWithAttachmentBuilderHelpers.kt index d863fdaca1d..f11259e9524 100644 --- a/analysis/analysis-internal-utils/src/org/jetbrains/kotlin/analysis/utils/errors/exceptionWithAttachmentBuilderHelpers.kt +++ b/analysis/analysis-internal-utils/src/org/jetbrains/kotlin/analysis/utils/errors/exceptionWithAttachmentBuilderHelpers.kt @@ -10,6 +10,7 @@ import com.intellij.psi.PsiInvalidElementAccessException import org.jetbrains.kotlin.analysis.project.structure.KtModule import org.jetbrains.kotlin.analysis.utils.printer.getElementTextInContext import org.jetbrains.kotlin.psi.KtElement +import org.jetbrains.kotlin.utils.exceptions.ExceptionAttachmentBuilder public fun ExceptionAttachmentBuilder.withPsiEntry(name: String, psi: PsiElement?, moduleFactory: (PsiElement) -> KtModule) { return withPsiEntry(name, psi, psi?.let(moduleFactory)) diff --git a/analysis/analysis-internal-utils/src/org/jetbrains/kotlin/analysis/utils/errors/unexpectedElementError.kt b/analysis/analysis-internal-utils/src/org/jetbrains/kotlin/analysis/utils/errors/unexpectedElementError.kt index 36c6d57f201..cb69d40180b 100644 --- a/analysis/analysis-internal-utils/src/org/jetbrains/kotlin/analysis/utils/errors/unexpectedElementError.kt +++ b/analysis/analysis-internal-utils/src/org/jetbrains/kotlin/analysis/utils/errors/unexpectedElementError.kt @@ -5,6 +5,8 @@ package org.jetbrains.kotlin.analysis.utils.errors +import org.jetbrains.kotlin.utils.exceptions.buildErrorWithAttachment + public fun unexpectedElementError(elementName: String, element: Any?): Nothing { buildErrorWithAttachment("Unexpected $elementName ${element?.let { it::class.simpleName }}") { withEntry(elementName, element) { element.toString() } diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/FirDesignation.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/FirDesignation.kt index c5cba80bdb8..1f6d5438fee 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/FirDesignation.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/FirDesignation.kt @@ -11,8 +11,8 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.util.FirElementFinder import org.jetbrains.kotlin.analysis.low.level.api.fir.util.containingClass import org.jetbrains.kotlin.analysis.low.level.api.fir.util.getContainingFile import org.jetbrains.kotlin.analysis.low.level.api.fir.util.withFirEntry -import org.jetbrains.kotlin.analysis.utils.errors.buildErrorWithAttachment -import org.jetbrains.kotlin.analysis.utils.errors.checkWithAttachmentBuilder +import org.jetbrains.kotlin.utils.exceptions.buildErrorWithAttachment +import org.jetbrains.kotlin.utils.exceptions.checkWithAttachmentBuilder import org.jetbrains.kotlin.analysis.utils.errors.requireIsInstance import org.jetbrains.kotlin.analysis.utils.errors.unexpectedElementError import org.jetbrains.kotlin.builtins.StandardNames diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/InvalidFirElementTypeException.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/InvalidFirElementTypeException.kt index 0e7a9c27042..653a48df1bb 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/InvalidFirElementTypeException.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/InvalidFirElementTypeException.kt @@ -13,7 +13,7 @@ import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.psi.KtElement import org.jetbrains.kotlin.utils.KotlinExceptionWithAttachments -import org.jetbrains.kotlin.analysis.utils.errors.* +import org.jetbrains.kotlin.utils.exceptions.buildAttachment import java.util.* import kotlin.reflect.KClass diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/LowLevelFirApiFacadeForResolveOnAir.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/LowLevelFirApiFacadeForResolveOnAir.kt index 9d78c4d5ba9..c1566d0a148 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/LowLevelFirApiFacadeForResolveOnAir.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/LowLevelFirApiFacadeForResolveOnAir.kt @@ -25,7 +25,7 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.state.LLFirResolvableReso import org.jetbrains.kotlin.analysis.low.level.api.fir.util.FirElementFinder import org.jetbrains.kotlin.analysis.low.level.api.fir.util.errorWithFirSpecificEntries import org.jetbrains.kotlin.analysis.low.level.api.fir.util.originalDeclaration -import org.jetbrains.kotlin.analysis.utils.errors.buildErrorWithAttachment +import org.jetbrains.kotlin.utils.exceptions.buildErrorWithAttachment import org.jetbrains.kotlin.analysis.utils.errors.withPsiEntry import org.jetbrains.kotlin.analysis.utils.printer.parentOfType import org.jetbrains.kotlin.analysis.utils.printer.parentsOfType diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/builder/LLFirFileBuilder.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/builder/LLFirFileBuilder.kt index c5a552a0a12..92ec5caffd2 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/builder/LLFirFileBuilder.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/builder/LLFirFileBuilder.kt @@ -8,7 +8,7 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder import org.jetbrains.kotlin.analysis.api.impl.barebone.annotations.ThreadSafe import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirModuleResolveComponents import org.jetbrains.kotlin.analysis.project.structure.ProjectStructureProvider -import org.jetbrains.kotlin.analysis.utils.errors.checkWithAttachmentBuilder +import org.jetbrains.kotlin.utils.exceptions.checkWithAttachmentBuilder import org.jetbrains.kotlin.fir.builder.BodyBuildingMode import org.jetbrains.kotlin.fir.builder.PsiRawFirBuilder import org.jetbrains.kotlin.fir.declarations.FirFile diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/LLFirModuleLazyDeclarationResolver.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/LLFirModuleLazyDeclarationResolver.kt index 892c2f6e083..7d5b2e537d6 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/LLFirModuleLazyDeclarationResolver.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/LLFirModuleLazyDeclarationResolver.kt @@ -21,7 +21,7 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.transformers.withOnAirDes import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkCanceled import org.jetbrains.kotlin.analysis.low.level.api.fir.util.getContainingFile import org.jetbrains.kotlin.analysis.low.level.api.fir.util.withFirEntry -import org.jetbrains.kotlin.analysis.utils.errors.rethrowExceptionWithDetails +import org.jetbrains.kotlin.utils.exceptions.rethrowExceptionWithDetails import org.jetbrains.kotlin.fir.FirElementWithResolveState import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.resolve.ScopeSession diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/RawFirNonLocalDeclarationBuilder.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/RawFirNonLocalDeclarationBuilder.kt index 12c40c5e138..32db9d79d26 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/RawFirNonLocalDeclarationBuilder.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/RawFirNonLocalDeclarationBuilder.kt @@ -10,7 +10,7 @@ import org.jetbrains.kotlin.KtSourceElement import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirDesignation import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.llFirModuleData import org.jetbrains.kotlin.analysis.low.level.api.fir.util.errorWithFirSpecificEntries -import org.jetbrains.kotlin.analysis.utils.errors.buildErrorWithAttachment +import org.jetbrains.kotlin.utils.exceptions.buildErrorWithAttachment import org.jetbrains.kotlin.analysis.utils.errors.requireIsInstance import org.jetbrains.kotlin.analysis.utils.errors.withPsiEntry import org.jetbrains.kotlin.fir.* diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/providers/LLFirFirClassByPsiClassProvider.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/providers/LLFirFirClassByPsiClassProvider.kt index 17ea7c2f355..df6610b2b46 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/providers/LLFirFirClassByPsiClassProvider.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/providers/LLFirFirClassByPsiClassProvider.kt @@ -19,6 +19,8 @@ import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol import org.jetbrains.kotlin.load.java.JvmAnnotationNames import org.jetbrains.kotlin.analysis.utils.classIdIfNonLocal +import org.jetbrains.kotlin.utils.exceptions.buildErrorWithAttachment +import org.jetbrains.kotlin.utils.exceptions.checkWithAttachmentBuilder class LLFirFirClassByPsiClassProvider(private val session: LLFirSession) : FirSessionComponent { fun getFirClass(psiClass: PsiClass): FirRegularClassSymbol? { diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/state/LLFirResolvableResolveSession.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/state/LLFirResolvableResolveSession.kt index bed744eb79e..18351caab62 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/state/LLFirResolvableResolveSession.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/state/LLFirResolvableResolveSession.kt @@ -21,7 +21,7 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.util.* import org.jetbrains.kotlin.analysis.low.level.api.fir.util.FirDeclarationForCompiledElementSearcher import org.jetbrains.kotlin.analysis.low.level.api.fir.util.findSourceNonLocalFirDeclaration import org.jetbrains.kotlin.analysis.project.structure.KtModule -import org.jetbrains.kotlin.analysis.utils.errors.buildErrorWithAttachment +import org.jetbrains.kotlin.utils.exceptions.buildErrorWithAttachment import org.jetbrains.kotlin.analysis.utils.errors.requireIsInstance import org.jetbrains.kotlin.analysis.utils.errors.withPsiEntry import org.jetbrains.kotlin.analysis.utils.printer.getElementTextInContext diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirBodyLazyResolver.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirBodyLazyResolver.kt index ed5d0455231..36785456898 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirBodyLazyResolver.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirBodyLazyResolver.kt @@ -10,8 +10,8 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.api.throwUnexpectedFirEle import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockProvider import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkDelegatedConstructorIsResolved import org.jetbrains.kotlin.analysis.low.level.api.fir.util.* -import org.jetbrains.kotlin.analysis.utils.errors.buildErrorWithAttachment -import org.jetbrains.kotlin.analysis.utils.errors.checkWithAttachmentBuilder +import org.jetbrains.kotlin.utils.exceptions.buildErrorWithAttachment +import org.jetbrains.kotlin.utils.exceptions.checkWithAttachmentBuilder import org.jetbrains.kotlin.fir.FirElementWithResolveState import org.jetbrains.kotlin.fir.FirFileAnnotationsContainer import org.jetbrains.kotlin.fir.FirSession diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/FirDeclarationForCompiledElementSearcher.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/FirDeclarationForCompiledElementSearcher.kt index 9d531d1c139..c6ea61c315c 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/FirDeclarationForCompiledElementSearcher.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/FirDeclarationForCompiledElementSearcher.kt @@ -10,7 +10,7 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.llFirMo import org.jetbrains.kotlin.analysis.low.level.api.fir.providers.LLFirModuleWithDependenciesSymbolProvider import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirBuiltinsAndCloneableSession import org.jetbrains.kotlin.analysis.project.structure.ProjectStructureProvider -import org.jetbrains.kotlin.analysis.utils.errors.ExceptionAttachmentBuilder +import org.jetbrains.kotlin.utils.exceptions.ExceptionAttachmentBuilder import org.jetbrains.kotlin.analysis.utils.errors.withClassEntry import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.realPsi diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/FirElementFinder.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/FirElementFinder.kt index a5ec7434002..7577fc3b150 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/FirElementFinder.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/FirElementFinder.kt @@ -5,7 +5,7 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.util -import org.jetbrains.kotlin.analysis.utils.errors.requireWithAttachmentBuilder +import org.jetbrains.kotlin.utils.exceptions.requireWithAttachmentBuilder import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.packageFqName diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/exceptionUtils.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/exceptionUtils.kt index 5f52b8a79f4..709a5b66a6a 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/exceptionUtils.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/exceptionUtils.kt @@ -9,8 +9,8 @@ import com.intellij.psi.PsiElement import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.llFirModuleData import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.llFirSession import org.jetbrains.kotlin.analysis.project.structure.ProjectStructureProvider -import org.jetbrains.kotlin.analysis.utils.errors.ExceptionAttachmentBuilder -import org.jetbrains.kotlin.analysis.utils.errors.buildErrorWithAttachment +import org.jetbrains.kotlin.utils.exceptions.ExceptionAttachmentBuilder +import org.jetbrains.kotlin.utils.exceptions.buildErrorWithAttachment import org.jetbrains.kotlin.analysis.utils.errors.withKtModuleEntry import org.jetbrains.kotlin.analysis.utils.errors.withPsiEntry import org.jetbrains.kotlin.fir.FirElement diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/firCheckResolvedUtils.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/firCheckResolvedUtils.kt index 9f5732456ad..668e4382562 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/firCheckResolvedUtils.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/firCheckResolvedUtils.kt @@ -5,8 +5,8 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.util -import org.jetbrains.kotlin.analysis.utils.errors.ExceptionAttachmentBuilder -import org.jetbrains.kotlin.analysis.utils.errors.checkWithAttachmentBuilder +import org.jetbrains.kotlin.utils.exceptions.ExceptionAttachmentBuilder +import org.jetbrains.kotlin.utils.exceptions.checkWithAttachmentBuilder import org.jetbrains.kotlin.fir.FirAnnotationContainer import org.jetbrains.kotlin.fir.FirElementWithResolveState import org.jetbrains.kotlin.fir.contracts.FirLegacyRawContractDescription diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/firDeclarationDesignationUtils.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/firDeclarationDesignationUtils.kt index b74312822fe..1b908d7bdd9 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/firDeclarationDesignationUtils.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/firDeclarationDesignationUtils.kt @@ -6,7 +6,7 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.util import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirDesignation -import org.jetbrains.kotlin.analysis.utils.errors.checkWithAttachmentBuilder +import org.jetbrains.kotlin.utils.exceptions.checkWithAttachmentBuilder import org.jetbrains.kotlin.fir.FirElementWithResolveState import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration import org.jetbrains.kotlin.fir.declarations.FirClassLikeDeclaration diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassBase.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassBase.kt index ec795e30202..38eaf758df3 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassBase.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassBase.kt @@ -21,8 +21,6 @@ import com.intellij.psi.util.PsiUtil import org.jetbrains.annotations.NonNls import org.jetbrains.kotlin.analysis.project.structure.KtModule import org.jetbrains.kotlin.analysis.providers.createProjectWideOutOfBlockModificationTracker -import org.jetbrains.kotlin.analysis.utils.errors.buildErrorWithAttachment -import org.jetbrains.kotlin.analysis.utils.errors.withClassEntry import org.jetbrains.kotlin.asJava.classes.* import org.jetbrains.kotlin.asJava.toLightClass import org.jetbrains.kotlin.idea.KotlinLanguage diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/symbolLightUtils.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/symbolLightUtils.kt index db675a2dd23..dd67c44db51 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/symbolLightUtils.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/symbolLightUtils.kt @@ -23,7 +23,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer import org.jetbrains.kotlin.analysis.api.types.* import org.jetbrains.kotlin.analysis.project.structure.KtModule import org.jetbrains.kotlin.analysis.providers.createProjectWideOutOfBlockModificationTracker -import org.jetbrains.kotlin.analysis.utils.errors.buildErrorWithAttachment +import org.jetbrains.kotlin.utils.exceptions.buildErrorWithAttachment import org.jetbrains.kotlin.asJava.elements.KtLightElement import org.jetbrains.kotlin.asJava.elements.KtLightMember import org.jetbrains.kotlin.asJava.elements.psiType diff --git a/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/FirTypeDeserializer.kt b/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/FirTypeDeserializer.kt index b4d1a2778ea..e1fcbc05eee 100644 --- a/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/FirTypeDeserializer.kt +++ b/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/FirTypeDeserializer.kt @@ -35,7 +35,7 @@ import org.jetbrains.kotlin.serialization.deserialization.ProtoEnumFlags import org.jetbrains.kotlin.serialization.deserialization.getClassId import org.jetbrains.kotlin.serialization.deserialization.getName import org.jetbrains.kotlin.types.Variance -import org.jetbrains.kotlin.util.shouldIjPlatformExceptionBeRethrown +import org.jetbrains.kotlin.utils.exceptions.shouldIjPlatformExceptionBeRethrown class FirTypeDeserializer( private val moduleData: FirModuleData, diff --git a/compiler/util/build.gradle.kts b/compiler/util/build.gradle.kts index bfe49e70214..8c46a6821b1 100644 --- a/compiler/util/build.gradle.kts +++ b/compiler/util/build.gradle.kts @@ -6,6 +6,7 @@ plugins { dependencies { api(kotlinStdlib()) api(project(":compiler:compiler.version")) + api(project(":core:util.runtime")) compileOnly(intellijCore()) compileOnly(commonDependency("org.jetbrains.intellij.deps:log4j")) diff --git a/analysis/analysis-internal-utils/src/org/jetbrains/kotlin/analysis/utils/errors/ExceptionAttachmentBuilder.kt b/compiler/util/src/org/jetbrains/kotlin/utils/exceptions/ExceptionAttachmentBuilder.kt similarity index 55% rename from analysis/analysis-internal-utils/src/org/jetbrains/kotlin/analysis/utils/errors/ExceptionAttachmentBuilder.kt rename to compiler/util/src/org/jetbrains/kotlin/utils/exceptions/ExceptionAttachmentBuilder.kt index a957b607867..cf02047dfbf 100644 --- a/analysis/analysis-internal-utils/src/org/jetbrains/kotlin/analysis/utils/errors/ExceptionAttachmentBuilder.kt +++ b/compiler/util/src/org/jetbrains/kotlin/utils/exceptions/ExceptionAttachmentBuilder.kt @@ -1,36 +1,32 @@ /* - * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.analysis.utils.errors +package org.jetbrains.kotlin.utils.exceptions import com.intellij.openapi.diagnostic.Attachment import com.intellij.openapi.diagnostic.Logger -import org.jetbrains.kotlin.analysis.utils.printer.PrettyPrinter -import org.jetbrains.kotlin.analysis.utils.printer.prettyPrint -import org.jetbrains.kotlin.utils.SmartPrinter -import org.jetbrains.kotlin.util.SourceCodeAnalysisException -import org.jetbrains.kotlin.util.shouldIjPlatformExceptionBeRethrown -import org.jetbrains.kotlin.utils.withIndent import org.jetbrains.kotlin.utils.KotlinExceptionWithAttachments +import org.jetbrains.kotlin.utils.SmartPrinter +import org.jetbrains.kotlin.utils.withIndent import kotlin.contracts.ExperimentalContracts import kotlin.contracts.contract -public class ExceptionAttachmentBuilder { +class ExceptionAttachmentBuilder { private val printer = SmartPrinter(StringBuilder()) - public fun withEntry(name: String, value: T, render: (T & Any) -> String) { + fun withEntry(name: String, value: T, render: (T & Any) -> String) { withEntry(name) { - appendLine("Class: ${value?.let { it::class.java.name } ?: ""}") - appendLine("Value:") + println("Class: ${value?.let { it::class.java.name } ?: ""}") + println("Value:") withIndent { - appendLine(value?.let(render) ?: "") + println(value?.let(render) ?: "") } } } - public fun withEntry(name: String, value: String?) { + fun withEntry(name: String, value: String?) { with(printer) { println("- $name:") withIndent { @@ -40,68 +36,66 @@ public class ExceptionAttachmentBuilder { } } - public fun withEntry(name: String, buildValue: PrettyPrinter.() -> Unit) { - withEntry(name, prettyPrint { buildValue() }) + fun withEntry(name: String, buildValue: SmartPrinter.() -> Unit) { + withEntry(name, SmartPrinter(StringBuilder()).apply(buildValue).toString()) } - public fun withEntryGroup(groupName: String, build: ExceptionAttachmentBuilder.() -> Unit) { + fun withEntryGroup(groupName: String, build: ExceptionAttachmentBuilder.() -> Unit) { val builder = ExceptionAttachmentBuilder().apply(build) withEntry(groupName, builder) { it.buildString() } } - public fun buildString(): String = printer.toString() + fun buildString(): String = printer.toString() private companion object { private const val separator = "========" } } -public inline fun KotlinExceptionWithAttachments.buildAttachment( +inline fun KotlinExceptionWithAttachments.buildAttachment( name: String = "info.txt", - buildContent: ExceptionAttachmentBuilder.() -> Unit + buildContent: ExceptionAttachmentBuilder.() -> Unit, ): KotlinExceptionWithAttachments { return withAttachment(name, ExceptionAttachmentBuilder().apply(buildContent).buildString()) } -public inline fun buildErrorWithAttachment( +inline fun buildErrorWithAttachment( message: String, cause: Exception? = null, attachmentName: String = "info.txt", - buildAttachment: ExceptionAttachmentBuilder.() -> Unit = {} + buildAttachment: ExceptionAttachmentBuilder.() -> Unit = {}, ): Nothing { val exception = KotlinExceptionWithAttachments(message, cause) exception.buildAttachment(attachmentName) { buildAttachment() } throw exception } -public inline fun Logger.logErrorWithAttachment( +inline fun Logger.logErrorWithAttachment( message: String, cause: Exception? = null, attachmentName: String = "info.txt", - buildAttachment: ExceptionAttachmentBuilder.() -> Unit = {} + buildAttachment: ExceptionAttachmentBuilder.() -> Unit = {}, ) { val attachment = Attachment(attachmentName, ExceptionAttachmentBuilder().apply(buildAttachment).buildString()) this.error(message, cause, attachment) } -public inline fun rethrowExceptionWithDetails( +inline fun rethrowExceptionWithDetails( message: String, exception: Exception, attachmentName: String = "info.txt", - buildAttachment: ExceptionAttachmentBuilder.() -> Unit = {} + buildAttachment: ExceptionAttachmentBuilder.() -> Unit = {}, ): Nothing { if (shouldIjPlatformExceptionBeRethrown(exception)) throw exception - val unwrappedException = if (exception is SourceCodeAnalysisException) exception.cause else exception - if (unwrappedException !is Exception) throw unwrappedException - buildErrorWithAttachment(message, unwrappedException, attachmentName, buildAttachment) + buildErrorWithAttachment(message, exception, attachmentName, buildAttachment) } @OptIn(ExperimentalContracts::class) -public inline fun checkWithAttachmentBuilder( +inline fun checkWithAttachmentBuilder( condition: Boolean, message: () -> String, - buildAttachment: ExceptionAttachmentBuilder.() -> Unit = {} + buildAttachment: ExceptionAttachmentBuilder.() -> Unit = {}, ) { contract { returns() implies (condition) } @@ -111,10 +105,10 @@ public inline fun checkWithAttachmentBuilder( } @OptIn(ExperimentalContracts::class) -public inline fun requireWithAttachmentBuilder( +inline fun requireWithAttachmentBuilder( condition: Boolean, message: () -> String, - buildAttachment: ExceptionAttachmentBuilder.() -> Unit = {} + buildAttachment: ExceptionAttachmentBuilder.() -> Unit = {}, ) { contract { returns() implies (condition) } diff --git a/compiler/frontend.common/src/org/jetbrains/kotlin/util/platformExceptionUtils.kt b/compiler/util/src/org/jetbrains/kotlin/utils/exceptions/platformExceptionUtils.kt similarity index 64% rename from compiler/frontend.common/src/org/jetbrains/kotlin/util/platformExceptionUtils.kt rename to compiler/util/src/org/jetbrains/kotlin/utils/exceptions/platformExceptionUtils.kt index f3e37fe3ce2..4a5032d9fda 100644 --- a/compiler/frontend.common/src/org/jetbrains/kotlin/util/platformExceptionUtils.kt +++ b/compiler/util/src/org/jetbrains/kotlin/utils/exceptions/platformExceptionUtils.kt @@ -1,14 +1,14 @@ /* - * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.util +package org.jetbrains.kotlin.utils.exceptions import com.intellij.openapi.diagnostic.ControlFlowException import com.intellij.openapi.project.IndexNotReadyException -public fun shouldIjPlatformExceptionBeRethrown(exception: Throwable): Boolean = when (exception) { +fun shouldIjPlatformExceptionBeRethrown(exception: Throwable): Boolean = when (exception) { is ControlFlowException -> true is IndexNotReadyException -> true else -> false