Commit Graph

980 Commits

Author SHA1 Message Date
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
Jinseong Jeon 4cfefbd921 AA: introduce ProjectStructureProvider builder 2022-06-09 10:35:16 +02:00
Jinseong Jeon 8528f6244d AA: introduce KtModule builders 2022-06-09 10:35:15 +02:00
Jinseong Jeon d592dab4b6 AA: rename util file to match module/pcakge name 2022-06-09 10:35:15 +02:00
Jinseong Jeon 355fd48782 AA: remove test prefix at non-test module 2022-06-09 10:35:15 +02:00
Mikhail Zarechenskiy 372879b8e7 [FE 1.0] Don't fail with exception on unresolved type with type argument
^KT-50223 Fixed
2022-06-09 08:03:35 +00:00
Roman Golyshev 8fca9f41eb [FIR IDE] Correctly check declarations' modalities in SamResolver
Modality might be null before the declaration itself is resolved to
`STATUS`

^KT-52667 Fixed
2022-06-07 21:14:24 +00:00
Dmitriy Novozhilov a85d25d7a6 [FIR] Rename UnderAnnotatedWith predicate to AncestorAnnotatedWith 2022-06-07 14:12:26 +00:00
Dmitriy Novozhilov fb57e1ecd5 [FIR] Add two kinds of Java origin to distinguish source and library declarations 2022-06-07 14:12:23 +00:00
Dmitriy Novozhilov 23c69f8d17 [FIR] Add to new types of annotation predicates
- `ParentAnnotatedWith` matches declarations, which parent is annotated
- `HasAnnotatedWith` matches declarations, which have at least one
     direct child with annotation

Also, `DeclarationPredicate.Any` is removed, because there is no
  intention to support lookup for all declarations in module

^KT-52486 Fixed
2022-06-07 14:12:22 +00:00