Dmitry Petrov
2bf252afe6
[NI] Introduce lambda result dependency edges
...
Given a lambda result type R_L with constraint R_L <: T,
for each constituent type variable V in T with variance matching
approximation direction for V, consider a dependency edge V -> R
(lambda-result-dependency).
E.g., given a constraint:
R <: Out<V>
where V is approximated down (to sub-type).
After R is fixed, we obtain constraint
Out<T> <: Out<V>
which is incorporated as
T <: V
which is a relevant constraint for V.
2017-07-14 12:43:06 +03:00
Dmitry Petrov
13e8720ddc
[NI] Keep track of fresh type variables created for particular call candidate
...
Otherwise we can't obtain inferred type arguments for the call,
which is required for reification.
2017-07-14 12:43:06 +03:00
Dmitry Petrov
eb7e9196b5
[NI] Fix some argument mapping problems
...
1. Value arguments for the resolved call are indexed with resulting
descriptor value parameters (which can be substituted).
2. Simple argument can be a single vararg element if the corresponding
value parameter is a vararg parameter.
3. Resulting descriptor should be approximated to super-type.
This doesn't affect type inference, but the JVM BE expects types with
proper classifiers.
2017-07-14 12:43:06 +03:00
Stanislav Erokhin
0c79949cf1
[NI] Implement NewTypeSubstitutor
2017-07-14 12:43:05 +03:00
Stanislav Erokhin
ff8a57dc26
[NI] Implement New CommonSuperTypeCalculation
2017-07-14 12:43:05 +03:00
Stanislav Erokhin
6aac67aa7e
[NI] Approximate captured types when set them into variable.
...
Also do not store type with captured type inside possible types.
It is hack for now, but without it captured types can flow to
resolution and exception will be thrown.
2017-07-14 12:43:05 +03:00
Stanislav Erokhin
397103f9d0
[NI] Fix smart cast for expression with captured input type.
2017-07-14 12:43:05 +03:00
Stanislav Erokhin
73cc1fdd9c
[NI] Resolve type variable to Nothing for TO_SUBTYPE direction.
2017-07-14 12:43:04 +03:00
Stanislav Erokhin
6e24b0f89d
[NI] Approximate captured types when we resolve type variable TO_SUPER.
2017-07-14 12:43:04 +03:00
Stanislav Erokhin
53caa84db9
[NI] Add constrains even we try add constraint like TypeVariable <: CapturedType from subtyping.
...
If such captured type has lower type, then from TypeVariable <: lowerType => TypeVariable <: CapturedType.
2017-07-14 12:43:04 +03:00
Stanislav Erokhin
657c332a1f
[NI] Do not run "or" branches for constraint subtyping.
...
We should never do that, because otherwise we can get unexpected result.
Example for input constraint: C(in String) <: T.
If we run usual subtyping algorithm, then we get 2 constraints:
C(in String) <: T and T <: String.
Of course such system has contradiction.
2017-07-14 12:43:04 +03:00
Stanislav Erokhin
0fadf0bf70
[NI] Approximate captured types before type variable fixation.
...
We prefer denotable types when we solve constraint system.
I.e. if for T we have not equality constraint with captured type we can approximate captured type to denotable type.
2017-07-14 12:43:03 +03:00
Stanislav Erokhin
b4bf534d29
[NI] Capture from supertypes of type parameter.
...
This works by accident in OI, so this should be supported by new inference.
2017-07-14 12:43:03 +03:00
Stanislav Erokhin
c4ddc7a3a6
[NI] Store stub resolved call to trace because some clients read this before all calls are completed.
...
This is bad idea, but this is how it works in old inference.
Now we just save old behaviour.
Future plan: fix checks where we get unfinished resolved calls.
2017-07-14 12:43:03 +03:00
Stanislav Erokhin
78f8d29a4c
[NI] Fix find maximally specific for NI.
2017-07-14 12:43:03 +03:00
Dmitry Petrov
d67b51e91a
[NI] Support wrong number of type arguments and integer constants.
...
- report WRONG_NUMBER_OF_TYPE_ARGUMENTS
- make integral types work again: IntegerValueType is represented as {Int & Byte & Short & Long} in the constraint system
2017-07-14 12:43:02 +03:00
Dmitry Petrov
f5c59b1343
[NI] Report special error message on constant expression type mismatch.
2017-07-14 12:43:02 +03:00
Dmitry Petrov
5afd3e72d6
[NI] Report diagnostic on abstract class instantiation.
2017-07-14 12:43:02 +03:00
Stanislav Erokhin
b012681a53
[NI] New inference -- initial commit.
2017-07-14 12:43:02 +03:00
Dmitry Petrov
036090be91
Support intersection type in TypeUtils.contains(...)
2017-07-14 12:43:01 +03:00
Stanislav Erokhin
e8501c7d54
Add method replaceType for ReceiverValue.
...
This method will used for capturing from expressions before call resolution.
2017-07-14 12:43:01 +03:00
Nikolay Krasko
1dcdb72a49
Process UastContext service absence (EA-100670)
2017-07-14 12:39:13 +03:00
Dmitry Jemerov
448dba3f78
License-related cleanup
2017-07-14 11:09:45 +02:00
Ilya Chernikov
84a812df19
Drop forced in-process compilation (as interface compatibility is resolved)
2017-07-13 15:45:34 +02:00
Dmitry Jemerov
9b37e76b14
Don't trigger update check when an in-memory file is modified
...
#KT-18954 Fixed
2017-07-13 12:50:15 +02:00
Mikhail Zarechenskiy
2d3ce89afc
Use only completed arguments of special call
2017-07-13 12:26:03 +03:00
Dmitry Petrov
a687dea898
Introduce special IrDeclarationOrigin's for for-loop variables
...
FOR_LOOP_ITERATOR
- temporary variable for for-loop iterator
FOR_LOOP_VARIABLE
- `x` in `for (x in xs)`
FOR_LOOP_IMPLICIT_VARIABLE
- temporary variable for for-loop with destructuring, e.g.:
for ((x, y) in xys)
=>
for (tmp in xys) {
val (x, y) = tmp
}
2017-07-13 10:59:51 +03:00
Andrius Semionovas
1cab0d09ab
KT-18979 Add val to proper place for 'Add val/var' intent
2017-07-13 01:20:24 +03:00
Alexander Udalov
f01de3a935
Minor, move lateinit tests into a subdirectory
2017-07-12 18:59:02 +03:00
Alexander Udalov
b2b492447f
Maven plugin: initial support for Java 9 modules
2017-07-12 18:58:36 +03:00
Alexander Udalov
848edc14cb
Maven plugin: fix warnings, update copyrights
2017-07-12 18:58:35 +03:00
Alexander Udalov
1d46070bd5
Minor, remove unneeded codegen test
...
This test is already present in compiler/testData/cli/jvm/
2017-07-12 18:58:35 +03:00
Mikhael Bogdanov
b2a7fb9534
Update ChangeLog.md for 1.1.4-EAP-11
2017-07-12 16:33:25 +02:00
Mikhael Bogdanov
b15cfeb0a0
Add 1.1.3-2 changes
2017-07-12 16:33:25 +02:00
Mikhael Bogdanov
ef003db020
Update ChangeLog.md for 1.1.3
2017-07-12 16:33:25 +02:00
baratynskiy
0b6ef5f291
Make idea-full exported in tests-common module because kapt3 tests use KotlinTestUtils.assertEqualsToFile which uses Editor defined in idea-full
2017-07-12 17:25:32 +03:00
baratynskiy
a288b8d318
Add jsr305.jar to intellij-core because guava-19.0 jar depends on Nullable defined in jsr305.jar
2017-07-12 17:25:32 +03:00
Anton Bannykh
0935ed41d4
JS: return exit code from the NodeJs kotlinc-js wrapper
2017-07-12 17:19:59 +03:00
Dmitry Petrov
da404de51e
Add comment regarding testData generation to RangeValues.kt
2017-07-12 16:23:36 +03:00
Dmitry Petrov
2849e19af5
Add test for indices.reversed()
2017-07-12 15:56:29 +03:00
Dmitry Petrov
6a673a03e4
Generate test data for in-expression tests, fix bug with indices
2017-07-12 15:56:29 +03:00
Igor Chevdar
890c6a9983
Regenerated box tests
2017-07-12 15:12:34 +03:00
Igor Chevdar
fd380f7545
Split up test on map access onto two tests: stdlib & compiler box test
2017-07-12 15:12:33 +03:00
Mikhail Zarechenskiy
14890890b1
Minor, get rid of unchecked cast
2017-07-12 14:37:27 +03:00
Mikhail Zarechenskiy
ee173077c0
Simplify diagnostic when there are wrong number of type arguments
...
#KT-12767 Fixed
2017-07-12 14:37:27 +03:00
Mikhail Zarechenskiy
e82c909f75
Use more specific status to report diagnostics
...
#KT-12737 Fixed
2017-07-12 14:37:26 +03:00
Mikhail Zarechenskiy
178bb900b4
Introduce inapplicable wrong receiver status to improve diagnostics
...
#KT-10754 Fixed
2017-07-12 14:37:26 +03:00
Mikhail Zarechenskiy
79ee8f452c
Add test for obsolete issue
...
#KT-12688 Obsolete
2017-07-12 14:37:26 +03:00
Toshiaki Kameyama
848f7423ee
Do not report "can be private" on properties of private class
...
So #KT-18822 Fixed
2017-07-12 10:35:10 +03:00
Dmitry Petrov
f4d63158cc
Take into account JvmName annotation when generating accessors
...
#KT-17444 Fixed Target versions 1.1.5
2017-07-12 09:37:16 +03:00