Victor Petukhov
73dec25eb1
NI: intersect DFI types before capturing
...
^KT-37887 Fixed
2020-05-14 19:54:59 +03:00
Victor Petukhov
11d05c1abd
NI: propagate isNullabilityConstraint flag into constraint injector and inherit it
...
^KT-37510 Fixed
2020-05-12 16:15:07 +03:00
Pavel Kirpichenkov
003ba1c8f5
[NI] CST: add preemptive recursion detection
...
For single super type constructor create star projection argument when types for that argument are equal to the original types.
Captured star projections are replaced with their corresponding supertypes during this check.
Skip check for `in` parameters, for which recursive cst calculation does not happen.
Adjust constant in fallback recursion condition.
^KT-38544 Fixed
2020-05-12 11:13:43 +03:00
Victor Petukhov
b49dc46e6c
NI: improve reporting errors about mismatch number of anonymous function parameters
2020-05-09 12:34:08 +03:00
Victor Petukhov
585e98a835
NI: support inferring lambda receiver type by explicit receiver of anonymous function (which is another postponed argument)
2020-05-09 12:34:06 +03:00
Ilya Chernikov
7e3dfb245b
Avoid skipping lambda argument processing in case of explicit type param
...
#KT-38691 fixed
2020-05-07 18:39:57 +02:00
Victor Petukhov
260683c20e
NI: Improve postponed arguments analysis
...
Introduce seven stages:
1) Analyze postponed arguments with fixed parameter types
2) Collect parameter types from constraints and lambda parameters' declaration
3) Fix not postponed variables for parameter types of all postponed arguments
4) Create atoms with revised expected types if needed
5) Analyze the first ready postponed argument and rerun stages if it has been analyzed
6) Force fixation remaining type variables: fix if possible or report not enough information
7) Force analysis remaining not analyzed postponed arguments and rerun stages if there are
^KT-37952 Fixed
^KT-32156 Fixed
^KT-37249 Fixed
^KT-37341 Fixed
2020-05-07 11:42:00 +03:00
Mikhail Zarechenskiy
fa50d66afe
[NI] Fix SAM conversion for projected-out members
...
#KT-25290 Fixed
2020-04-29 14:15:25 +03:00
Ilya Chernikov
45ac81c585
Do not check type depth for constrains generated on subtyping
...
#KT-38143 fixed
2020-04-29 11:12:21 +02:00
Pavel Kirpichenkov
36a57973b5
[NI] CST: remove max depth offset from recursion detection
...
Recursive type with several recursive anscestors can create a number of identical
common supertype calculations, growing exponentially on every step of recursion.
Previously the number of calculations was limited by D + 3, where D is a type depth.
Since the limit is dynamic, it seems that extra +3 offset can be dropped thus
reducing the number of recursions. The proper solution is to detect such a recursion
and fold recursive type preemtively, but for now this may improve performance in some use cases.
^KT-38544 In progress
2020-04-28 12:53:09 +03:00
Dmitriy Dolovov
90e888a1b6
Discriminate overloading expect MemberDescriptors
...
Issue #KT-38298
2020-04-28 13:16:18 +07:00
Mikhail Zarechenskiy
ac642cf175
Support suspend conversion in callable reference adaptation
...
#KT-15917 In Progress
2020-04-22 16:10:45 +03:00
Mikhail Zarechenskiy
537a59d6ca
Introduce basic suspend conversion in FE
...
#KT-15917 In Progress
2020-04-22 16:10:44 +03:00
Dmitriy Novozhilov
ba272101f2
Check for ESReceiver for contracts with is check
2020-04-15 11:12:56 +03:00
Mikhail Zarechenskiy
54497d11ac
Move SyntheticMemberDescriptor.kt to core
...
This is a first part of unification SAM constructors for all platforms
2020-04-15 02:06:32 +03:00
Ilya Chernikov
acc5633811
[NI] Fix inference of lambda with receiver when wrapped...
...
in when/if or another lambda.
#KT-37419 fixed
2020-04-13 14:50:49 +02:00
Mikhail Zarechenskiy
a7b959b88b
Fix delegated property resolve with intermediate ID provideDelegate
...
#KT-37406 Fixed
2020-04-09 13:34:29 +03:00
Dmitry Petrov
d1c5a42124
KT-36024 Generate adapted callable references as lambdas
...
Make sure both JVM and JVM_IR use the same information to determine
whether a callable reference requires argument adaptation.
2020-04-08 19:02:33 +02:00
Victor Petukhov
164f25937f
NI: take into account an extension function annotation during CST calculation
2020-04-02 15:28:35 +03:00
Victor Petukhov
f8d72f5dd9
NI: improve lambdas completion – look at all postponed arguments during resolution lambdas by additional conditions
...
^KT-36819 Fixed
^KT-36069 Fixed
2020-04-02 15:28:11 +03:00
Pavel Kirpichenkov
a416fde814
[NI] Move abstract class instantiation check to call checkers
...
This way the check works for callable reference arguments.
Also candidate applicability during resolution does not change compared to the old inference.
^KT-37530 Fixed
2020-03-31 12:04:01 +03:00
Alexander Udalov
92534eadaa
Remove dependency of 'resolution' on 'deserialization'
...
Replace it with a dependency on 'descriptors'.
Move the existing marker interface ContractProvider to 'descriptors',
and create a new marker interface DeserializedDescriptor.
2020-03-28 21:30:07 +01:00
Alexander Udalov
7bb77e5672
Move JS binary version utilities to 'js.config'
...
This allows to replace dependency of 'util' on 'deserialization' with
dependency on 'descriptors'.
2020-03-28 21:30:06 +01:00
Pavel Kirpichenkov
e39b69839b
[NI] Make constraint check for type variables with complex dependency
...
Additional check for trivial constraints is needed to make lambda
analysis before outer variable fixation to Nothing(?)
^KT-37627 Fixed
2020-03-26 17:06:37 +03:00
Pavel Kirpichenkov
568b21e31c
minor: refactor cast into context operation
2020-03-26 17:06:37 +03:00
Pavel Kirpichenkov
adf3351a8b
[NI] Don't skip constraints with projections during variable fixation
...
Those constraints are only restored for variable fixation stage because of the
influence on pefrormance.
^KT-37650 Fixed
^KT-37380 Fixed
2020-03-24 16:13:49 +03:00
Pavel Kirpichenkov
dc18c62dbc
[NI] Filter out type variable from its dependencies
...
Don't take into account complex variable dependency on itself when determining fixation status.
^KT-37621 Fixed
2020-03-24 12:49:18 +03:00
Mikhail Zarechenskiy
ec4d9d2f1f
[NI] Prefer between two complex variables one with proper lower bounds
...
This reverts commit d4d35bb766 .
2020-03-24 11:13:55 +03:00
Ilya Chernikov
44ffed9590
Approximate only types substituted with captured types
...
properly fixes #KT-37389
#KT-37389 fixed
#KT-37644 fixed
2020-03-23 22:58:45 +01:00
Mikhail Zarechenskiy
191fb02bf6
[NI] Consider intersection type with number type as Nothing
...
Currently, only for "in": In<in Int & A> == In<in Nothing> == In<*>
#KT-37302 Fixed
2020-03-23 16:39:21 +03:00
Mikhail Zarechenskiy
72ce4eb5ee
Minor, replace fields with getters to avoid leaking "this" inspection
2020-03-23 16:39:19 +03:00
Mikhail Zarechenskiy
d4d35bb766
Revert "[NI] Prefer between two complex variables one with proper lower bounds"
...
This reverts commit ced8a92629 .
2020-03-22 17:16:22 +03:00
Mikhail Zarechenskiy
ced8a92629
[NI] Prefer between two complex variables one with proper lower bounds
...
#KT-37554 Fixed
2020-03-20 15:44:53 +03:00
Victor Petukhov
3b892fe31e
NI: exclude reporting of an unsafe call diagnostic for implicit invoke after safe call in cases when invoke has type parameters (make NI and OI consistent)
...
^KT-37579 Fixed
2020-03-19 19:27:25 +03:00
Victor Petukhov
81385b73b7
NI: limit cache size for approximated types during incorporation
2020-03-19 12:47:48 +03:00
Victor Petukhov
ea59ea8aa2
NI: avoid creating useless captured types during incorporation
...
^KT-37546 Fixed
2020-03-19 12:47:03 +03:00
Ilya Chernikov
da1009eb2c
Avoid type approximation on generating equality constraints
...
#KT-37389 fixed
2020-03-18 18:34:09 +01:00
Ilya Chernikov
950ab01596
Avoid substitution and type approximation for simple calls
...
#KT-37392 fixed
2020-03-18 18:34:09 +01:00
Vladimir Dolzhenko
87242b419a
Improvements in KotlinCopyPasteReferenceProcessor
...
reduced scope of nonBlockingRead to avoid long rerun of it
used smart pointers to keep valid elements over changes
moved back to non-modal progress
Relates to #KT-37414
2020-03-12 22:42:58 +01:00
Victor Petukhov
b1c4b5f51b
NI: Analyze lambdas which are return arguments of another lambda
...
^KT-36044 Fixed
2020-03-12 23:29:09 +03:00
Ilya Chernikov
3cbfdd19f5
Optimize constraints simplification
...
simplify only when affecting changes are detected
2020-03-12 08:02:46 +01:00
Ilya Chernikov
c2b866fe7a
Reduce number of constraints simplifications
...
assuming that MutableVariableWithConstraints is constructed either
with no initial constraints or already from simplified list
2020-03-12 08:02:46 +01:00
Ilya Chernikov
84a0e39956
Skip duplicates removal on constraints simplification
...
It is already coveren on addition. Speeds up inference a bit.
2020-03-12 08:02:46 +01:00
Ilya Chernikov
4538e212db
Optimize hot addSubTypeConstraintAndIncorporateIt function
...
reduce number of allocations, optimize for cases with small number
of possible new constraints
2020-03-12 08:02:45 +01:00
Ilya Chernikov
357ceeae19
Avoid unnecessary freshTypeConstructor() calls
2020-03-12 08:02:45 +01:00
Ilya Chernikov
54f10a709a
Cache isProperType calculations in the constraint system
...
avoid expensive calculations with type.contains
2020-03-12 08:02:45 +01:00
Ilya Chernikov
70c89a28e1
Stop subtyping constraint search if equality constraints for...
...
all not fixed type vars are found
#KT-35626 fixed
2020-03-12 08:02:45 +01:00
Alexander Udalov
795d6ab407
Migrate UseExperimental->OptIn in project sources
2020-03-10 12:07:14 +01:00
Victor Petukhov
92a0ddfe71
NI: discard def not null types if they appear in return positions, in inv or in variance
...
^KT-37343 Fixed
2020-03-08 19:00:27 +03:00
Dmitriy Novozhilov
643d7be12d
[FIR] Add base class for PostponedResolvedAtomMarker to FIR
2020-03-06 18:10:51 +03:00