5871 Commits

Author SHA1 Message Date
Svetlana Isakova 731efd0781 added declared bound constraints directly to constraint system
added status 'hasViolatedUpperBound'
class TypeConstraintsImpl now stores constraint position for each constraint,
so we can filter out bound constraints and find out if the system is successful without them
2013-10-16 19:51:53 +04:00
Svetlana Isakova ac33ccc0fe refactoring: moved method 2013-10-16 19:51:52 +04:00
Svetlana Isakova c150c22473 refactoring: register type variable together
not one by one
2013-10-16 19:51:52 +04:00
Svetlana Isakova 9a0ec7949e fixed bug in constraint system
For parameter type T constraint T? <: Int? should NOT transform to T <: Int, it should be T <: Int?
equality constraint T? = Int? should transform to T <: Int? && T >: Int
2013-10-16 19:51:52 +04:00
Alexander Udalov 2445d04338 Fix synthetic method generation for extension properties
If several annotated extension properties with the same name were declared in
one class, JVM issued a ClassFormatError, since we generated a synthetic method
for each of them with the same name and signature. Make the signature of this
synthetic method depend on a receiver parameter, if a property has one
2013-10-16 14:59:37 +04:00
Alexander Udalov 806d264771 Write full synthetic method signature for annotated property
This will be needed to support annotated extension properties, since they have
the same name but different signatures
2013-10-16 14:59:36 +04:00
Alexander Udalov 1fdb86f733 JavaArrayAnnotationArgument.getElements() returns List 2013-10-15 20:34:44 +04:00
Alexander Udalov 5b916ea108 Type parameters/arguments constitute lists, not collections 2013-10-15 20:34:44 +04:00
Alexander Udalov 0958e63be2 JavaMethod.getValueParameters() returns List 2013-10-15 20:22:59 +04:00
Andrey Breslav d52f2e25b0 AnnotationDescriptor interface extracted 2013-10-15 19:54:39 +04:00
Andrey Breslav cd275fd814 'runtime' module replaced by 'kotlin-runtime' library 2013-10-14 14:42:25 +04:00
Andrey Breslav d7936b7ea4 Do not fail when a class is not found 2013-10-06 17:01:40 +04:00
Andrey Breslav 00c3156b59 Use Unit instead of Void 2013-10-05 16:59:57 +04:00
Andrey Breslav 2e585f88a3 ReenteringLazyValueComputationException & co moved to frontend 2013-10-05 16:59:57 +04:00
Andrey Breslav 0765e89b19 Weakly retained memoized functions moved out of util.runtime 2013-10-05 16:59:57 +04:00
Andrey Breslav 5ebbe0d772 Get rid of dependency on guava in DFS 2013-10-05 16:59:57 +04:00
Andrey Breslav 239ca9728d StorageManager API does not use Computable and Function and more 2013-10-05 16:59:57 +04:00
Andrey Breslav 7d1c46ed2c Getting rid of Computable and Function in lazy values and memoized functions 2013-10-05 16:59:56 +04:00
Andrey Breslav 4d28dfada6 Lazy values and memoized functions conform to Kotlin's function interfaces 2013-10-05 16:59:56 +04:00
Alexander Udalov 9d7968457f JDR doesn't depend on intellij-core 2013-10-04 18:32:42 +04:00
Alexander Udalov 89dbafb6be Rename KotlinClassFileHeader and related classes 2013-10-04 18:32:42 +04:00
Alexander Udalov c3abd1c26f Delete LOG.error from ReadDataFromAnnotationVisitor
These conditions can happen on a broken binary data, no need to report an error
about it
2013-10-04 18:32:42 +04:00
Alexander Udalov 098d183a72 Remove Logger from AnnotationDescriptorDeserializer
Use abstract ErrorReporter instead
2013-10-04 18:32:42 +04:00
Alexander Udalov ef7bb0cdf4 Delete LOG.warn about number of type arguments from JDR
This can happen when loading symbols from incorrect Java sources, which is OK
2013-10-04 18:32:41 +04:00
Alexander Udalov f218877cf2 Get rid of dependency of PackageClassUtils on StringUtil 2013-10-04 18:32:41 +04:00
Alexander Udalov 5f0c593bb8 Minor, inline methods, use String instead of StringUtil 2013-10-04 18:32:41 +04:00
Alexander Udalov edda5d8801 Move AssertInvisibleInResolver check to frontend.java
This is a dirty hack, taking advantage of the fact that
JavaResolverCache.getClass() is called exactly once and right after this check
2013-10-04 18:32:41 +04:00
Alexander Udalov dbba6c614b Rename JvmClassName.getFqName() and add a warning
All usages of this method as of right now seem wrong, as they don't work in the
case of classes which contain dollars in their names -- dollars get replaced to
dots
2013-10-04 18:32:41 +04:00
Alexander Udalov e8d4aae48b Minimize usages of JvmClassName.getFqName() 2013-10-04 18:32:41 +04:00
Alexander Udalov 044a47905e Get rid of dependency on Guava's Multimap
Replace with a hand-written multi-map
2013-10-04 18:32:41 +04:00
Alexander Udalov 3d5e128267 Remove trivial dependencies of JDR on Guava 2013-10-04 18:32:41 +04:00
Alexander Udalov fc78971aea Delete JvmClassName.getAsmType() 2013-10-04 18:32:40 +04:00
Alexander Udalov 521496b188 Delete JvmPrimitiveType.getAsmType()
Create PrimitiveTypesUtil in frontend.java for this and other utilities
2013-10-04 18:32:40 +04:00
Alexander Udalov f4abaaee10 Delete JvmClassName.byType
Replace JvmClassName by ASM Type in many places of JVM codegen: it wasn't used
to abstract anything, but there was a lot of useless conversions between the
two
2013-10-04 18:32:39 +04:00
Alexander Udalov 6898274f47 Delete JvmClassName.getDescriptor()
It shouldn't be available in descriptor.loader.java, since it wouldn't depend
on ASM and its descriptors won't make any sense there. Most of the places where
this method was used were in codegen. The few exceptions are reading
annotations for compiled Kotlin classes by ASM visitors, but that will be
abstracted away soon
2013-10-04 18:32:39 +04:00
Alexander Udalov 45bc7c2926 Delete JvmClassName.byClass, refactor JvmAnnotationNames
Store constant class names as instances of FqName instead of JvmClassName. This
is done to minimize usages of the method 'JvmClassName.getFqName()', since it's
wrong and shouldn't be used
2013-10-04 18:32:39 +04:00
Alexander Udalov 6aab9fe04e Delete JvmClassName.byClassDescriptor
It only worked correctly by coincidence: mapping from the Kotlin world to the
JVM world should always be done through JetTypeMapper
2013-10-04 18:32:39 +04:00
Alexander Udalov 54db0e30c0 Delete signature name from JvmClassName 2013-10-04 18:32:39 +04:00
Alexander Udalov 1cb68e9cf4 Move KotlinToJavaTypesMap, AsmTypeConstants to frontend.java
They're used only in compiler
2013-10-04 18:32:38 +04:00
Alexander Udalov 73b867d1e5 Simplify JvmPrimitiveType, PrimitiveType
Delete utility methods from interfaces, move once-used methods to where they're
used
2013-10-04 18:32:38 +04:00
Alexander Udalov 1578d891cb Remove PsiClassFinder
Inline the implementation into JavaClassFinderImpl
2013-10-04 18:32:38 +04:00
Alexander Udalov 19dd2e5e1b Create special classes for decompiled Java enums
Simplify logic in JavaConstructorResolver and JavaClassResolver
2013-10-04 01:03:34 +04:00
Alexander Udalov 01e46bbd11 Move caching logic from java class scope to descriptor 2013-10-04 01:03:34 +04:00
Andrey Breslav 4cd5c66c27 No need to escape exceptions in recursionDetected() 2013-10-03 15:49:20 +04:00
Andrey Breslav db34868b6e Migrate existing code to LockBasedStorageManager.NO_LOCKS 2013-10-03 15:49:20 +04:00
Andrey Breslav aa90302d1b Tests for storage manager 2013-10-03 15:49:20 +04:00
Andrey Breslav 0591ceb7f0 Make ReenteringLazyValueComputationException debuggable in tests & internal mode 2013-10-03 15:49:20 +04:00
Andrey Breslav 5f4af8fb03 Distinguishing first and subsequent recursive calls to lazy values 2013-10-03 15:49:20 +04:00
Andrey Breslav eb20d358b0 Fall-through case removed 2013-10-03 15:49:20 +04:00
Andrey Breslav 41a73645c6 Using enum instead of Object constants 2013-10-03 15:49:20 +04:00