Alexander Udalov
dbd28142d0
Fix callable reference adaptation for vararg in fake override
...
`mappedVarargElements` are populated with parameters from
`argumentMapping`, which is computed using `ArgumentsToParametersMapper`
which calls `original` on all value parameters (see
ArgumentsToParametersMapper.kt:136).
So the code that adds empty lists for unassigned vararg parameters
should also call `original`. Otherwise, in the added test, we ended up
with two arguments for the parameter `s` in `id(::base1)`, one for
`Base.s` containing the correct value, and another for `Derived.s`
containing the empty list. Psi2ir took the last one, which resulted in
empty array being passed to the vararg parameter.
Note that all of this is caused by the fact that `original` of a fake
override parameter is the parameter of the base function. This seems
suspicious because `original` of a fake override _function_ is that fake
override itself (NOT the base function), but this would probably be very
risky to change at this point.
#KT-48835 Fixed
2021-09-30 14:08:38 +02:00
Denis.Zharkov
4733a0d970
Refine naming: *TypeVariable -> *TypeParameter
2021-09-30 14:36:27 +03:00
Victor Petukhov
ee728b6902
Use the new type inference for top-level callable reference resolution
...
^KT-47797 Fixed
^KT-47987 Fixed
^KT-45034 Fixed
^KT-48446 Fixed
^KT-13934 Fixed
2021-09-27 16:12:27 +03:00
Victor Petukhov
ca13aea26a
Creating resolved and resolution atoms for callable references
2021-09-27 16:12:25 +03:00
Victor Petukhov
764361bc42
Format and remove unused imports and variables
2021-09-27 16:12:22 +03:00
Victor Petukhov
8b85b4630b
Write LHS resolution result into a call position
2021-09-27 16:12:20 +03:00
Victor Petukhov
f1803b49fe
Extract KotlinCallKind into separate file
2021-09-27 16:12:09 +03:00
Victor Petukhov
4559558001
Extract SimpleCandidateFactory into separate file
2021-09-27 16:12:08 +03:00
Victor Petukhov
7b9ef0be12
Introduce ResolutionCandidate by commonization KotlinResolutionCandidate and CallableReferenceCandidate
...
Also introduced SimpleErrorResolutionCandidate
2021-09-27 16:12:06 +03:00
Victor Petukhov
08060aa036
Extract CallableReferencesCandidateFactory into separate file
2021-09-27 16:12:05 +03:00
Victor Petukhov
4fcb16b4c4
Extract CallableReferenceCandidate into separate file
2021-09-27 16:12:04 +03:00
Victor Petukhov
dedac63a8c
Extract KotlinResolutionCandidate into separate file
2021-09-27 16:12:03 +03:00
Vyacheslav Gerasimov
ab146bd6d4
Build: Fix deprecated Gradle configurations usages
...
for migration to Gradle 7+ #KTI-559
2021-09-26 18:28:44 +03:00
Dmitry Savvinov
699eb47834
Never suggest fake overrides as results of expects-matching
...
See KT-48291 for example.
The rationale behind the change is that in "findExpectForActual" we want
to find a candidate to be a counterpart for the current (actual)
declaration. Fake overrides can not be a sensible counterpart in that
regard (you can't, nor you should, provide actual for expect which is
FAKE_OVERRIDE)
^KT-48291 Fixed
2021-09-08 16:22:54 +03:00
Dmitry Savvinov
d6cb96aa24
Wire proper KotlinTypeRefiner into ClassicTypeSystemCotextForCS
...
^KT-48589 Fixed
2021-09-06 12:06:26 +03:00
Denis.Zharkov
019001ca20
Optimize memory footprint related to empty/single element collections
...
^KT-47926 Related
2021-08-30 16:51:55 +03:00
Dmitriy Novozhilov
7e6e0a3dd6
Remove all type system-specific inheritors of TypeCheckerState
2021-08-26 10:08:51 +03:00
Dmitriy Novozhilov
e07512a847
Delegate refineType and prepareType in TypeCheckerState to special services
...
This is needed to add ability to create type system independent TypeCheckerState
2021-08-26 10:08:51 +03:00
Dmitriy Novozhilov
8b5548df49
Rename AbstractTypeCheckerContext to TypeCheckerState
2021-08-26 10:08:51 +03:00
Victor Petukhov
a1519b7b4e
Be able to infer a type variable based on several builder inference lambdas
...
^KT-48329 Fixed
2021-08-20 01:28:12 +03:00
Victor Petukhov
bf1e68a53f
Resolve calls using the builder inference despite the presence of the annotation if there are uninferred type variables
...
^KT-48194 Fixed
2021-08-20 01:28:11 +03:00
Victor Petukhov
55811c8851
Don't use builder inference if possible
...
The builder inference is running only if there are still uninferred type variables
^KT-48193 Fixed
2021-08-20 01:28:10 +03:00
Victor Petukhov
3df5667a4b
Split variables fixation and reporting "not enough type infromation" in the type system completer into two parts
2021-08-20 01:28:06 +03:00
Victor Petukhov
261a04b587
Rename "coroutine( inference) *" stuff into "builder inference *"
2021-08-20 01:28:05 +03:00
Victor Petukhov
7567597be6
Java nullability checker: take type arguments' types from resolution atom if possible, instead of from resolved call directly
...
^KT-47833 Fixed
2021-08-04 17:36:51 +03:00
Pavel Kirpichenkov
19467861c9
[MPP] Fix false positive expect-actual mismatch
...
Use type refiner to correctly expand actual type alias - expect
class chains, produced by the commonizer. In a case when type
refiner doesn't exist for module create a one-shot thread local
instance. This might happen with modules without source code
in project (coming from build system model).
^KT-46691 Fixed
2021-07-28 18:57:08 +03:00
Dmitriy Novozhilov
f3116cb64a
Fix NON_EXHAUSTIVE_WHEN_STATEMENT warnings in project code
2021-07-20 13:33:46 +03:00
Dmitriy Novozhilov
6e83820f97
Move ExpectActualCompatibility to :compiler:resolution.common
2021-07-20 10:33:33 +03:00
Victor Petukhov
6a1ec92d39
Introduce specific error for calls which could be resolved only with unrestricted builder inference
...
^KT-47747 Fixed
2021-07-16 19:32:36 +03:00
Victor Petukhov
357fda2efa
Initialize builder inference lambda anyway, even a call is inapplicable
...
^KT-47744 Fixed
2021-07-16 19:32:35 +03:00
Victor Petukhov
c2cf2f36cd
Implement inferring materialized self types through a default type in ResultTypeResolver
2021-07-09 19:21:04 +03:00
Victor Petukhov
3787099a38
Put the type inference on calls with self types under the compiler flag
2021-07-09 19:20:56 +03:00
Victor Petukhov
51c5a54e31
Support type inference for self type materialization calls
2021-07-09 19:20:54 +03:00
Mikhail Zarechenskiy
44cf4be1e5
Inference for some kind of self types
2021-07-09 19:20:52 +03:00
Victor Petukhov
c3a5a7754d
Use proper applicability for constraint warnings
...
^KT-47316 Fixed
2021-07-09 14:07:01 +03:00
Tianyu Geng
ce767046eb
FIR checkers: report SMARTCAST_IMPOSSIBLE
2021-06-10 16:01:13 +03:00
Victor Petukhov
124a14c8df
Use separate constraint position during call substitution as part of inferring postponed type variables
...
^KT-47052 Fixed
^KT-47082 Fixed
2021-06-03 12:37:17 +03:00
Dmitriy Novozhilov
796f8e6bce
Revert "FIR checkers: report SMARTCAST_IMPOSSIBLE"
...
This reverts commit 84334b08
2021-06-03 09:48:50 +03:00
Tianyu Geng
84334b087c
FIR checkers: report SMARTCAST_IMPOSSIBLE
2021-06-02 13:19:12 +03:00
Alexander Udalov
bcf47ddc94
Move optional annotation utilities to module 'resolution'
...
To avoid depending on a heavy module 'frontend' in parts of the compiler
where checking for optional annotations is needed, such as in
'ir.serialization.common'.
2021-06-01 20:28:22 +02:00
Victor Petukhov
9fd1cbd2e7
Inject stub type variables of a different builder inference call properly
2021-05-28 15:36:19 +03:00
Victor Petukhov
afbda75581
Set member scope for builder inference stub types equivalent to Any
2021-05-28 15:36:18 +03:00
Victor Petukhov
6356b9d501
Put removing builder inference restrictions under the compiler flag
2021-05-28 15:36:17 +03:00
Victor Petukhov
5a11450d77
Split stub types into stub type for subtyping and for builder inference and use them in the proper way
2021-05-28 15:36:17 +03:00
Victor Petukhov
ac7b459f2a
Do subtyping with stub types properly
...
1) Return stub type if we are calculating super type between two same stub types
2) Return nullable Any if those stub types are different
2021-05-28 15:36:15 +03:00
Victor Petukhov
5d0461c722
Remove restrictions for builder inference internal calls
2021-05-28 15:36:14 +03:00
Denis.Zharkov
dac5c31993
Minor. Simplify ConstraintSystemUtilContext::createArgumentConstraintPosition
2021-05-20 17:24:23 +03:00
Victor Petukhov
21dada4d2d
[Jspecify] Use enhancement of type with enhancement if possible during substitution
2021-05-18 17:52:10 +03:00
Victor Petukhov
12f6146bdf
[Jspecify] Substitute enhancement of type instead of type itself directly
2021-05-18 17:52:09 +03:00
Victor Petukhov
2479655708
[Jspecify] Do preserving flexibility when adding equality constraints by taking into account type with enhancement
2021-05-18 17:52:07 +03:00