Commit Graph

989 Commits

Author SHA1 Message Date
Ilya Kirillov 78c63c082b [Analysis API] introduce API to work with signatures substitution 2022-06-22 09:31:39 +02:00
Ilya Kirillov 2db73af75e [analysis api] make KtCallableSymbol to be sealed class 2022-06-22 09:31:39 +02:00
Ilya Kirillov 2e35e513ee [analysis api fir] get rid of read only FirDeclaration -> KtSymbol used for completion 2022-06-22 09:31:38 +02:00
Ilya Kirillov 3033a91567 [analysis api] introduce KtTypeScope which will contain callable signatures 2022-06-22 09:31:38 +02:00
Ilya Kirillov 3ee0410c77 [analysis api fir, refactoring] remove unreachable when branch 2022-06-22 09:31:38 +02:00
Ilya Kirillov aeca112c5b [analysis api fir, refactoring] move scope utils out of KtFirDelegatingScope.kt 2022-06-22 09:31:37 +02:00
Ilya Kirillov 82a330cf84 [analysis api] move KtScopeNameFilter to separate file 2022-06-22 09:31:37 +02:00
Ilya Kirillov a10e55cd6a [analysis api] remove KtClassKind.ENUM_ENTRY as enum entry is not a classifier 2022-06-22 09:31:36 +02:00
Ilya Kirillov a16a01bf37 [analysis api] fix Analysis API contracts violation 2022-06-22 09:31:36 +02:00
Ilya Kirillov c2558521cf [analysis api fir] make KtFirBackingFieldSymbol.hashCode to be consistent with equals 2022-06-22 09:31:35 +02:00
Ilya Kirillov 0da66cc52f [Low Level API FIR] fix invalid traverse of supertypes list
the supertypes list should not be traversed without proper locking,
otherwise some transformer may transform it concurrently

In case of looking for a declaration by class id it just should not be traversed

^KTIJ-21791
2022-06-21 18:16:27 +00:00
Jaebaek Seo 6b3c10fa9c FIR usage: resolve KtFirSimpleNameReference using getter/setter
`fun getResolvedToPsi(analysisSession: KtAnalysisSession): Collection<PsiElement>`
of `KtFirReference` resolves the target of the reference. When the
target of reference to a property is a getter or setter, we have to
check the getter/setter if the target for the property does not
exist. This commit adds the fallback logic i.e., resolving the
getter/setter of the property in
`fun getResolvedToPsi(analysisSession: KtAnalysisSession): Collection<PsiElement>`
of `KtFirSimpleNameReference`.
2022-06-21 17:25:19 +02:00
Dmitriy Novozhilov eb453dc96b [FIR] Expand typealiases in OverloadConflictResolver
^KT-52825 Fixed
2022-06-21 14:10:38 +00:00
Dmitriy Novozhilov ed8187109a [FIR] Fix forgotten level changes during building CFG for !! 2022-06-21 14:10:37 +00:00
Jinseong Jeon 9e8524d21a AA FIR: refactor KtFirType hierarchy 2022-06-21 11:36:02 +02:00
Jinseong Jeon 87ba8525cf AA: allow directory as source roots 2022-06-21 11:34:09 +02:00
Jinseong Jeon 4af2fcd633 AA: handle lib directory as a binary root 2022-06-21 11:34:09 +02:00
Jinseong Jeon 8c3df04c8e AA: null check containing file for PsiElement 2022-06-21 11:34:09 +02:00
Jinseong Jeon 814920b344 AA: restore JavaRoot from binary roots in JDK module 2022-06-21 11:34:09 +02:00
Jinseong Jeon 13c7fde071 AA: avoid reflective service registrations 2022-06-21 11:34:09 +02:00
Jinseong Jeon 38c3fbc0d1 AA: remove a redundant service registration 2022-06-21 11:34:09 +02:00
Ilya Kirillov ba797fa1b4 [stubs] fix cls stubs for declarations with context receivers
^KTIJ-21243 fixed
2022-06-20 19:10:36 +02:00
Ilya Kirillov a47880a98b [stubs] add test which checks consistency between cls and decompiled stubs 2022-06-20 19:09:44 +02:00
Jinseong Jeon b18999be82 FIR/LC: filter out scripts for facade creation
^KTIJ-22016 Fixed
2022-06-20 17:38:50 +02:00
Mikhail Glukhikh 065e852199 FIR: support more precise diagnostics about parameter names
#KT-52762 Fixed
2022-06-20 11:28:55 +00:00
Mikhail Glukhikh 9fbafc3eb9 Add test for KT-52762 2022-06-20 11:28:55 +00:00
Victor Petukhov eb19d39cbf [FE 1.0] Build captured type's supertypes in an alternative way: use own projection type as a first supertype, then supertypes from the corresponding type parameter's upper bounds
The original case provoked forking a constraint system which isn't supported in K1 (K2 only). If the captured type is recursive, then type parameter's upper bounds may break subtyping due to substitution the current captured type again, into a recursive type parameter.

Note that we already have special logic for recursive captured types. See `isTypeVariableAgainstStarProjectionForSelfType`.

^KT-52782 Fixed
2022-06-18 14:04:40 +02:00
Ivan Kochurkin 9f69ea1786 [FIR] Add TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM diagnostics, ^KT-52327 Fixed 2022-06-17 23:26:16 +00:00
Ivan Kochurkin 34b5ce21a1 [FIR] Fix WRONG_ANNOTATION_TARGET for annotation for block, ^KT-52175 Fixed 2022-06-17 23:26:15 +00:00
Jinseong Jeon abdc2cf85e AA: populate SingleJavaFileRootsIndex properly 2022-06-16 22:14:18 +02:00
Jinseong Jeon 9ba6cf47ea AA: use partition to group directory/jar library roots 2022-06-16 22:14:18 +02:00
pyos c2ae74c7cd FIR CFG: when unifying flows, group statements by assignment
Consider a function `run2` that has 2 lambda arguments called in place.
We don't know the order in which they're called, so here:

    var x: Any? = something
    run2(
      { x = null },
      { x as String },
    )
    // <--

it's not correct to simply `&&` the statements together, as that would
produce `x is Nothing? && x is String && x is Any?`. Instead, statements
should be grouped by assignment first, and different groups are `||`-ed.
This means in the above example we now get `x is Nothing? || (x is Any?
&& x is String)` == `x is String?`.
2022-06-15 20:05:50 +00:00
pyos 25f66b4e0e FIR CFG: mark variables touched by not-in-place lambdas in all scopes 2022-06-15 20:05:49 +00:00
pyos 755c54553a FIR CFG: add more KT-44512 related tests 2022-06-15 20:05:48 +00:00
Mikhail Glukhikh 5ca730e38c Add more tests for KT-49200
- exotic situation 1 field + 2 entries
- named import case
- exotic situation 2 fields + 1 entry
2022-06-15 17:20:00 +00:00
Mikhail Glukhikh 088f472117 Add test for KT-49200 deprecation 2022-06-15 17:19:58 +00:00
Dmitriy Novozhilov 12ce433bc2 [FE] Don't report cycle on annotation parameters if argument is vararg or array
^KT-52742 Fixed
^KT-47932
2022-06-15 09:55:27 +00:00
Roman Golyshev 581ae5fcb7 [FIR IDE] Add a special type of KtCall for generic type qualifiers
^KTIJ-21672 Fixed
2022-06-14 15:00:13 +00:00
Roman Golyshev fe06070d23 [FIR IDE] Make AbstractResolveCallTest.kt more strict 2022-06-14 15:00:13 +00:00
Roman Golyshev 4d6b424280 [FIR IDE] Properly handle generic types qualifiers
In code like `foo.Bar<Bazz>`, `Bar<Bazz>` is considered to be
`KtCallExpression` from the PSI point

^KT-52779 Fixed
2022-06-14 15:00:12 +00:00
pyos 9968fa252a FIR: fork flow on function entry, restore receivers on exit
^KT-52680 Fixed
2022-06-10 09:42:02 +03:00
Denis.Zharkov 9caa60d389 Revert "KT-35811: Type parameter angle brackets followed by equal sign are parsed incorrectly if whitespace is missing"
This reverts commit ba5c85d6

^KT-52684 Related
2022-06-09 15:44:36 +00:00
Denis.Zharkov 67f9025f9e Add test data for parsing of complicated <..> and <..>= combinations
^KT-52684 Related
^KT-8263 Related
2022-06-09 15:44:35 +00:00
Mikhail Glukhikh a31d383b4d Analysis API: add implementation of ReadWriteAccessChecker via descriptors 2022-06-09 11:05:36 +00:00
Jinseong Jeon 5c147c1ded AA: fail-safe binary root lookup 2022-06-09 10:35:17 +02:00
Jinseong Jeon c1b2469e51 AA: register CoreJavaFileManager
in a similar way
KotlinCoreEnvironment.ProjectEnvironment.registerJavaPsiFacade does
2022-06-09 10:35:17 +02:00
Jinseong Jeon af053fd8f3 AA: fail-safe JvmRoot lookup 2022-06-09 10:35:17 +02:00
Jinseong Jeon aef3df0336 AA: introduce AA session and builder 2022-06-09 10:35:16 +02:00
Jinseong Jeon 5585d84808 AA: make utils in StandaloneProjectFactory more general 2022-06-09 10:35:16 +02:00
Jinseong Jeon 72bf702309 AA: utilize file lookup utils (to reuse in facade) 2022-06-09 10:35:16 +02:00