Commit Graph

98120 Commits

Author SHA1 Message Date
Sebastian Sellmair 6fae581ffb [Gradle][Minor] IdeaKotlinClasspath: Improve .toString() readability
KT-56198
2023-01-26 10:25:20 +00:00
Sebastian Sellmair 2bda0c0c57 [Gradle] Implement test covering KT-56198 (composite: mpp-jvm to jvm) 2023-01-26 10:25:19 +00:00
pyos 8aa50e9446 FIR CFA: add edges from maybe-throwing statements to catch/finally 2023-01-26 09:50:24 +00:00
Alexander Udalov ef208d9eac Throw if kotlinx-metadata-jvm version in jvm-abi-gen is too low 2023-01-25 23:24:05 +01:00
Sebastian Sellmair 85473068c9 [Gradle][Minor] Improve readability of SourceSetVisibilityProvider 2023-01-25 20:07:52 +00:00
Artem Daugel-Dauge b1b744b863 [Gradle] Provide granular Gradle warnings suppression for CocoaPodsIT
^KT-56162 Fixed
2023-01-25 18:45:23 +00:00
Marco Pennekamp 2922f85a98 [AA] KTIJ-23563 Add reference resolve tests for working cases
- Type arguments in invalid calls/property accesses are resolved
  correctly in many cases, for which this commit adds test cases.
2023-01-25 16:40:46 +00:00
Ilya Goncharov 42ded7be09 [Gradle, JS] Disable optimization in webpack for karma tests
^KT-56192 fixed
2023-01-25 16:06:29 +00:00
Igor Chevdar 9d911247fa [K/N] Wrap continuation with ContinuationImpl on callable references
#KT-55869
2023-01-25 15:55:16 +00:00
Mikhail Zarechenskiy 4dd7481ac3 Set Kotlin 1.9 and Kotlin 2.0 as ready for preview
^KT-56165
 ^KTIJ-24398
2023-01-25 13:09:38 +00:00
Mikhail Glukhikh b867fd8c2f FIR2IR: set CATCH_PARAMETER origin for catch parameters 2023-01-25 12:31:35 +00:00
Mikhail Glukhikh f0a1d3e3b1 FIR2IR: generate modifiers in reference adapters as PSI2IR does
In particular, this commit makes isExternal, isExpect and isTailRec
always false for FIR2IR reference adapters

#KT-55461 Fixed
2023-01-25 12:31:34 +00:00
Mikhail Glukhikh ae4b8be16b FIR2IR: never generate empty when #KT-55459 Fixed
In details, this commit changes the following:
- it converts FIR when without branches to empty IR block without when
- it doesn't drop empty else branches in when anymore
2023-01-25 12:31:34 +00:00
Anna Kozlova b026678a34 [LL] retrieve fir from generated property of desugaring ++ operator
^ KTIJ-24385
Temp property to store receiver is generated for `a.b++` expression.
If this property's psi corresponds to receiver expr, then FirProperty
would be found by mapper if receiver is requested.
It works unexpectedly, because FirProperty is normally not expected by expression.
This change set fake sources for generated FirProperty, so it won't be found
by source psi
2023-01-25 11:03:29 +00:00
nataliya.valtman 3aade8ad95 Mark removed source file as deleted for compiler
#KT-55905 Fixed
2023-01-25 09:43:10 +00:00
Kirill Rakhman c1420794b4 FIR: add checker for local extension properties
^KT-56013 Fixed
2023-01-25 08:25:56 +00:00
Yan Zhulanow 9873fe84f2 [FE] Fix exception from the 'UnusedChecker' on a destructuring
^KT-55973 Fixed
2023-01-25 08:05:58 +00:00
Yan Zhulanow 84baee1ef1 [LL API] Fallback for designation path calculation for special cases
Currently, designation path requires all intermediate classes to be
regular named classes. This is not certainly possible, especially for
invalid cases such as:

---
class Foo {
    object {
        class Bar {
            fun foo() {} // What's the designation path for 'foo()'?
        }
    }
}
---

If there was a way to get a parent for a given FIR element, we could
just follow parents until the root FIR node (which would be a FirFile).
2023-01-25 08:04:42 +00:00
Yan Zhulanow e390d2aae3 [LL API] Use a file as a modification tracker for out-of source roots 2023-01-25 08:04:42 +00:00
Yan Zhulanow 9619c695b7 [LL API] Support nested type aliases in file-based declaration provider 2023-01-25 08:04:41 +00:00
Yan Zhulanow 14178a9771 [LL API] Execute 'findNearClass()' only for stdlib-like classes
'LLFirProvider'/'LLFirProviderHelper' do not normally search for classes
in the 'kotlin.' package. While it has a positive impact on performance,
as 'kotlin.' package is normally forbidden in arbitrary modules,
during designation path calculation we need to handle also invalid
cases.
2023-01-25 08:04:41 +00:00
Yan Zhulanow 12e86bdb0c [LL API] Simplify 'withSyntheticClasses()', forbid nested on-air blocks 2023-01-25 08:04:41 +00:00
Yan Zhulanow 5120da6b70 [LL API] Rename 'outside' testPrefix with 'out_of_src_roots' 2023-01-25 08:04:40 +00:00
Yan Zhulanow 6ff3eb1a8d [LL API] Replace 'isLibrarySession' with an inverted extension function 2023-01-25 08:04:40 +00:00
Yan Zhulanow f6f667c387 [LL API] Adjust services required by LLFirBuiltinsSessionFactory
As 'initialiseVirtualFileFinderServices()' that is run during
test initialization collects transitive dependencies, all of them
must be ready. However, 'KtNotUnderContentRootModuleForTest' has a
built-in dependency provided by 'LLFirBuiltinsSessionFactory'.
2023-01-25 08:04:40 +00:00
Yan Zhulanow f199671c4d [LL API] Make 'KtNotUnderContentRootModuleForTest' depend on built-ins 2023-01-25 08:04:39 +00:00
Yan Zhulanow 9bd1a24c13 [LL API] Add KDoc for 'KtNotUnderContentRootModule#file'. 2023-01-25 08:04:39 +00:00
Yan Zhulanow 562952080e [LL API] Add tests for 'FileBasedKotlinDeclarationProvider' 2023-01-25 08:04:39 +00:00
Yan Zhulanow 6ba3bcb6b2 [LL API] Support several class declarations with the same ClassId 2023-01-25 08:04:38 +00:00
Yan Zhulanow d442531987 [LL API] Use session of a callable container for designation computation
Synthetic callables might be created with a call-site session in which
the containing class might be not found.
2023-01-25 08:04:38 +00:00
Yan Zhulanow 4c22afd1f3 [LL API] Unify cache for 'not-under content root' modules
Before, 'FirSession's for not-under content root modules were stored in
a project-global service, which essentially means that even if one
creates a non-cached 'LLFirResolveSession', 'FirSession's for such
modules will be cached and reused later. Such exact behavior happened in
sealed class inheritor pre-analysis handler.
2023-01-25 08:04:38 +00:00
Yan Zhulanow 7fb6fab517 Minor, remove unused code in 'compilerPluginConfiguration.kt' 2023-01-25 08:04:37 +00:00
Yan Zhulanow 10d6583d87 [LL API] Add fallback for cases when a containing class cannot be found
In some cases, 'LLFirProvider' doesn't return the existing class, e.g.
when the class is inside the 'kotlin.' package but when the
'-Xallow-kotlin-package' flag is not passed.

This fixes the test 'DiagnosisCompilerTestFE10TestdataTestGenerated.
TestsWithStdLib.testInaccessibleInternalClass()'.'
2023-01-25 08:04:37 +00:00
Yan Zhulanow e5cbe79027 [LL API] Encapsulate on-air class provider logic in LLFirProvider
The old 'FirProviderInterceptor' is too invasive, ad-hoc, and only a
few places in the compiler are aware of it.

This fixes the test 'FirOnAirResolveTestGenerated#testOnAirTypesResolve'
which started failing after the designation path collection refactoring.
The newly appeared class existence check started to fail:

```
val declaration = firProvider.getFirClassifierByFqName(classId)
check(declaration != null)
```
2023-01-25 08:04:36 +00:00
Yan Zhulanow f1edbc1a14 [LL API] Add tests for 'out of content root' analysis mode 2023-01-25 08:04:36 +00:00
Yan Zhulanow e4c2902e81 [LL API] Minor, clean up FirLowLevelCompilerBasedTestConfigurator 2023-01-25 08:04:36 +00:00
Yan Zhulanow e9af55fdee [LL API] Add PSI-based declaration provider for files outside roots
Indices are not available in the IDE for files outside content roots,
so a new provider acts as a single-file replacement.

^KTIJ-23937 Fixed
2023-01-25 08:04:36 +00:00
Yan Zhulanow 00a266fd88 [AAPI] Introduce PsiFile in KtNotUnderContentRootModule
Indices are not available in the IDE for files outside content roots,
and the newly introduced 'PsiFile' can be used for searching
classifiers instead.
2023-01-25 08:04:35 +00:00
Yan Zhulanow edacf27810 [LL API] Refactor designation path collection
Unify containing class chain resolution logic between callable
and class targets.
2023-01-25 08:04:35 +00:00
Sergey Bogolepov 7cc2947c57 [K/N] Fix KT-56132
Add a secondary constructor for compatibility purposes
2023-01-25 07:21:19 +00:00
Nikolay Lunyak e187c9272d [FIR] Run checkers for FirErrorResolvedQualifier
`INVISIBLE_REFERENCE` may be reported due to CandidateApplicability via
a ConeDiagnostic, or in a checker. The former leads to
`FirErrorResolvedQualifier`, so the checker is not called.

This makes little sense, because CandidateApplicability may result in
`NO_COMPANION_OBJECT`, which would prevent other more meaningful
diagnostics from being reported (like `API_NOT_AVAILABLE`).

If we run checkers for `FirErrorResolvedQualifier` we may get duplicate
`INVISIBLE_REFERENCE`. The change in the checker prevents it.
2023-01-25 07:14:19 +00:00
Nikolay Lunyak 9be819087a [FIR] KT-54410: Report API_NOT_AVAILABLE for classifiers
Callable symbols with SinceKotlin are filtered out by a
resolution stage, but in K1 classifiers and property accessors
report API_NOT_AVAILABLE. K2 filters out properties with
unavailable accessors, but does nothing for classifiers.
This change fixes it.

^KT-54410 Fixed
2023-01-25 07:14:19 +00:00
Anna Kozlova fd52cc4224 [AA] support qualified type in incomplete code
^ KTIJ-24373
when resolving selector expr of a dot qualified expression,
parent qualified expression is resolved
see `KtFirCallResolver.getContainingDotQualifiedExpressionForSelectorExpression`,
Fir is filled with the data. Then,
during final mapping from Fir -> psi, one need to perform the opposite:
take `selectionExpression` to get the initial KtCallExpression
2023-01-24 20:41:19 +00:00
Alexander.Likhachev 92d39f0b1d [Gradle] Inverse K/JS build services declaration
It's done by hardcoding the task classes unlike to approach with other build services (with adding interfaces like Uses<blah-blah-service>), because the J/S services are subject to rework in a short time. This way earlier task initialization shouldn't cause problems.
#KT-56131 Fixed
2023-01-24 19:15:59 +00:00
Alexander.Likhachev 7638b95a31 [Gradle] Add integration tests for KT-56131 2023-01-24 19:15:58 +00:00
Sebastian Sellmair 6d660451b5 [Gradle] LazyResolvedConfiguration: Ensure lenient resolution of artifacts
^KT-56153 Verification Pending
2023-01-24 18:52:40 +00:00
Jinseong Jeon fc2da32eb6 [references] introduce a dummy reference resolve helper
...because the implementation of reference resolution helper in IDE is
not always available (e.g., Android Lint CLI).
2023-01-24 17:54:00 +01:00
Egor Kulikov a24593da04 [FIR] Make annotations arguments lazy in RawFirBuilder
Process compiler annotations on all top level declarations
2023-01-24 16:02:55 +00:00
Egor Kulikov c5f13c5e7a [FIR] Make annotations arguments lazy in RawFirBuilder
Add more tests with annotations with arguments
2023-01-24 16:02:54 +00:00
Egor Kulikov ce262b0fb8 [FIR] Make annotations arguments lazy in RawFirBuilder
Fix style and typo
2023-01-24 16:02:54 +00:00