Commit Graph

5493 Commits

Author SHA1 Message Date
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