Roman Artemev
a807397f65
[JS_IR] Add inlineBox tests
2018-09-21 14:02:53 +03:00
Anton Bannykh
6736987239
JS: fix unsigned literal inlining
2018-09-19 15:04:36 +03:00
Anton Bannykh
0660e4d616
[JS IR BE] support multimodule tests
2018-09-18 14:36:20 +03:00
Anton Bannykh
2e709a81fa
[JS IR BE] Arrays, varargs
2018-09-18 14:36:20 +03:00
Anton Bannykh
b389e29db5
JS: update DCE testdata
2018-09-12 09:49:25 +03:00
Anton Bannykh
779d9aafe7
JS: fix module aliasing for inline imports (KT-26466 fixed)
...
Consider an import from an inline function invocation. If it is
being called from another inline function, it should be defined
in a special way (e.g. `$$importsForInline$$.foo`) so that
the compiler knows where to load transitive dependencies from.
What's more, the declaration itself should be inside the inline
function wrapper.
Otherwise it should be defined in a regular way (e.g.
`$module$bar.foo` among other top-level imports).
By default the imports are loaded in the first form, and
transformed into the second one when needed. To check
whether this transformation the following predicate is
used: `inlineFunctionDepth == 0`.
At the moment the mentioned variable is increased upon
visiting an inline function declaration (`defineInlineFunction`),
and upon visiting an unknown (not visited before) inline function invocation.
It seems that instead the variable should be increased when processing
an existing inline function wrapper. At that point a new place to
put import definitions (`statementContextForInline`) is set.
Due to way JS code is generated (lambda's come before their call sites)
this issue seems to have been masked. Primary class constructors are a special
case - they come before any other declaration within. Hence a lambda
invocation inside a constructor leads to incorrect import definition.
2018-09-06 19:08:45 +03:00
Anton Bannykh
4e496cf2b2
JS: don't throw AssertionError from RedundantCallElimination
...
Also mark JS `call` function to avoid removing a custom `call`
2018-08-23 14:44:40 +03:00
Anton Bannykh
04b04f919d
JS: fix complex nested cross-module inlining (KT-26117 fixed)
2018-08-21 20:42:02 +03:00
Ilya Gorbunov
ebc64da52a
Update EXPECTED_REACHABLE_NODES after introducing top-level comparator
...
#KT-18067
2018-08-15 21:28:57 +03:00
Svyatoslav Kuzmich
392ad521fd
[JS IR BE] Reflection support
2018-08-15 13:35:14 +03:00
Zalim Bashorov
2fb286e39c
[JS IR BE] Update tests
2018-07-31 11:28:39 +03:00
Svyatoslav Kuzmich
625983b28a
[JS IR BE] Enum class lowering
2018-07-23 15:08:18 +03:00
Roman Artemev
e4b314c26c
Fix inlining of invoke operator [#KT-25474]
...
* add test
2018-07-18 16:12:41 +03:00
Svyatoslav Kuzmich
1abb4f42ac
[JS IR BE] Add ranges to runtime, rangeTo for primitive numbers
2018-07-17 20:18:29 +03:00
Anton Bannykh
07b3b66fd9
JS IR: unmute tests
2018-07-10 13:34:19 +03:00
Anton Bannykh
04a2ffc0c1
JS IR: unmute tests
2018-06-21 13:27:17 +03:00
Anton Bannykh
b551afb202
JS IR: minor fix for callable ref translation
...
The caching variable has to have no initializers so that there is no
dependence on evaluation order.
2018-06-18 13:15:19 +03:00
Anton Bannykh
43e3314255
JS IR: Remove inline functions with reified type parameters
...
Otherwise we cannot handle type casts
2018-06-18 13:15:19 +03:00
Anton Bannykh
3808d77bf4
JS IR: inliner
2018-06-18 13:15:19 +03:00
Roman Artemev
6ac4fd2e5f
[JS IR BE] Update test data
2018-06-14 19:54:30 +03:00
Svyatoslav Kuzmich
563637548a
KJS: Fix loop levels in ContinueReplacingVisitor (KT-24777)
2018-06-07 12:57:36 +03:00
Svyatoslav Kuzmich
2ec8c4aae6
KJS: Label loops in LabeledBlockToDoWhileTransformation
...
Fix KT-24542: insert labes for affected loops, breaks and continues
statements during LabeledBlockToDoWhileTransformation
2018-06-07 12:57:36 +03:00
Roman Artemev
84447d59e1
[JS IR BE] Update test data
2018-05-24 21:07:25 +03:00
Roman Artemev
d9fdddceb9
Update test data
2018-04-27 20:02:59 +03:00
Roman Artemev
61e051cafa
Update test data
2018-04-24 14:04:16 +03:00
Zalim Bashorov
d03a128aa5
[JS IR BE] mute failed tests
2018-04-19 13:17:28 +03:00
Alexey Andreev
3b3fd0fa0d
JS: fix DCE limits in test data to fit new kotlin.js size
...
The size has increased due to new implementation of KClass
2017-10-06 18:16:51 +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
abb254297a
Properly rename local name aliases when merging JS fragments together
2017-09-04 15:33:16 +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
b90885d1cb
Support new inline function format in JS DCE tool
2017-09-04 15:33:09 +03:00
Alexey Andreev
7c421b0b83
Refactor JS translator to generate code for new inliner
2017-09-04 15:33:03 +03:00
Anton Bannykh
e43a145614
fixup: updated EXPECTED_REACHABLE_NODES
2017-07-19 12:24:09 +03:00
Alexey Andreev
e2c2fcf1ff
Generate EXPECTED_REACHABLE_NODES directive on JS box tests
2017-05-26 18:20:20 +03:00
Alexey Andreev
9aeba1d5cf
JS: fix names in stdlib and tests WRT to new mangling algorithm
2017-01-24 20:11:29 +03:00
Alexey Andreev
2907eafa18
JS: make functions called call to inline properly. See KT-7004
2017-01-12 18:12:39 +03:00
Alexey Andreev
c285e5ba3b
JS: add tests too prove that operator conventions are correctly inlined. Support inlining of invoke operator. See KT-7588
2016-12-20 15:47:39 +03:00
Alexey Andreev
eb5c79c70d
JS: support int overflow behaviour in augmented assignment
2016-12-20 15:47:38 +03:00
Alexey Andreev
c411a8febe
JS: update tests
2016-12-20 15:47:37 +03:00
Alexey Andreev
446c4c0a33
JS: provide overflow behaviour for int binary operations (see KT-7733)
2016-12-20 15:47:36 +03:00
Alexey Andreev
22ff7c6c45
JS: when translating content of js() function, rename all free references if they point to Kotlin local variable with the same name. See KT-15212
2016-12-17 12:12:36 +03:00
Zalim Bashorov
b42fe06933
KJS: fix compiler crash when using inline function inside string template
...
#KT-12586 Fixed
2016-12-15 14:49:31 +03:00
Alexey Andreev
39de1a7659
JS: generate temporary names for function parameters. Remove tests for js() function that references parameters. Remove such usages of js() function from stdlib
2016-12-12 14:30:45 +03:00
Alexey Andreev
3882bf7564
JS: prohibit native (external) extension properties and functions. See KT-13896
2016-12-09 15:13:07 +03:00
Alexey Andreev
68412ae94f
JS: replace all usages of @native annotation with external modifier, in tests, stdlib, etc
2016-12-08 15:41:39 +03:00
Alexey Andreev
20396b0e5f
JS: fix inlining in a new flat JS generator
2016-11-11 16:26:32 +03:00
Alexey Andreev
9c7c82b151
KT-2752: refactor NameSuggestion, change rules for determining name stability and applying mangling
2016-10-08 19:25:50 +03:00
Alexey Andreev
33daf83f14
KT-2752: refactoring:
...
1. Get rid of most of ManglingUtils
2. Use simple mangling for delegated properties instead of stable mangling
3. Use stable mangling for public declarations of open non-public classes
4. When generating a fresh name in a JsScope, check it for clashing against parent scopes
5. JsFunctionScope does not generate fresh name instead of stable names
6. Function scopes inherit directly from global scope
7. Generate simple mangled names for backing fields of properties
2016-10-08 19:25:36 +03:00
Alexey Andreev
f70b50b6e2
KT-2752: refactor generation of FQN in JS. Move backend-independent code to generic code in frontend.
2016-10-08 19:25:25 +03:00
Alexey Andreev
2bf0199959
JS: create new common directory for all generated tests, migrate several tests there
2016-09-29 12:00:39 +03:00