Dmitriy Novozhilov
8c524769b1
[NI] Add required FactoryPattern annotation for factory pattern resolve
...
#KT-11265
2020-05-29 09:36:31 +03:00
Dmitriy Novozhilov
865ddac07a
[NI] Add feature for choosing candidate by lambda return type
2020-05-29 09:36:31 +03:00
Dmitry Petrov
a270ee094c
Language feature for new inline class mangling rules (since 1.4)
2020-05-29 00:53:01 +03:00
Mikhail Glukhikh
19f1a3de1a
[FIR2IR] Populate overridden symbols also with public symbol inheritors
2020-05-28 22:19:21 +03:00
Mikhail Glukhikh
85760770a8
[FIR2IR] Initialize built-in symbols at start of conversion
2020-05-28 22:18:20 +03:00
Mikhail Glukhikh
cd24745f1f
[FIR2IR] Add primitive signature composer & use it for external classes
2020-05-28 22:18:13 +03:00
Alexander Udalov
1f1790d60e
Do not rely on descriptors in KParameterImpl.equals/hashCode
...
For the same reason as in the previous commit: descriptors are cached
via weak references in moduleByClassLoader.kt and can be
garbage-collected at any point. So different instances of KParameterImpl
representing the same parameter may store different instances of
descriptors.
2020-05-28 14:17:37 +02:00
Alexander Udalov
55f384cb04
Do not rely on descriptors in KTypeParameterImpl.equals/hashCode
...
Descriptors are cached via weak references in moduleByClassLoader.kt and
can be garbage-collected at any point. So relying on identity of
descriptors in KTypeParameterImpl is dangerous because the same type
parameter can be represented by different descriptors. For example, the
test equalsOnFunctionParameters.kt was flaky before this change because
of this issue, and that could be reproduced by running it a few hundred
times in the same process.
Instead, use the type parameter's container (which is either KClass or
KCallable) and name, in equals/hashCode. KClass and KCallable already
have equals/hashCode independent of descriptors, so this works in case
the descriptor is invalidated.
2020-05-28 14:17:37 +02:00
Mikhail Glukhikh
6b3c390fa7
[FIR2IR] Use IrSymbols directly instead of referencing via SymbolTable
2020-05-28 14:02:54 +03:00
Mikhail Glukhikh
90e6d5bea7
[FIR2IR] Read modality directly from IrFunction without using descriptor
2020-05-28 14:02:54 +03:00
Alexander Udalov
4520e02bae
Support fun interfaces in kotlinx-metadata
...
#KT-37421 Fixed
2020-05-27 23:29:12 +02:00
Jinseong Jeon
18953c4717
FIR: transform resolved arrayOf call inside annotation to FirArrayOfCall
2020-05-27 11:38:34 +03:00
Jinseong Jeon
265d066878
FIR2IR: minor refactor to share IrVarargElement creation.
2020-05-27 11:38:32 +03:00
Jinseong Jeon
ff509bdcd3
FIR2IR: fix inverted types for array/element in arrayOf call.
2020-05-27 11:38:32 +03:00
Krasnoriadtseva Anastasiia
a55dec28b9
[FIR] Fix infinite CFG traverse
2020-05-26 15:30:45 +03:00
Juan Chen
adba0a03a6
[FIR] Create builtin primitive array types for properties
...
If the primary constructor has a vararg parameter, the corresponding
property has an array type. This commit creates the builtin array
types for such properties if the vararg element type is primitive,
e.g., CharArray instead of Array.
2020-05-26 14:08:47 +03:00
Dmitry Petrov
2f79b4c412
Add test for KT-34902
2020-05-26 11:59:05 +03:00
Mikhail Glukhikh
7818baff1e
[FIR2IR] Fix problem with double-generation of local class members
2020-05-26 11:50:33 +03:00
simon.ogorodnik
ac1769a474
[FIR2IR] Support SAM constructors
2020-05-25 21:24:39 +03:00
simon.ogorodnik
dbc564e74e
[FIR2IR] Approximate types for lambdas before passing to serialization
2020-05-25 21:24:39 +03:00
simon.ogorodnik
b92194229c
[FIR] Add fir copy function generation
2020-05-25 21:24:38 +03:00
Victor Petukhov
756326cefe
NI: report error diagnostic about impossible to infer anonymous function's parameter
...
Partially fixed KT-39098
2020-05-25 19:37:27 +03:00
Mikhail Zarechenskiy
2cee82a348
[NI] Resolve receiver of provideDelegate independently
...
#KT-38259 Fixed
2020-05-25 16:06:55 +03:00
Mikhail Glukhikh
7840adde12
[IR] Unbind construction methods of IrConstructorImpl from symbol.descriptor
2020-05-25 15:40:36 +03:00
Mikhail Glukhikh
262548fd5b
[IR] Unbind construction methods of IrFunctionImpl from symbol.descriptor
2020-05-25 15:40:36 +03:00
Mikhail Glukhikh
a7d514a0a9
[IR] Unbind construction methods of IrClassImpl from symbol.descriptor
2020-05-25 15:40:35 +03:00
Victor Petukhov
a84780fefb
NI: Add regression test for KT-38799
...
The issue has been fixed by introducing the modified postponed arguments analysis (KT-37952)
2020-05-25 11:56:08 +03:00
Dmitriy Novozhilov
d49c198a7f
[FIR] Correctly initialize extensions in all sessions
2020-05-24 18:04:47 +03:00
Dmitriy Novozhilov
96da6d35c5
[FIR] Add processor for transforming statuses with plugins
2020-05-24 18:04:47 +03:00
Dmitriy Novozhilov
8d686226c7
[FIR] Introduce FirResolveProcessors
2020-05-24 18:04:47 +03:00
Dmitriy Novozhilov
3de12f9b09
[FIR] Completely remove old extensions service
2020-05-24 18:04:47 +03:00
Dmitriy Novozhilov
9a8d520b85
[FIR] Remove first version of class generation transformer
2020-05-24 18:04:46 +03:00
Dmitriy Novozhilov
3e3387fb69
[FIR] Remove extension status transformation from status resolve
2020-05-24 18:04:46 +03:00
Dmitriy Novozhilov
006232dfb2
[FIR] Fix FirPluginAnnotationsResolveTransformer
2020-05-24 18:04:46 +03:00
Dmitriy Novozhilov
206a646195
[FIR] Use caches for predicate matching
2020-05-24 18:04:45 +03:00
Dmitriy Novozhilov
594a854b4e
[FIR] Reimplement FirExtensionService
...
- Get rid of old FirExtensionsService
- Implement new FirExtensionService
- Remove duplicating code in FirExtensionRegistrar
2020-05-24 18:04:45 +03:00
Dmitriy Novozhilov
846db641be
[FIR] Make ArrayMap iterable
2020-05-24 18:04:45 +03:00
Dmitriy Novozhilov
5c12b3df95
[FIR] Introduce FirPredicateBasedProvider
2020-05-24 18:04:45 +03:00
Dmitriy Novozhilov
0b00015424
[FIR] Deprecate FirExtensionsService
2020-05-24 18:04:44 +03:00
Dmitriy Novozhilov
f3d4fa715e
[FIR] Introduce DeclarationPredicates for matching declarations for extensions
2020-05-24 18:04:44 +03:00
Dmitriy Novozhilov
74353d8bc9
[FIR] Introduce FirAnnotatedDeclaration
2020-05-24 18:04:44 +03:00
Dmitriy Novozhilov
f764baad82
[FIR] Add extension with additional checkers
2020-05-24 18:04:43 +03:00
Dmitriy Novozhilov
04a1027b39
[FIR] Add empty instances of DeclarationCheckers and ExpressionCheckers
2020-05-24 18:04:43 +03:00
Dmitriy Novozhilov
c0a57ae55c
[FIR] Move expression checkers from package call to expression
2020-05-24 18:04:43 +03:00
Dmitriy Novozhilov
6d6ed1e755
[FIR] Create session component with registered checkers
2020-05-24 18:04:43 +03:00
Victor Petukhov
379c6944a2
NI: extract diagnostics from partially resolved call instead of separately handling it including running all checks
...
^KT-37630 Fixed
^KT-35494 Fixed
2020-05-22 22:13:53 +03:00
Mikhail Likholetov
80cd26c9df
[FIR] Support several annotation class diagnostics
2020-05-21 18:01:36 +03:00
Pavel Kirpichenkov
0b33e9430b
[NI] Report unstable smart cast directly instead of using SmartCastManager
...
Fix compilation errors, revealed by this fix.
SmartCastManager is unnecessary for error reporting, intermediate diagnostics from the NI contain all required infromation.
When SmartCastManager is used it leads to missing unstable smart casts in case of expressions with captured types.
This happens, because data flow info is recorded for original expression without captured types, which is used as a key.
DataFlowValues created from receivers with captured types can't be used to retrieve that info.
^KT-39010 Fixed
2020-05-21 17:09:10 +03:00
Jinseong Jeon
7a947e8008
FIR: fix default constructor visibility for enum entry.
2020-05-21 08:40:03 +03:00
Jinseong Jeon
0d3301b695
FIR: resolve local class in anonymous initializer.
2020-05-21 08:36:49 +03:00