Dmitry Petrov
a4267f069d
Codegen should just skip (local) type alias declarations.
2016-06-10 10:25:10 +03:00
Dmitry Petrov
c04b16d6cc
Type parameters for type alias constructor are declared type parameters for type alias
...
(no implicit type parameters from containing scopes).
2016-06-10 10:25:09 +03:00
Dmitry Petrov
bcd1df4efe
More tests for type alias constructor type parameters.
2016-06-10 10:25:09 +03:00
Dmitry Petrov
6924ed53ec
Local type aliases: resolve
2016-06-10 10:25:09 +03:00
Dmitry Petrov
9a7bbc1516
Type alias shouldn't expand to a malformed type (e.g., 'Array<Nothing>').
2016-06-10 10:25:09 +03:00
Dmitry Petrov
d02785806d
Type alias shouldn't capture type parameters of inaccessible outer classes.
2016-06-10 10:25:09 +03:00
Dmitry Petrov
12710bec2f
Redeclaration errors for type aliases: type alias vs function.
2016-06-10 10:25:08 +03:00
Dmitry Petrov
5ad4c8b9c7
Redeclaration errors for type aliases: type alias vs property.
2016-06-10 10:25:08 +03:00
Denis Zharkov
92bd6880da
Add AdditionalBuiltInsMembers language feature and relevant checks
2016-06-09 17:57:15 +03:00
Alexander Udalov
59342000ae
Fix toString() and reflectLambda() for lambdas with generic types in signatures
...
#KT-10771 Fixed
2016-06-09 17:28:56 +03:00
Stanislav Erokhin
cd4c9968df
Minor. fix test
2016-06-09 16:42:42 +03:00
Stanislav Erokhin
53bf720503
Fix type alias problems after rebase.
2016-06-09 16:42:41 +03:00
Stanislav Erokhin
93b27417af
Minor. update testdata.
2016-06-09 12:59:06 +03:00
Stanislav Erokhin
541b9954f5
Minor. Roll back behaviour for FlexibleType.isError.
2016-06-09 12:58:23 +03:00
Stanislav Erokhin
8c2ad82de7
Minor. fixes after review
2016-06-09 12:58:07 +03:00
Stanislav Erokhin
1d9ca06b96
Remake KotlinTypes.
2016-06-09 12:57:59 +03:00
Stanislav Erokhin
203c4cd94d
Remake Raw type representation.
...
(cherry picked from commit b21cede)
2016-06-09 12:57:53 +03:00
Stanislav Erokhin
42857992ed
Minor. Add ALLOW_AST_ACCESS to two tests.
...
We suppose, that AST access is allowed if we have property with initializer.
2016-06-09 12:57:47 +03:00
Dmitry Petrov
44829a61e7
Report redeclaration errors for type aliases vs class/interface/object.
2016-06-09 10:27:51 +03:00
Dmitry Petrov
d3721872b2
Tests for type alias diagnostics: type parameter bound violation in type alias constructor
2016-06-09 10:27:51 +03:00
Dmitry Petrov
b552425558
Tests for type alias diagnostics: type projections in type alias constructor
...
(should report same errors as for classes)
2016-06-09 10:27:51 +03:00
Dmitry Petrov
d86be43171
Tests for type alias diagnostics: wrong number of type arguments in type alias constructor
2016-06-09 10:27:51 +03:00
Dmitry Petrov
b2e5cfebee
Diagnostics for type alias expansion errors in type alias RHS
2016-06-09 10:27:50 +03:00
Denis Zharkov
771cca9c23
Fix some try-catch block related problems in coroutine transformer
...
Split all try-catch blocks when they intersect suspension points
2016-06-08 18:53:16 +03:00
Denis Zharkov
e802049fd0
Ignore handleReturn calls if functions is not operator
2016-06-08 18:53:16 +03:00
Denis Zharkov
692acc463a
Fix handleResult call generation for statement-like last expression in a block
2016-06-08 18:53:16 +03:00
Denis Zharkov
0d01edb7f9
Adapt FixStackAnalyzer to code generated by coroutine transformation
...
Without this change internal error happens while inlining coroutine code with try/catch inside
Also get rid of hack with SKIP_MANDATORY_TRANSFORMATIONS_ANNOTATION_DESC
See comment within MethodAnalyzer for clarification
2016-06-08 18:53:16 +03:00
Denis Zharkov
678e8c2baa
Setup label value in constructor to be invalid until 'invoke(Controller)' call
2016-06-08 18:53:16 +03:00
Denis Zharkov
759cb83dfb
Add checks that coroutines are available at the given language level
2016-06-08 18:53:16 +03:00
Denis Zharkov
2bdaec6eac
Refine definition of whether call is suspension point
...
It's not about all calls to suspend functions, they may called from non-coroutine code
2016-06-08 18:53:16 +03:00
Denis Zharkov
dddd7413a1
Fix generated code for suspending in the middle of object construction
2016-06-08 18:53:16 +03:00
Denis Zharkov
b8d4d39f4d
Add custom applicability checks for suspend/coroutine modifiers
2016-06-08 18:53:16 +03:00
Denis Zharkov
d760a2ec3b
Add CallChecker prohibiting non-local suspension calls
...
Effectively suspension point is local <=> return to relevant lambda is allowed in place
2016-06-08 18:53:16 +03:00
Denis Zharkov
b1189eff23
Make suspension calls generation more stable
...
Instead of performing signature change during transformation
it's convinient to make just when generating corresponding call,
for example there is no need to think about default parameters as they just work as is
See comment above replaceSuspensionFunctionViewWithRealDescriptor for clarification
2016-06-08 18:53:16 +03:00
Denis Zharkov
611490e080
Support non-local returns to coroutine label from inline lambda
...
- Use proper class descriptor when retreiving continuation object (see previous commit)
- Use return type as VOID for such cases
- Load correct labels related to coroutine lambda from outer context
2016-06-08 18:53:16 +03:00
Denis Zharkov
94bd6dcc82
Use proper coroutine class descriptor for extension receiver generation
...
Before this commit context.getThisDescriptor() has been used, that was quite correct
until suspension happens inside inlined lambda (it has different this-descriptor)
2016-06-08 18:53:16 +03:00
Denis Zharkov
75e112e752
Implement basic support for coroutines in JVM backend
2016-06-08 18:53:16 +03:00
Denis Zharkov
20d1d12f3b
Revert "'yield' reserved as a keyword"
...
This reverts commit 434082cadb .
2016-06-08 18:53:16 +03:00
Denis Zharkov
1af9321c20
Revert "'async' reserved in front of function literals"
...
This reverts commit 6155d836a5 .
2016-06-08 18:53:16 +03:00
Denis Zharkov
7d3333e86e
Revert "Reserve "async* {}", extend the quick-fix"
...
This reverts commit a7e7d53e2b .
2016-06-08 18:53:16 +03:00
Denis Zharkov
372791eb15
Replace common extension receiver of coroutine-lambda with magic one
...
Currently it only contains additional synthetic declarations for suspend-functions
E.g. `fun <V> await(f: CompletableFuture<V>): V` for `fun <V> await(f: CompletableFuture<V>, machine: Continuation<V>): Unit`
2016-06-08 18:53:16 +03:00
Denis Zharkov
8f4ee0528e
Implement operator checks for controller's handleResult
2016-06-08 18:53:16 +03:00
Denis Zharkov
fcbff72f6f
Replace expected type for coroutine-lambda
...
Use 'handleResult' method of controller to determine what lambda should return
If original declaration was
fun builder(coroutine c: Controller.() -> Continuation<Unit>) = 1
and there is 'fun handleResult(x: X, c: Continuation<Nothing>)',
then expected type for lambda is 'Controller.() -> X'
2016-06-08 18:53:16 +03:00
Denis Zharkov
329fb9d619
Introduce 'coroutine'/'suspend' modifiers
2016-06-08 18:53:16 +03:00
Dmitry Petrov
9c74f27967
Type alias can't expand to 'dynamic'
2016-06-08 15:55:52 +03:00
Dmitry Petrov
ef4c3bdae8
Don't expand types that don't contain type aliases or type parameters.
2016-06-08 15:55:52 +03:00
Dmitry Petrov
cb08d976d3
Tests for importing type aliases
2016-06-08 15:55:52 +03:00
Mikhail Glukhikh
4b6b35dadf
Type parameter is considered capable of taking any value for the purpose of cast possibility check #KT-6611 Fixed
2016-06-08 15:25:34 +03:00
Ilya Chernikov
e8c13882b4
Make script detection API generic, fix tests
2016-06-07 21:13:05 +02:00
Ilya Chernikov
3e6616de42
Read script config if appropriate flag is specified, fix classpath handling
2016-06-07 21:12:58 +02:00