Dmitrii Gridin
fdcfb1d190
[AA FIR] add missing new line to addImportToFile
...
^KTIJ-25416
2023-05-02 14:37:28 +00:00
Dmitrii Gridin
2cac7319fe
[LL FIR] add test on lazy resolve for local declarations
...
^KT-56550
2023-04-28 18:08:01 +00:00
Dmitrii Gridin
f425dea3b8
[CLI] JvmDependenciesIndexImpl: add lock to make it thread safe
...
Can be rewritten to multi-thread implementation in the feature
^KT-56550
2023-04-28 13:41:05 +00:00
Dmitrii Gridin
481becb342
[LL FIR] implement LLFirReturnTypeCalculatorWithJump
...
To provide the correct designation and locks strategy
^KT-56550
^KT-58083 Fixed
2023-04-28 11:59:02 +00:00
Dmitrii Gridin
2778b3bdd6
[LL FIR] add missing isJumping phase and update contract violation check for such phases
...
^KT-56550
2023-04-26 11:47:41 +00:00
Dmitrii Gridin
cb546926d5
[LL FIR] LLFirLazyResolveContractChecker: drop hack for COMPILER_REQUIRED_ANNOTATIONS phase
...
This is an obsolete hack
^KT-56543
2023-04-24 16:04:44 +00:00
Dmitrii Gridin
02abafd98d
[FIR] do not request lazy resolve on isActual and isExpect for symbols
2023-04-24 14:47:21 +00:00
Dmitrii Gridin
89acaae819
[LL FIR] RawFirNonLocalDeclarationBuilder: improve diagnostics
2023-04-24 14:01:57 +00:00
Dmitrii Gridin
2a00be916a
[SLC] SymbolLightAccessorMethod: avoid symbol restoring on isValid
...
^KTIJ-25108 Fixed
2023-04-24 11:53:36 +00:00
Dmitrii Gridin
0ccae0d4c6
[SLC] unmute some tests
2023-04-24 11:42:06 +00:00
Dmitrii Gridin
63e6816a50
[LL FIR] avoid body resolve on attempt to build symbol for type parameters
...
^KT-57850
2023-04-21 17:21:36 +00:00
Dmitrii Gridin
5a53d796e1
[LL FIR] add more tests on lazy resolve for type parameters
...
^KT-57850
2023-04-21 17:21:36 +00:00
Dmitrii Gridin
9fe77d6a56
[LL FIR] avoid body resolve on attempt to build symbol for parameters
...
^KT-57850
2023-04-21 17:21:36 +00:00
Dmitrii Gridin
3394097f47
[LL FIR] run lazy resolve tests by caret
...
To test production resolveToFirSymbol entry point
^KT-57850
2023-04-21 17:21:36 +00:00
Dmitrii Gridin
6b3e49e824
[AA FIR] correctly restore declaration with annotation with argument inside some type from symbol pointer
...
ConeAttributes can have some non-stable info, so we shouldn't render it
Also reduce resolve from IMPLICIT_TYPES_BODY_RESOLVE to TYPES where it is possible
^KT-58141 Fixed
2023-04-21 17:21:36 +00:00
Dmitrii Gridin
866e8a26c7
[FIR] set correct resolve phase for default getter, setter and backing field
...
^KT-58163 Fixed
2023-04-21 17:21:17 +00:00
Dmitrii Gridin
f85dc95b66
[SLC] SymbolLightAccessorMethod: reduce number of requests on symbol restoring
...
We can avoid extra restoring of property accessors
if the corresponding property is already restored
^KT-57850
2023-04-21 11:10:20 +00:00
Dmitrii Gridin
5d1c853adf
[AA FIR] fix contract violation for java Target annotation
...
^KT-57849 Fixed
2023-04-21 10:14:05 +00:00
Dmitrii Gridin
f540826207
[AA FIR] add tests on java target annotation stability
...
^KT-57849
2023-04-21 10:14:05 +00:00
Dmitrii Gridin
7b91cd0ff3
[FIR] calculate java Target annotation on COMPILER_REQUIRED_ANNOTATIONS phase
...
^KT-57849
^KT-57949
2023-04-21 10:14:05 +00:00
Dmitrii Gridin
1c456b216b
[AA FIR] add lazy resolve test on java target
...
^KT-57849
2023-04-21 10:14:05 +00:00
Dmitrii Gridin
0caaca45ae
[AA FIR] fix contract violation for Target annotation
...
^KT-57849
2023-04-21 10:14:05 +00:00
Dmitrii Gridin
d66b919c12
[AA] introduce tests on annotation stability
...
^KT-57849
2023-04-21 10:14:05 +00:00
Dmitrii Gridin
bca8be6c39
[LL FIR] avoid resolve to find property accessor declaration
...
^KT-57850 Fixed
2023-04-20 11:12:39 +00:00
Dmitrii Gridin
2463b904f7
[LL FIR] add ability to suppress contract violation exception
...
^KT-56543
2023-04-19 20:12:43 +00:00
Dmitrii Gridin
8387ea8a39
[LL FIR] FileStructure: process annotations from constructors correctly
...
^KT-56543
2023-04-19 20:12:43 +00:00
Dmitrii Gridin
71f48ede53
[LL FIR] resolve compiler required annotations correctly
...
Original AbstractFirSpecificAnnotationResolveTransformer can jump
to other classes and resolve them outside
our transformers, so it leads to
problems with locks and lazy bodies
^KT-56543
2023-04-19 20:12:42 +00:00
Dmitrii Gridin
22b5d940f1
[FIR] move lazy expression assertions to more common class
...
^KT-56543
2023-04-19 20:12:42 +00:00
Dmitrii Gridin
efdae98ba8
[FIR] SignatureEnhancement: reduce access to initializer field
...
It can trigger lazy calculation of FirJavaField initializer
^KT-56543
2023-04-19 20:12:41 +00:00
Dmitrii Gridin
6170d83301
[FIR] update reversed testData
...
^KT-56543
2023-04-19 20:12:41 +00:00
Dmitrii Gridin
1c5aa6c45b
[FIR] add reversed testData to update it in the next commit
...
^KT-56543
2023-04-19 20:12:41 +00:00
Dmitrii Gridin
7c8f7bdbfb
[FIR] FirDelegatedMemberScope: add missing resolve
...
^KT-56543
2023-04-19 20:12:40 +00:00
Dmitrii Gridin
26f8147a8c
[LL FIR] FileStructure: process super class calls correctly
...
^KT-56543
^KT-57793
2023-04-19 20:12:39 +00:00
Dmitrii Gridin
d0e801054c
[FIR] builder: add test on class with wrong super call
...
^KT-56543
^KT-57793
2023-04-19 20:12:39 +00:00
Dmitrii Gridin
332cdc514b
[LL FIR] reanalyse declarations on the air for incremental analysis
...
We cannot do it inplace now as we do not have a lock to do
it under after analysis started to use declaration-level lock
This part is mostly covered by the plugin tests
(which failed after the previous commit)
^KT-56543
2023-04-19 20:12:39 +00:00
Dmitrii Gridin
72def186a3
[LL FIR] rework transformers, so transformers resolve only a specific set of declarations
...
The change is needed for the parallel resolution (^KT-55750), so we can resolve the declaration
under a lock that is specific to this declaration.
Previously, if LL FIR was resolving some FirClass, LL FIR resolved all its children too, and it had no control over what parts of the FIR tree were modified.
The same applied to the designation path, sometimes the classes on the designation path
might be unexpectedly (and without lock) modified.
This commit introduces LLFirResolveTarget, which specifies which exact declarations should be resolved during the lazy resolution of the declaration.
All elements outside the declarations specified for resolve in LLFirResolveTarget, should not be modified.
The logic of lazy transformers is the following:
- Go to target declaration collecting all scopes from the file and containing classes
- Resolve only declarations that are specified by the LLFirResolveTarget, performing the resolve under a separate lock for each declaration
^KT-56543
^KT-57619 Fixed
2023-04-19 20:12:38 +00:00
Dmitrii Gridin
18a8cfb090
[AA FIR] firSymbolUtils: avoid redundant resolve
...
^KT-56543
2023-04-19 20:12:36 +00:00
Dmitrii Gridin
093695962a
[FIR] hacky fix lazy resolve contract violation for deprecation of enum entries
...
Enum entries can be used as types in Kotlin (even it's a compilation error)
To use the classifier as a type, we need to find if it's hidden or not.
The deprecations for classes are calculated on COMPILER_REQUIRED_ANNOTATION phase, and that's okay as it goes before the TYPES phase.
For enum entries, the deprecations are calculated on TYPES phase which goes on TYPES phase.
This is incorrect as we cannot jump from lower phase to upper phase
The hack ignores such deprecation search for enum entires.
Test: org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostic.compiler.based.LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.Tests.testEnumEntryAsType
^KT-57648
^KT-56543
2023-04-19 20:12:36 +00:00
Dmitrii Gridin
7e380e7df5
[LL FIR] remove LLFirPhaseRunner as it does nothing
...
^KT-56543
2023-04-19 20:12:36 +00:00
Dmitrii Gridin
72fce82f2f
[LL FIR] remove useless checks for resolve phases inside transformers
...
Those checks are not performed during locking
^KT-56543
2023-04-19 20:12:35 +00:00
Dmitrii Gridin
0f379e592a
[LL FIR] make LLFirLazyTransformerExecutor an object
...
^KT-56543
2023-04-19 20:12:35 +00:00
Dmitrii Gridin
a172439f2a
[LL FIR] move update declaration resolve phase out of updatePhaseForDeclarationInternals
...
needed for further safe publication of phase update
^KT-56543
2023-04-19 20:12:35 +00:00
Dmitrii Gridin
d52c8b6793
[LL FIR] move updateDeclarationInternalsPhase checks out of LLFirLazyTransformer
...
needed for further safe publication of phase update
^KT-56543
2023-04-19 20:12:34 +00:00
Dmitrii Gridin
e686e840b0
[LL FIR] move checkIsResolved checks out of LLFirLazyTransformer
...
needed for further safe publication of phase update
^KT-56543
2023-04-19 20:12:34 +00:00
Dmitrii Gridin
ffb705fe2f
[AA FIR] add missing new line to addImportToFile
...
^KTIJ-24928
2023-04-14 16:37:12 +00:00
Dmitrii Gridin
9724febf88
[AA FIR] add missing new line to addImportToFile
...
^KTIJ-24928
2023-04-13 11:38:32 +00:00
Dmitrii Gridin
7d37bb1f78
[LC] FakeFileForLightClass: drop stub access from equals/hashCode
...
^KT-57857 Fixed
2023-04-11 09:19:39 +00:00
Dmitrii Gridin
03eab387c0
[FIR] FirRenderer: render annotation resolve phase as well
...
^KT-56543
2023-04-06 08:09:41 +00:00
Dmitrii Gridin
d1282b6195
[CODEOWNERS] change owners of generated diagnostics to core team
2023-04-05 16:47:34 +00:00
Dmitrii Gridin
faeafbbe29
[FIR][tree] replace FirDeclaration.resolvePhase -> resolveState
...
Lazy resolve state represents the lazy resolve
state of the current declaration
It can be either resolved or be in a process of resolve
^KT-56543
2023-04-01 06:53:27 +00:00
Dmitrii Gridin
77e1bc6f9e
[LL FIR] calculate lazy bodies for type annotations
...
^KT-56543
2023-04-01 06:39:46 +00:00
Dmitrii Gridin
badd09e4fd
[FIR] TowerLevels: add missing lazy resolve
...
^KT-56543
2023-04-01 06:39:46 +00:00
Dmitrii Gridin
eb2cfb3d62
[FIR] computeRepresentativeTypeForBareType: add missing lazy resolve
...
^KT-56543
2023-04-01 06:39:45 +00:00
Dmitrii Gridin
3ea1f7851b
[FIR] add missing resolve to isFinalClassConstructor
...
fix checking for intersection types in CheckIncompatibleTypeVariableUpperBounds
we need this resolve, because getEmptyIntersectionTypeKind under
the hood uses org.jetbrains.kotlin.resolve.checkers.EmptyIntersectionTypeChecker.computeEmptyIntersectionEmptiness
which uses computeByHavingCommonSubtype where we have
isFinalClassConstructor() call, so we need to resolve to STATUS phase
to get the correct modality
^KT-56543
2023-04-01 06:39:45 +00:00
Dmitrii Gridin
691a1a683f
[SLC] SymbolLightFieldForProperty: move STATIC modifier calculation to initial values
...
^KT-57569
2023-03-31 12:21:17 +00:00
Dmitrii Gridin
19dbe69651
[FIR] move deprecations calculation on TYPES phase
...
can be moved to COMPILER_REQUIRED_ANNOTATIONS phase in the future
^KT-57256 Fixed
2023-03-29 08:52:37 +00:00
Dmitrii Gridin
a643dfbe83
[FIR][tree] introduce lazy expression to simplify code
...
^KT-56543
2023-03-24 09:58:38 +00:00
Dmitrii Gridin
bc5c1b2a6c
[LL FIR] add test on lazy resolve annotation with type argument
...
^KT-56543
2023-03-24 09:58:11 +00:00
Dmitrii Gridin
8c599a84af
[FIR][renderer] add phase renderer for file and file annotations container
...
^KT-56543
2023-03-24 09:58:11 +00:00
Dmitrii Gridin and Ilya Kirillov
706ff6b61f
[FIR] pre-resolve some scope callables before creating a scope
...
In a lot of cases, when we want to process the
declaration in scope, it should be resolved to at least TYPES phase.
To avoid doing it manually in all our variety of scopes, we do it when the scope it created.
It was implicitly working manually before as lazy resolve did a lot of extra work
on resolving a declaration it was not supposed to resolve.
Now it's not the case, and we have to explicitly resolve all the declarations we need.
^KT-56543
Co-authored-by: Ilya Kirillov <ilya.kirillov@jetbrains.com >
2023-03-24 09:57:46 +00:00
Dmitrii Gridin
9a4a3d1f49
[LL FIR] introduce test with reversed resolve order
...
^KT-56543
Merge-request: KT-MR-9299
Merged-by: Dmitrii Gridin <dmitry.gridin@jetbrains.com >
2023-03-22 17:34:07 +00:00
Dmitrii Gridin
a5e5e093c3
[LL FIR] pass correct phase to AbstractLazyBodyIsNotTouchedTest test
...
We have lazy expressions on ARGUMENTS_OF_ANNOTATIONS,
so we should decrease the phase to it
^KT-56543
2023-03-22 14:08:39 +01:00
Dmitrii Gridin
c046bedfc2
[AA FIR] FirLazyAnnotationTransformer: fix resolve contract violation
...
We can't reduce resolve to COMPILER_REQUIRED_ANNOTATIONS phase for
annotations with arguments, because currently they don't have
argument mapping
```stracktrace
org.jetbrains.kotlin.utils.KotlinExceptionWithAttachments: By now the annotations argument mapping should have been resolved
at org.jetbrains.kotlin.analysis.api.fir.annotations.FirAnnotationUtilsKt.mapAnnotationParameters(firAnnotationUtils.kt:137)
at org.jetbrains.kotlin.analysis.api.fir.FirUtilsKt.toKtAnnotationApplication(FirUtils.kt:79)
at org.jetbrains.kotlin.analysis.api.fir.annotations.FirAnnotationUtilsKt.annotationsByClassId(firAnnotationUtils.kt:60)
at org.jetbrains.kotlin.analysis.api.fir.annotations.FirAnnotationUtilsKt.annotationsByClassId$default(firAnnotationUtils.kt:46)
```
^KT-57424 Fixed
2023-03-22 10:33:27 +01:00
Dmitrii Gridin
fae4cbb415
[LL FIR] fix test naming
...
^KT-55750
2023-03-20 20:25:46 +01:00
Dmitrii Gridin
bdada30bd9
[tests] simplify tmp dir name in case of long name
...
even non-Windows systems don't want to process very long names
^KT-55750
2023-03-20 20:19:22 +01:00
Dmitrii Gridin
b3cb47e8a1
[tests] add new custom extension 'reversed' for tests
...
the new test will be introduced in the next commits
^KT-55750
2023-03-20 20:17:51 +01:00
Dmitrii Gridin
7891b025a5
[LL FIR] FirLazyAnnotationTransformer: add missing compiler annotation
...
^KT-57424
2023-03-20 18:45:09 +00:00
Dmitrii Gridin
0863e9c589
[Test] Add testdata of LL Fir tests to Test Helper plugin path
2023-03-20 15:06:15 +01:00
Dmitrii Gridin
bccf1aaff0
[SLC] symbolLightUtils: cleanup code
2023-03-16 11:42:22 +00:00
Dmitrii Gridin
4dbc6654b0
[SLC][tests] rename stopIfCompilationErrorDirectivePresent to isTestAgainstCompiledCode for clarity
2023-03-16 11:42:21 +00:00
Dmitrii Gridin
71299f1d13
[SLC] cover case with invalid java identifier as annotation argument
...
^KT-56868 Fixed
^KT-57328
2023-03-16 11:42:21 +00:00
Dmitrii Gridin
b7370f0156
[Test] Add testdata of SLC tests to Test Helper plugin path
2023-03-14 16:09:50 +01:00
Dmitrii Gridin
60a8bb9a73
move kotlin-build-common to common artifact instead of fe10
...
^KTIJ-24819
2023-03-02 14:16:03 +00:00
Dmitrii Gridin
0a1c903e11
[SLC] add tests for containingClass
...
^KT-56613
2023-03-01 10:43:03 +00:00
Dmitrii Gridin
9129235079
[LC] add missing parent to implementsList and extendsList
...
^KT-56613
2023-03-01 10:43:03 +00:00
Dmitrii Gridin
58dc93da90
[LC] do not store name identifier as property
...
^KT-56613
2023-03-01 10:43:02 +00:00
Dmitrii Gridin
327208fb8a
[SLC] drop hard references to member declarations to reduce memory consumption
...
^KT-56613 Fixed
2023-03-01 10:43:02 +00:00
Dmitrii Gridin
7af78db2e1
[DLC] drop hard references to member declarations to reduce memory consumption
...
^KT-56613
2023-03-01 10:43:02 +00:00
Dmitrii Gridin
e20f72fcf8
[SLC] introduce tests on equality
...
^KT-56613
2023-03-01 10:43:01 +00:00
Dmitrii Gridin
847b29ac15
[DLC] add missing identity checks to 'equals'
...
^KT-56613
2023-03-01 10:43:01 +00:00
Dmitrii Gridin
95455c9870
[DLC] add missing visitor methods
...
Some of our light classes have no correct parent (KT-56882),
so I temporarily disabled
AbstractSymbolLightClassesParentingTestBase for such cases
(previously decompiled light classes were not tested at all)
^KT-56613
^KT-56882
2023-03-01 10:43:01 +00:00
Dmitrii Gridin
0bd193ccba
[SLC] rename AbstractSymbolLightClassesEqualityTest to AbstractSymbolLightClassesEquivalentTest
...
^KT-56613
2023-03-01 10:43:00 +00:00
Dmitrii Gridin
8c757e36ea
[SLC] provide correct parent for annotations on type
...
The first step of KT-56870
^KT-56613
^KT-56870
2023-03-01 10:43:00 +00:00
Dmitrii Gridin
7273610d41
[SLC] introduce AbstractSymbolLightClassesParentingTestByPsi
...
^KT-56613
2023-03-01 10:43:00 +00:00
Dmitrii Gridin
cfb358140c
[SLC] rename AbstractSymbolLightClassesParentingTest to AbstractSymbolLightClassesParentingTestByFqName
...
^KT-56613
2023-03-01 10:42:59 +00:00
Dmitrii Gridin
68e6dba22b
[SLC] extract base class from AbstractSymbolLightClassesParentingTest
...
^KT-56613
2023-03-01 10:42:59 +00:00
Dmitrii Gridin
bf600afce0
[SLC] extract base class from AbstractSymbolLightClassesStructureTest
...
^KT-56613
2023-03-01 10:42:59 +00:00
Dmitrii Gridin
5e18ebcd7e
[DLC] cleanup code and drop some redundant constructions
...
^KT-56613
2023-03-01 10:42:58 +00:00
Dmitrii Gridin
007af1c547
[DLC] use library tracker instead of out of block tracker
...
^KT-56613
2023-03-01 10:42:58 +00:00
Dmitrii Gridin
b565df65c4
[SLC] drop redundant properties to reduce memory consumption
...
^KT-56613
2023-03-01 10:42:58 +00:00
Dmitrii Gridin
7e36a88b82
[LL FIR] FirDesignation: add workaround for LLFirLibraryOrLibrarySourceResolvableModuleSession
...
^KTIJ-24326
2023-02-24 11:09:43 +00:00
Dmitrii Gridin
550b4f1f11
[SLC] throw exception on redundant test data file
2023-02-23 17:15:53 +00:00
Dmitrii Gridin
41278d0797
[SLC] drop redundant AnnotatedPropertyWithSites.fir.java
...
^KT-56842
2023-02-22 12:39:31 +01:00
Dmitrii Gridin
0eb90cccd1
[SLC] enum entries should be psi reference instead of psi expression
...
^KT-56728 Fixed
2023-02-17 13:11:14 +00:00
Dmitrii Gridin
e65c863f8c
[SLC] add test on single target annotation
...
^KT-56728
2023-02-17 13:11:14 +00:00
Dmitrii Gridin
607b8f6b61
Revert "[SLC] Support generics and ignore whitespace in KtSuperTypeList.findEntry"
...
This reverts commit e77f5c7764 .
2023-02-13 17:28:35 +01:00
Dmitrii Gridin
761553ea75
[LC] reduce memory consumption from SLC and DLC
...
The main change is drop `LightClassesLazyCreator`
KtLightClassForDecompiledDeclaration:
* fixed a few captured fields
^KT-56561 Fixed
2023-02-13 16:08:17 +00:00
Dmitrii Gridin
a8e8fc1f11
[LC] add ClassInnerStuffCache
...
^KT-56561
2023-02-13 16:08:16 +00:00
Dmitrii Gridin
f501259cd4
[ULC] KtLightClassBase: do not override myInnersCache
...
^KT-56561
2023-02-13 16:08:16 +00:00
Dmitrii Gridin
06095b379f
[LL API] LLFirProvider: add missing usage of SyntheticFirClassProvider for callable declarations
...
currently on air resolve failed for such declarations
^KT-55750
2023-02-13 07:37:31 +00:00