Stanislav Erokhin
8968bc3dd6
RestrictSuspension -> RestrictsSuspendExtensions
...
(cherry picked from commit 9e0c733)
2016-12-15 23:58:24 +03:00
Denis Zharkov
c73b0d7b76
Move coroutine intrinsics to object (backend's)
2016-12-15 23:58:23 +03:00
Roman Elizarov
7b079bd1f7
Renaming after DM
2016-12-15 23:58:22 +03:00
Denis Zharkov
31081c6702
Minor. Revert some hacks that became unnecessary after interceptResume removal
2016-12-15 23:58:21 +03:00
Alexey Andreev
e2d969d8b0
JS: implement new coroutine convention
2016-12-15 23:58:20 +03:00
Dmitry Petrov
9fd1ac72a9
Purge remaining traces of @AllowSuspendExtensions.
2016-12-15 23:58:19 +03:00
Stanislav Erokhin
5a353412e4
Fixed KeywordCompletionTests.
2016-12-15 23:58:18 +03:00
Mikhail Zarechenskiy
2ff04f2bc5
Import kotlin.coroutines property from gradle to facet
2016-12-15 23:58:17 +03:00
Dmitry Petrov
f19581dc4d
Suspend lambdas can't have value parameters (UNSUPPORTED in M04).
2016-12-15 23:58:16 +03:00
Stanislav Erokhin
c5aeaae8e6
Support explicit this receiver (this.foo()) for RestrictSuspension function call.
2016-12-15 23:58:15 +03:00
Dmitry Petrov
8e3fd0efc3
If the last argument of a function is a suspend function,
...
suggest trailing lambda variant in completion.
2016-12-15 23:58:14 +03:00
Stanislav Erokhin
f9d550732e
Minor. remove useless call.
2016-12-15 23:58:13 +03:00
Mikhail Zarechenskiy
4b892b1c9c
Report corresponding diagnostic on suspend lambda
2016-12-15 23:58:13 +03:00
Stanislav Erokhin
b88c8ea2e7
Support checks for annotation RestrictSuspension.
2016-12-15 23:58:12 +03:00
Mikhail Zarechenskiy
d1a3c4c48b
Fix description of -Xcoroutines key
2016-12-15 23:58:11 +03:00
Mikhail Zarechenskiy
feefe8d6ff
Propagate coroutine settings support from facet into the language version settings
2016-12-15 23:58:10 +03:00
Mikhail Zarechenskiy
091756b221
Adapt facet, map coroutine settings on three keys
2016-12-15 23:58:09 +03:00
Alexey Sedunov
9460426d26
Kotlin Facet: Add coroutine support setting
2016-12-15 23:58:08 +03:00
Mikhail Zarechenskiy
664485f4bb
Introduce keys to control applicability of coroutines
...
By default now we produce warnings on coroutines
2016-12-15 23:58:07 +03:00
Dmitry Petrov
30710955dc
Minor: 'vararg' is a modifier on value parameters of functional types.
2016-12-15 23:58:06 +03:00
Dmitry Petrov
80bd916f5d
'SuspendFunction$n' should not be visible in member scopes (should be unresolved).
...
'SuspendFunction$n' class descriptors are created on demand by KotlinBuiltIns (and cached).
On serialization, types constructed with 'SuspendFunction$n' are written as 'Function$n' with extra flag (SUSPEND_TYPE).
On deserialization, corresponding 'SuspendFunction$n' classes are used.
2016-12-15 23:58:05 +03:00
Roman Elizarov
a70ac0160d
fixed runWithCurrentContinuation
2016-12-15 23:58:04 +03:00
Denis Zharkov
85db356611
Minor. Drop test on coroutine applicability
2016-12-15 23:58:03 +03:00
Denis Zharkov
4737b3dd7f
Update stubBuilder/deserialization tests on coroutines
2016-12-15 23:58:02 +03:00
Dmitry Petrov
a3338b2230
Allow only 'out' modifier for value parameter modifiers in functional type
...
(comments also mention 'lazy' and 'ref'; these value parameter modifiers are unsupported, anyway).
2016-12-15 23:58:02 +03:00
Dmitry Petrov
eec96f1954
Extension functions & inference.
2016-12-15 23:58:01 +03:00
Denis Zharkov
845e116aa9
Update bytecodeText and bytecodeListing tests on coroutines
2016-12-15 23:58:00 +03:00
Denis Zharkov
8387d04425
Revert "Add special tests for interceptRun support"
...
This reverts commit 01c21e218a .
2016-12-15 23:57:59 +03:00
Denis Zharkov
7ffefb515f
Update test data for LightAnalysis/Coroutines
2016-12-15 23:57:58 +03:00
Stanislav Erokhin
6b4cdee887
Fix deserialization for SuspendFunction.
2016-12-15 23:57:57 +03:00
Stanislav Erokhin
42440f50dc
Remove soft keyword coroutine & isCoroutine from ValueParameterDescriptor.
2016-12-15 23:57:56 +03:00
Stanislav Erokhin
55983a7808
Support type inference for coroutines.
2016-12-15 23:57:55 +03:00
Stanislav Erokhin
509a504318
Update test data for LookupTracker (removed package kotlin.coroutines from default imports)
2016-12-15 23:57:54 +03:00
Stanislav Erokhin
34a4159a94
Added coroutine import to front-end tests.
2016-12-15 23:57:53 +03:00
Stanislav Erokhin
e014fb7181
Added coroutine import to back-end test.
2016-12-15 23:57:52 +03:00
Stanislav Erokhin
0132f3eea7
Remove kotlin.coroutine package from default imports.
2016-12-15 23:57:51 +03:00
Stanislav Erokhin
7d1b883171
Replace @Suspend to suspend in box tests.
2016-12-15 23:57:50 +03:00
Stanislav Erokhin
90586a5a22
Minor. Add some new test cases for suspend function type inside suspend function type.
2016-12-15 23:57:49 +03:00
Stanislav Erokhin
2671826ed1
Fix front-end test data: replace @Suspend -> suspend.
2016-12-15 23:57:49 +03:00
Stanislav Erokhin
3ea24cbe08
Regenerate DiagnosticsTestGenerated
2016-12-15 23:57:48 +03:00
Stanislav Erokhin
642ea81625
Remove annotation Suspend. Use modificator instead.
2016-12-15 23:57:47 +03:00
Dmitry Petrov
6d73e13798
Generic type arguments inference for lambdas as suspend functions.
2016-12-15 23:57:46 +03:00
Dmitry Petrov
bf987cff5f
Tests for basic SuspendFunction-related restrictions (already implemented within type system)
2016-12-15 23:57:45 +03:00
Dmitry Petrov
bc069cd686
Lambda in position with suspend function expected type:
...
simple case - val initializer.
2016-12-15 23:57:44 +03:00
Dmitry Petrov
9dc458375a
Build proper modifier list stubs for 'SuspendFunction$n<...>' types.
2016-12-15 23:57:43 +03:00
Dmitry Petrov
cf4fb1eb25
Since '@A R.() -> T' is now parsed as '@A (R.() -> T)',
...
receiver type with modifiers or annotations should be surrounded in parentheses on rendering: '(@A R).() -> T'
This also fixes stub builder tests (which check that stubs are consistent with rendered descriptors).
2016-12-15 23:57:42 +03:00
Dmitry Petrov
6e1340da82
Introduce 'SuspendFunction$n<...>' types.
2016-12-15 23:57:41 +03:00
Dmitry Petrov
a15d423db4
Support modifiers on types in parser
...
(required for 'suspend' on functional types).
TYPE_REFERENCE element now has MODIFIER_LIST child, which hosts annotations and modifiers for the corresponding type reference.
Annotations and modifiers written before an extension function type are now parsed as annotations and modifiers for the functional type, not the receiver type.
So, '@Ann A.(B) -> C' was '(@Ann A).(B) -> C', and became '@Ann (A.(B) -> C)'.
NB: DSL_SCOPE_VIOLATION testData updated accordingly.
Type projection variance modifiers ('in', 'out') belong to a separate modifier list under corresponding type projection (not under a type reference).
'A<in suspend T>' is 'A<(in (suspend T))>', 'A<suspend in T>' is an error.
In stub builder, create a modifier list node to host annotations and modifiers (none so far; TODO properly serialize/deserialize types with modifiers).
2016-12-15 23:57:41 +03:00
Denis Zharkov
6649f64e9f
Support new coroutine convention in JVM backend
2016-12-15 23:57:40 +03:00
Denis Zharkov
5a6b4a3224
Fix compilation
2016-12-15 23:57:22 +03:00