Commit Graph

228 Commits

Author SHA1 Message Date
Mikhail Zarechenskiy 38a2518498 Fix computation of erased receiver for intersection types
#KT-9630 Fixed
2016-12-26 22:34:40 +03:00
Alexey Andreev 1ecd957981 JS: fix translation of delegated constructor call from secondary constructor when argument is a complex expression which translates to multiple statements. See KT-15357 2016-12-22 17:19:24 +03:00
Alexey Andreev cef32b3327 JS: initialize fields of coroutine state machine with undefined value so that they match local variable semantics. Fix KT-15366 2016-12-22 17:19:23 +03:00
Mikhael Bogdanov ef825a7559 Fix for KT-14868: CCE in runtime while converting Number to Char
#KT-14868 Fixed
2016-12-22 09:44:24 +01:00
Denis Zharkov 8475869fb3 Support common calls on suspend function typed values
Also support multiple value parameters in suspend function type

 #KT-15379 Fixed
 #KT-15380 Fixed
2016-12-22 11:15:52 +03:00
Dmitry Petrov 8fe9de1d35 Generate toArray methods defined in classes inherited from collections as public even if they are declared with different visibility in Kotlin. 2016-12-21 10:50:17 +03:00
Denis Zharkov a1ac77d382 Support async iterator case with coroutines
Not all the `hasNext` operators return types is exactly Z,
suspend operators return boxed versions.

So the fix is just coercing result value after invoked function to Z
2016-12-19 11:07:33 +03:00
Denis Zharkov 5dbc04abbb Refine returns codegen for suspend functions
This change should make the logic a bit more simple.
For all suspend functions/coroutines treat them in expression codegen
like they return boxed version of the original type.

Everything works fine then, except Unit type functions:
their bodies must be generated just like they're VOID and then load
Unit on stack manually.
2016-12-19 11:07:32 +03:00
Alexander Udalov 49de52e7ef Fix kotlinFunction for inline reified methods in reflection
Inline functions with reified type parameters are generated as private (see
AsmUtil.specialCaseVisibility), so we should treat them as "declared" in
reflection to look them up via getDeclaredMethod, not getMethod

 #KT-14721 Fixed
2016-12-16 13:12:41 +03:00
Stanislav Erokhin d7566d84d0 Fixed testdata. 2016-12-16 02:01:12 +03:00
Stanislav Erokhin 957af61464 Regenerate test generated. 2016-12-15 23:58:28 +03:00
Dmitry Petrov 9fd1ac72a9 Purge remaining traces of @AllowSuspendExtensions. 2016-12-15 23:58:19 +03:00
Denis Zharkov 6649f64e9f Support new coroutine convention in JVM backend 2016-12-15 23:57:40 +03:00
Alexey Andreev b50bfaf071 JS: add test to prove that KT-14419 is not more reproducible. Add test to prove that extension delegate with extension getValue is translated correctly. 2016-12-15 19:05:33 +03:00
Mikhail Zarechenskiy 5a829809d9 Add operator 'rem' as extension to BigInteger
#KT-14650 Fixed

 Note that after this change behaviour of '%' on BigInteger is changed,
now it works like a proper remainder
2016-12-14 15:29:00 +03:00
Alexey Andreev d9cf15a665 JS: deparenthesize LHS of assignment before choosing appropriate AccessTranslator. Fix KT-15169 2016-12-13 14:05:25 +03:00
Stanislav Erokhin 9dc9fb578f Rename toDelegateFor to provideDelegate. 2016-12-12 23:14:07 +03:00
Mikhael Bogdanov 937a933150 Support local 'toDelegatedFor' properties 2016-12-12 23:14:02 +03:00
Mikhael Bogdanov c5e14a2059 Some new tests for 'toDelegateFor' 2016-12-12 23:14:01 +03:00
Dmitry Petrov 97d5bbf1c2 toDelegateFor: JVM BE implementation 2016-12-12 23:13:59 +03:00
Dmitry Petrov 5ddf8e60e6 Use delegate initializer expression resolution scope for 'toDelegateFor' resolution. 2016-12-12 23:13:57 +03:00
Mikhail Zarechenskiy 97ca51381a Gradual migration of operator 'mod' to 'rem'
- Introduce new 'rem' operator convention
 - Prefer 'rem()' to 'mod()' when both are available, even if mod() is a
   member, and rem() -- an extension
 - Place operator 'rem' under the language feature
2016-12-09 16:43:35 +03:00
Alexey Andreev cf25e17209 JS: add tests that emulates promises and wraps them in coroutines, using suspend functions outside of controller 2016-12-09 14:56:21 +03:00
Alexey Andreev 060f08a8dd JS: add support of interceptResume function in coroutine controller 2016-12-09 14:56:20 +03:00
Mikhael Bogdanov 18cb734c58 Do not mangle internal @PublishedApi functions 2016-12-09 11:55:16 +01:00
Mikhael Bogdanov 627dd66ed5 New ieee754 arithmetic, Fix for KT-14651: Floating point comparisons shall operate according to IEEE754 2016-12-09 09:48:46 +01:00
Alexander Udalov c811c1bea5 Reflection: add KAnnotatedElement.findAnnotation
#KT-12250 Fixed
2016-12-07 21:45:24 +03:00
Mikhail Zarechenskiy 0134b8819b Optimize const vals by inlining them at use sites
#KT-11734 Fixed
 #KT-13570 Fixed
2016-12-05 22:11:33 +03:00
Alexey Andreev 784fe31053 JS: fix translation of calls with aliased labeled lambda arguments. Fix KT-14999 2016-12-05 09:19:06 +03:00
Denis Zharkov fcd9ee037e Support coroutines stack-unwinding in JVM backend
#KT-14924 In Progress
2016-11-29 14:14:50 +03:00
Anton Bannykh 159df7964a JS: bound callable references (KT-13573). 2016-11-28 16:33:58 +03:00
Dmitry Petrov 3d2696c81b KT-13440 Bound callable references in reflection 2016-11-25 16:11:18 +03:00
Dmitry Petrov 5879e201cd Proper equality comparison for bound callable references represented as reflection objects
(including references to property accessors).
2016-11-25 14:49:24 +03:00
Dmitry Petrov 3dd0c9d1c7 Equality comparison for bound callable references takes into account bound receiver.
Fixed KT-14939: use expected receiver type when generating receiver code in get/set methods for bound property references.
Otherwise we have VerifyError for bound receiver 'null' of type 'Nothing?', which is mapped to 'java.lang.Void'.

TODO: proper equality comparison for property accessors ('x::prop.getter', 'x::prop.setter').
2016-11-25 14:49:24 +03:00
Alexey Andreev 40e00a62f5 JS: fix translation of augmented assignment when RHS changes value of LHS 2016-11-23 12:19:03 +03:00
Alexey Andreev dc8e90809c JS: coroutines: fix handling of throw statement inside try/catch block when controller has handleSuspend function 2016-11-23 12:19:02 +03:00
Dmitry Petrov d665193c20 Type alias constructors for inner classes in expressions ans supertype lists. 2016-11-21 10:25:51 +03:00
Dmitry Petrov 4c47d77a9f Report error on non-top-level type aliases (unsupported in 1.1).
Get rid of nested type aliases in project.
2016-11-21 10:25:51 +03:00
Anton Bannykh 2f0bccfb09 JS: chained reified function calls (KT-12527) fixed 2016-11-18 13:48:16 +03:00
Dmitry Jemerov d3ccbe8172 Generate correct varargs flag for @JvmOverloads-generated methods
#KT-14186 Fixed
2016-11-18 11:04:59 +01:00
Dmitry Jemerov 16a133bf5c Generate default constructor also for private classes when all parameters have default values
#KT-14408 Fixed
2016-11-18 11:04:51 +01:00
Dmitry Jemerov 248185943c Handle @JvmOverloads on inner class constructors correctly
#KT-14678 Fixed
2016-11-18 11:04:49 +01:00
Dmitry Petrov 8b99141030 KT-14839 Do not coerce after remapped variable store. 2016-11-18 09:35:31 +03:00
Anton Bannykh 5b078fb236 JS: augmented assignments and increments (KT-14810) fixed 2016-11-17 13:21:49 +03:00
Alexey Andreev e2dc7ba37e JS: coroutines: fixes after code review 2016-11-16 19:29:39 +03:00
Alexey Andreev d41d09ffc4 JS: add metadata for generated continuation classes to properly implement RTTI 2016-11-16 19:29:37 +03:00
Alexey Andreev 2d315c3df8 JS: coroutines: fix translation of try/finally block without catch 2016-11-16 19:29:35 +03:00
Alexey Andreev 22aea1cf12 JS: fix translation of return statement surrounded by finally block. Temporarily suppress corresponding test case for JVM backend 2016-11-16 19:29:34 +03:00
Alexey Andreev eae0ceed86 JS: add coroutines tests 2016-11-16 19:29:34 +03:00
Denis Zharkov 6fca46a452 Allow inferring property type from its getter
#KT-550 Fixed
2016-11-15 09:30:13 +03:00