Alexander Udalov
6e97f85863
Fix type argument substitution bug in KFunction construction
...
For example,
KMemberFunction2<T, P1, P2, R> : KMemberFunction<T, R>
So for this inheritance the heuristic that was present ("take the last K type
parameters of the subclass, and substitute for K parameters of the superclass")
was wrong. The new heuristic for this case is: take type parameters with the
same names.
Also don't store "parameters" in a lazy value, since it's easy to compute and
it's computed practically every time anyway
2015-06-04 23:08:21 +03:00
Mikhail Glukhikh
98407a7c4b
Recursive annotations are now possible for properties / functions / classes / primary constructors #EA-66984 Fixed #EA-63992 Fixed #EA-64272 Fixed
...
A set of tests provided.
2015-06-04 20:09:36 +03:00
dnpetrov
50ea67ba13
KT-5524 Support [platformName] annotation for class members
...
@platformName is now supported for final non-overriding class member functions
(including property accessors).
Front-end provides diagnostics for inapplicable annotation cases.
Code generation updated:
- ignore kotlin.platform.platformName annotation for Java class methods;
- bridges generation generates proper JVM declarations in case of methods renamed with @platformName.
@platformName-related tests added.
#KT-5524 Fixed
2015-06-04 17:54:08 +03:00
Denis Zharkov
8da3f53404
EA-53937: Drop failing assertion about no-name val in annotation
2015-06-04 16:11:02 +03:00
Pavel V. Talanov
ccaa779e2f
Minor: fix test
2015-06-02 19:06:27 +03:00
Alexander Udalov
158b3ba102
Make parameter names of fictitious function classes non-stable
...
To be able to change them when overriding invoke in subclasses without a
warning
2015-06-02 17:30:58 +03:00
Pavel V. Talanov
d2592e4a2c
Companion objects have public visibility by default
...
#KT-7114 Fixed
2015-06-02 16:23:03 +03:00
Valentin Kipyatkov
aefe0dd192
Changed highlighting range and attributes of useless elvis operator
2015-06-02 14:35:19 +03:00
Denis Zharkov
349d5f02ea
Drop wrong assertion about duplicating properties in data class
...
#EA-64269 Fixed
2015-06-02 14:07:49 +03:00
Denis Zharkov
70dbbd8fda
Resolve constructors declared in traits and objects
...
It prevents exceptions and produces less red code
#EA-68667 Fixed
2015-06-02 14:07:49 +03:00
Denis Zharkov
7f9d2e8a36
Refine diagnostics reported on primary constructors
2015-06-02 14:07:49 +03:00
Alexander Udalov
d2508c8710
Do not report irrelevant diagnostics on unresolved supertypes
...
Previously the confusing "trait with superclass" was reported when an
unresolved classifier appeared in interface supertypes
2015-06-02 12:30:14 +03:00
Mikhail Glukhikh
dea2ec9da6
When now tries to smart cast subject to not-null if contains no null case #KT-7857 Fixed
...
Some new tests + some fixed tests
2015-06-02 10:56:21 +03:00
Mikhail Glukhikh
de12771c0f
Warning generation on non-exhaustive whens over enums + a set of tests + fixed test #KT-6227 Fixed
2015-06-02 10:56:17 +03:00
Mikhail Glukhikh
969993bd09
Fix for EA-68871 #EA-68871 Fixed
2015-06-02 10:56:13 +03:00
Alexander Udalov
12a6461006
Report 'free function called as extension' on Function subclasses
...
You can't make a value of some type invokable as an extension by adding
'extension' annotation to the type
2015-06-01 19:23:10 +03:00
Zalim Bashorov
72c2648fc8
JS frontend: remove diagnostics about the secondary constructors are not supported
2015-05-28 10:24:47 +03:00
Alexander Udalov
d14e5b8a72
Restore and deprecate Function{n}/ExtensionFunction{n} classes for easier migration
...
Users' Java code will not break in common cases (when passing functions to
Kotlin), and deprecation warnings will be reported.
Provide an inspection with a quick fix which allows to replace deprecated
function class usages to the new classes. Include this fix to the "code
cleanup" action
2015-05-28 01:20:05 +03:00
Mikhail Glukhikh
3ad06f169d
Solution for EA-66870: Foo<in *> and Foo<out *> types are now treated as incorrect.
...
#EA-66870 Fixed.
2015-05-27 19:07:46 +03:00
Mikhail Glukhikh
4fb331ecd3
Solution for KT-7838: now data flow information at the end of when expression is determined correctly.
...
#KT-7838 Fixed.
2015-05-27 19:07:41 +03:00
Dmitry Jemerov
1188e57597
rename @overloads annotation to @jvmOverloads
2015-05-27 12:23:08 +02:00
Alexander Udalov
6ae7ed1cc4
Add some new tests on functions and extension functions
2015-05-27 01:44:19 +03:00
Ilya Gorbunov
84ca26719d
Deprecate meaningless or vague-defined operations with Char operands.
...
Change expected test output.
2015-05-27 00:58:35 +03:00
Mikhail Glukhikh
5723c2a077
Front-end fix: result type corrected for increment / decrement expressions. Smart cast allowed on a postfix increment result. See KT-7561.
...
Now result type is receiver type for postfix increment, or increment result type for prefix increment.
A set of relevant tests.
2015-05-26 15:20:25 +03:00
Alexander Udalov
ea6d0b464d
Report error when free function is called as extension
2015-05-26 15:05:04 +03:00
Svetlana Isakova
14c2690447
Distinguish between no declared arguments and an empty argument list
...
in a function literal
If there are no arguments, any number of them might be expected
2015-05-26 15:05:03 +03:00
Alexander Udalov
4d00077ffb
Delete assertion on receiver presence in 'invoke'
...
#KT-6541 Fixed
#KT-7383 Fixed
2015-05-26 15:04:59 +03:00
Alexander Udalov
49004a8b8e
Conform functions to extension functions and vice versa
...
#KT-5989 Fixed
2015-05-26 15:04:56 +03:00
Alexander Udalov
90097d7e8b
Move callable reference diagnostic tests to non-stdlib
2015-05-26 14:27:40 +03:00
Alexander Udalov
51684b3fe1
Drop "Reflection types not loaded" diagnostic
...
Reflection types are now considered to be built-in, so their absence means the
runtime is broken and the compiler can't work at all; this condition probably
should be handled on another level for all built-in types
2015-05-26 14:27:39 +03:00
Alexander Udalov
45c28abfee
Keep built-in metadata for reflection interfaces
...
Reflection interfaces (interfaces in kotlin.reflect.* in core/builtins/) are
now fully considered as built-ins and can be accessed via KotlinBuiltIns. This
increases runtime size by ~20kb, but only because KotlinBuiltIns is static and
is therefore constructed only via resource loading from the compiler classpath
at the moment. As soon as it's possible to inject KotlinBuiltIns to the
particular resolution process, the metadata on JVM will be loaded via standard
annotation mechanism (kotlin.jvm.internal.KotlinClass/KotlinPackage) and wasted
runtime space will be reclaimed
2015-05-26 14:27:38 +03:00
Mikhail Glukhikh
3c7225e83a
An implementation of KT-7753: now enum constructors cannot be called explicitly.
...
Several tests are provided.
#KT-7753 Fixed.
2015-05-25 17:27:31 +03:00
Mikhail Glukhikh
babb7e58bc
Implementation of KT-6399: platform types under when are now counted as not nullable but warning is generated. #KT-6399 Fixed.
...
A set of tests. Warning about Java enum nullable argument under when in particular situations.
2015-05-22 18:38:30 +03:00
Mikhail Glukhikh
c8aa6defb6
Data flow information is no longer dropped while analyzing object literal expression. #KT-6293 Fixed. #KT-7110 Fixed.
...
A set of tests for KT-6293 / KT-7110 provided.
2015-05-21 13:03:39 +03:00
Michael Bogdanov
4abaa54d0e
Test for obsolete KT-4869: Report error when inline parameter is passed to a function variable
...
#KT-4869 Obsolete
2015-05-21 10:06:01 +03:00
Denis Zharkov
6df805d6f2
Refine diagnostics reported on implicit constructor delegation call
...
- Do not report anything else if primary's call expected
- Do not repeat EXPLICIT_DELEGATION_CALL_REQUIRED
#KT-7230 Fixed
2015-05-20 09:24:57 +03:00
Denis Zharkov
2deb7faf05
Deprecate function expressions with names
2015-05-20 09:24:56 +03:00
Denis Zharkov
aa1548a83b
Report obsolete labels syntax deprecation on objects
...
#KT-7771 Fixed
2015-05-20 09:24:56 +03:00
Denis Zharkov
5297b4974f
Adjust descriptor renderer to latest parsing changes
...
- `constructor` keyword expected in primary constructor with non-empty modifier list
- annotation list should be preceeded by '@'
2015-05-20 09:24:56 +03:00
Denis Zharkov
89337ff51e
Change deprecation rules for annotations in brackets
...
Also adjust quickfix for deprecated syntax
2015-05-20 09:24:56 +03:00
Denis Zharkov
aa4a20dddc
Add missing 'constructor' to testData when it was necessary
2015-05-20 09:24:55 +03:00
Denis Zharkov
09cae59f0a
Report warning on modifier list of primary ctor unless 'constructor' keyword specified
2015-05-20 09:24:54 +03:00
Valentin Kipyatkov
7edff172a2
KT-1273 Unused assignment - should highlight assignment instead of expression
...
#KT-1273 Fixed
2015-05-19 23:45:59 +03:00
Andrey Breslav
f7a9cc6b28
Fix for EA-64905 - assert: TypeUtils.intersect
2015-05-19 17:15:02 +03:00
Mikhail Glukhikh
0d7f649cc2
Implementation of exhaustive whens in control flow analysis.
...
Now control flow analyzer knows when is exhaustive.
If despite of this all conditions are accidentally false, jump to error is generated.
A set of tests (diagnostic, control flow). #KT-5113 Fixed. #KT-6046 Fixed. #KT-1882 Fixed.
2015-05-18 19:44:29 +03:00
Mikhail Glukhikh
c4aa6d01a9
Exhaustive when on boolean argument. A set of tests.
...
Compile-time constants are taken into account. #KT-3743 Fixed.
2015-05-18 19:44:22 +03:00
Pavel V. Talanov
119ffd2347
Minor: replace obsolete trait keyword in newly added test
2015-05-17 18:24:50 +03:00
Valentin Kipyatkov
60b0236101
Corrected parser: incomplete code should never cause brace disbalance
...
Fixed KT-7539 fq name inserted when completing nested traits name
#KT-7539
2015-05-16 17:15:12 +03:00
Dmitry Jemerov
dc9523016a
report 'trait' keyword as deprecated, provide quickfix for replacing with 'interface'
2015-05-15 18:20:39 +02:00
Michael Bogdanov
5daf79d2de
Tests for obsolete KT-5232: vfy error with default parameter in method of trait
...
#KT-5232 Obsolete
2015-05-15 18:06:52 +03:00