Commit Graph

2764 Commits

Author SHA1 Message Date
Dmitry Petrov b9f9894310 KT-15677 KT-15775
Update parser & descriptor renderer to handle parenthesized types and function types properly.
Resolve annotations in parenthesized types.

AnnotationsImpl.isEmpty() returned false for targeted annotations only
(e.g., 'fun @receiver:Ann C?.foo()').
Properly keep track of targeted annotations.
2017-01-19 09:53:17 +03:00
Mikhail Glukhikh b6443eed9e Data flow information: stable complex expressions introduced back for brackets / elvis / if / when #KT-13468 Fixed
This reverts commit e515d7f773 and
also commit 1c9f08e986

(cherry picked from commit 9fa155b)
2017-01-18 18:54:08 +03:00
Mikhail Glukhikh 86bc49558d Tests for KT-13468 / KT-13765
(cherry picked from commit 2e4c0b4)
2017-01-18 18:53:55 +03:00
Alexander Udalov 4f36376291 Do not report KCLASS_WITH_NULLABLE_ARGUMENT_IN_SIGNATURE anymore
It was only reported in already erroneous cases
2017-01-18 18:21:30 +03:00
Alexander Udalov d02404b07b Report error on expression of nullable type in class literal
#KT-15740 Fixed
2017-01-18 18:21:29 +03:00
Alexander Udalov 6a352a1da7 Report error on nullable type alias in class literal
#KT-15736 Fixed
2017-01-18 18:21:28 +03:00
Denis Zharkov 22ddfed911 Do not load PlatformDependent annotated built-in members with lv=1.0
#KT-15780 Fixed
2017-01-18 13:00:32 +03:00
Mikhael Bogdanov 591de36666 Added deprecated diagnostic for invoking default methods within jvm-target 1.6 2017-01-18 10:50:59 +01:00
Denis Zharkov d0d617b44e Fix signature mapping for default suspend function from interface
Use jvm suspend function view in function codegen.
Also use SUSPEND_FUNCTION_TO_JVM_VIEW slice if the value exists
for the given key

 #KT-15552 Fixed
2017-01-18 12:00:45 +03:00
Dmitry Petrov cd33a40612 KT-15734
Combine nullability for nested type alias expansion result.
2017-01-16 17:26:28 +03:00
Dmitry Petrov 954204da82 KT-1560
Report warning on extensions shadowed by members.
2017-01-16 17:25:13 +03:00
Stanislav Erokhin 0ef1234f2e Added special error for incorrect KClass type in signatures. 2017-01-16 05:44:46 +03:00
Denis Zharkov de9c41c412 Fix overridability rules for suspend functions
Treat suspend and non-suspend functions as conflicting

 #KT-15413 Fixed
2017-01-14 13:24:53 +03:00
Denis Zharkov 978f53414f Prohibit local suspend functions
#KT-15392 Fixed
2017-01-14 13:24:53 +03:00
Denis Zharkov d43a4199f8 Prohibit suspend function type in supertype list
#KT-15391 Fixed
2017-01-14 13:24:53 +03:00
Denis Zharkov f12409504f Prohibit callable references to suspend functions
#KT-15662 Fixed
2017-01-14 13:24:53 +03:00
Denis Zharkov a048dde7a5 Support non-tail suspend calls in front-end
#KT-15597 In Progress
2017-01-14 13:24:53 +03:00
Denis Zharkov 2cb9d3a8ad Move coroutine intrinsics to kotlin.coroutine.intrinsics package
Also rename val SUSPENDED to SUSPENDED_MARKER

 #KT-15698 Fixed
2017-01-14 13:24:53 +03:00
Mikhael Bogdanov ec42b58877 Fix @PublishedApi checking 2017-01-11 11:50:34 +01:00
Mikhail Glukhikh b81268cca1 Control-flow analysis: do-while scope is ended after condition but before jump #KT-15334 Fixed 2017-01-10 17:57:43 +03:00
Mikhail Zarechenskiy cff0865c87 Fix error type for implicit invoke with function literal argument
#KT-11401 Fixed
2017-01-10 11:44:51 +03:00
Mikhail Zarechenskiy 76b0b785c5 Prohibit to use enum entry as a type
#KT-14179 Fixed
2017-01-09 18:30:32 +03:00
Alexey Andreev 900adcf29b JS: prohibit stable (public) names with non-identifier chars. Rewrite unstable (private) names with non-identifier chars. See KT-4160 2016-12-30 16:21:18 +03:00
Alexey Andreev ed7ac7cea9 JS: do not report declaration clash when common redeclaration diagnostic applies. See KT-14577 2016-12-29 16:00:36 +03:00
Alexey Andreev 79ba6a57d6 JS: report errors on different external items:
* data classes
* val/var parameters of primary constructors
* enum entry with body
* anonymous `init {}` block in classes
2016-12-29 16:00:35 +03:00
Alexey Andreev 03682ee849 JS: fix how module checker handles super classes 2016-12-29 16:00:34 +03:00
Alexey Andreev 1a7e8b0690 JS: allow to omit delegated constructor call for external classes in common FE. Prohibit delegated constructor call for external classes in JS FE. 2016-12-29 16:00:33 +03:00
Alexey Andreev 02ea1a4d64 JS: split error diagnostic about body of external declaration into three different diagnostics (additional ones: wrong initializer, wrong default value of parameter). 2016-12-29 16:00:32 +03:00
Alexey Andreev 6ef4a3389e JS: prohibit external functions and accessors with bodies other than noImpl. Prohibit to use anything except noImpl for default parameters initializers in external functions. See KT-13892 2016-12-29 16:00:30 +03:00
Alexey Andreev 55d4c0e439 JS: prohibit non-abstract members of external interfaces, except for nullable properties. See KT-15308 2016-12-29 16:00:30 +03:00
Alexey Andreev 403753f5b5 JS: prohibit inline external declarations. See KT-15307 2016-12-29 16:00:29 +03:00
Alexey Andreev 84f094c770 JS: prohibit to implement functional interfaces. See KT-15136 2016-12-29 16:00:29 +03:00
Mikhail Glukhikh 5f3c1dfc41 More accurate check of repeated use-site annotations #KT-13859 Fixed 2016-12-28 19:01:20 +03:00
Mikhail Zarechenskiy e448695578 Introduce language feature for refined sam adapters priority 2016-12-27 16:44:23 +03:00
Mikhael Bogdanov b5ec30666b Fix for KT-15410: "Protected function call from public-API inline function" for protected constructor call
#KT-15410 Fixed
2016-12-27 14:07:37 +01:00
Alexander Udalov f8a88bdffb Fix "Rewrite at slice LEXICAL_SCOPE" for callable references
For special calls (when-expressions, if-expressions, etc.), do not attempt to
get type of the argument expression, which is the block with the callable
reference, instead get type of the callable reference itself. The difference
matters because for block expressions, a new lexical scope is created for each
getTypeInfo (see ExpressionTypingServices.getBlockReturnedType), and we do not
support rewrites of this value in the binding trace

 #KT-12044 Fixed
2016-12-27 10:45:46 +03:00
Mikhail Zarechenskiy 38a2518498 Fix computation of erased receiver for intersection types
#KT-9630 Fixed
2016-12-26 22:34:40 +03:00
Alexander Udalov 21f79cd737 Fix test data 2016-12-26 17:11:32 +03:00
Alexander Udalov e4e50017d0 Render header/impl on properties in tests and diagnostic messages
As a side effect, header/impl and some other modifiers on functions are now
rendered in a different, more natural, order
2016-12-26 17:06:24 +03:00
Alexander Udalov 5556c59fc9 Render platform name in multiplatform diagnostic tests
Prepend the platform name to the diagnostic in a common module, which is
reported when sources of that common module are analyzed as a part of the
platform source set: "<!JVM:...!> ... <!>". Fix some existing tests, mostly by
adding "impl" to implementations
2016-12-26 17:06:15 +03:00
Alexander Udalov e4d85ac527 Support header annotation classes in common modules
Properties are only allowed to be declared in a header class' primary
constructor if that class is an annotation class. However, we did not correctly
determine that such properties are also "header". The test passed because the
diagnostic was lost
2016-12-26 17:01:24 +03:00
Mikhail Glukhikh 194ff4ee76 Check possible smart cast to enum in when subject #KT-14705 Fixed 2016-12-23 15:10:56 +03:00
Mikhail Glukhikh 0e70e3f80e USELESS_ELVIS_RIGHT_IS_NULL is no more reported for flexible left argument #KT-13593 Fixed 2016-12-23 15:10:49 +03:00
Dmitry Petrov 8d16bd1215 Method can be hidden if it is annotated with kotlin.internal.PlatformDependent,
or is a Java method from a Kotlin built-in class (transitively).

https://github.com/Kotlin/KEEP/blob/master/proposals/jdk-dependent-built-ins.md#backward-compatibility-of-overrides
2016-12-23 13:51:08 +03:00
Denis Zharkov 8475869fb3 Support common calls on suspend function typed values
Also support multiple value parameters in suspend function type

 #KT-15379 Fixed
 #KT-15380 Fixed
2016-12-22 11:15:52 +03:00
Alexander Udalov e8c9e81235 Minor, move and rename test data directory 2016-12-20 17:29:30 +03:00
Alexander Udalov ca886ecb8d Do not report "delegation member hides override" when hidden member is final
This situation is erroneous because OVERRIDING_FINAL_MEMBER_BY_DELEGATION is
already reported, no need to report another error
2016-12-20 17:29:17 +03:00
Alexander Udalov 482b43631c Refactor DelegationChecker and related code
- move getDelegates from CodegenUtil to DelegationResolver, reuse it in
  DelegationChecker
- use getAllOverriddenDescriptors + filterOutOverridden instead of a manual DFS
2016-12-20 17:28:50 +03:00
Denis Zharkov 2dd7d89048 Fix built-ins overridability issue
See the comment for clarification

 #KT-15097 Fixed
2016-12-20 16:35:26 +03:00
Mikhail Zarechenskiy 24d5bdd62c Fix test data after migration to 'rem' 2016-12-20 15:20:47 +03:00