Alexander Udalov
9ae6feb2c5
Temporarily remove JvmPackageName and tests, but keep the implementation
...
This is needed because we want the compiler code to stay as much the
same in master and in 1.2 as possible
2017-09-13 23:23:36 +03:00
Alexander Udalov
d07b628e0c
Support JvmPackageName annotation in JVM back-end
...
This annotation is currently internal because we only commit to its
support for our own libraries. It will be used to change JVM package
names of declarations in JDK-specific stdlib additions (now called
kotlin-stdlib-jre7/8), both to preserve source compatibility of the old
Kotlin code and to solve the split package problem (KT-19258)
2017-09-13 22:59:03 +03:00
Alexander Udalov
234148518e
Temporarily remove isInitialized and tests, but keep the implementation
...
This is needed because we want the compiler code to stay as much the
same in master and in 1.2 as possible
2017-09-13 22:51:23 +03:00
Alexander Udalov
7d80afbe63
Avoid getting invisible_fake visibility for properties in ExpressionCodegen
...
Before this change, we were computing the visibility of an inherited
private property setter, and ISE at AsmUtil.getVisibilityAccessFlag
happened ("invisible_fake is not a valid visibility in backend")
2017-09-13 22:49:26 +03:00
Alexander Udalov
c6263ac8e6
Support isInitialized intrinsic for lateinit properties
...
See https://github.com/Kotlin/KEEP/pull/73
#KT-9327 Fixed
2017-09-13 22:49:26 +03:00
Anton Bannykh
2249675e59
JS: throw exception when accessing uninitialized lateinit property (KT-14964)
2017-09-13 20:16:01 +03:00
Anton Bannykh
49bc9249a1
JS: add support for the ::foo syntax (callable reference with empty LHS)
2017-09-13 20:12:48 +03:00
Anton Bannykh
22dc36a596
JS: enable translation of primitive arrays to TypedArray's by default (KT-17137)
2017-09-13 18:45:19 +03:00
Zalim Bashorov
30c7f633bd
KJS: don't load declarations marked by PlatformDependent annotation
...
#KT-17450 Fixed
2017-09-13 02:18:43 +03:00
Dmitry Petrov
6b6d1e80f8
Fix enum entry reference from enum entry initialization context
...
Enum entries are "special" kind of singletons that should be
referenced as a captured 'this' instance inside during entry
initialization, because corresponding static fields in enum class
are not initialized yet.
#KT-7257 Fixed
2017-09-12 11:00:24 +03:00
Dmitry Jemerov
aed01c8475
Consistent naming: common platform is common, not default
2017-09-11 15:07:51 +02:00
Alexey Andreev
c90c3e4bf5
Add hack to make JS coercion compatible with older versions of stdlib
2017-09-11 14:34:35 +03:00
Alexey Andreev
0acc96c4f3
Translate reference to kotlin.Unit to a shorter JS code
2017-09-11 14:34:35 +03:00
Alexey Andreev
2656a6a513
Eliminate redundant RHS of JS comma expression
2017-09-11 14:34:34 +03:00
Alexey Andreev
37fa45dc34
Add mechanism for type coercion in JS
...
Use it for char boxing/unboxing and unit materialization.
Possible to use for other purposes, for example, to add type checks
to dynamics.
See KT-18793, KT-17915, KT-19081, KT-18216, KT-12970, KT-17014,
KT-13932, KT-13930
2017-09-11 14:34:34 +03:00
Dmitry Petrov
66ece54b25
Fix initialization of inner class instances in enum entries
...
In an inner class of the enum entry class, enum entry reference should
be generated as an outer 'this', not as a enum entry access, because
enum entry itself may be not initialized yet.
2017-09-11 09:42:18 +03:00
Alexey Andreev
24c6f5f0f0
JS: add test to prove that KT-19483 is no more reproducible
2017-09-08 18:27:43 +03:00
Alexey Andreev
c66bc0b0e9
Remap source maps in JS DCE. Improve JS DCE error logging
...
See KT-19821
2017-09-08 18:27:41 +03:00
Alexey Andreev
1350e3c4ac
JS: improve optimization of for loop over range literals
...
See KT-18329, partial fix for KT-8372
2017-09-08 18:27:40 +03:00
Alexey Andreev
502c51ccff
Sanitize names for backing fields and private declarations in JS BE
...
See KT-1816
2017-09-08 18:27:40 +03:00
Alexey Andreev
206369c088
JS: fix capturing of reified type parameters when used as class literals
...
See KT-19891
2017-09-08 18:27:39 +03:00
Alexander Udalov
2877314313
Support "::foo" as a short-hand for "this::foo"
...
#KT-15667 Fixed
2017-09-08 10:59:44 +03:00
Alexey Andreev
d2ff821a3b
JS: prove that lambdas in inline function compiled correctly
...
Obsoletes KT-19712
2017-09-08 10:57:42 +03:00
Alexey Andreev
ff0efe59f6
JS: fix error in generation of if/else statements in some cases
...
See KT-19495
2017-09-08 10:56:49 +03:00
Alexey Andreev
4779f4fefb
JS: don't mark access to captured var as pure
...
See KT-19108
2017-09-08 10:56:06 +03:00
Mikhael Bogdanov
2fa4c28e0f
Properly reorder arguments in anonymous object super class constructor
...
#KT-18356 Fixed
2017-09-07 15:18:05 +02:00
Alexey Andreev
5bf4540458
JS: fix inlining of functions derived from other modules
...
See KT-16408
2017-09-06 17:55:31 +03:00
Alexey Andreev
361d6dfca0
JS: rewrite source map generator to use specialized JSON writer
...
Fixes problems with string escaping. See KT-20005
2017-09-06 17:55:06 +03:00
Anton Bannykh
f4b329a055
JS: support @Before and @After annotations in kotlin.test
2017-09-06 14:36:45 +03:00
Dmitry Petrov
8c5d18c1f2
Tests for boxing optimization on KClass are JVM-specific
2017-09-06 14:20:05 +03:00
Dmitry Petrov
61faa068d4
Do not optimize == for KClasses in redundant boxing elimination
...
For primitive wrappers such as java.lang.Integer,
jlc = java.lang.Integer.class
jlt = java.lang.Integer.TYPE
!(ljc.equals(ljt))
However, in Kotlin corresponding KClass instances are equal.
#KT-17748 Fixed Target versions 1.1.50
#KT-17879 Fixed Target versions 1.1.50
2017-09-06 09:54:36 +03:00
Dmitry Petrov
21cdf9dd5b
Add cast to expected type in call-based in-expression generation
...
#KT-20106 Fixed
2017-09-05 15:32:53 +03:00
Mikhail Zarechenskiy
e7449a3584
Fix referencing inner class constructor on an outer class instance
...
#KT-12796 Fixed
2017-09-05 14:41:44 +03:00
Alexey Andreev
b8aa2f81a2
Fix delegate property name clash in JS BE
...
See KT-19542
2017-09-04 15:35:35 +03:00
Alexey Andreev
28c9d274ec
JS: prohibit illegal chars on dynamic call site
...
See KT-19540
2017-09-04 15:35:00 +03:00
Alexey Andreev
5a984a40e6
Fix JS compiler crash when translating external object fun with vararg
...
See KT-19793
2017-09-04 15:34:10 +03:00
Alexey Andreev
989cebe79e
JS: fix bug in temporary variable eliminator
...
The problem was in considering `a` as trivial in following case:
```
var a = b;
```
However, that's wrong assumption, since `b` can be temporary variable
itself which is further substituted by a non-trivial expression.
2017-09-04 15:33:16 +03:00
Alexey Andreev
abb254297a
Properly rename local name aliases when merging JS fragments together
2017-09-04 15:33:16 +03:00
Alexey Andreev
593aa72439
Fix bug in new JS inliner when inlining nested calls
2017-09-04 15:33:15 +03:00
Alexey Andreev
df7d69b5b4
Minor refactoring after improving JS inliner
2017-09-04 15:33:14 +03:00
Alexey Andreev
918ce78c5a
Support inlining internal functions to friend modules in JS BE
...
There's one exception: if an inline internal function calls
private function, this will fail at run time.
2017-09-04 15:33:13 +03:00
Alexey Andreev
41140d00b1
JS: do not copy declarations from inline function wrapper more than once
2017-09-04 15:33:13 +03:00
Alexey Andreev
1260146d25
Use local aliases for char boxing and unboxing in JS BE
2017-09-04 15:33:12 +03:00
Alexey Andreev
7646c2fc72
Use local aliases for Kotlin runtime functions in JS BE
2017-09-04 15:33:11 +03:00
Alexey Andreev
8c256b24dc
Avoid duplication of imports introduced during JS inlining
2017-09-04 15:33:10 +03:00
Alexey Andreev
f2b2e20331
Minor cleanup in JS backend
2017-09-04 15:33:10 +03:00
Alexey Andreev
b90885d1cb
Support new inline function format in JS DCE tool
2017-09-04 15:33:09 +03:00
Alexey Andreev
901346243d
JS: fix inlining of function that calls functions from other modules
2017-09-04 15:33:08 +03:00
Alexey Andreev
6bb5d00700
Fix inlining of default arguments in JS BE
2017-09-04 15:33:07 +03:00
Alexey Andreev
834cd1d93d
Fix testdata for new JS inliner
2017-09-04 15:33:07 +03:00