From efc6ca27b25103a35858cb47a2798eb396fe0c69 Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Sat, 29 Jul 2023 01:14:21 +0200 Subject: [PATCH] [LL FIR] support scripts in TYPES transformer ^KT-60728 --- .../fir/transformers/LLFirTypeLazyResolver.kt | 7 ++- ...classMemberPropertyScript.lazy.resolve.txt | 2 +- .../classScript.lazy.resolve.txt | 2 +- .../constructorsScript.lazy.resolve.txt | 2 +- ...nnotationClassLevelScript.lazy.resolve.txt | 2 +- ...tionsInPropertyInitScript.lazy.resolve.txt | 2 +- .../enumClassScript.lazy.resolve.txt | 2 +- .../enumClassWithBodyScript.lazy.resolve.txt | 2 +- .../initBlockScript.lazy.resolve.txt | 2 +- .../localClassScript.lazy.resolve.txt | 2 +- .../localFunScript.lazy.resolve.txt | 2 +- .../localPropertyScript.lazy.resolve.txt | 2 +- .../memberTypeAliasScript.lazy.resolve.txt | 2 +- .../nestedClassesScript.lazy.resolve.txt | 2 +- .../propertyAccessorsScript.lazy.resolve.txt | 2 +- .../fileStructure/script.lazy.resolve.txt | 2 +- .../superClassCallScript.lazy.resolve.txt | 2 +- ...sionBodyFunWithTypeScript.lazy.resolve.txt | 2 +- ...nBodyFunWithoutTypeScript.lazy.resolve.txt | 2 +- ...topLevelFunWithTypeScript.lazy.resolve.txt | 2 +- .../topLevelPropertyScript.lazy.resolve.txt | 2 +- .../topLevelUnitFunScript.lazy.resolve.txt | 2 +- .../withoutNameScript.lazy.resolve.txt | 2 +- ...notationApplicationArgumentOnStatement.txt | 2 +- .../annotations/statementAnnotation.txt | 2 +- .../calls/compoundAssignOnVarScript.txt | 4 +- .../getOrBuildFir/calls/setOperatorScript.txt | 4 +- .../getOrBuildFir/expressions/assignment.txt | 2 +- .../expressions/callInsideStatement.txt | 2 +- .../wholeDeclaration/assignmentStatement.txt | 2 +- .../wholeDeclaration/scriptInitializer.txt | 4 +- .../wholeDeclaration/statement.txt | 4 +- .../annotationArgumentsMixScript.txt | 2 +- .../annotationClassWithJavaTargetScript.txt | 2 +- .../annotationOnLocalClassScript.txt | 2 +- .../annotationParametersScript.txt | 2 +- .../annotationWithTypeArgumentScript.txt | 2 +- .../lazyResolve/annotationsScript.txt | 2 +- ...sFunctionWithAnnotatedParameter2Script.txt | 2 +- ...atedParameterOnImplicitTypePhaseScript.txt | 2 +- ...usFunctionWithAnnotatedParameterScript.txt | 2 +- .../lazyResolve/classMembersScript.txt | 2 +- .../classes/annotationWithTargetScript.txt | 2 +- .../classes/classWithTypeParametersScript.txt | 2 +- .../classes/functionInValueClassScript.txt | 2 +- ...archyWithOverrideAndNestedClass2Script.txt | 2 +- ...archyWithOverrideAndNestedClass3Script.txt | 2 +- ...archyWithOverrideAndNestedClass4Script.txt | 2 +- ...rarchyWithOverrideAndNestedClassScript.txt | 2 +- .../classes/hierarchyWithOverrideScript.txt | 2 +- .../lazyResolve/classes/nestedClassScript.txt | 2 +- ...stedClassWithPropertiesOverridesScript.txt | 2 +- .../classes/simpleLoopInOverride2Script.txt | 2 +- .../classes/simpleLoopInOverrideScript.txt | 2 +- ...erRequiredAnnotationOnLocalClassScript.txt | 2 +- ...AnnotationsOnConstructorPropertyScript.txt | 2 +- ...RequiredAnnotationsOnConstructorScript.txt | 2 +- ...lerRequiredAnnotationsOnFunctionScript.txt | 2 +- ...redAnnotationsOnPropertyDelegateScript.txt | 2 +- ...lerRequiredAnnotationsOnPropertyScript.txt | 2 +- .../complexLocalHierarchyScript.txt | 2 +- .../complexRedeclarationScript.txt | 2 +- .../lazyResolve/cyclicHierarchy2Script.txt | 2 +- .../lazyResolve/cyclicHierarchy3Script.txt | 2 +- .../lazyResolve/cyclicHierarchyScript.txt | 2 +- .../cyclicNestedHierarchy2Script.txt | 2 +- .../cyclicNestedHierarchyScript.txt | 2 +- .../lazyResolve/dataClassCopyScript.txt | 2 +- .../lazyResolve/dataComponent2Script.txt | 2 +- .../delegateWithImplicitTypeScript.txt | 2 +- .../lazyResolve/delegatedFieldScript.txt | 2 +- .../testdata/lazyResolve/delegatesScript.txt | 2 +- .../lazyResolve/enumEntriesScript.txt | 2 +- .../testdata/lazyResolve/enumEntryScript.txt | 2 +- .../lazyResolve/enumValueOfScript.txt | 2 +- .../testdata/lazyResolve/enumValuesScript.txt | 2 +- .../lazyResolve/fakeOverrideScript.txt | 2 +- .../fakePrimaryConstructorScript.txt | 2 +- .../lazyResolve/fileAnnotationsScript.txt | 2 +- .../fromLocalHierarchyToOuterScript.txt | 2 +- .../functionWithParameterScript.txt | 2 +- .../lazyResolve/functions/contractScript.txt | 2 +- .../lazyResolve/functions/contractScript2.txt | 18 +++---- .../functionCallWithGenericResultScript.txt | 2 +- .../functions/functionParameterScript.txt | 2 +- ...ionWithGenericExpectedTypeInsideScript.txt | 2 +- .../functionWithTypeParametersScript.txt | 2 +- ...archyWithOverrideAndNestedClass2Script.txt | 2 +- ...archyWithOverrideAndNestedClass3Script.txt | 2 +- ...rarchyWithOverrideAndNestedClassScript.txt | 2 +- .../functions/hierarchyWithOverrideScript.txt | 2 +- .../functions/simpleLoopInOverride2Script.txt | 2 +- .../functions/simpleLoopInOverrideScript.txt | 2 +- .../lambdaAsSAMInterfaceScript.txt | 2 +- .../lazyResolve/lazyPropertyScript.txt | 2 +- .../lazyResolve/localConstructorScript.txt | 2 +- ...ocalFunctionInsideAnnotationCallScript.txt | 2 +- ...calFunctionInsideFunctionLiteralScript.txt | 2 +- ...deLambdaCallInsideStringTemplateScript.txt | 2 +- .../localFunctionInsideStatement.txt | 28 +++++----- ...ocalFunctionInsideStringTemplateScript.txt | 2 +- ...ocalFunctionInsideSuperEntryCallScript.txt | 2 +- .../lazyResolve/localNestedClassScript.txt | 2 +- ...calParameterInsideSuperEntryCallScript.txt | 2 +- ...ilerRequiredAnnotationsForMemberScript.txt | 2 +- ...lerRequiredAnnotationsInsideBodyScript.txt | 2 +- ...estedCompilerRequiredAnnotationsScript.txt | 2 +- .../lazyResolve/nestedTypeAlias2Script.txt | 2 +- .../lazyResolve/nestedTypeAliasScript.txt | 2 +- .../parameterOfNonLocalSetterScript.txt | 2 +- .../parameterOfTopSetterScript.txt | 2 +- .../primaryConstructorParameterScript.txt | 2 +- .../primaryConstructorPropertyScript.txt | 2 +- .../lazyResolve/primaryConstructorScript.txt | 2 +- .../properties/getterWithDelegationScript.txt | 2 +- ...archyWithOverrideAndNestedClass2Script.txt | 2 +- ...archyWithOverrideAndNestedClass3Script.txt | 2 +- ...archyWithOverrideAndNestedClass4Script.txt | 2 +- ...rarchyWithOverrideAndNestedClassScript.txt | 2 +- .../hierarchyWithOverrideScript.txt | 2 +- ...rtyGetterWithExplicitTypeAndBodyScript.txt | 2 +- .../propertyGetterWithExplicitTypeScript.txt | 2 +- .../propertyGetterWithImplicitTypeScript.txt | 2 +- .../properties/propertySetterScript.txt | 2 +- .../propertyWithTypeParametersScript.txt | 2 +- .../simpleLoopInOverride2Script.txt | 2 +- .../properties/simpleLoopInOverrideScript.txt | 2 +- .../propertyWithGetterAndSetterScript.txt | 2 +- .../lazyResolve/propertyWithGetterScript.txt | 2 +- .../propertyWithInitializerScript.txt | 2 +- .../lazyResolve/redeclarationScript.txt | 2 +- .../resolveSuperTypeFromLocalClassScript.txt | 2 +- ...lveTypeFromLocalClassConstructorScript.txt | 2 +- .../resolveTypeFromLocalFunctionScript.txt | 2 +- .../testdata/lazyResolve/script.txt | 18 +++---- .../testdata/lazyResolve/script2.txt | 18 +++---- .../secondaryConstructorParameterScript.txt | 2 +- .../secondaryConstructorScript.txt | 2 +- .../testdata/lazyResolve/statement.txt | 52 +++++++++---------- .../testdata/lazyResolve/statement2.txt | 28 +++++----- .../substitutionFakeOverrideScript.txt | 2 +- ...tionFakeOverrideWithImplicitTypeScript.txt | 2 +- .../lazyResolve/superTypesLoopScript.txt | 2 +- .../testdata/lazyResolve/superTypesScript.txt | 2 +- .../lazyResolve/topLevelFunctionsScript.txt | 2 +- ...ithExpressionBodyAndExplicitTypeScript.txt | 2 +- ...opLevelFunctionsWithImplicitTypeScript.txt | 2 +- .../typeAliasWithTypeParametersScript.txt | 2 +- .../lazyResolve/typeParameterBoundsScript.txt | 2 +- .../typeParameterOfClass2Script.txt | 2 +- .../typeParameterOfClassScript.txt | 2 +- .../typeParameterOfNonLocalFunctionScript.txt | 2 +- .../typeParameterOfTopFunctionScript.txt | 2 +- .../typeParameterOfTopSetterScript.txt | 2 +- .../typeParameterOfTypeAliasScript.txt | 2 +- 155 files changed, 239 insertions(+), 234 deletions(-) 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 2b097726491..377cd2942ea 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,7 @@ private class LLFirTypeTargetResolver( target.accept(transformer, null) } - is FirScript -> {} + is FirScript -> resolveScriptTypes(target) is FirDanglingModifierList, is FirFileAnnotationsContainer, is FirCallableDeclaration, is FirTypeAlias -> { target.accept(transformer, null) } @@ -137,6 +137,11 @@ private class LLFirTypeTargetResolver( } } + private fun resolveScriptTypes(firScript: FirScript) { + firScript.annotations.forEach { it.accept(transformer, null) } + firScript.contextReceivers.forEach { it.accept(transformer, null) } + } + private fun resolveClassTypes(firClass: FirRegularClass) { transformer.transformClassTypeParameters(firClass, null) transformer.withScopeCleanup { 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 4f1af517f37..e2487372a0c 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,5 +1,5 @@ FILE: [ResolvedTo(IMPORTS)] classMemberPropertyScript.kts - context(