Dmitrii Gridin
cd4f87a8f3
[Analysis API] add tests on KtType conversion with annotations
...
^KT-66603
2024-03-19 13:57:23 +00:00
Dmitrii Gridin
6ba69482af
[Analysis API Fe10] generate ExpressionPsiTypeProviderTest
...
^KT-66603
2024-03-19 13:57:23 +00:00
Dmitrii Gridin
fdc0a8ec07
[Analysis API] render PsiType in tests properly
...
It should contain fully qualified names and annotations
^KT-66603
2024-03-19 13:57:22 +00:00
Dmitrii Gridin
b3827947d9
[Analysis API] Update KDoc for KtPsiTypeProvider#asKtType
2024-03-14 18:05:15 +00:00
Dmitrii Gridin
5689dedea0
[Analysis API FIR] KtFirPsiTypeProvider: drop redundant TODO
...
Regular type annotations work as expected
^KT-62351 Obsolete
2024-03-14 18:05:15 +00:00
Dmitrii Gridin
ba421aa320
[Analysis API FIR] KtFirPsiTypeProvider: support type parameter position in asKtType
...
^KT-66530
2024-03-14 18:05:15 +00:00
Dmitrii Gridin
675bf36049
[FIR] JavaTypeParameterStack: allow nullable return from get
...
It is not always possible to have the correct mapping,
at least on the Analysis API side
^KT-66530 Fixed
2024-03-14 18:05:15 +00:00
Dmitrii Gridin
8de680314e
[SLC] reuse toLightClass for inner classes creation
...
This means:
* We will call `checkCanceled` under the hood.
* We will cache and reuse the result of conversion.
^KTIJ-28688
2024-03-11 21:42:39 +00:00
Dmitrii Gridin
2f2a17f570
[SLC] inject checkCanceled into declarations creation to improve responsiveness
...
^KTIJ-28688
2024-03-11 21:42:39 +00:00
Dmitrii Gridin
0ab105f265
[LC] KotlinAsJavaSupportBase: add checkCanceled
...
The jump from Kt into the Psi world is a good place to check
if we have been canceled
^KTIJ-28688
2024-03-11 21:42:39 +00:00
Dmitrii Gridin
de74ca5902
[FIR] FirLocalVariableAssignmentAnalyzer: do not try to propagate empty information
...
`recordAssignments` merges properties into all parents which is
redundant work in the case of empty `VariableAssignments`.
This redundant work leads to critically poor performance in cases
with many local declarations.
^KT-66416 Fixed
2024-03-08 15:39:17 +00:00
Dmitrii Gridin
8cc2208c00
[LL FIR] support lazy resolution tests for scripts with custom definition
...
^KT-66276
^KT-66232
2024-03-07 12:50:59 +00:00
Dmitrii Gridin
d5cfea330b
[LL FIR] support parameters resolution
...
Script parameters now can be resolved independently of the script.
But, as parameters are part of the script, their resolve will be called
before the script.
^KT-66276 Fixed
2024-03-07 12:50:59 +00:00
Dmitrii Gridin
150af66b55
[LL FIR] implement diagnostic tests on custom script definitions
...
it is impossible to declare test data with another output yet
as `myScriptFile.test.ll.kts` won't be treated as custom definition as
it requires `test.kts` extension.
^KT-66232 Fixed
^KT-66276
2024-03-07 12:50:59 +00:00
Dmitrii Gridin
204465132f
[LL FIR] AbstractLLFirBlackBoxCodegenBasedTestBase: unify logic
...
^KT-66232
2024-03-07 12:50:59 +00:00
Dmitrii Gridin
dd0d2168fc
[LL FIR] rename AbstractCompilerBasedTestForFir to AbstractLowLevelCompilerBasedTest
...
^KT-66232
2024-03-07 12:50:59 +00:00
Dmitrii Gridin
d6b3f6f352
[LL FIR] AbstractCompilerBasedTestForFir: convert receiver to parameter
...
to allow using super call from implementations
^KT-66232
2024-03-07 12:50:59 +00:00
Dmitrii Gridin
928fb94052
[FIR] fix internal error on suspend conversion with not-computed return type
...
^KT-62836 Fixed
2024-03-07 07:49:44 +00:00
Dmitrii Gridin
f4096ae8e9
[FIR] add test case on more suspend conversion with more specific implicit type
...
^KT-62836
2024-03-07 07:49:44 +00:00
Dmitrii Gridin
edd9f0348e
[LL FIR] LLFirReturnTypeCalculatorWithJump: add checkCanceled
...
`tryCalculateReturnTypeOrNull` is the entry point for foreign symbols
resolution. We already have `checkCanceled` inside `lazyResolveToPhase`
and `checkIsResolved`, but in this case we will cover cases where
everything around is already resolved
^KTIJ-27504
2024-03-07 07:43:40 +00:00
Dmitrii Gridin
ae9c9b051f
[FIR] do not use MUTE_LL_FIR for multiplatform tests
2024-03-06 16:13:09 +00:00
Dmitrii Gridin
c090ae96ab
[LL FIR] update attached issue
...
^KT-66352
2024-03-06 16:13:09 +00:00
Dmitrii Gridin
124453016d
[LL FIR] Replace IGNORE_REVERSED_RESOLVE + IGNORE_NON_REVERSED_RESOLVE with MUTE_LL_FIR
2024-03-06 16:13:09 +00:00
Dmitrii Gridin
9ea9950d28
[LL FIR] Replace IGNORE_DIAGNOSTIC_API with IGNORE_NON_REVERSED_RESOLVE
2024-03-06 16:13:09 +00:00
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