Mikhail Glukhikh
b71de954ff
Forbid manipulations with FirWrappedArgumentExpression type reference
...
The type of this expression is bound to the type of wrapped expression,
so it's better not to change it directly.
2019-06-19 22:51:26 +03:00
Mikhail Glukhikh
b7da2f2ad8
FIR resolve: check early receivers on kotlin.* only
...
To provide more stable behaviour, the check introduced in the previous
commit is now applied only to extensions from kotlin.* package.
2019-06-19 22:48:52 +03:00
Mikhail Glukhikh
374b59dee3
FIR resolve: add early explicit receiver type check
...
Before this commit, explicit extension receiver type check was performed
during found candidates analysis (together with arguments type check etc.)
Now we do it just after candidate is found, and filter the candidate
out if explicit receiver type is inappropriate.
This commit slightly changes resolve semantics,
replacing WRONG_RECEIVER with UNRESOLVED_REFERENCE in certain situations.
However, it provides significant performance boost.
2019-06-19 22:45:15 +03:00
Mikhail Glukhikh
d820b6ca52
More accurate messages about types in FirResolveBench
2019-06-19 22:45:14 +03:00
Alexander Podkhalyuzin
b59bd9d6a6
Faster component loading (better cache data structures)
2019-06-19 10:13:09 +02:00
Mikhail Zarechenskiy
796cdea50e
[NI] Require all proper constraints for Exact return type
...
Consider call `foo(bar())` where bar() returns some type variable `T`;
We had a contract that call `bar` can be completed without completion
of foo (type variables can be inferred from the current context) if `T`
has at least one proper lower constraint (ProperType <: T).
Indeed, new constraints can be added only as upper ones, so there is
no need to grow constraint system.
Unfortunately, we have Exact annotation that is used on return type of
elvis. Now, consider the following situation:
```
fun foo(a: Any) {}
fun bar(e: T): @Exact T
foo(bar("str"))
```
Here, because of Exact annotation, constraint with `Any`-type will be
added as an equal one => our prerequisite that there will be no new
lower constraints is false. `bar("str")` is inferred to Any in OI,
this seems conceptually wrong, but it's another topic of discussion.
In NI we can't just grow constraint system to use outer call because
of another important use-case:
```
fun <T> generic(i: Inv<T>) {}
fun test(a: Inv<*>?, b: Inv<*>) {
generic(a ?: b)
}
```
Common constraint system for these two calls can't be solved
(fundamentally) for this example, only if (a ?: b) and generic(result)
are computed separately.
So, to mitigate initial issue, we'll grow constraint system only if
there is at least one non-proper constraint.
#KT-31969 Fixed
2019-06-19 11:07:31 +03:00
Mikhail Zarechenskiy
ca997de6a7
[NI] Test data to understand changes in the next commit
...
##KT-31969 In Progress
2019-06-19 10:47:05 +03:00
Roman Artemev
50ad21e388
[IR BE] Fix symbol remapping for IrField/IrProperty
...
- Use appropriate wrapped descriptor
- Add test
2019-06-19 10:24:15 +03:00
Vladimir Dolzhenko
f11a87e0c5
Revert "Do not resolve import to get imported name"
...
This reverts commit 60c3e644
2019-06-19 09:20:28 +02:00
Mikhail Zarechenskiy
5cf7c7e5bf
[NI] Fix composite substitution for stubbed type in builder-inference
...
#KT-32038 Fixed
2019-06-18 19:38:04 +03:00
Mikhail Zarechenskiy
7df13c986e
[NI] Coerce to Unit expression in last block with explicit Unit
...
#KT-32037 Fixed
2019-06-18 19:38:02 +03:00
Alexander Podkhalyuzin
60c3e6442f
Do not resolve import to get imported name
2019-06-18 17:51:23 +02:00
Denis Zharkov
9d02fe564c
FIR: Avoid calling ClassId::asString from ConeTypeContext
2019-06-18 17:20:23 +03:00
Alexander Podkhalyuzin
c853ae49a2
Faster startup avoiding unnecessary class loading
2019-06-18 12:08:04 +02:00
Denis Zharkov
f7d0be980b
FIR: Optimize ConeTypeContext::isIntegerLiteralType
...
See ConeTypeContext::isIntegerLiteralTypeConstructor
2019-06-18 11:55:15 +03:00
Denis Zharkov
3c8ed21e59
Optimize ConstraintInjector::isMyTypeVariable
...
Do not look into the map for constructors that are not
type variables
2019-06-18 11:55:15 +03:00
Denis Zharkov
115ab38423
FIR: Optimize ConeTypeContext::captureFromArguments
2019-06-18 11:55:15 +03:00
Simon Ogorodnik
2c5bd46a97
[FIR] Handle non-kotlin class results from findKotlinClassOrContent
2019-06-18 11:36:42 +03:00
Simon Ogorodnik
2f53bd24dd
[FIR] Reorder providers to make builtins load first
2019-06-18 11:34:18 +03:00
Simon Ogorodnik
03c3469a14
[FIR] Enhance caches in providers
2019-06-18 11:33:11 +03:00
Simon Ogorodnik
f88fafea9d
[FIR] Use proper collections for override scope
2019-06-18 11:14:58 +03:00
Simon Ogorodnik
321e948eca
[FIR] Improve typing to get rid of cast
2019-06-18 11:14:57 +03:00
Simon Ogorodnik
95409b35ca
[FIR] Use abstract classes for FIR scopes
2019-06-18 11:14:56 +03:00
Simon Ogorodnik
810fa9c171
[FIR] Make session & symbolProvider abstract classes
2019-06-18 11:14:55 +03:00
Simon Ogorodnik
5a06027c53
[FIR] Avoid instanceof List in transformInplace
2019-06-18 11:14:54 +03:00
Ilya Gorbunov
95139252b7
Exclude kotlin.time.* from reduced js runtime
2019-06-18 03:59:52 +03:00
Mikhail Zarechenskiy
7749afb13e
[NI] Fix exception for type check callable reference against error type
...
#KT-32029 Fixed
#EA-145311 Fixed
2019-06-17 19:18:04 +03:00
Mikhail Zarechenskiy
8fe632f52b
[NI] Record DFI for callable reference arguments
...
#KT-31941 Fixed
2019-06-17 19:18:04 +03:00
Vyacheslav Gerasimov
54222bd429
Build: compiler tests-common test runtime
2019-06-17 16:30:14 +03:00
Denis Zharkov
fdebb38706
Disable slow assertions in type checker everywhere except for tests
2019-06-17 10:29:23 +03:00
Toshiaki Kameyama
fbd992f8c7
Add intentions to convert lazy <--> ordinary property
...
#KT-23501 Fixed
2019-06-17 01:10:19 +03:00
Nicolay Mitropolsky
2a5be78db3
Kotlinx-coroutines version set to 1.2.1 for IDEA 192
2019-06-14 20:05:23 +03:00
Roman Artemev
8015152bfc
[JS IR BE] Support JS IR in maven plugin
2019-06-14 18:41:00 +03:00
Roman Artemev
cc46657c99
[JS IR BE] Fix misprint
2019-06-14 18:40:59 +03:00
Roman Artemev
6d2ad63db3
[IR] Support IrLocalDelegatedPropertyReference in klib
2019-06-14 18:40:59 +03:00
Roman Artemev
008cf03b06
[IR] Consider TypeParameter as public declaration and serialize it properly
...
- Add test case when TypeParameter of generic property is exposed outside its module
2019-06-14 18:40:59 +03:00
Roman Artemev
efaf5a9947
[IR] Fix serialization of ENUM_SPECIAL members
2019-06-14 18:40:59 +03:00
Alexander Gorshenev
a816de4865
Added a test for members of EnumEntry in a library.
2019-06-14 17:12:39 +03:00
Alexander Gorshenev
d13b350716
Don't serialize descriptor references for EnumEntry members
2019-06-14 17:12:39 +03:00
Vyacheslav Gerasimov
33a5a3ff81
Build: Fix test runtime for incremental compilation tests
2019-06-14 17:09:36 +03:00
Toshiaki Kameyama
b650c7ab00
Add "Redundant empty initializer block" inspection
...
^KT-5008 Fixed
2019-06-14 12:27:21 +03:00
Vyacheslav Gerasimov
9f5b1a5101
Build: Fix runtime for generateFullRuntimeKLib
2019-06-14 01:06:06 +03:00
Vyacheslav Gerasimov
dc2a7fdc13
Build: Fix compiler tests, add missing test runtime dependencies
2019-06-14 00:35:01 +03:00
Vyacheslav Gerasimov
5a39c637c2
Build: Fix intellij dependency leak from ir tree module
2019-06-13 21:03:55 +03:00
Andrey Uskov
c0bf5a6566
Import of middle HMPP target platforms is supported
2019-06-13 18:30:01 +03:00
Steven Schäfer
41ce88cb9b
Move eraseTypeParameters to IrUtils and use it in PromisedValue.coerce
2019-06-13 12:25:06 +02:00
Steven Schäfer
3ce0c336bc
Move IrReturnTarget.returnType to IrUtils
2019-06-13 12:25:06 +02:00
Steven Schäfer
ea3bae5fc9
Split voidValue into immaterialUnitValue and defaultValue
2019-06-13 12:25:06 +02:00
Steven Schäfer
27a850be92
Fix genValueAndPut in IrInlineCodegen
2019-06-13 12:25:06 +02:00
Steven Schäfer
917ef250cf
Add and (un)mute inline class tests
2019-06-13 12:25:06 +02:00