Commit Graph

241 Commits

Author SHA1 Message Date
Alexey Andreev 6b43465ed8 JS: add tests to check if super.equals/hashCode works properly
See KT-8226
2017-10-30 13:12:10 +03:00
Alexey Andreev e9e01b70a8 JS: fix super access to simple non-overridable properties
See KT-7653
2017-10-30 13:12:09 +03:00
Alexey Andreev 6adb62f3a2 JS: prohibit declaration names that clash with JS builtin functions
See KT-18095, KT-17475, KT-18105, KT-5259
2017-10-23 17:19:52 +03:00
Alexey Andreev e1f8bac4d5 JS: several bugfixes in incremental compilation
1. Fix exported packages sometimes being mixed up
2. Fix metadata losing package fragments sometimes
3. Don't serialize empty packages to .meta.js
4. Preserve order of package fragments in .meta.js
5. In IC tests, compare textual representation of metadata rather
   than binary representation
2017-10-23 17:19:51 +03:00
Alexey Andreev cb0482f53e JS: fix crash when js function contains for statement w/o initializer
Fix KT-20898
2017-10-23 17:19:49 +03:00
Alexey Andreev b781661279 JS: fix copying functions with default arguments across interfaces
Copy function to super interface first, then copy from interface
to class. Add interface set to JsClassModel for this purpose.

See KT-20625
2017-10-19 13:10:47 +03:00
Alexey Andreev d4ea4983d8 JS: support integer overflow semantics for unary minus operator
See KT-19290
2017-10-19 12:59:09 +03:00
Alexey Andreev 46526db8f0 JS: fix behaviour of char-returning functions with multiple inheritance
See KT-19772
2017-10-16 18:56:33 +03:00
Anton Bannykh b5d32f420d JS: correct Double and Float conversions to Int (KT-8374 fixed) 2017-10-13 20:29:28 +03:00
Anton Bannykh ac508a510e JS: Support isInitialized intrisic for lateinit properties 2017-10-11 19:23:49 +03:00
Alexey Andreev 06b1ba7c47 JS: use prototype when checking is against interface
See KT-20527
2017-10-11 17:35:31 +03:00
Alexey Andreev 8cdef4139e Fix JS DCE removing reachable functions 2017-10-10 18:59:18 +03:00
Alexey Andreev 8f9fc100a3 Fix compilation of JS stdlib
1. Don't import intrinsics when compiling stdlib, use declarations
   from current module instead
2. Add constructor with one argument to SourceFilePathResolver,
   to fix bootstrapping issues.
3. Pass correct source roots to compiler when building
   stdlib, since now we pass module root by default,
   while stdlib source roots are outside of module root.
2017-10-10 14:11:15 +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 93a3026c6d JS: improve representation of KClass for primitive types
See KT-17933, KT-17629, KT-17760
2017-10-06 15:21:38 +03:00
Alexey Andreev 27e319a279 JS: fix parsing of object literals in js() function.
Also, fix generation of source maps of content of js() function.

See KT-19794
2017-10-04 12:01:51 +03:00
Alexey Andreev bf87826dd1 JS: add test to prove that KT-15622 is no more reproducible 2017-09-29 14:32:47 +03:00
Alexey Andreev 3b2d634cea JS: optimize variable representation in coroutines
Don't convert local variables to fields of coroutine object
when variable is both used and defined in a single block.
2017-09-26 13:56:20 +03:00
Alexey Andreev b852f73dd2 JS: make string template optimization more conservative
See KT-18548
2017-09-26 13:56:20 +03:00
Alexey Andreev 95566b1374 JS: fix serialization of fileId in case of incremental compilation 2017-09-26 13:56:19 +03:00
Alexey Andreev ee4d790f43 JS: optimize default arguments in cross-module inliner
This reduces size of circlet UI (of approx 2.5 mb) by about 90 kb
2017-09-25 11:29:05 +03:00
Alexey Andreev e6ab3dc936 JS: generate aliases for intrinsics.
This makes generated code more friendly to UglifyJS.
For example, uglified circlet loses 15 kb.
2017-09-25 11:29:04 +03:00
Alexey Andreev c5e5a43f68 JS: fix unit materialization in case of null check and elvis operator
See KT-20287
2017-09-19 15:30:55 +03:00
Alexey Andreev b4c622d433 JS: optimize destructuring declaration when possible
See KT-8285
2017-09-19 15:30:26 +03:00
Alexey Andreev 9771a3c66e JS: prove that KT-8282 is no more reproducible 2017-09-18 13:13:00 +03:00
Alexey Andreev aa35d4ed36 JS: prove that KT-8315 is no more reproducible 2017-09-18 13:13:00 +03:00
Anton Bannykh 2249675e59 JS: throw exception when accessing uninitialized lateinit property (KT-14964) 2017-09-13 20:16:01 +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
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 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
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
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 b8aa2f81a2 Fix delegate property name clash in JS BE
See KT-19542
2017-09-04 15:35:35 +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 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 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 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 834cd1d93d Fix testdata for new JS inliner 2017-09-04 15:33:07 +03:00
Alexey Andreev eb6186b74d Fix translation of classes to work with new JS inliner 2017-09-04 15:33:05 +03:00
Alexey Andreev 7c421b0b83 Refactor JS translator to generate code for new inliner 2017-09-04 15:33:03 +03:00
Alexey Tsvetkov 1c4ada2008 Fix searching serialized classes package contains multiple fragments 2017-08-29 04:28:03 +03:00