Mikhail Glukhikh
2f63c8a46a
[FIR] Enhance diagnostic DSL to be able to use concrete factories
...
Before this commit, things like DiagnosticFactory0<KtDeclaration>
were effectively unusable.
2020-03-27 16:46:58 +03:00
Dmitriy Novozhilov
a1d81aa15f
[FIR-TEST] Fix diff between FIR and old FE testdata
2020-03-27 16:39:02 +03:00
FenstonSingel
b7d8e879a6
[FIR] Support 4 diagnostics for pairs of modifiers
...
In particular, this commit includes:
* Attempt to abstract access to FirSourceElement via FirModifier
* Add more visit functions to DeclarationCheckersDiagnosticComponent
* Add messages+factories for 4 modifier-related errors and warnings
* Introduce FirModifierChecker
2020-03-27 12:34:29 +03:00
Dmitriy Novozhilov
48fb279721
[FIR] Add constraint to flexible type for declared argument for java parameter
2020-03-27 10:17:12 +03: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
Denis Zharkov
d869ae7826
FIR: Make resolution logic for local classes the same as for top-level
...
Run different phases through common transformers sequentially
It should make code more reusable and may help with avoid common bugs
2020-03-25 15:36:17 +03:00
Denis Zharkov
cdd7e41891
FIR: Support proper implicit return type computation for local classes
2020-03-25 14:53:34 +03:00
Dmitriy Novozhilov
2c37627b15
[FIR] Add unified diagnostics for psi and light tree
2020-03-25 11:35:43 +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
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
Nick
abcd6bd528
[FIR] Support diagnostic SUPER_IS_NOT_AN_EXPRESSION
2020-03-23 15:14:06 +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
Dmitriy Novozhilov
5f9f01fe4e
[FIR] Implement new completion mode calculator
...
Note that `testDelegates` now fails due to KT-37638 and
`testSimpleIn` fails due to problems with type parameters
of inner classes
2020-03-20 23:11:28 +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
ea59ea8aa2
NI: avoid creating useless captured types during incorporation
...
^KT-37546 Fixed
2020-03-19 12:47:03 +03:00
Vyacheslav Gerasimov
bcefa68df0
Always checkout/checkin text files with lf endings
...
Different line endings on linux/windows prevents gradle from reusing
build cache since endings make task inputs completely different between
systems
2020-03-18 22:33:15 +03:00
Dmitriy Novozhilov
2b986194fb
[FIR] Add desugaring of array assignments and resolve of it
...
#KT-37516 Fixed
2020-03-18 11:31:53 +03:00
Denis Zharkov
a2e7b6d20e
FIR: Do not add "field" to accessor of a property with receiver
2020-03-18 10:22:10 +03:00
Denis Zharkov
e1312a752a
FIR: Allow a field override another field with the same name
2020-03-17 16:33:48 +03:00
Denis Zharkov
7203499b7a
FIR: Fix visibility check for protected within a companion
2020-03-17 16:33:48 +03:00
simon.ogorodnik
4844a90788
[FIR] KT-37453: Type argument mapping
...
#KT-37453 Fixed
2020-03-16 21:41:59 +03:00
Dmitriy Novozhilov
1b479c49a8
[FIR] Fix exhaustiveness checking for conditions with equals to object
...
#KT-37488 Fixed
2020-03-16 17:04:28 +03:00
Dmitriy Novozhilov
820da6edaa
[FIR] Don't set up expected type for function body
2020-03-16 17:04:28 +03: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
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
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
Ilya Chernikov
2727507d18
Fix diagnostic inferred type calculation for null in some cases
...
#KT-36222 fixed
2020-03-12 08:02:45 +01:00
Pavel Kirpichenkov
04f9a03796
[NI] Fix isNullableType for definitely not null type parameter
...
Consider type parameter with nullable bound not null
if it is inside of a definitely not null type.
2020-03-11 13:55:25 +03:00
Pavel Kirpichenkov
88ae9bc7d5
minor: rename test
2020-03-11 13:55:24 +03:00
Victor Petukhov
125b39d9be
NI: Temporary apply test data until fix KT-37380
2020-03-10 13:25:11 +03: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
1c0fd7342f
[FIR] Support completion of lambdas with type variable as expected type
...
#KT-37310 Fixed
#KT-37304 Fixed
2020-03-06 18:10:52 +03:00
Pavel Kirpichenkov
ac5c255c20
[NI-TESTS] Add regression tests
...
^KT-33638 Obsolete
Add test for case mentioned in KT-33629.
Used to be runtime failure instead of error diagnostic.
2020-03-05 20:20:47 +03:00
Pavel Kirpichenkov
dc42b20ae3
[NI] Use alternative to intersection type in public declarations
...
The new inference uses inferred intersection types normally, unlike the old inference.
However, intersection types in public declarations are approximated to supertype, which
potentially may give a less presice type, then it would be with the OI.
For non-related T1, T2 the NI approximates {T1 & T2} to Any in public declarations,
and if the OI was inferring T1 instead of the intersection type, it may lead to
less precise declaration type and related errors.
The solution is to remember an alternative for an intersection type when present.
Before approximation the alternative replaces the intersection type.
^KT-36249 Fixed
2020-03-05 20:20:47 +03:00
Dmitriy Novozhilov
770dfb69ba
[FIR] Analyze all statements in block except last one in independent mode
...
Some broken tests will be fixed in next commit
#KT-37176 Fixed
2020-03-05 16:48:47 +03:00
Dmitriy Novozhilov
5f9876479e
[FIR] Add saving of local context in anonymous functions for further resolve
...
#KT-37066 Fixed
2020-03-05 16:48:47 +03:00
Dmitriy Novozhilov
8023d04c61
[FIR] Add separate local scope for init blocks
2020-03-05 16:48:47 +03:00
Mikhail Glukhikh
5af4efd5a7
Remove FIR test data file accidentally left in 8884cbe4
2020-03-05 15:51:41 +03:00
Mikhail Glukhikh
8884cbe415
Introduce FIR_IDENTICAL for FIR vs old frontend tests #KT-36879 Fixed
2020-03-05 09:39:40 +03:00
Mikhael Bogdanov
32bcab2867
Switch rest of test to new scheme with configuration kind processing
2020-03-04 14:51:21 +01:00
Victor Petukhov
d6ccdb3caa
NI: fix extensionLambdasAndArrow test
2020-03-03 13:55:15 +03:00
Pavel Kirpichenkov
ad988dbf43
minor: update test data
2020-03-03 12:57:41 +03:00
Pavel Kirpichenkov
23ed6c4a1f
[NI] Narrow nullability constraint check in incorporator
...
This commit is a hotfix rather then proper solution.
The source of the issue is that currently type variable fixation result
may change due to fixation order alteration for variables with the same priority.
For instance, having variables V1, V2, and proper types Type1, Type2, such that:
V1 <: Type1
V1 <: V2
Type2 <: V2
both variables will be fixed either to Type1, if V1 will be fixed first,
or to Type2 otherwise.
Since this limitation cannot be easily overcome, the taken approach is to remove
incedental constraint added after 2d5a0546 by restricting nullability constraint check
to `Nothing?` constraints only, thus postponing problematic variable fixation.
To clearify, additional constraint is correct and should cause no harm (in ideal world),
but currently its presence changes fixation order.
So without the restriction the previously used constraint from fixed outer variable
is no longer available by the time problematic variable type is being selected.
^KT-37043 Fixed
2020-03-03 12:57:25 +03:00
Dmitriy Novozhilov
ec01893237
[FIR] Resolve return expressions in independent context
2020-03-03 09:57:45 +03:00
Dmitriy Novozhilov
7ee125e1ad
[FIR] Add receiver for lambda in position of default argument
...
#KT-36905 Fixed
2020-03-03 09:57:41 +03:00
Victor Petukhov
51749b9747
NI: don't try to infer visible lambda parameters, if there is single one – extension parameter
...
^KT-37038 Fixed
2020-03-02 20:28:59 +03:00
simon.ogorodnik
f9483b1f4f
[FIR] KT-37027: Add 'out' projection to vararg elements
2020-02-27 19:07:17 +03:00