Stanislav Erokhin
298a075381
Minor. removed functions which declared in Standard.kt from diagnostic testdata.
...
Removed declaration for functions: TODO, run, with, apply, let.
2016-01-25 19:13:31 +03:00
Denis Zharkov
70dc5b5403
Prohibit use of captured type as argument for reified parameter
...
#KT-8093 Fixed
2016-01-22 19:17:22 +03:00
Denis Zharkov
751f66c656
Report warning on generic type as argument for reified parameter
...
#KT-6484 Fixed
2016-01-22 19:17:22 +03:00
Denis Zharkov
ae6c62ddff
Minor. Report reified-related diagnostics on arguments if possible
2016-01-22 19:17:22 +03:00
Mikhail Glukhikh
b3c5760eb5
Type intersection fix: T & (final A) is no more calculated as just A #KT-7801 Fixed
2016-01-22 16:37:04 +03:00
Ilya Gorbunov
f4822cd757
Fix testData in compiler: add collections and ranges package to fq-names.
2016-01-22 05:54:38 +03:00
Denis Zharkov
e9693e987f
Humanize type mismatch diagnostic caused by type projections
...
#KT-10581 Fixed
2016-01-19 11:05:41 +03:00
Dmitry Petrov
a073f29006
KT-10460: use unsubstituted descriptors
...
while comparing overloaded generic functions for specificity.
2016-01-18 12:25:04 +03:00
Mikhail Glukhikh
6157ebe3b8
Separate UNSAFE_IMPLICIT_INVOKE_CALL diagnostics introduced (see KT-8252)
2016-01-15 17:22:54 +03:00
Denis Zharkov
722a152a74
Fix supertypes calculation for types with projections
...
Use captured types as replacement for non top-level entries
#KT-7296 Fixed
2015-12-28 11:13:39 +03:00
Denis Zharkov
397d2ca312
Fix captured approximation for case of flexible types
...
#KT-9294 Fixed
2015-12-28 11:13:38 +03:00
Denis Zharkov
9773e98d8a
Refine type from property setter parameter on assignment
...
In most cases these types are equals, the only known exception is
var-property contained in projected type member scope (see test data)
2015-12-28 11:13:37 +03:00
Denis Zharkov
e2c02f825f
Refine member scope for types with projections
...
Instead of erasing descriptors with conflicting substitution,
use invariant CapturedType(<projection>) as replacement for type parameter
within default member scope.
After substitution leave such types 'as is' everywhere except return types,
use common approximation for them.
#KT-9294 In Progress
#KT-5411 Fixed
#KT-8647 Fixed
#KT-9462 Fixed
#KT-9893 Fixed
#KT-7581 Fixed
#KT-7296 In Progress
2015-12-28 11:13:37 +03:00
Denis Zharkov
3fd35636ad
Fix type parameter list for local classes
...
Add captured parameters from enclosing functions
#KT-9584 Fixed
2015-12-28 07:44:53 +03:00
Mikhail Glukhikh
99a32b93fb
Implemented missed checks for local functions #KT-10449 Fixed
...
Relevant code/test fixes
2015-12-23 18:22:32 +03:00
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