Mikhail Glukhikh
5947d49dee
Multi-platform fix: no more errors for top-level impl fun / val / var in IDE
2016-12-19 14:55:49 +03:00
Alexander Udalov
da6c3c3231
Support header/impl enum classes
...
- prohibit constructors for header enum classes
- prohibit bodies for header enum entries
- all entries from header enum must be present in impl enum
2016-12-19 11:54:40 +03:00
Alexander Udalov
56d4ff0cad
Support nested header/impl classes
2016-12-19 11:54:38 +03:00
Alexander Udalov
a57455ce62
Relax requirements on function modifiers in multiplatform projects
...
Allow to implement header functions with external/tailrec/inline/infix/operator
functions
2016-12-19 11:53:39 +03:00
Alexander Udalov
64867409b7
Do not report errors on 'impl' declarations with -Xno-check-impl
...
Allow 'impl' modifier on a declaration even if it's not an implementation of
any header declaration
2016-12-19 11:50:54 +03:00
Alexander Udalov
0634782e47
Allow open impl class for final header class
2016-12-19 11:50:49 +03:00
Alexander Udalov
546e47dc44
Allow fake overrides and delegates to be impl for header declarations
...
Also fix a bug with matching supertype lists of header/impl classes
2016-12-19 11:50:40 +03:00
Alexander Udalov
7deaf8cc41
Allow impl class to be data class, allow impl constructor properties
2016-12-19 11:50:30 +03:00
Dmitry Petrov
33ed98a0d3
Update typing rules for class literal expressions.
...
C::class : KClass<C>
expr: T => expr::class : KClass<out T>
NB: this means Obj::class : KClass<out Obj> for object Obj.
2016-12-19 10:41:49 +03:00
Denis Zharkov
5ec62108ee
Rename RestrictsSuspendExtensions -> RestrictsSuspension
2016-12-16 18:56:30 +03:00
Mikhael Bogdanov
761aa9df09
Report error when delegation method hides superttype override
...
#KT-12531 Fixed
2016-12-16 13:17:28 +01:00
Nikolay Krasko
9759319da3
Revert "Filter out first dependency from module dependencies"
...
This reverts commit 868495437c .
2016-12-16 13:19:53 +03:00
Alexander Udalov
3a0100f604
Minor, move isInlineOnlyOrReified to module descriptors
2016-12-16 13:12:40 +03:00
Stanislav Erokhin
8968bc3dd6
RestrictSuspension -> RestrictsSuspendExtensions
...
(cherry picked from commit 9e0c733)
2016-12-15 23:58:24 +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
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
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
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
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
0132f3eea7
Remove kotlin.coroutine package from default imports.
2016-12-15 23:57:51 +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
bc069cd686
Lambda in position with suspend function expected type:
...
simple case - val initializer.
2016-12-15 23:57:44 +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
1ab003c029
Support another one coroutine convention in front-end
...
- There will be no `coroutine` keyword for builders
- They accept a special suspend function type instead
(it's return type is straightforward, not Continuation<Unit>)
- Instances of these types may be run with special built-in functions
- These built-ins functions are parametrized
with handleResult/handleException/interceptResume, so these operators
become unnecessary (and controllers too)
NB: `@Suspend` annotation is subject to replace with the `suspend` modifier
on types
2016-12-15 23:32:11 +03:00
Denis Zharkov
66c2333eb5
Drop checks related to 'coroutine' modifier
2016-12-15 23:32:10 +03:00
Denis Zharkov
b1d1128466
Minor. Move createFunctionType to core
...
As it will be used in the type mapper soon
2016-12-15 23:32:09 +03:00
Mikhail Glukhikh
295360ad3e
Navigation from header to implementation and vice versa #KT-15204 Fixed
2016-12-15 15:50:19 +03:00
Nikolay Krasko
868495437c
Filter out first dependency from module dependencies
2016-12-15 14:33:14 +03:00
Ilya Gorbunov
3bedbfae33
Move kotlin.comparisons.Comparator to kotlin package and remove the former from default imports.
2016-12-15 13:39:10 +03:00
Alexander Udalov
e50b102e89
Treat absence of version in SinceKotlinInfo as infinite version
...
This may be needed in the future to make some declarations erroneous for all
versions of compilers
2016-12-15 11:46:18 +03:00
Alexander Udalov
ede60efda5
Support SinceKotlinInfo for deserialized classes
2016-12-15 11:46:18 +03:00
Alexander Udalov
6393ac5871
Check language version for deprecation via SinceKotlinInfo
2016-12-15 11:46:17 +03:00
Alexander Udalov
feeed98323
Introduce SinceKotlinInfo, load from serialized metadata
...
This is a way for future compilers to cause previous compilers to report
diagnostics on usages of some declarations. Diagnostic can have a message
(and/or error code), level (error, warning, or completely hide the declaration
from the resolution), and Kotlin version, since which the diagnostic should no
longer be reported
2016-12-15 11:46:17 +03:00
Alexander Udalov
212240a008
Collect all deprecations, do not stop on the first found one
...
#KT-15245 In Progress
2016-12-15 11:46:17 +03:00
Alexander Udalov
82703d9cfd
Minor refactoring in deprecationUtil.kt
...
Split getDeclaredDeprecatedAnnotation into two methods for clarity
2016-12-15 11:46:16 +03:00
Alexander Udalov
122c631fcf
Refactor getDeprecation() -> getDeprecations()
...
In subsequent commits, another kind of deprecation is introduced which should
be reported alongside with deprecation by the `@Deprecated` annotation
2016-12-15 11:46:16 +03:00
Ilya Chernikov
b1cd98f2d5
Refactor and fix script annotation processing
2016-12-15 07:26:07 +01:00
Ilya Chernikov
b19d61e2f4
Refactor annotation resolving, some tests fixed, more tests needed
2016-12-15 07:26:07 +01:00
Ilya Chernikov
28b01126d9
Improve type boundaries for KotlinScriptDefinition interface
2016-12-15 07:26:07 +01:00
Stanislav Erokhin
457918a6dd
Changed name resolution for dynamic extension. Added annotation DynamicExtension.
2016-12-14 21:36:26 +03:00
Mikhail Zarechenskiy
42d867b3bf
Support number conversion for binary 'rem' operator
2016-12-14 15:29:00 +03:00
Mikhael Bogdanov
268d55104c
Don't generate delegation to java default methods
...
#KT-15226 Fixed
2016-12-14 11:20:04 +01:00