Victor Petukhov
437a26684d
NI: Prefer nullable lower bound to flexible one when substitution of type variable is performed and remember flexibility of type parameters based on flexibility of its upper bounds
...
^KT-32435 Fixed
2020-01-17 19:16:09 +03:00
Mikhail Zarechenskiy
4f74515508
[NI] Fix CST calculation for covariant type projections
2020-01-16 17:18:20 +03:00
Pavel Kirpichenkov
fd1305c369
[NI] Refactor OnlyInputType annotation check
...
Hold position consumed during incorporation in Constraint instead of ConstraintPosition.
2020-01-16 12:01:07 +03:00
Pavel Kirpichenkov
0d393e3fd7
[NI] Update filtering of constraints with equal types
...
Make check for synthetic nullability constraint status before skipping
new constraint with nonunique type.
2020-01-16 12:01:06 +03:00
Pavel Kirpichenkov
2896642f94
[NI] Consider synthetic lower nullability constraint non-proper
2020-01-16 12:01:06 +03:00
Denis Zharkov
676c99b933
NI: Fix exception during callable references overload resolution
...
^KT-35847 Fixed
2020-01-16 10:49:49 +03:00
Dmitriy Novozhilov
a3037a081e
[NI] Fix resolve of lambdas with expected function type with receiver
...
#KT-30245
2020-01-15 22:12:29 +03:00
Dmitriy Novozhilov
04ce10b6c1
[NI] Improve completing callable references with type variable as expected type
...
#KT-32462 Fixed
2020-01-15 22:12:28 +03:00
Denis Zharkov
c48539feb3
NI: Fix callable references resolution when LHS is generic nested class
...
In case of null qualifier, we should not look into any static scope
NB: factory::createCallableProcessor returns NoExplicitReceiver processor
in case of null-receiver, that makes resolving the call in the test as
`property(::key)` that matches to the property itself, thus leading to
overload resolution ambiguity
^KT-35887 Fixed
2020-01-15 16:10:34 +03:00
Dmitriy Novozhilov
3428a17759
[NI] Postpone calls with not enough information in builder inference
2020-01-15 14:01:25 +03:00
Denis Zharkov
d6b01f1007
NI: In subtyping do not intersect arguments for non-covariant types
...
It partially reverts 7898922066
because it's not obvious that it's a safe operation
for invariant/contravariant types.
Also, there's a necessary fix in prepareReceiverRegardingCaptureTypes
to make types order stable
Otherwise test bareTypesWithStarProjections becomes flaky.
Also, the changes in bareTypesWithStarProjections.kt are also expected
because the type of the expression `coneSymbol` after the second "if" is
FirVariableSymbol<*> & FirPropertySymbol & AbstractFirBasedSymbol<*>
thus we fix D in the call `coneSymbol.phasedFir()` to FirVariableSymbol<*>
because it's the first type in the list
(see the next line after the last changed in AbstractTypeChecker)
2020-01-14 17:35:24 +03:00
Denis Zharkov
4202c9c1a4
NI: Fix regression for star-projections approximation
...
See the test added
^KT-35703 Fixed
2020-01-14 17:35:24 +03:00
Pavel Kirpichenkov
4a29de3716
[NI] discriminate Nothing for reified parameters
...
Related issues: KT-32836, KT-35728
2020-01-14 16:27:42 +03:00
Mikhail Zarechenskiy
6fe61c9056
[NI] Fix ambiguity when there are no applicable candidates
...
#KT-35064 Fixed
2020-01-14 14:30:01 +03:00
Ilya Chernikov
caa677e6d2
[NI] Convert extension lambda to the non-extension one, if needed
...
#KT-30245 fixed
2020-01-09 08:08:45 +01:00
Pavel Kirpichenkov
2d21b82501
[NI] Remove hack for special functions
...
Treating special functions for `if`, `when`, `try`, `?:` as not accepting `Nothing` result type is incorrect.
Making so leads to cases with uninferred `Nothing` result type for inner calls and lost data flow info.
2019-12-27 18:40:42 +03:00
Dmitriy Novozhilov
5dfe100ae5
Allow use reference to reified type parameters in contracts since 1.4
2019-12-26 17:43:28 +03:00
Denis Zharkov
0b385cc532
NI: Approximate captured-for-star-projections to *
...
^KT-35602 Fixed
2019-12-26 12:35:32 +03:00
Dmitriy Novozhilov
c8a1b876e8
[NI] Fix completion of error delegates with receiver with type parameters
2019-12-26 10:54:07 +03:00
Dmitriy Novozhilov
0c01499d98
[NI] Improve completing calls with multiple postponed arguments
...
#KT-27999 Fixed
#KT-30244 Fixed
#KT-31102 Fixed
2019-12-26 10:53:03 +03:00
Victor Petukhov
4309f53e11
NI: don't filter flexible types during CST calculation and force return as result the first of such types
...
^KT-35658 Fixed
2019-12-25 18:00:23 +03:00
Dmitriy Novozhilov
51424ec598
[NI] Add constraint K <: T from constraint K <: CapturedType(in T)
...
#KT-33263 Fixed
2019-12-25 16:19:19 +03:00
Dmitriy Novozhilov
b54169d312
[NI] Fix substitution in completion of callable references in coroutine inference
2019-12-25 16:19:19 +03:00
Pavel Kirpichenkov
7ee71450bc
[NI] Discriminate Nothing? result type from nullability constraints
...
Nullability constraints should not be chosen when proper
argument constraints for variables in contravariant position present.
^KT-32106 Fixed
^KT-33166 Fixed
2019-12-25 14:59:06 +03:00
Pavel Kirpichenkov
a1ad680edb
[NI] Disallow full completion based on lower Nothing constraint
2019-12-25 14:59:06 +03:00
Pavel Kirpichenkov
384bd858e9
[NI] Support fixation to subtype in completion mode calculator
...
Allow full compltion mode for return type depending on type parameters in
contravariant position only if they have proper equality constraint.
2019-12-25 14:59:05 +03:00
Pavel Kirpichenkov
e69e45e2a6
[NI] Remove direcion calculator from variable fixation
...
Force constraint system completer to always fix variable with unknown position.
This makes inferred type for in parameters less specific, but OI infers to
subtype in such cases, so NI won't infer to less specific types than before.
2019-12-25 14:59:05 +03:00
Pavel Kirpichenkov
e9941f8c12
[NI] Implement algorithm for completion mode selection
...
Current selection of completion mode for call is not always correct in case of full mode,
and sometimes too conservative in case of partial mode. Updated algorithm checks constraints
wrt position of type variables in return type and in other related constraints.
Full completion happens if proper constraint requirements are satisfied for variables.
2019-12-25 14:59:05 +03:00
Pavel Kirpichenkov
a9391c8dfb
[NI] Remove Nothing result type restriction in most cases
...
Make Nothing as result type not suitable only for if, when, try and ?: special functions.
2019-12-25 14:59:05 +03:00
Mikhail Zarechenskiy
ae1630f376
[NI] Don't discriminate Nothing-type from resulting ones
...
^KT-32106 Fixed
2019-12-25 14:59:04 +03:00
Dmitriy Novozhilov
e730965bc5
[NI] Approximate intersection type in type argument to star if it's necessary
...
#KT-32196 Fixed
2019-12-20 11:33:06 +03:00
Dmitriy Novozhilov
e466fd5196
[NI] Infer type variable to Nothing if all upper constraints are from upper bounds
...
#KT-32196 Fixed
2019-12-20 11:17:47 +03:00
Ilya Chernikov
45e881f03f
[NI] Fix inference if inner system has only by "uninteresting" constraint
...
#KT-32250 fixed
2019-12-19 11:20:10 +01:00
Denis Zharkov
e8131d6e30
Choose Java field during overload resolution with a pure Kotlin property
...
^KT-31244 Fixed
2019-12-19 10:53:31 +03:00
Dmitriy Novozhilov
ee36fb903f
Allow use expression of array type as named argument for vararg
2019-12-19 10:22:44 +03:00
Denis Zharkov
c486fa6189
NI: Report incompatible receiver of callable reference
...
^KT-35535 Fixed
2019-12-18 19:33:55 +03:00
Denis Zharkov
dd56c3d918
NI: Fix property references overload ambiguity
...
^KT-35213 Fixed
2019-12-18 19:33:55 +03:00
Alexander Gorshenev
dc8240c24e
Expect/actual support in klibs under -Xklib-mpp
2019-12-18 19:29:56 +03:00
Pavel Kirpichenkov
86dc0925b1
[NI] Preserve constraint position for OnlyInputType during incorporation
...
Variable with complex dependency on other variable loses its
original constraint position when variable it depends on is fixed.
To prevent that, original input position is saved in incorporation
position.
2019-12-18 16:19:33 +03:00
Denis Zharkov
2aa1c40de4
Avoid checking trivial incorporated constraints
2019-12-17 15:06:17 +03:00
Denis Zharkov
b53c00cf69
FIR: Optimize simple things in inference
2019-12-17 15:06:17 +03:00
Denis Zharkov
0064429339
Avoid using TypeSystemInferenceExtensionContextDelegate in FIR
...
It's only needed in old FE to avoid clashes when initializing DI
The main idea is gettind rid of intermediate interfaces because
each of them adds another intermediate DefaultImpls call
2019-12-13 14:39:06 +03:00
Victor Petukhov
07269661b4
NI: Allow to resolve to functions with SAM conversion and passing array without spread as vararg (with warning)
...
^KT-35224 Fixed
2019-12-12 23:46:16 +03:00
victor.petukhov
71cb65c064
NI: Add flexible Nothing to trivial constraints to filter it
2019-12-12 18:45:11 +03:00
victor.petukhov
2d5a05466d
NI: Fix some unwanted exclusions constraints with remained corresponding optimization
2019-12-12 18:45:07 +03:00
victor.petukhov
a92f58b1ac
Revert "NI: Prefer nullable lower bound to flexible one when substitution of type variable is performed ^KT-32435 Fixed"
...
This reverts commit 09c2b92b
2019-12-11 15:32:46 +03:00
Victor Petukhov
09c2b92b1d
NI: Prefer nullable lower bound to flexible one when substitution of type variable is performed
...
^KT-32435 Fixed
2019-12-11 12:15:02 +03:00
Dmitriy Novozhilov
b76c984b26
[FIR] Support IntegerLiteralTypes
2019-12-09 17:24:26 +03:00
Denis Zharkov
5b4e8170ae
Fix variables leaking when adding other system under transaction
2019-12-04 10:52:19 +03:00
Denis Zharkov
692442d7a2
Do not look into captured star projection as types
2019-12-04 10:52:19 +03:00