Dmitrii Gridin
28c80a1581
[LL FIR] StubBasedFirMemberDeserializer: add missed deprecation provider
...
^KT-60996 Fixed
2024-03-06 16:13:09 +00:00
Dmitrii Gridin
805b7bc8f4
[Analysis API] add diagnostic tests on deprecated declarations
...
^KT-60996
2024-03-06 16:13:09 +00:00
Dmitrii Gridin
9cc2c22116
[Analysis API] drop obsolete tests
...
They were renamed during 2ce324f1fc ,
but old wasn't dropped
2024-03-06 16:09:43 +00:00
Dmitrii Gridin
1ba81fca57
[Analysis API] add tests on incomplete function type parameter symbol
...
^KT-65858 Obsolete
2024-03-06 16:09:43 +00:00
Dmitrii Gridin
ca740b70f3
[LL FIR] LLFirLazyResolver: inline updatePhaseForDeclarationInternals
...
This is the responsibility of `LLFirTargetResolver` to call it
2024-03-06 16:06:21 +00:00
Dmitrii Gridin
141b187e37
[LL FIR] encapsulate checkIsResolved for LLFirResolveTarget
...
In this way, only `LLFirLazyResolver` will be responsible for running
and checking the resolution result.
Also, this commit replaces redundant `checkIsResolved` for
`LLFirResolveTarget` with cheaper `checkIsResolved` for declarations.
2024-03-06 16:06:21 +00:00
Dmitrii Gridin
c4bb5c6d8f
[LL FIR] mark LLFirTargetResolver and LLFirLazyResolver as sealed as we know hierarchy
2024-03-06 16:06:21 +00:00
Dmitrii Gridin
4db10a1d94
[LL FIR] drop ability to enable global phase lock
...
Also, this commit adds the missing global lock for `IMPORTS` phase.
This commit doesn't change any logic for the case with disabled lock
(the default case), only updates the case with enabled lock.
^KT-66306 Fixed
2024-03-06 16:06:21 +00:00
Dmitrii Gridin
2229c82dc4
[LL FIR] additional checkCanceled after resolution
...
We have explicit cancellation checks between phases and inside locks,
so it is worth adding the check after `checkIsResolved`
2024-03-06 16:06:21 +00:00
Dmitrii Gridin
8c320f0602
[LL FIR] LLFirTargetResolver: add more debug info for containingClass
...
^KT-66132
2024-03-06 14:44:07 +00:00
Dmitrii Gridin
4d04546652
[FIR] FirPlatformDeclarationFilter: add missed lazy resolve call
...
`isFunctionAvailable` can be called from `PlatformDependentFilteringScope`
on unresolved declarations during `STATUS` phase
^KT-66268 Fixed
2024-03-03 22:00:06 +00:00
Dmitrii Gridin
f844b87f75
[LL FIR] FirElementBuilder: do nothing for KtAnnotation
...
We shouldn't try to find FIR for such elements as they just don't
exist in FIR
^KT-65780
2024-03-01 19:19:00 +00:00
Dmitrii Gridin
62ec189924
[LL FIR] add getOrBuildFir for KtAnnotation
...
^KT-65780
2024-03-01 19:19:00 +00:00
Dmitrii Gridin
16878ca20d
[LL FIR] FirElementBuilder: support KtAnnotation in file annotations
...
^KT-65780
2024-03-01 19:19:00 +00:00
Dmitrii Gridin
ba92fc97f9
[LL FIR] add test on annotation with [] syntax
...
^KT-65780
2024-03-01 19:19:00 +00:00
Dmitrii Gridin
17c128adf2
[FIR] get rid of FirFileAnnotationsContainer
...
This element has been introduced to simplify resolution logic in LL FIR,
but now this element is redundant and only complicates the code as after
KT-56683 `FirFile` has real phases
^KT-65876 Fixed
2024-03-01 19:19:00 +00:00
Dmitrii Gridin
42a982b400
[LL FIR] move Lincheck tests out of Low Level API FIR Tests
...
They take too much time and block other tests
2024-03-01 17:29:07 +00:00
Dmitrii Gridin
f246d1c037
[LL FIR] introduce NonLocalAnnotationVisitor
...
- Unified and optimized visitor instead of transformer with many
redundant operations.
- `LLFirAnnotationArgumentsTargetResolver` now has the correct state
keeper for nested declarations – e.g., property accessors or value
parameters.
- `FirAllLazyAnnotationCalculatorVisitor` in tests now almost the same
as in the production as now it uses the same visitor without recursive
visiting
^KT-63606 Fixed
^KT-64000 Fixed
^KT-64579 Fixed
2024-02-28 17:10:33 +00:00
Dmitrii Gridin
410dbcb4cf
[LL FIR] LLFirTypeLazyResolver: add missed type checks for context receivers
2024-02-28 17:10:33 +00:00
Dmitrii Gridin
7048184acf
[LL FIR] LLFirAnnotationArgumentsLazyResolver: add missed checks for context receivers
2024-02-28 17:10:33 +00:00
Dmitrii Gridin
fe4ead751f
[LL FIR] LLFirTargetResolver: do not resolve file annotation container before each declaration
...
We don't have to resolve `FirFileAnnotationsContainer` before each
declaration.
This became possible after KT-65345 as now `FirDesignation` has `FirFile`
in its path so, `PersistenceContextCollector#collectContext` resolves
it as well as we don't have problems with unresolved annotations
during diagnostics processing
^KT-65876
2024-02-28 17:10:32 +00:00
Dmitrii Gridin
dc898fdf5c
[LL FIR] LLFirTargetResolver: add missed checkThatResolvedAtLeastToPreviousPhase check for jumping phase
2024-02-28 17:10:32 +00:00
Dmitrii Gridin
3ce3c50b92
[LL FIR] update low-level-api-fir.md doc
2024-02-21 20:16:15 +00:00
Dmitrii Gridin
71f9c101a1
[LL FIR] KDoc here and there
2024-02-21 20:16:15 +00:00
Dmitrii Gridin
8525a39579
[FIR] FirResolvePhase: update KDoc
...
- Add pseudocode
- Add information about loop breaks to the super type phase
2024-02-21 18:21:47 +01:00
Dmitrii Gridin
072d191306
[compiler] replace Enum values() with entries
...
To fix warnings. Also, use of `Enum.entries` may improve the performance
^KT-48872
2024-02-20 17:56:46 +00:00
Dmitrii Gridin
d64fc9b777
[SLC] map kotlin.Unit type typealias into void return type
...
^KT-65843 Fixed
2024-02-19 21:24:42 +00:00
Dmitrii Gridin
8dd66c0810
[LC] add test on unit type actualization
...
^KT-65843
2024-02-19 21:24:42 +00:00
Dmitrii Gridin
68e5fc7344
[LL FIR] LLFirLazyResolver: drop LLFirLockProvider parameter
...
It can be inferred from `LLFirResolveTarget` inside
`LLFirTargetResolver`
2024-02-19 09:41:22 +00:00
Dmitrii Gridin
efeffb45b7
[LL FIR] LLFirLazyResolver: drop ScopeSession parameter
...
It can be inferred from `LLFirResolveTarget` inside
`LLFirTargetResolver`
2024-02-19 09:41:22 +00:00
Dmitrii Gridin
7d672cd474
[LL FIR] drop ScopeSession parameter from LLFirModuleLazyDeclarationResolver
...
This parameter was required for on-air analysis
to avoid garbage in the original scope session.
Now we can drop it, and it will be less error-prone
2024-02-19 09:41:22 +00:00
Dmitrii Gridin
80b698ce32
[FIR] drop obsolete FirResolveContextCollector
...
This interface is unused
2024-02-19 09:41:22 +00:00
Dmitrii Gridin
2e17d8d524
[LL FIR] FileStructureElementDiagnosticRetriever: deduplicate code
2024-02-19 09:41:22 +00:00
Dmitrii Gridin
3f31bdb877
[LL FIR] merge DeclarationBaseStructureElement into FileStructureElement
...
To simplify the implementation
2024-02-19 09:41:22 +00:00
Dmitrii Gridin
a9f7c153d2
[LL FIR] rename LLFirResolveMultiDesignationCollector to LLFirResolveDesignationCollector
...
As it is not "multi" after 77c850f0d0
2024-02-19 09:41:22 +00:00
Dmitrii Gridin
0ecb174720
[LL FIR] LLFirLazyResolver: deduplicate code
2024-02-19 09:41:22 +00:00
Dmitrii Gridin
84f3cc9f9c
[Analysis API] drop obsolete code
2024-02-19 09:38:18 +00:00
Dmitrii Gridin
7a13023b14
[FIR] add KDoc for FirResolvePhase
2024-02-15 19:28:10 +00:00
Dmitrii Gridin
c78d3edd24
[SLC] support type parameter annotations
...
^KT-65112 Fixed
2024-02-15 15:18:02 +00:00
Dmitrii Gridin
ae8e9749c8
[SLC] AnnotationsBox: use PsiElement instead of PsiModifierList
...
Not only PsiModifierList can be the parent of an annotation,
so we should make the restrictions less aggressive.
^KT-65112
2024-02-15 15:18:02 +00:00
Dmitrii Gridin
717dd08fd4
[LC] PsiClassRenderer: render type parameter annotations
...
^KT-65112
2024-02-15 15:18:02 +00:00
Dmitrii Gridin
3e3c932bf6
[LC] add tests on type parameter annotations
...
^KT-65112
2024-02-15 15:18:02 +00:00
Dmitrii Gridin
d5705af8b1
[SLC] AbstractSymbolLightClassesParentingTestBase: make aware of PsiTypeParameter
...
It can have annotations
^KT-65112
^IDEA-346155
2024-02-15 15:18:02 +00:00
Dmitrii Gridin
3962f26583
[FIR] PsiRawFirBuilder: drop obsolete LL FIR parts
2024-02-15 10:50:47 +00:00
Dmitrii Gridin
58a1662c02
[LL FIR] FirLazyBodiesCalculator: drop obsolete logic for compiler required annotations
...
We have custom logic on `LLFirCompilerRequiredAnnotationsTargetResolver`
side
2024-02-15 10:50:47 +00:00
Dmitrii Gridin
f5f3b7fec0
[LL FIR] drop unused declarations
2024-02-15 10:50:47 +00:00
Dmitrii Gridin
8f83e2ab4d
[LL FIR] drop RawFirUserTypeRefBuilder as obsolete
2024-02-15 10:50:47 +00:00
Dmitrii Gridin
c1205bfba9
[LL FIR] drop RawFirFileAnnotationBuilder as obsolete
2024-02-15 10:50:47 +00:00
Dmitrii Gridin
fd74de6ccf
[LL FIR] drop RawFirReplacement as obsolete
2024-02-15 10:50:47 +00:00
Dmitrii Gridin
ba947fbf04
[LL FIR] RawFirNonLocalDeclarationBuilder: drop redundant functions
...
They are obsolete as we dropped on-air resolution logic
2024-02-15 10:50:47 +00:00
Dmitrii Gridin
46d16dfb6c
[LL FIR] PersistenceContextCollector: change designation path resolution order
...
We will process more specific declaration firstly to avoid contention.
As the next step of addbb713a5
^KT-65780
2024-02-14 17:53:31 +00:00
Dmitrii Gridin
78c394d4de
[LL FIR] FirElementBuilder: search file header elements without body resolution
...
^KT-65780
2024-02-14 17:53:31 +00:00
Dmitrii Gridin
04a2d6b616
[LL FIR] FirElementBuilder: make getFirForNonBodyElement more abstract
...
This is required for the next step
^KT-65780
2024-02-14 17:53:31 +00:00
Dmitrii Gridin
38a3010ac8
[LL FIR] FirElementBuilder: search file annotations without body resolution
...
^KT-65780
2024-02-14 17:53:31 +00:00
Dmitrii Gridin
cca58f5c2a
[LL FIR] FirElementBuilder: accept KtAnnotated instead of KtDeclaration as annotation owner
...
^KT-65780
2024-02-14 17:53:31 +00:00
Dmitrii Gridin
7796ef43db
[LL FIR] FileStructure: resolve FirFile to body phase as all other elements
...
This is the correct behavior as we have to resolve to body phase
to build CFG and run diagnostics collector correctly
^KT-65780 Fixed
2024-02-14 17:53:31 +00:00
Dmitrii Gridin
84b6d5d508
[LL FIR] add tests for getOrBuildFir for KtFileAnnotationList
...
^KT-65780
2024-02-14 17:53:31 +00:00
Dmitrii Gridin
5426cbc3df
[LL FIR] tests for this with annotations as implicit return type
...
^KT-61175
^KT-64215
2024-02-14 17:46:47 +00:00
Dmitrii Gridin
e02c28c88a
[LL FIR] support lazy resolve of destructuring declaration entries
...
^KT-62840 Fixed
^KT-65727
2024-02-14 16:16:01 +00:00
Dmitrii Gridin
8c63e75f06
[LL FIR] update destructuringEntryScript testData
...
To reproduce getOrBuildFir for KtDestructuringDeclarationEntry
^KT-62840
2024-02-14 16:16:01 +00:00
Dmitrii Gridin
312feb3dca
[FIR] make script destructuring declaration entry initializer lazy expression
...
This change is required to properly support such declarations in lazy
resolution mode as we usually replaced initializers with lazy
expressions during the body calculation phase
^KT-62840
2024-02-14 16:16:01 +00:00
Dmitrii Gridin
c0f4f7fefd
[LL FIR] AbstractFirLazyBodiesCalculatorTest: add ability to suppress test
...
We have inconsistency in lazy body calculator, but only tests are
affected, because in the production we recreated bodies anyway
^KT-62840
2024-02-14 16:16:01 +00:00
Dmitrii Gridin
256d83b005
[LL FIR] support lazy resolve of <destruct> script declaration
...
But support for entries still is not implemented yet
^KT-62840
2024-02-14 16:16:01 +00:00
Dmitrii Gridin
792af849df
[LL FIR] add getOrBuildFir test on destructuring declaration annotation
...
It doesn't resolve the property as it is treated as a local one
^KT-62840
2024-02-14 16:16:01 +00:00
Dmitrii Gridin
9ca0bdcb80
[FIR] make script destructuring declaration initializer lazy expression
...
This change is required to properly support such declarations in lazy
resolution mode as we usually replaced initializers with lazy
expressions during the body calculation phase
^KT-62840
2024-02-14 16:16:01 +00:00
Dmitrii Gridin
898c8c002e
[LL FIR] add lazy body calculation tests for scripts
...
After KT-65344 we can effectively calculate lazy bodies in scripts,
so we can safely add the test
^KT-62840
2024-02-14 16:16:01 +00:00
Dmitrii Gridin
2e2e592cc3
[Analysis API] CliTestModuleCompiler: support LANGUAGE_VERSION directive
...
^KT-64884
2024-02-13 16:07:17 +00:00
Dmitrii Gridin
a567793d10
[LL FIR] add workaround for deserialization of data classes
...
To correctly process old metadata without properly sorted properties
^KT-64884 Fixed
2024-02-13 16:07:17 +00:00
Dmitrii Gridin
faebef171d
[Analysis API] add regression tests for data class copy arguments usage
...
This issue is not reproducible against the K2 compiler
^KT-64884
2024-02-13 16:07:17 +00:00
Dmitrii Gridin
ab328e76d4
[LL FIR] FirDesignation: update KDoc for collectDesignationWithOptionalFile
...
^KT-65344
2024-02-13 14:58:31 +00:00
Dmitrii Gridin
ca484fae2c
[LL FIR] KtFirReferenceShortener: add order for FirScriptDeclarationsScope
...
It is similar mostly to FirClassUseSiteMemberScope or NestedClassifier
^KT-65344
2024-02-13 14:58:31 +00:00
Dmitrii Gridin
18978ca3f1
[LL FIR] FirDesignation: add toString
...
^KT-65344
2024-02-13 14:58:31 +00:00
Dmitrii Gridin
cc46b6e3e9
[LL FIR] rename collectDesignationWithFile to collectDesignation
...
It should have a more simple name as it is the main function now
^KT-65344
2024-02-13 14:58:31 +00:00
Dmitrii Gridin
0b4dac9d8d
[LL FIR] rename collectDesignation to collectDesignationWithOptionalFile
...
To make the choice more visible
^KT-65344
2024-02-13 14:58:31 +00:00
Dmitrii Gridin
3c26d0e85d
[LL FIR] refactor collectDesignation and friends
...
to simplify code and add KDoc
^KT-65344
2024-02-13 14:58:31 +00:00
Dmitrii Gridin
8f987644ab
[LL FIR] designation refactoring
...
Collect `FirDesignation` by default with `FirFile` instead of just
a separate path and additional repeated logic around
^KT-65344
2024-02-13 14:58:31 +00:00
Dmitrii Gridin
47e8d987b9
[LL FIR] ContextCollector: optimize collector for file elements
...
We shouldn't trigger declaration processing if we want to check just
annotations/package/imports.
But currently, we still will iterate over the entire file
if there is an element somewhere inside package/import
(see `fileImportInside.kt` test case)
^KT-65344
^KT-65560 Fixed
2024-02-13 14:58:31 +00:00
Dmitrii Gridin
0c3a1dfd67
[LL FIR] ContextCollector: add tests for file package and imports
...
It reproduces redundant resolution
^KT-65344
^KT-65560
2024-02-13 14:58:31 +00:00
Dmitrii Gridin
58ad26ee5b
[LL FIR] make script initializers independent
...
Now we can resolve all script declarations independently
^KT-65344 Fixed
2024-02-13 14:58:31 +00:00
Dmitrii Gridin
d59b8b3244
[LL FIR] LLFirStatusTargetResolver: add missing branch for FirFile
...
It is better to explicitly say that we shouldn't do anything in the
case of the file. It worked before because of `needResolveMembers == false`
and `needResolveNestedClassifiers == false` inside
`LLFirStatusTargetResolver.Transformer`
^KT-65344
2024-02-13 14:58:31 +00:00
Dmitrii Gridin
697f1477fd
[LL FIR] drop forEachDependentDeclaration
...
Now this function is redundant
^KT-65344
2024-02-13 14:58:31 +00:00
Dmitrii Gridin
5de5f70ec9
[LL FIR] LLFirPhaseUpdater: update backing field initializer directly
...
Instead of the backing field itself as we already update its phase
during `updatePhaseForNonLocals`
^KT-65344
2024-02-13 14:58:31 +00:00
Dmitrii Gridin
6415f423a8
[LL FIR] PhaseUpdatingTransformer: drop redundant checks
...
We shouldn't check the current phase as this condition effectively
always is **false** as we use this updater only once for the phase
^KT-65344
2024-02-13 14:58:31 +00:00
Dmitrii Gridin
348c9664c1
[LL FIR] drop isScriptDependentDeclaration
...
Now this property is redundant
^KT-65344
2024-02-13 14:58:31 +00:00
Dmitrii Gridin
4f0bc86ad4
[LL FIR] make result$$ property independent
...
Now we can resolve this generated property in the same way
as other regular properties.
This is the pre-step for independent script initializers
^KT-65344
^KT-65523
2024-02-13 14:58:31 +00:00
Dmitrii Gridin
6135a98e4e
[LL FIR] do not rebuild entire script for lazy calculation of result$$ property
...
After the previous commit, it is possible to rebuild initializer for
`result$$` property without a full script creation.
Also, this commit fixes anchor symbol for annotations
inside script statements
^KT-65344
2024-02-13 14:58:31 +00:00
Dmitrii Gridin
338c533a58
[FIR] FirScriptConfigurationExtensionImpl: change source element for result$$ property
...
We should use the source from replaced `FirAnonymousInitializer` as it
is more equivalent. Another point – the previous implementation
duplicated the source between generated FirProperty and initializer
^KT-65344
2024-02-13 14:58:31 +00:00
Dmitrii Gridin
f972c8d239
[LL FIR] add more tests for script initializer
...
^KT-65344
2024-02-13 14:58:31 +00:00
Dmitrii Gridin
0e16788b0a
[FIR] value parameters from data class copy should be marked as resolved
...
^KT-65763 Fixed
2024-02-13 11:54:04 +00:00
Dmitrii Gridin
ab7ae180f9
[LL FIR] add test data for data class from library
...
^KT-65763
2024-02-13 11:54:04 +00:00
Dmitrii Gridin
addbb713a5
[LL FIR] FileStructure: collect diagnostics from bottom to top
...
In this way, we can be sure that all nested declarations will be fully
resolved before the outer one. As an example, we had a workaround for
file diagnostics as its `FileStructure` element resolves the file only
to `IMPORTS` phase yet.
Also, this commit probably should improve the performance of highlighting
as we will trigger the resolution from bottom to top while other
highlighting passes will iterate from top to bottom.
^KT-65562
2024-02-12 23:14:12 +00:00
Dmitrii Gridin
31852c6c05
[LL FIR] FileStructure: support dangling modifier list in non-end position
...
The root cause of the exception is that we missed such an element, and
it led to unresolved declaration during iteration over file declarations
^KT-65562 Fixed
2024-02-12 23:14:12 +00:00
Dmitrii Gridin
77c850f0d0
[LL FIR] LLFirResolveMultiDesignationCollector: simplify code
...
We can unify all designation calculators and migrate from
`List<LLFirResolveTarget>` to `LLFirResolveTarget`
^KT-65563
2024-02-08 22:28:13 +00:00
Dmitrii Gridin
c52b9032ce
[LL FIR] pull up custom logic for synthetic properties and accessors
...
We should process them independently as they can be not related to each
other
^KT-65563 Fixed
2024-02-08 22:28:13 +00:00
Dmitrii Gridin
b1b33475fa
[SLC] SymbolLightParameterCommon: drop redundant parameterDeclaration
...
Now we can replace it with kotlinOrigin
^KT-64772
2024-02-08 19:45:17 +00:00
Dmitrii Gridin
255a2d27f7
[SLC] SymbolLightTypeParameter: drop redundant typeParameterDeclaration
...
Now we can replace it with kotlinOrigin
^KT-64772
2024-02-08 19:45:17 +00:00
Dmitrii Gridin
042042768f
[SLC] prefer sourcePsiSafe to psiSafe
...
We should use only source declarations as anchors as it is a predictable
contract
^KT-64772
2024-02-08 19:45:17 +00:00
Dmitrii Gridin
b8306c8242
[SLC] SymbolLightParameterCommon: use only source kotlinOriginal
...
We shouldn't return it for, for example, SOURCE_MEMBER_GENERATED
^KT-64772 Fixed
2024-02-08 19:45:17 +00:00
Dmitrii Gridin
9589043a05
[LL FIR] adapt LLFirTargetResolver for new FirDesignation
...
We should maintain `containingDeclarations` to be consistent with
the new ` FirDesignation `
^KT-65345 Fixed
2024-02-05 09:32:45 +00:00
Dmitrii Gridin
9b60e5ca06
[LL FIR] adapt RawFirNonLocalDeclarationBuilder for new FirDesignation
...
Effectively nothing changed right now, but now it is possible to process
`FirScript` as `containingDeclaration` inside `moveNext`
^KT-65345
2024-02-05 09:32:45 +00:00