Denis Zharkov
b4bb92d136
Fix overload resolution ambiguity for types intersection
...
There are two different forms of types intestion:
1. Type parameters with multiple bounds
2. Smart casts
The problem was that when member scope of type intersection contained
effective duplicates and that lead to overload resolution ambiguity in
strange cases like `x.hashCode()`
For first type we do effectively the same thing as when building member
scope for class extending several interfaces: group all descriptors by
both-way-overridability relation and then choose most-specific in each
group.
For smart casts we do basically the same thing but with special
treatments:
1. From all descriptors that _equal_ to most specific we choose
the one that works without smartcast if possible (i.e. we choose first from candidates list)
2. If smart-cast value seems to be unstable we use only member scope
of receiver type + all descriptors from smart cast possible types
that has incompatible signature. If we'd include all of them and
choose one as more specific, and it would lead to false
SMART_CAST_IMPOSIBLE (see test unstableSmartCast.kt)
#KT-3996 Fixed
#KT-10315 Fixed
2015-12-15 16:18:31 +03:00
Alexander Udalov
5e421b4024
Improve type parameter bound diagnostic location
...
If there's only one erroneous bound (vast majority of cases), report it on the
bound; otherwise (to avoid reporting it several times) report on the type
parameter declaration
2015-12-13 02:06:07 +03:00
Denis Zharkov
ecac0f177b
Fix order of type parameters loaded from PSI
...
#KT-10285 Fixed
2015-12-08 15:46:34 +03:00
Alexander Udalov
2dce7ad1e2
Add test on "inconsistent type parameter bounds"
...
It seems that all tests on that diagnostic were replaced in previous commits by
"repeated bound" and "no other bounds except a type parameter bound"
diagnostics
2015-12-07 15:47:47 +03:00
Alexander Udalov
d3c17ec337
Report error when type parameter has a type parameter bound and any other bound
...
To prevent issues with erasure on JVM: it's unclear what such type parameter
should be erased to
2015-12-07 15:47:47 +03:00
Alexander Udalov
b1fa740341
Do not report "inconsistent bounds" when there are repeated bounds
...
Also slightly refactor DeclarationsChecker#checkSupertypesForConsistency
2015-12-07 15:47:47 +03:00
Alexander Udalov
5fbb9bfe3b
Report error on repeated upper bounds for type parameters
2015-12-07 15:47:47 +03:00
Mikhail Glukhikh
fe04cc513b
Original type is taken into account when intersecting possible types in resolve #KT-10232 Fixed
2015-11-30 19:09:44 +03:00
Mikhail Glukhikh
811ba8110f
Implicit receiver smart casts implementation and highlighting
2015-11-17 10:26:42 +03:00
Denis Zharkov
e920ce709b
Render captured type parameters in verbose mode
2015-11-13 14:59:04 +03:00
Denis Zharkov
deea0643ad
Refine type arguments resolution and rendering
...
In case of type constructors captured parameters from outer classes
#KT-5510 Fixed
#KT-3112 Fixed
#KT-6325 Fixed
#KT-408 Fixed
#KT-6337 Fixed
2015-11-13 14:47:28 +03:00
Michael Nedzelsky
c318a13e6c
Error on using extension function type as an upper bound
2015-11-06 06:31:52 +03:00
Denis Zharkov
b6f724cf58
Disconnect loops between upper bounds of type parameters
...
#KT-9759 Fixed
2015-10-31 09:33:46 +03:00
Michael Nedzelsky
dbc00baa48
Test for obsolete KT-5508
...
#KT-5508 Obsolete
2015-10-30 18:57:45 +03:00
Mikhail Glukhikh
3151d4ca9d
Check of type parameter bounds consistency #KT-9438 Fixed
2015-10-20 11:02:19 +03:00
Alexey Tsvetkov
1e2256207c
Update test data
2015-10-19 20:45:02 +03:00
Stanislav Erokhin
7d7d37719b
Forbidden old invokeExtension convention.
2015-10-17 14:45:53 +03:00
Michael Nedzelsky
57205f5721
drop BASE_WITH_NULLABLE_UPPER_BOUND
2015-10-14 20:51:01 +03:00
Denis Zharkov
f0e3fd617d
Adjust testData to CharSequence.length transformation
2015-10-14 20:39:35 +03:00
Pavel V. Talanov
47cca7db1f
Test data: adjust test data after prohibiting properties with typeparameters not used in receiver
2015-10-14 13:42:13 +03:00
Denis Zharkov
e800be18c6
Introduce UnsafeVariance annotation
2015-10-09 14:40:33 +03:00
Yan Zhulanow
fd3c28c950
Forbid Foo<T>.Bar
2015-10-08 18:31:07 +03:00
Yan Zhulanow
6db9344659
Fix compiler tests
2015-09-25 19:20:20 +03:00
Denis Zharkov
4850fd10f0
Regenerate test data containing rendered descriptors
...
Introduced '@' after each annotation
2015-09-18 10:14:39 +03:00
Michael Nedzelsky
bc5c9065d2
fix tests in org.jetbrains.kotlin.checkers
2015-09-08 02:04:32 +03:00
Denis Zharkov
5e09a0c2c9
Add some test cases after review
2015-08-28 18:50:25 +03:00
Denis Zharkov
b471767e03
Refine smart cast check for type parameters
2015-08-28 18:50:25 +03:00
Denis Zharkov
aad977d204
Properly check whether nullability of receiver argument fits to parameter's nullability
...
It's should behave like we check isSubtype(receiverType, parameterType) + use nullability info from smart cast
#KT-1090 Fixed
2015-08-28 18:50:25 +03:00
Denis Zharkov
6ecfa6e985
Refine subtyping check: pay attention to corresponding supertype nullability
...
F: Any, T : F? => !isSubtype(T, Any)
It helps to identify upper bounds violation like in KT-7455
#KT-7455 Fixed
#KT-2924 Fixed
#KT-3015 Fixed
2015-08-28 18:50:25 +03:00
Denis Zharkov
a906be6dd7
Prohibit using null as a value of generic type
...
#KT-7350 Fixed
#KT-7736 Fixed
#KT-7485 Fixed
2015-08-28 18:50:25 +03:00
Denis Zharkov
41d4af2cb9
Implement rendering of raw types
...
Also add some clarification in spec
2015-08-06 08:18:18 +03:00
Denis Zharkov
6b92f67eac
Load raw types as platform with specific bounds
...
Raw(A<T_i>) = (A<UP(T_i)>..A<*>)
Raw types have specific scopes that behaves like JVM signature erasure
2015-07-31 17:33:21 +03:00
Denis Zharkov
97af85da9c
Change default upper bound of Java type parameters to Any!
...
#KT-7672 Fixed
2015-07-21 15:16:05 +03:00
Dmitry Jemerov
4bdf598bfe
compiler testdata: s/trait/interface
2015-05-12 19:43:17 +02:00
Dmitry Jemerov
9975bb8935
replace 'trait' keyword with 'interface' in user-visible messages and code generation tools
2015-05-12 11:49:37 +02:00
Dmitry Jemerov
f374eec8f1
deprecating types after colon
2015-04-29 16:33:24 +02:00
Ilya Ryzhenkov
c2b3bcc95f
SymbolUsageValidator infrastructure
2015-04-24 15:44:28 +03:00
Pavel V. Talanov
a986d913c3
Remove traces of class object constraints feature from parser, frontend, tests and psi
2015-04-01 20:09:34 +03:00
Denis Zharkov
9cecd69a9e
Drop unneeded condition that leads to error
...
This check is obsolete but leads to problems.
It appears when resolving recursive calls (see sameTypeParameterUse.kt):
`foo<R>(x: R, y: R)` within call `foo<R>(x, "")` after substitution
has R as type of it's second argument, and when checking value arguments,
x is not checked because supposed to be dependent on type parameter of candidate
(that is effectively false), so there are two successful candidates
in resolution results and wrong OVERLOAD_RESOLUTION_AMBIGUITY error.
2015-03-17 23:18:34 +03:00
Pavel V. Talanov
7b837e2631
Updata test data: txt files for diagnostics tests
2015-02-16 15:38:36 +03:00
Andrey Breslav
fecf6f9fdf
Star projection information preserved in substitutions
...
#KT-6700 Fixed
2015-02-02 19:52:01 +03:00
Andrey Breslav
da639039bd
KT-6698 Bad class file when using a star-projection on a Java's recursive generic parameter
...
#KT-6698 Fixed
2015-02-02 19:52:00 +03:00
Svetlana Isakova
7a5124215a
Updated test data for Array<out T> vararg type
2014-12-12 23:08:28 +03:00
Denis Zharkov
02be1063c1
Do not report a warning on an inline function with a reified parameter
...
#KT-6273 Fixed
2014-11-27 13:49:17 +04:00
Andrey Breslav
0eee83b6ec
Lazy logs removed
2014-11-21 18:59:45 +03:00
Svetlana Isakova
2a83053355
Updated lazy log tests
2014-11-21 14:02:45 +03:00
Svetlana Isakova
0719297d8f
Uncommented test when extensions are called for nested calls
2014-11-21 14:02:42 +03:00
Stanislav Erokhin
b7c473f59e
Update lazy.log files
2014-11-17 17:45:01 +03:00
Pavel V. Talanov
d2cfcfa659
Fix test data after changes to renderer and descriptors
2014-11-14 17:09:05 +03:00
Denis Zharkov
b3691b7358
Frontend changes for reified type parameters
...
Allowing reified only for inline functions and Intrinsics
2014-11-13 20:56:09 +03:00