Commit Graph

45 Commits

Author SHA1 Message Date
Ilya Kirillov c8e3103af9 [FIR] do not create FirParameter for catch parameter
use FirProperty instead

^KT-55034
2022-11-22 18:25:30 +01:00
Dmitriy Novozhilov 0e84bf2053 [FIR] Don't report ARGUMENT_TYPE_MISMATCH on error types 2022-11-22 15:46:19 +00:00
Anna Kozlova 3fdd0aacd3 [compiler] preserve fir receiver in tree
when selector is invalid expression,
ensure that fir tree still contains receiver as well as selector

KTIJ-23578
2022-11-22 10:46:59 +00:00
Ilya Kirillov b6481ed891 [FIR] do not use FirValueParameter for function type parameter
As it is a different abstraction, introduced FirFunctionTypeParameter instead

Also, fix syntax checkers for function type parameter

^KT-55035 fixed
2022-11-21 16:17:51 +00:00
Ilya Kirillov 8dab560d6e [LL FIR] fix status resolution of static enum members
Before, BODY_RESOLVE phase were used for them but status may be unresolved.
This caused CCE on accessing resolved status for such static enum members.

Now, those declarations are created with the status of owning enum as the status is taken from that class.
2022-11-16 19:44:18 +00:00
Nikolay Lunyak 89f8821d0a [FIR] KT-53371, KT-53519: Fix annotations arguments mapping
See: compiler/testData/asJava/lightClasses/
AnnotatedParameterInInnerClassConstructor.kt

The muted tests don't work with the (KT-53371, KT-53519)-related
changes. During this test happens an attempt to access unresolved
annotations via CustomAnnotationTypeAttribute.
Discussion: KTIJ-23547
2022-11-14 22:40:41 +02:00
Anna Kozlova 9f470e2a4d [LL API] return FirErrorProperty for top level destructuring declaration
KTIJ-23552
2022-11-11 17:39:54 +01:00
Anna Kozlova 3590c4ea35 [Analysis API FIR] support generated temp properties
KTIJ-23492 (array index expression), KTIJ-23138 (inc/dec desugaring)
2022-11-11 17:39:53 +01:00
Yan Zhulanow b770e5d02f [LL API] Get designation correctly for enum value members (KTIJ-23458)
Although being a 'KtClass' in the PSI, 'KtEnumEntry' is a callable in
Analysis API, and its direct members should also be treated as local.
2022-11-11 11:28:38 +00:00
Yan Zhulanow 61ce9fe524 [FE] Fix source element duplication in object literal expressions 2022-11-11 11:28:35 +00:00
Kristoffer Andersen fcabc60471 [FIR] Insert fake source for FIR for array access temporaries 2022-10-05 16:22:22 +02:00
Ilya Kirillov 49f2f85927 [Low Level FIR] fix exception when creating symbol by invalid code 2022-10-04 12:56:07 +00:00
Roman Golyshev 16cb3064c8 [FIR] Resolve value class constructor to TYPES before using its params
Right now it is the easiest way to ensure that all the parameters are
resolved. After KT-53573 is fixed, we might use `resolvedReturnTypeRef`
on each parameter individually instead

Also, add `toString` implementation to `ValueClassRepresentation`
classes, so they are properly rendered in testdata

^KTIJ-22630 Fixed
2022-08-30 13:49:40 +00:00
Vsevolod Tolstopyatov 22e26d0756 Move EnumEntries LVS to 1.9
* Also cleanup tests to avoid using obsolete WITH_RUNTIME
2022-08-12 09:35:32 +00:00
Mikhail Glukhikh 7333589663 K1/K2: add Enum.entries unconditionally and filter them out in tower
Before this commit, we added Enum.entries only in case when
LanguageFeature.EnumEntries was ON (with an exception in K1/Java case).
In this commit we add Enum.entries unconditionally, and in case
the language feature is OFF we filter them out during tower resolve.
2022-08-12 09:35:27 +00:00
Ilya Kirillov e7e9c24473 [LL FIR] update lazy resolve testdata after changes in phases 2022-08-10 22:49:18 +02:00
Ilya Kirillov 72da40f97c [LL FIR] update phase of type parameters on lazy resolve 2022-08-10 22:49:14 +02:00
Ilya Kirillov 0f6f901179 [LL FIR] render type parameters resolve phase in tests 2022-08-10 22:49:13 +02:00
Ilya Kirillov cd063d0cd0 [LL FIR] update phase of value parameters on lazy resolve
Previously, such phases may not be properly set which could cause additional lazy resolve
2022-08-10 22:49:13 +02:00
Mikhail Glukhikh 7ce5100946 FirRenderer: slightly change/refactor declaration rendering 2022-07-14 09:38:45 +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
Roman Golyshev 166c771e1b [FIR IDE] Ensure resolve to CONTRACTS phase in ReturnTypeCalculator
If we want to analyse some function's call, we need to know about its
contracts, otherwise resolving the following code would be broken.
Computing return type of function is a prerequisite to using it in any
sensible way, so it's the best place to resolve it to CONTRACTS

KT-50733
2022-06-06 09:14:37 +00:00
Roman Golyshev 01ce499bb2 [FIR] Unify some special names to make code more uniform 2022-06-01 00:11:17 +04:00
Dmitriy Novozhilov 9d4d55b3ce [LL API] Extract expect actual matching into separate phase 2022-05-20 13:33:04 +00:00
Denis.Zharkov 21b86123e8 FIR: Adjust analysis test data after changes in how we load Java types
Especially, it's about types based on type parameters
2022-05-19 16:54:05 +00:00
Ivan Kylchik 51ccc32a3f Update test data after introducing IntrinsicConstEvaluation annotation 2022-05-18 21:19:57 +03:00
Jinseong Jeon af21b67eb5 LL: cache reverse converted constant expression 2022-04-22 18:55:31 +02:00
Jinseong Jeon 7e8c893ce1 LL: showcase converted constants in raw FIR 2022-04-22 18:55:30 +02:00
Dmitriy Novozhilov ade2307345 [FIR] Fix exponential analysis of augmented array access calls
^KT-50861 Fixed
2022-03-11 15:36:05 +03:00
Mikhail Glukhikh f073e86c93 Update FIR Analysis API test data 2022-03-10 20:42:42 +00:00
Dmitriy Novozhilov 52b72a7dac [FIR] Implement Int -> Long conversions for literals and operators over them
^KT-38895
^KT-50996 Fixed
^KT-51000 Fixed
^KT-51003 Fixed
^KT-51018 Fixed
2022-02-07 13:36:36 +03:00
Ilya Kirillov c7729689c4 LL API: always create FirFile with lazy bodies 2022-01-21 16:46:38 +01:00
Ilya Kirillov 75ae37fcbf LL API: remove unused resolve api 2022-01-21 16:46:36 +01:00
Ilya Kirillov 7a0d1ce0d1 LL API: consider enum entries as structure elements 2022-01-21 16:46:30 +01:00
Ilya Kirillov 3b943706d8 Analysis API: fix call resolve inside plusAssign target
^KT-50864 fixed
2022-01-20 23:26:28 +03:00
Ilya Kirillov db1dedc9fe LL API: add source element kind rendering to the GetOrBuildFirTest 2022-01-20 23:26:28 +03:00
Tianyu Geng bc95733818 FIR LL API: resolve PSI elements to more specific FIR element
Compound access and implicit delegated constructor are mapped to FIR
elements that are way too broad.
2021-12-06 12:40:41 +01:00
Ivan Kylchik c7435ba760 Replace all occurrences of WITH_RUNTIME with WITH_STDLIB
We are going to deprecate `WITH_RUNTIME` directive. The main reason
behind this change is that `WITH_STDLIB` directive better describes
its meaning, specifically it will add kotlin stdlib to test's classpath.
2021-11-17 15:26:38 +03:00
Jinseong Jeon cf886c5975 FIR LL: fix searching logic for enum entry
KtEnumEntry, a subtype of KtClass, has been handled by
findNonLocalClass. Since KtEnumEntry doesn't have class id, that util
always throws an error while retrieving class id.

Instead, we should use containing class (i.e., enum class) id.
Also, once the enum class is resolved, we should search for matching
enum entry inside the enum class.
2021-11-12 12:11:06 +03:00
Jinseong Jeon 140b8d6ddf FIR LL: remove redundant test data for library module resolve
There are in plugins/kotlin/fir-low-level-api-ide-impl in intellij repo.
2021-11-12 12:11:05 +03:00
Roman Golyshev 3148913e60 Fix test data
It is a follow-up commit for 9b3add0130,
where `CorrespondingProperty` property was added
2021-10-25 21:15:37 +03:00
Roman Golyshev 9b9c51bc8d [FIR] Fix dispatch receivers on inner classes' constructors
1. Inner class constructor should have its outer class as a dispatch
receiver, since it is necessary for the call. Before it was null
2. Substituted inner class constructor should have its original dispatch
 receiver type with the proper substitution. Before it was set to the
 class itself (since the class was usually passed as a new dispatch
 receiver)

Also, modify FIR renderer, so it properly renders the dispatch receiver
of the constructors
2021-10-05 12:17:08 +00:00
Ivan Kochurkin 75b40e4b75 [FIR] Add INVISIBLE_SETTER 2021-10-03 17:10:06 +03:00
Tianyu Geng 765cad8448 FIR checker: substitute type parameters in dispatch receiver type
Consider the following code:

```
fun test(a: List<String>) {
  a.first()
}
```

The dispatch receiver type of `first` in this case is `List<T>` before
this change. After this change, it's `List<String>`.

In addition, this change also replace the dispatch receiver type with
the more specific type if available. For example, consider the following

```
class MyList: ArrayList<String>()

fun test(a: MyList) {
  a.get(0)
}
```
The dispatch receiver type of `get` is `MyList`, instead of
`ArrayList<String>`. That is, a fake override is created in this case.
2021-09-17 01:59:06 +03:00
Ilya Kirillov 989f3248e4 FIR IDE: move low level api testdata sources to the analysis directory 2021-09-15 11:32:28 +02:00