Commit Graph
100 Commits
Author SHA1 Message Date
Alexey Andreev 93f8542fc4 JS: serialize location of JsCase/JsDefault
See KT-21699
2017-12-11 17:20:15 +03:00
Alexey Andreev 25e56874c1 JS: readable error when source maps change in IC tests 2017-12-11 17:20:15 +03:00
Alexey Andreev 45e5cc190f Update DCE limits in JS tests 2017-12-04 11:25:39 +03:00
Alexey Andreev 9c0e049bbe JS: fix boxed char with latest changes in compiler 2017-12-01 15:20:34 +03:00
Alexey Andreev af6adc61ae Update bootstrap to 1.2.20-dev-524 2017-11-30 15:27:41 +03:00
Alexey Andreev acb058f328 JS: fix bootstrap build error related to updates in source maps 2017-11-30 14:26:05 +03:00
Alexey Andreev 063b4b6c18 Remove unused 'json-org' dependency (fix build) 2017-11-30 11:43:44 +03:00
Alexey Andreev 1d48442a5d Change default output dir in JS DCE Gradle plugin
See KT-21328

Compiler removes all files from its output directory.
Due to this reason (and some other reasons) it't not a good idea
to put DCE output to `classes` dir.
Therefore we changed output dir to `$buildDir/kotlin-js-min`.
Additionally, we now allow to customize output dir.
In particular, this fixes issues with webpack in multi-project build +
continuous Gradle build.
2017-11-29 20:08:30 +03:00
Alexey Andreev 5672e1f56e JS: add DCE devmode. Fix mapping paths in source maps
See KT-20210, KT-21307
2017-11-29 20:08:30 +03:00
Alexey Andreev ffdebfab45 JS: change the way how DCE resolves input paths 2017-11-29 20:08:29 +03:00
Alexey Andreev 8514a7706f Remove json.org library, use own JSON parser to parse source maps 2017-11-29 20:08:29 +03:00
Alexey Andreev 729715ec62 Add simple JSON parser 2017-11-29 19:43:28 +03:00
Alexey Andreev 19438a3a07 JS: fix losing lambda in inline function after incremental compilation
See KT-21493

It's hard to maintain staticRef in cached AST. In fact, we don't need
it in this optimization. We'll get excessive names in used set,
which is ok: non-function names don't matter, they'll be simply ignored.
One possible concern: there's more chance to get name same to
some function's name and it won't be removed. First, it's not fatal,
it won't break the code (but put some excessive code that will likely
be removed by DCE). Second, there's same chance of two functions
having same names, and we manage to avoid this (otherwise we'll get
many problems).
2017-11-29 11:53:35 +03:00
Alexey Andreev 29b494cdac JS: don't optimize when over external enum
See KT-21468
2017-11-29 11:52:36 +03:00
Alexey Andreev 7bee2ceac7 JS: add boxing/unboxing to default accessors of non-simple properties
See KT-21421
2017-11-27 17:01:19 +03:00
Alexey Andreev be4e2f96c2 JS: throw error from coroutine marker functions 2017-11-27 17:01:18 +03:00
Alexey Andreev 71b1591044 JS: replace suspend inline metadata after inlining
This fixes some issues on coroutine inlining, see tests
2017-11-27 17:01:18 +03:00
Alexey Andreev f8e7861ce6 JS: add partial tail-call optimization for suspend functions 2017-11-27 17:01:17 +03:00
Alexey Andreev 7c621488ad Remove unnecessary CONTAINS_NON_TAIL_SUSPEND_CALLS slice 2017-11-27 17:01:17 +03:00
Alexey Andreev 26843509c7 JS: disable suspend function tail-call optimization based on FE data
Partially fixes KT-21026
2017-11-27 17:01:16 +03:00
Alexey Andreev 6ab87ad66a Fix failing JS tests 2017-11-27 17:01:15 +03:00
Alexey Andreev ec8adfe7c4 JS: fix referencing outer class from secondary constructor
See KT-21041
2017-11-21 12:22:10 +03:00
Alexey Andreev 88441da131 JS: cache PropertyMetadata objects in property delegates
Also, remove unused PropertyMetadata instances

See KT-20737, KT-20738
2017-11-21 12:21:22 +03:00
Alexey Andreev 7ebfba3722 JS: apply boxing when initializing val parameter of type Char
See KT-20854
2017-11-21 12:20:01 +03:00
Alexey Andreev 32a0221474 JS: refactor code that copies default methods in interfaces to classes
Als fixes KT-21245
2017-11-21 12:18:16 +03:00
Alexey Andreev 38e50e964a JS: fix generation of source map for inline lambda with ignored result
See KT-21309
2017-11-21 12:15:25 +03:00
Alexey Andreev a9548b1224 JS: fix translation of safe calls to suspend unit functions
See KT-21317
2017-11-20 19:19:24 +03:00
Alexey Andreev 89db4dfe79 JS: translate when against enum to JsSwitch when possible 2017-11-17 11:07:41 +03:00
Alexey Andreev c54c4a6ce8 JS: fix support of JsSwitch in coroutines 2017-11-17 11:07:39 +03:00
Alexey Andreev 678b4c67c1 JS: translate when to JsSwitch when possible
See KT-21160
2017-11-17 11:07:38 +03:00
Alexey Andreev 7b403211dd JS: kotlinize WhenTranslator 2017-11-17 11:07:37 +03:00
Alexey Andreev b93acb07d2 JS: don't remove debugger statement from coroutine
See KT-19826
2017-11-17 11:07:36 +03:00
Alexey Andreev 21de76f88d JS: fix identifier generation in delegate constructor calls
See KT-21093
2017-11-17 11:07:34 +03:00
Alexey Andreev f51709e61c Clean-up application from EncodeSignatureTest
Hopefully, this fixes random failing tests
2017-11-08 16:13:07 +03:00
Alexey Andreev 779af375a7 JS: fix inlining of array constructor expressed via typealias
See KT-20978
2017-11-08 16:12:16 +03:00
Alexey Andreev ec53f9b254 JS: don't emit short circuit operators for boolean and/or
See KT-21004
2017-11-08 16:10:57 +03:00
Alexey Andreev 132285ea03 JS: optimize loop over array.withIndex()
See KT-20932
2017-11-03 17:36:05 +03:00
Alexey Andreev 1be86e05ae JS: optimize range check for int and long
See KT-2218

Additionally, fix temporary variable elimination for && and ||
2017-11-03 17:35:17 +03:00
Alexey Andreev 43302ce00c JS: add missing members to kotlin.js.Date
See KT-20694
2017-11-03 17:31:25 +03:00
Alexey Andreev 0a31b4ccc1 JS: improve declarations for JSON object
See KT-20580
2017-11-03 17:31:22 +03:00
Alexey Andreev bd7129d0d6 JS: fix non-abstract extension properties in interfaces
KT-20994
2017-11-03 17:29:44 +03:00
Alexey Andreev 1f643ddce8 JS: add test to prove that KT-11910 is not reproducible anymore 2017-10-30 13:12:12 +03:00
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 e488cf13ad JS: fix FE crashing when type argument count less than parameter count
See KT-20908
2017-10-30 13:10:35 +03:00
Alexey Andreev a6e98c30d7 JS: fix crash when js function contains assignment with bad LHS
Fix KT-20905
2017-10-30 13:08:35 +03:00
Alexey Andreev bbcf4f7caf JS: raise metadata version due to incompatible changes in 1.2 runtime 2017-10-25 20:18:04 +03:00
Alexey Andreev 85945e0a6d JS: add getFunctionById intrinsic 2017-10-25 20:18:04 +03:00
Alexey Andreev aae67e154a JS: add intrinsic for !!. Use it instead of ternary conditionals
See KT-2976
2017-10-25 20:18:03 +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 e0eea15a4c Fix JS tests failing on Windows 2017-10-23 17:19:51 +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 1079d74422 Support generation of relative path in JS source maps in JPS builder
See KT-20820

Original commit: 2fbecfdd9c
2017-10-23 17:19:50 +03:00
Alexey Andreev 2fbecfdd9c Support generation of relative path in JS source maps in JPS builder
See KT-20820
2017-10-23 17:19:50 +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 d9d565d8b0 JS: use 'external' word instead of 'native' in diagnostic messages
See KT-20639
2017-10-23 17:19:48 +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
Alexey Andreev 8a8891d7c9 Fix Kotlin/JS compiler under JRE9
See KT-20653, KT-20650
2017-10-12 14:39:47 +03:00
Alexey Andreev fd1aa97d0c Enable test that now passes in JS 2017-10-11 17:35:32 +03:00
Alexey Andreev cddc8df134 Fix Scala code style options 2017-10-11 17:35:32 +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 eaa8729259 Fix embedding sources to source maps when compiling JS stdlib 2017-10-06 18:26: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 2cf01f60b3 JS: generate paths in source maps relative to .map file location
See KT-19818

Original commit: 9008791a54
2017-10-06 15:24:25 +03:00
Alexey Andreev 9008791a54 JS: generate paths in source maps relative to .map file location
See KT-19818
2017-10-06 15:24:25 +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 c15847a957 JS: support non-local return from secondary constructor
See KT-14549
2017-10-04 12:00:53 +03:00
Alexey Andreev e323da3c5e Fix compilation of Maven JS plugin 2017-10-03 17:23:02 +03:00
Alexey Andreev 10f7f61991 Fix compilation of Gradle JS task 2017-10-03 14:50:24 +03:00
Alexey Andreev d42ddff160 JS: rename -source-map-source-roots to -source-map-base-dirs
See KT-19906

Original commit: 21e91c4052
2017-10-03 14:26:37 +03:00
Alexey Andreev 21e91c4052 JS: rename -source-map-source-roots to -source-map-base-dirs
See KT-19906
2017-10-03 14:26:37 +03:00
Alexey Andreev 0269c3309a JS: fix parsing of wrong delete operation in js function.
See KT-15294
2017-09-29 14:32:49 +03:00
Alexey Andreev bad50c03a7 JS: support cross-module inlining of suspend functions
See KT-18063
2017-09-29 14:32:49 +03:00
Alexey Andreev 992cc61abc JS: prove that KT-15292 is no more reproducible 2017-09-29 14:32:48 +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 43c6f8b9b1 JS: fix copying fun with default args from interface to abstract class
See KT-20451
2017-09-29 14:32:47 +03:00
Alexey Andreev 3b5c2bbcaa Add Gradle task to run JS tests without DCE
This should be helpful when frequently testing changes in JS BE.
2017-09-27 14:22:15 +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 ca014468ee JS: improve name clash checker to handle complicated cases
See KT-18010
2017-09-26 13:56:19 +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 a2bfaf4fc8 Fix multiplatform test (use expect/actual instead of header/impl) 2017-09-19 15:21:30 +03:00
Alexey Andreev d312996f3a JS: generate import statement for COROUTINE_SUSPENDED property
This makes code with lots of corutines more feasible for uglification
2017-09-18 13:13:40 +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
Alexey Andreev 6ba0ac1238 JS: prove that KT-7011 is no more reproducible 2017-09-18 13:12:59 +03:00
Alexey Andreev a66cd8b309 Fix name clash in JS implementation of multiplatform extension property
See KT-18756
2017-09-18 13:10:51 +03: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