Commit Graph

921 Commits

Author SHA1 Message Date
Andrey Breslav f5aed51fd0 TypeUtils.containsSpecialType() fixed to account for flexible types 2014-10-13 15:38:14 +04:00
Andrey Breslav f1c66fa6b0 Assertions on approximation of platform types to non-null types
- for most expressions (ExpressionCodegen.genQualified)
2014-10-13 15:38:13 +04:00
Andrey Breslav 57bffaf8fa All JetType subinterfaces migrated to capabilities 2014-10-13 15:38:12 +04:00
Andrey Breslav 013dd7261e Extensible specificity expressed as a type capability 2014-10-13 15:38:11 +04:00
Andrey Breslav 4b24c96cca Type capabilities introduced to facilitate extensibility of the type representation
This approach: returning adapter objects by class is crucial, because it is delegation-proof.
Simply extending interfaces in particular implementations fails when we wrap types in DelegatedType subclasses
2014-10-13 15:38:11 +04:00
Andrey Breslav fe2fb60daf Approximating flexible types in descriptor renderer 2014-10-13 15:38:07 +04:00
Andrey Breslav 40932f84c8 isFlexible() turned into a method in JetType
Otherwise delegated types were never recognized as flexible
2014-10-13 15:38:07 +04:00
Andrey Breslav 91b0b83ec3 Java declaration annotations are treated as type annotations
This is needed, for example, to approximate flexible types correctly when rendering them in the code
2014-10-13 15:38:06 +04:00
Andrey Breslav 1dbfe5483a Fix isNullableType() to always consider flexible types, even if they contain type parameters 2014-10-13 15:38:01 +04:00
Andrey Breslav 12d18533e8 Recursion depth in CommonSupertypes is bounded by maxDepth + 3 2014-10-13 15:37:59 +04:00
Andrey Breslav 364a7a6574 Do not overuse makeNullableAsSpecified in TypeSubstitutor 2014-10-13 15:37:59 +04:00
Andrey Breslav 920769d36d Fold standard flexible types in shortNames mode 2014-10-13 15:37:58 +04:00
Andrey Breslav 220c360081 Null-aware types introduced
Flexible types should drive their own conversions to nullable/not-null
2014-10-13 15:37:58 +04:00
Andrey Breslav 969beb7898 Account for substitutions of one variable for another (it must remain a variable) 2014-10-13 15:37:57 +04:00
Andrey Breslav bdbd469aad Do not wrap flexible types into Nullable/NotNull types 2014-10-13 15:37:57 +04:00
Andrey Breslav 141e731f39 Constraint Foo on T! should be turned into Foo! on T 2014-10-13 15:37:56 +04:00
Andrey Breslav 6cb1d2e3f7 Lower bound must be a subtype of the upper bound.
The change in CommonSupertypes:

 We used to say that commonSupertype(Inv<A>, Inv<B>) = Inv<in Intersect(A, B)). This is counter-intuitive, should be Inv<out commonSupertype(A, B)>
2014-10-13 15:37:56 +04:00
Andrey Breslav e232697da1 CommonSupertypes support for flexible types 2014-10-13 15:37:55 +04:00
Andrey Breslav 583694a450 Flexible types for primitive arrays 2014-10-13 15:37:54 +04:00
Andrey Breslav c3c72fc528 Switching off propagation of types and KotlinSignatures for platform types 2014-10-13 15:37:53 +04:00
Andrey Breslav fefadaa171 Rendering platform type for java.util.Map.Entry as kotlin.(Mutable)Map.(Mutable)Entry 2014-10-13 15:37:53 +04:00
Andrey Breslav dd2e95b3bc Substitution implemented for flexible occurrences of Java type parameters 2014-10-13 15:37:52 +04:00
Andrey Breslav bf53222bd9 Flexible types in SAM conversions 2014-10-13 15:37:51 +04:00
Andrey Breslav 2529bb24d1 Don't create flexible types for ".class" expressions in annotation arguments 2014-10-13 15:37:51 +04:00
Andrey Breslav c699fa96d9 Make not-null compile-time constants non-flexible 2014-10-13 15:37:51 +04:00
Andrey Breslav 867956729b Don't create platform types for annotation members 2014-10-13 15:37:50 +04:00
Andrey Breslav bdf7e924b5 Rendering flexible types with "!" and optional parts 2014-10-13 15:37:50 +04:00
Andrey Breslav 549df3c0eb Equality for flexible types 2014-10-13 15:37:48 +04:00
Andrey Breslav b665a1998b Supertypes should not be flexible 2014-10-13 15:37:47 +04:00
Andrey Breslav 195274370f Fix the case of safe call and elvis operators: flexible types may be nullable 2014-10-13 15:37:46 +04:00
Andrey Breslav 45c1fa3741 Support flexible types in DataFlowValues 2014-10-13 15:37:46 +04:00
Andrey Breslav f7de0e274c TypeSubstitutor respects flexible types 2014-10-13 15:37:45 +04:00
Andrey Breslav f11095b1d0 Minor. DelegatingFlexibleType moved to top level 2014-10-13 15:37:45 +04:00
Andrey Breslav 687fdce30a Support flexible types in TypeCheckingProcedure 2014-10-13 15:37:44 +04:00
Andrey Breslav 6c50e1b237 Render flexible types in debug mode 2014-10-13 15:37:43 +04:00
Andrey Breslav e268e74fa3 Flexible types added to JDR
So far they act exactly like inflexible ones
2014-10-13 15:37:42 +04:00
Andrey Breslav ad8de070fa A flag in the JDR to govern usage of platform types 2014-10-13 15:37:42 +04:00
Pavel V. Talanov 6eae62c235 Do not report NON_FINAL_MEMBER_IN_FINAL_CLASS on open members in enum classes 2014-10-10 17:43:32 +04:00
Pavel V. Talanov 4136c80358 Do not report ABSTRACT_MEMBER_NOT_IMPLEMENTED on enum classes
Partial fix of KT-3454
2014-10-10 17:43:31 +04:00
Evgeny Gerashchenko 38514673bf Clarified assertion for EA-53060. 2014-10-10 16:00:25 +04:00
Michael Bogdanov 1944f75802 Skip default methods on single abstract method search
Fix for KT-4886: SAM conversion doesn't work for interfaces with default methods

  #KT-4886 Fixed
2014-10-09 17:15:46 +04:00
Nikolay Krasko 555119f59a Exceptions during 'compute' in storage manager must be processed with exception strategy
#KT-5134 Fixed
2014-10-02 23:37:49 +04:00
Svetlana Isakova 20f3403c80 Rename: this object, receiver argument -> dispatch receiver, extension receiver 2014-10-01 18:52:51 +04:00
Nikolay Krasko 7bf622dd26 Rewrite to Kotlin: super navigation markers methods 2014-10-01 18:02:57 +04:00
Michael Bogdanov 469db95662 Inline markers added 2014-09-29 17:16:57 +04:00
Pavel V. Talanov 54799b1a34 Internal visibility works the same as public
Fix test data
This change is needed to preserve old behaviour for M9
isFriend() utilities become unused after this change
2014-09-26 22:06:32 +04:00
Alexander Udalov 19497262b3 Don't lookup built-in classes by invalid names
#KT-5869 Fixed
2014-09-26 18:48:43 +04:00
Alexander Udalov 96308aa14e Increase ABI version
After changes to package part names and top level closure names
2014-09-26 10:23:21 +04:00
Alexander Udalov c57441b51b Use '$' instead of '-' in package part class names
Otherwise some tools break (e.g. CheckMethodAdapter in ASM, used in generic
signature writer) because they expect class names to be Java identifiers.

Some tests fixed, some will be fixed in future commits
2014-09-26 10:22:20 +04:00
Valentin Kipyatkov e30998d3c1 Moved an utility method 2014-09-25 17:10:23 +04:00