From 61981f6026411dca4ef120306376fa3ff678d84e Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Fri, 28 Jul 2023 21:11:59 +0200 Subject: [PATCH] [LL FIR] skip FirScript resolve in transformers It is a temporary step to be able to implement granular scripts support ^KT-60728 --- .../LLFirAnnotationArgumentsLazyResolver.kt | 3 +- .../fir/transformers/LLFirBodyLazyResolver.kt | 2 +- .../LLFirCompilerAnnotationsLazyResolver.kt | 7 +- .../transformers/LLFirStatusLazyResolver.kt | 1 + .../fir/transformers/LLFirTypeLazyResolver.kt | 3 +- ...classMemberPropertyScript.lazy.resolve.txt | 26 +- .../classScript.lazy.resolve.txt | 12 +- .../constructorsScript.lazy.resolve.txt | 14 +- ...nnotationClassLevelScript.lazy.resolve.txt | 32 +- ...tionsInPropertyInitScript.lazy.resolve.txt | 20 +- .../enumClassScript.lazy.resolve.txt | 30 +- .../enumClassWithBodyScript.lazy.resolve.txt | 28 +- .../initBlockScript.lazy.resolve.txt | 12 +- .../localClassScript.lazy.resolve.txt | 18 +- .../localFunScript.lazy.resolve.txt | 14 +- .../localPropertyScript.lazy.resolve.txt | 26 +- .../memberTypeAliasScript.lazy.resolve.txt | 8 +- .../nestedClassesScript.lazy.resolve.txt | 24 +- .../propertyAccessorsScript.lazy.resolve.txt | 26 +- .../fileStructure/script.lazy.resolve.txt | 42 +- .../superClassCallScript.lazy.resolve.txt | 54 +- ...sionBodyFunWithTypeScript.lazy.resolve.txt | 6 +- ...nBodyFunWithoutTypeScript.lazy.resolve.txt | 6 +- ...topLevelFunWithTypeScript.lazy.resolve.txt | 8 +- .../topLevelPropertyScript.lazy.resolve.txt | 22 +- .../topLevelUnitFunScript.lazy.resolve.txt | 6 +- .../withoutNameScript.lazy.resolve.txt | 36 +- ...notationApplicationArgumentOnStatement.txt | 16 +- .../annotationApplicationArgumentScript.txt | 12 +- ...otationApplicationCallExpressionScript.txt | 6 +- .../annotationOnReturnTypeScript.txt | 8 +- .../annotations/retentionValueScript.txt | 10 +- .../annotations/statementAnnotation.txt | 10 +- .../annotations/superCallAnnotationScript.txt | 18 +- ...OnConstructorParameterExpressionScript.txt | 14 +- ...eOnAnnotationOnFunctionParameterScript.txt | 14 +- ...OnFunctionParameterWithArgumentsScript.txt | 18 +- ...peOnAnnotationOnReceiverFunctionScript.txt | 16 +- ...eOnAnnotationOnReceiverParameterScript.txt | 16 +- ...AnnotationOnReceiverPropertyCallScript.txt | 18 +- ...peOnAnnotationOnReceiverPropertyScript.txt | 16 +- ...typeOnAnnotationOnReturnFunctionScript.txt | 16 +- ...typeOnAnnotationOnReturnPropertyScript.txt | 16 +- .../annotations/useSite/delegateScript.txt | 20 +- .../annotations/useSite/fieldScript.txt | 18 +- .../annotations/useSite/fileScript.txt | 4 +- .../annotations/useSite/getterScript.txt | 18 +- .../annotations/useSite/paramScript.txt | 18 +- .../annotations/useSite/propertyScript.txt | 18 +- .../annotations/useSite/setParamScript.txt | 18 +- .../annotations/useSite/setterScript.txt | 18 +- .../calls/callArgumentScript.txt | 10 +- ...eSuperCallAndExplicitConstructorScript.txt | 18 +- .../calls/calllTypeArgumentsScript.txt | 10 +- .../calls/compoundAssignOnVarScript.txt | 20 +- ...dAssignWithArrayAccessConventionScript.txt | 21 +- ...oundAssignWithArrayGetConventionScript.txt | 20 +- .../constructorDelegationSuperCallScript.txt | 14 +- .../calls/functionCallArgumentListScript.txt | 12 +- .../calls/invokeCallArgumentListScript.txt | 10 +- .../qualifiedCallInsideSuperCallScript.txt | 30 +- .../getOrBuildFir/calls/setOperatorScript.txt | 73 +- .../getOrBuildFir/calls/superTypeScript.txt | 19 +- .../constructorParameterScript.txt | 8 +- .../constructorPropertyScript.txt | 12 +- .../destructionWithNoRValueScript.txt | 10 +- .../declarations/destructuringEntryScript.txt | 12 +- .../declarations/destructuringScript.txt | 26 +- .../objectLiteralExpressionScript.txt | 4 +- .../declarations/objectLiteralScript.txt | 4 +- .../declarations/propertyDelegateScript.txt | 14 +- .../declarations/whereClause1Script.txt | 6 +- .../declarations/whereClause2Script.txt | 6 +- .../arrayAccessExpressionScript.txt | 8 +- .../arrayIndexExpressionWithIncScript.txt | 18 +- .../getOrBuildFir/expressions/assignment.txt | 42 +- .../binaryExpressionOperatorScript.txt | 10 +- .../expressions/binaryExpressionScript.txt | 10 +- .../expressions/blockExpressionScript.txt | 4 +- .../expressions/boolLiteralScript.txt | 6 +- .../expressions/callInsideFunction.txt | 44 +- .../expressions/callInsideStatement.txt | 44 +- .../expressions/forExpressionRangeScript.txt | 12 +- .../expressions/forExpressionScript.txt | 14 +- .../forExpressionVariableScript.txt | 12 +- .../expressions/ifExpressionScript.txt | 8 +- .../expressions/incExpressionScript.txt | 19 +- .../insidePlusAssignTargetScript.txt | 12 +- .../expressions/intLiteralScript.txt | 8 +- .../expressions/isExpressionScript.txt | 8 +- .../objectLiteralExpressionScript.txt | 12 +- .../parenthesizedExpressionScript.txt | 10 +- .../expressions/stringLiteralScript.txt | 6 +- .../stringTemplateExpressionEntryScript.txt | 10 +- .../expressions/throwExpressionScript.txt | 8 +- .../expressions/tryExpressionScript.txt | 12 +- .../expressions/whenExpressionScript.txt | 12 +- .../expressions/whileExpressionScript.txt | 4 +- .../expressions/wholeStringTemplateScript.txt | 8 +- ...OfQualifiedCallWithNestedClassesScript.txt | 26 +- ...iedPartOfQualifiedCallUnresolvedScript.txt | 18 +- .../types/functionalTypeScript.txt | 12 +- .../types/nestedClassTypeScript.txt | 23 +- .../types/nullableTypeScript.txt | 12 +- .../types/receiverTypeScript.txt | 13 +- .../getOrBuildFir/types/wholeTypeScript.txt | 12 +- .../wholeDeclaration/assignmentStatement.txt | 50 +- .../getOrBuildFir/wholeDeclaration/class.txt | 68 +- .../classTypeParemeterScript.txt | 8 +- .../wholeDeclaration/enumEntryScript.txt | 18 +- .../wholeDeclaration/function.txt | 52 +- .../wholeDeclaration/getterScript.txt | 8 +- .../wholeDeclaration/localClassScript.txt | 16 +- .../wholeDeclaration/localFunctionScript.txt | 8 +- .../wholeDeclaration/localPropertyScript.txt | 8 +- .../wholeDeclaration/memberFunctionScript.txt | 10 +- .../wholeDeclaration/memberPropertyScript.txt | 14 +- .../memberTypeAliasScript.txt | 10 +- .../wholeDeclaration/nestedClassScript.txt | 18 +- ...primaryConstructorValueParameterScript.txt | 8 +- .../wholeDeclaration/scriptInitializer.txt | 96 +- ...condaryConstructorValueParameterScript.txt | 12 +- .../wholeDeclaration/setterScript.txt | 10 +- .../wholeDeclaration/statement.txt | 96 +- .../topLevelPropertyScript.txt | 10 +- .../topLevelTypelTypeAliasScript.txt | 6 +- .../annotationArgumentsMixScript.txt | 616 ++++---- .../annotationClassWithJavaTargetScript.txt | 84 +- .../annotationOnLocalClassScript.txt | 280 ++-- .../annotationParametersScript.txt | 448 +++--- .../lazyResolve/annotationsScript.txt | 56 +- ...sFunctionWithAnnotatedParameter2Script.txt | 308 ++-- ...atedParameterOnImplicitTypePhaseScript.txt | 308 ++-- ...usFunctionWithAnnotatedParameterScript.txt | 308 ++-- .../lazyResolve/classMembersScript.txt | 280 ++-- .../classes/annotationWithTargetScript.txt | 252 ++-- .../classes/classWithTypeParametersScript.txt | 84 +- .../classes/functionInValueClassScript.txt | 168 +-- ...archyWithOverrideAndNestedClass2Script.txt | 896 ++++++------ ...archyWithOverrideAndNestedClass3Script.txt | 896 ++++++------ ...archyWithOverrideAndNestedClass4Script.txt | 896 ++++++------ ...rarchyWithOverrideAndNestedClassScript.txt | 896 ++++++------ .../classes/hierarchyWithOverrideScript.txt | 420 +++--- .../lazyResolve/classes/nestedClassScript.txt | 308 ++-- ...stedClassWithPropertiesOverridesScript.txt | 308 ++-- ...erRequiredAnnotationOnLocalClassScript.txt | 168 +-- ...AnnotationsOnConstructorPropertyScript.txt | 252 ++-- ...RequiredAnnotationsOnConstructorScript.txt | 252 ++-- ...lerRequiredAnnotationsOnFunctionScript.txt | 168 +-- ...redAnnotationsOnPropertyDelegateScript.txt | 252 ++-- ...lerRequiredAnnotationsOnPropertyScript.txt | 280 ++-- .../complexLocalHierarchyScript.txt | 336 ++--- .../complexRedeclarationScript.txt | 1288 ++++++++--------- .../lazyResolve/dataClassCopyScript.txt | 280 ++-- .../lazyResolve/dataComponent2Script.txt | 280 ++-- .../lazyResolve/delegatedFieldScript.txt | 280 ++-- .../lazyResolve/enumEntriesScript.txt | 224 +-- .../testdata/lazyResolve/enumEntryScript.txt | 280 ++-- .../lazyResolve/enumValueOfScript.txt | 224 +-- .../testdata/lazyResolve/enumValuesScript.txt | 224 +-- .../fakePrimaryConstructorScript.txt | 112 +- .../fromLocalHierarchyToOuterScript.txt | 504 +++---- .../functionWithParameterScript.txt | 112 +- .../lazyResolve/functions/contractScript.txt | 196 +-- .../lazyResolve/functions/contractScript2.txt | 56 +- .../functionCallWithGenericResultScript.txt | 168 +-- .../functions/functionParameterScript.txt | 56 +- ...ionWithGenericExpectedTypeInsideScript.txt | 280 ++-- .../functionWithTypeParametersScript.txt | 56 +- ...archyWithOverrideAndNestedClass2Script.txt | 896 ++++++------ ...archyWithOverrideAndNestedClass3Script.txt | 896 ++++++------ ...rarchyWithOverrideAndNestedClassScript.txt | 896 ++++++------ .../functions/hierarchyWithOverrideScript.txt | 420 +++--- .../lambdaAsSAMInterfaceScript.txt | 252 ++-- .../lazyResolve/lazyPropertyScript.txt | 476 +++--- .../lazyResolve/localConstructorScript.txt | 420 +++--- ...ocalFunctionInsideAnnotationCallScript.txt | 224 +-- ...calFunctionInsideFunctionLiteralScript.txt | 196 +-- ...deLambdaCallInsideStringTemplateScript.txt | 280 ++-- .../localFunctionInsideStatement.txt | 476 +++--- ...ocalFunctionInsideStringTemplateScript.txt | 196 +-- ...ocalFunctionInsideSuperEntryCallScript.txt | 280 ++-- .../lazyResolve/localNestedClassScript.txt | 448 +++--- ...calParameterInsideSuperEntryCallScript.txt | 280 ++-- ...lerRequiredAnnotationsInsideBodyScript.txt | 476 +++--- .../lazyResolve/nestedTypeAlias2Script.txt | 196 +-- .../parameterOfNonLocalSetterScript.txt | 196 +-- .../parameterOfTopSetterScript.txt | 140 +- .../primaryConstructorParameterScript.txt | 112 +- .../primaryConstructorPropertyScript.txt | 168 +-- .../lazyResolve/primaryConstructorScript.txt | 112 +- ...archyWithOverrideAndNestedClass2Script.txt | 952 ++++++------ ...archyWithOverrideAndNestedClass3Script.txt | 952 ++++++------ ...archyWithOverrideAndNestedClass4Script.txt | 1008 ++++++------- ...rarchyWithOverrideAndNestedClassScript.txt | 952 ++++++------ .../hierarchyWithOverrideScript.txt | 476 +++--- ...rtyGetterWithExplicitTypeAndBodyScript.txt | 112 +- .../propertyGetterWithExplicitTypeScript.txt | 112 +- .../propertyGetterWithImplicitTypeScript.txt | 112 +- .../properties/propertySetterScript.txt | 112 +- .../propertyWithTypeParametersScript.txt | 112 +- .../propertyWithGetterAndSetterScript.txt | 280 ++-- .../lazyResolve/propertyWithGetterScript.txt | 196 +-- .../propertyWithInitializerScript.txt | 140 +- .../lazyResolve/redeclarationScript.txt | 122 +- .../resolveSuperTypeFromLocalClassScript.txt | 252 ++-- ...lveTypeFromLocalClassConstructorScript.txt | 336 ++--- .../resolveTypeFromLocalFunctionScript.txt | 308 ++-- .../testdata/lazyResolve/script.txt | 344 ++--- .../testdata/lazyResolve/script2.txt | 294 ++-- .../secondaryConstructorParameterScript.txt | 280 ++-- .../secondaryConstructorScript.txt | 196 +-- .../testdata/lazyResolve/statement.txt | 588 ++++---- .../testdata/lazyResolve/statement2.txt | 420 +++--- .../testdata/lazyResolve/superTypesScript.txt | 252 ++-- .../lazyResolve/topLevelFunctionsScript.txt | 140 +- ...ithExpressionBodyAndExplicitTypeScript.txt | 140 +- .../typeAliasWithTypeParametersScript.txt | 56 +- .../lazyResolve/typeParameterBoundsScript.txt | 168 +-- .../typeParameterOfClass2Script.txt | 140 +- .../typeParameterOfClassScript.txt | 112 +- .../typeParameterOfNonLocalFunctionScript.txt | 112 +- .../typeParameterOfTopFunctionScript.txt | 56 +- .../typeParameterOfTopSetterScript.txt | 112 +- .../typeParameterOfTypeAliasScript.txt | 112 +- 225 files changed, 17236 insertions(+), 17200 deletions(-) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirAnnotationArgumentsLazyResolver.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirAnnotationArgumentsLazyResolver.kt index 238b423294f..4908ff2d889 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirAnnotationArgumentsLazyResolver.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirAnnotationArgumentsLazyResolver.kt @@ -113,6 +113,8 @@ internal fun LLFirAbstractBodyTargetResolver.transformAnnotations(target: FirEle target.transformSingle(transformer, ResolutionMode.ContextIndependent) } + target is FirScript -> {} + else -> throwUnexpectedFirElementError(target) } } @@ -124,7 +126,6 @@ internal val FirElementWithResolveState.isRegularDeclarationWithAnnotation: Bool is FirDanglingModifierList, is FirFileAnnotationsContainer, is FirTypeAlias, - is FirScript, -> true else -> false } 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 33e635bd7f7..c474a60bf0e 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 @@ -142,7 +142,7 @@ private class LLFirBodyTargetResolver( is FirField -> resolve(target, BodyStateKeepers.FIELD) is FirVariable -> resolve(target, BodyStateKeepers.VARIABLE) is FirAnonymousInitializer -> resolve(target, BodyStateKeepers.ANONYMOUS_INITIALIZER) - is FirScript -> resolve(target, BodyStateKeepers.SCRIPT) + is FirScript, is FirDanglingModifierList, is FirFileAnnotationsContainer, is FirTypeAlias, diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirCompilerAnnotationsLazyResolver.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirCompilerAnnotationsLazyResolver.kt index 2dff3bbb362..3d76905f4fe 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirCompilerAnnotationsLazyResolver.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirCompilerAnnotationsLazyResolver.kt @@ -104,8 +104,10 @@ private class LLFirCompilerRequiredAnnotationsTargetResolver( } override fun doResolveWithoutLock(target: FirElementWithResolveState): Boolean { - if (target !is FirRegularClass && !target.isRegularDeclarationWithAnnotation) { - throwUnexpectedFirElementError(target) + when { + target is FirScript -> return false + target is FirRegularClass || target.isRegularDeclarationWithAnnotation -> {} + else -> throwUnexpectedFirElementError(target) } requireIsInstance(target) @@ -295,6 +297,7 @@ private class LLFirCompilerRequiredAnnotationsTargetResolver( } override fun doLazyResolveUnderLock(target: FirElementWithResolveState) { + if (target is FirScript) return throwUnexpectedFirElementError(target) } } diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirStatusLazyResolver.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirStatusLazyResolver.kt index 6774a8ee106..7d3d3ba5714 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirStatusLazyResolver.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirStatusLazyResolver.kt @@ -173,6 +173,7 @@ private class LLFirStatusTargetResolver( is FirRegularClass -> { error("should be resolved in doResolveWithoutLock") } + is FirScript -> {} else -> { target.transformSingle(transformer, data = null) } diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirTypeLazyResolver.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirTypeLazyResolver.kt index 26b07482341..2b097726491 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirTypeLazyResolver.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirTypeLazyResolver.kt @@ -123,7 +123,8 @@ private class LLFirTypeTargetResolver( target.accept(transformer, null) } - is FirDanglingModifierList, is FirFileAnnotationsContainer, is FirCallableDeclaration, is FirTypeAlias, is FirScript -> { + is FirScript -> {} + is FirDanglingModifierList, is FirFileAnnotationsContainer, is FirCallableDeclaration, is FirTypeAlias -> { target.accept(transformer, null) } is FirRegularClass -> { diff --git a/analysis/low-level-api-fir/testdata/fileStructure/classMemberPropertyScript.lazy.resolve.txt b/analysis/low-level-api-fir/testdata/fileStructure/classMemberPropertyScript.lazy.resolve.txt index b4e854bbd13..456ed439829 100644 --- a/analysis/low-level-api-fir/testdata/fileStructure/classMemberPropertyScript.lazy.resolve.txt +++ b/analysis/low-level-api-fir/testdata/fileStructure/classMemberPropertyScript.lazy.resolve.txt @@ -1,27 +1,27 @@ FILE: [ResolvedTo(IMPORTS)] classMemberPropertyScript.kts - context(