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
Mikhail Glukhikh
ab72460f28
Rename: allDependentModules --> allDependencyModules
2016-12-13 19:07:07 +03:00
Mikhail Glukhikh
052a5033b5
PLATFORM_DECLARATION_WITHOUT_DEFINITION rendering changed (platform is included into diagnostic text now)
2016-12-13 19:06:08 +03:00
Mikhail Glukhikh
7649232f86
Platform header annotator: implementation + simple multi-platform highlighting tests #KT-14905 Fixed
2016-12-13 19:02:23 +03:00
Mikhail Glukhikh
57da92b862
Infrastructure change: module descriptor now knows its platform kind & its sources kind
2016-12-13 18:53:55 +03:00
Stanislav Erokhin
59efedf610
Rename platform to header.
2016-12-13 18:00:00 +03:00
Stanislav Erokhin
dbe8edda5f
Remove propertyDelegate and fix unused parameter checker for provideDelegate.
2016-12-12 23:14:09 +03:00
Stanislav Erokhin
9dc9fb578f
Rename toDelegateFor to provideDelegate.
2016-12-12 23:14:07 +03:00
Dmitry Petrov
e2b6d2d849
Drop 'propertyDelegated' convention (without additional deprecation ceremony).
2016-12-12 23:13:58 +03:00
Dmitry Petrov
5ddf8e60e6
Use delegate initializer expression resolution scope for 'toDelegateFor' resolution.
2016-12-12 23:13:57 +03:00
Dmitry Petrov
2ee31916c7
'createDelegate' operator renamed to 'toDelegateFor'
2016-12-12 23:13:55 +03:00
Dmitry Petrov
e2ba288323
'createDelegate' operator convention:
...
- resolution & inference
- additional diagnostic for language feature support
2016-12-12 23:13:54 +03:00
Dmitry Petrov
558e8aaebb
DelegatedPropertyResolver: convert to Kotlin & cleanup.
2016-12-12 23:13:52 +03:00
Dmitry Petrov
85276c27f0
DelegatedPropertyResolver: .java --> .kt
2016-12-12 23:13:51 +03:00
Dmitry Jemerov
48513c7b1d
Better diagnostics for "no resolver for module descriptor" situation (EA-72838 - ISE: EmptyResolverForProject.resolverForModuleDescriptor)
2016-12-12 17:50:26 +01:00
Dmitry Jemerov
7f02c67fbf
Avoid NPE while calculating assertion message (EA-92384 - NPE: KtElementImpl.getContainingKtFile)
2016-12-12 17:50:19 +01:00
Roman Elizarov
8affb2726f
Pluggable Synthetic Objects
2016-12-12 18:43:26 +03:00
Dmitry Jemerov
13b8494373
Remove unnecessary cyclic dependency between KtStubElementTypes and KtNodeTypes
...
#KT-15074 Fixed
2016-12-12 16:26:58 +01:00
Yan Zhulanow
cbef0250aa
Allow to turn the first parameter of a SAM-converted lambda into the receiver (KT-12848)
2016-12-09 20:01:21 +03:00
Yan Zhulanow
e626b121ad
NoArg: Add compiler plugin
2016-12-09 20:01:10 +03:00
Yan Zhulanow
f57df272ac
Allopen: Handle allopen annotations on classes (KT-12149)
2016-12-09 20:00:56 +03:00
Mikhail Zarechenskiy
7a0e44b8f9
Resolve '%' as 'mod' when LV=1.0
2016-12-09 17:01:41 +03:00
Mikhail Zarechenskiy
bc4a492f4d
Resolve for rem/modAssign and mod/remAssign
...
rem/remAssign always wins if it is possible
2016-12-09 17:00:27 +03:00
Mikhail Zarechenskiy
5f71f1bcad
Add warnings at declaration and call sites of operator 'mod'
2016-12-09 16:59:24 +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
Mikhael Bogdanov
f4259c5f82
Added deprecation for protected call within inline functions
2016-12-09 11:55:16 +01:00
Mikhael Bogdanov
7af327c567
Added 'checkPublishedApi' to effective visibility checker
2016-12-09 11:55:15 +01:00
Mikhael Bogdanov
038065e827
Updated NON_PUBLIC_CALL_FROM_PUBLIC_INLINE diagnostic to support @PublishedApi
2016-12-09 11:55:15 +01:00
Mikhael Bogdanov
7ea29d3397
Wrong @PublishedApi usage diagnostic
2016-12-09 11:55:15 +01:00
Alexander Udalov
513ebb9729
Suggest to use "-Xskip-metadata-version-check" on incompatible classes in classpath
2016-12-09 01:59:36 +03:00