Commit Graph

10559 Commits

Author SHA1 Message Date
Anastasiya Shadrina b44da21f59 [FE] Handle context receivers in NewAbstractResolvedCall 2021-12-02 20:24:23 +03:00
Anastasiya Shadrina 1357f28be6 [FE] Create separate class for context receiver value 2021-12-02 20:24:21 +03:00
Anastasiya Shadrina b3591e77be [FE] Prohibit explicit @ContextFunctionTypeParams usage 2021-12-02 20:24:20 +03:00
Anastasiya Shadrina 910660a083 [FE] Add language feature for context receivers 2021-12-02 20:24:16 +03:00
Anastasiya Shadrina 7fce2691e2 [FE] Allow lambda argument cast to contextual functional type 2021-12-02 20:24:15 +03:00
Anastasiya Shadrina d8faa9686d [Tests] Test samples from KEEP 2021-12-02 20:24:14 +03:00
Anastasiya Shadrina 16b976f0e0 [FE] Support functional literals with context receivers 2021-12-02 20:24:11 +03:00
Anastasiya Shadrina e3f987459c [PSI, FE] Support functional types 2021-12-02 20:24:11 +03:00
Anastasiya Shadrina e53cee77a3 [FE] Support multiple candidates for extension receiver 2021-12-02 20:24:10 +03:00
Anastasiya Shadrina af78ec7371 [PSI, FE] Review fixes 2021-12-02 20:24:04 +03:00
Anastasiya Shadrina 7fd5034cd6 [FE] Minor: fix typo 2021-12-02 20:24:01 +03:00
Anastasiya Shadrina 814777ba8c [FE] Report ambiguity in all possible cases 2021-12-02 20:23:58 +03:00
Anastasiya Shadrina 37495bcba0 [FE] Change resolution scheme 2021-12-02 20:23:57 +03:00
Anastasiya Shadrina 1a0aab4a44 [FE] Inline classes cannot have context receivers 2021-12-02 20:23:52 +03:00
Anastasiya Shadrina d704862582 [FE] Prohibit property initializers with context receivers 2021-12-02 20:23:51 +03:00
Anastasiya Shadrina 766e6bca75 [PSI2IR] Generate value arguments for context receivers in getter/setter 2021-12-02 20:23:49 +03:00
Anastasiya Shadrina 837f3b98fa [FE] Allow to infer generic property type from a context receiver type 2021-12-02 20:23:46 +03:00
Anastasiya Shadrina 1bcaeabd84 [PSI, FE, PSI2IR] Use labels for referencing specific receiver 2021-12-02 20:23:40 +03:00
Anastasiya Shadrina aaabf5e1ca [PSI2IR] Support context receivers on classes 2021-12-02 20:23:38 +03:00
Anastasiya Shadrina f4ddf66ac4 [FE] Support context receivers on classes 2021-12-02 20:23:25 +03:00
Anastasiya Shadrina c34fe8d547 [FE] Implement temporary resolution algorithm 2021-12-02 20:23:24 +03:00
Anastasiya Shadrina d923c95671 [FE] Add context receivers to scope 2021-12-02 20:23:22 +03:00
Anastasiya Shadrina a39fbd3822 [FE] Add getContextReceivers to CallableDescriptor interface 2021-12-02 20:23:17 +03:00
Anastasiya Shadrina 7de8380ddf [FE] Add context receivers getter to KtCallableDeclaration interface 2021-12-02 20:23:16 +03:00
Alexander Udalov be6409f0af Fix property lookup in data class component generation
#KT-49812 Fixed
 #KT-49936 Fixed
2021-12-02 01:43:39 +01:00
Kristoffer Andersen 39fee12f32 [IR/FE] BindingContext: Change USED_AS_EXPRESSION to Basic Slice
This commit changes the slice implementation used for
`USED_AS_EXPRESSION`.

Here is the problem as identified and mitigated by this commit:

Slices are key-value maps. They are not total over the domain of keys,
so "looking up" a key not in the slice is a valid operation, yielding
`null`.

A binding context is a collection of slices.

Binding contexts can be stacked as composite binding contexts to
e.g. facilitate scoped analyses. Looking up a key proceeds down the
stack, yielding the first non-null value, or `null` if no slice in the
stack of binding contexts contain that key.

A slice made by `createSimpleSetSlice` models a "set" of keys that can
be enlarged by inclusion: adding `(k, true)` to the slice indicates
`k` belongs to the set. `(k, false)` indicates non-membership.

However, looking up a key _not in_ the slice yields _false_, rather
than null.

Hence, simple set slices do not compose in composite binding traces.

This was encountered porting the expression evaluator to the IR
backend. PSI2IR uses `USED_AS_EXPRESSION` to generate expression body
functions properly. The frontend analysis of the fragment is layered
ontop of the binding context from the editor's analysis of the
underlying project being debugged, which contains speficially the
analysis results of inline functions called from the fragment.
2021-12-01 00:52:46 +01:00
Mikhail Glukhikh 7fe08d5a38 FE: fix some error messages (must have only -> must only have)
#KT-49609 Fixed
2021-11-28 11:32:10 +03:00
Mikhail Glukhikh c15c7f7dc8 FE: fix visibility check in LazyImportScope #KT-23727 Fixed 2021-11-28 11:32:07 +03:00
Mikhail Glukhikh 4550999288 FE: use proper version in version requirement error message
#KT-48690 Fixed
2021-11-28 11:31:51 +03:00
Mikhail Glukhikh 2f1d415e4d FE: report DECLARATION_CANT_BE_INLINED at 'inline' modifier
#KT-44022 Fixed
2021-11-28 11:31:51 +03:00
Vladimir Dolzhenko 0495ba2495 avoid unnecessary collection copying 2021-11-25 02:22:44 +03:00
Vladimir Dolzhenko 42837415f0 Use nameFilter if all descriptors have not calculated
#KT-49821 Fixed
2021-11-25 02:22:40 +03:00
Victor Petukhov d48557ed53 [FE 1.0] Fix containing KtFile check in NewResolutionOldInference.kt 2021-11-22 17:01:49 +03:00
Victor Petukhov 31668ed40d [FE 1.0] Fix containing KtFile check in PSICallResolver.kt 2021-11-22 14:00:13 +03:00
Victor Petukhov 42805db989 [FE 1.0] Take into account import aliases during hidden member resolution 2021-11-22 10:43:43 +03:00
Alexander Udalov 59c5dddc88 Remove unused PrecomputedSuppressCache 2021-11-18 23:17:34 +01:00
Dmitriy Novozhilov da02d25278 [FE 1.0] Implement deprecation warning for private constructors of sealed classes
^KT-44866
^KT-49729 Fixed
2021-11-18 13:54:05 +03:00
Dmitriy Novozhilov 93378b1a04 [FE 1.0] Resolve private constructors of sealed classes same as for regular classes
^KT-44866
^KT-49729
2021-11-18 13:54:05 +03:00
Dmitriy Novozhilov 62b774b2e3 [FE 1.0] Properly report INTEGER_OPERATOR_RESOLVE_WILL_CHANGE
^KT-38895
2021-11-16 13:29:12 +03:00
Igor Yakovlev ee7f4c7278 [WASM] Implementation typeOf support 2021-11-15 19:53:48 +03:00
zhelenskiy c1dc1f7e33 Diagnostics renamed
Signed-off-by: zhelenskiy <zhelenskiy2000@yandex.ru>
2021-11-13 12:38:45 +01:00
Tianyu Geng f217bb94de Use more consistent names for inheritors of BooleanIsMissing 2021-11-04 23:04:35 +01:00
Tianyu Geng 7de0937031 FIR IDE: get unstable smartcast from FE1.0-based analysis API
Note that the current FE1.0 implementation still has some limitations

1. only references used as receiver are being considered for smartcast.
2. Somehow the smartcast information is not retained if the for generic
typed receivers. See multiSmartcastAsReceiver_stable.descriptors.txt
2021-11-04 16:00:37 +01:00
Victor Petukhov d1acb09add Report unsupported on using underscored type argument if the corresponding feature is disabled 2021-11-01 13:03:40 +03:00
Victor Petukhov 5508d40371 Put using underscored type arguments under a feature 2021-11-01 12:25:45 +03:00
Victor Petukhov 1073adbbf0 Report unsupported errors on annotations on underscored type arguments 2021-11-01 12:25:14 +03:00
Victor Petukhov 248c9550cd Support type annotations resolution on an underscored type argument 2021-11-01 12:25:10 +03:00
Victor Petukhov b69fb6779f Basic support of partially specified type arguments though a new underscore operator for type arguments
^KT-13394
2021-11-01 12:25:07 +03:00
Dmitriy Novozhilov 275a8a7a36 [FE 1.0] Fix message for UNINITIALIZED_ENUM_COMPANION_WARNING\
^KT-49110
2021-10-30 13:43:12 +03:00
Dmitriy Novozhilov 2956b8b307 [FE 1.0] Fix commit message of UNNECESSARY_SAFE_CALL warning
^KT-46860
2021-10-30 13:41:24 +03:00