Commit Graph

460 Commits

Author SHA1 Message Date
Valentin Kipyatkov c2a3fde969 Converted JetScope to Kotlin 2014-11-05 21:42:12 +03:00
Nikolay Krasko 7e1546d3e7 Merge stored empty lists and sets to singe object 2014-11-02 14:55:00 +03:00
Andrey Breslav 60ff2df597 Memory optimization: Do not retain LinkedHashSets in caches
LinkedHashSets are replaced with tight ArrayLists
2014-11-01 13:38:24 +02:00
Andrey Breslav a14eefcea3 KT-6077 Compiler does not issue error on unsafe access to ArrayList with nullable values
#KT-6077 Fixed
2014-10-22 00:41:20 +04:00
Alexander Udalov f632a34959 Delete unused JavaSignatureFormatter 2014-10-17 21:27:21 +04:00
Andrey Breslav b1e452b568 type unescaped in *.kt files 2014-10-14 13:02:13 +04:00
Andrey Breslav b20439027c Advancing ABI version
Related changes:
 - serialization of flexible types supported
 - Intrinsics.checkExpressionValueIsNotNull() added
2014-10-13 15:38:23 +04:00
Andrey Breslav f1675a9162 Minor. Getters replaced by properties 2014-10-13 15:38:21 +04:00
Andrey Breslav 070a7d4d72 Serialization of flexible types supported 2014-10-13 15:38:20 +04:00
Andrey Breslav 013dd7261e Extensible specificity expressed as a type capability 2014-10-13 15:38:11 +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 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 583694a450 Flexible types for primitive arrays 2014-10-13 15:37:54 +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 b665a1998b Supertypes should not be flexible 2014-10-13 15:37:47 +04:00
Andrey Breslav f11095b1d0 Minor. DelegatingFlexibleType moved to top level 2014-10-13 15:37:45 +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
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
Svetlana Isakova 20f3403c80 Rename: this object, receiver argument -> dispatch receiver, extension receiver 2014-10-01 18:52:51 +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
Alexander Udalov 1905401273 Move ClassId to module descriptors, closer to other names 2014-09-16 11:36:39 +04:00
Alexander Udalov ed92eb1d17 Minor, use another constructor of ClassId 2014-09-16 11:32:45 +04:00
Alexander Udalov 73a92c6aa9 Remove JavaClass.getAllMethods()/getAllFields()
Their behavior is different in PSI and reflection (two things that this
interface is supposed to unify), so there's no point in making it interface
methods, rather we should just walk supertype hierarchy manually

Also make JavaClassImpl.getSupertypes() invoke PsiClass.getSuperTypes(),
because it also contains java.lang.Object for interfaces, which makes
equals/hashCode/toString appear in interfaces' getAllMethods() as well
2014-09-15 19:30:53 +04:00
Alexander Udalov 3485d65d8a Remove superfluous isVararg() from JavaMethod 2014-09-15 19:30:52 +04:00
Alexander Udalov 924283d2d9 Extract JavaConstructor out of JavaMethod
Will be useful in reflection-backed implementation of Java structure, where
Constructor is not a Method and doesn't even inherit from it
2014-09-15 19:30:52 +04:00
Alexander Udalov 7595e32bb6 Use ClassId instead of JvmClassName in KotlinJvmBinaryClass
ClassId contains exact information about origin of the class (e.g. if '$' in
the class name denotes nested classes separator or just a character in the
name)
2014-09-15 19:30:51 +04:00
Alexander Udalov e3b01f073f Replace FqName by ClassId where possible in Java resolver 2014-09-15 19:30:51 +04:00
Alexander Udalov a8c5f1bb3a Drop KotlinClassFinder#findKotlinClass(FqName)
findKotlinClass(ClassId) should be used instead
2014-09-15 19:30:50 +04:00
Alexander Udalov 422e922c36 Make JavaClassFinder accept ClassId rather than FqName
ClassId has more information about the name which will be very useful when
implementing JavaClassFinder in reflection
2014-09-15 19:30:50 +04:00
Alexander Udalov e9ae06a53e Straighten out MemberIndex calculation in LazyJavaStaticScope
Also delete confusing "inn" function
2014-09-15 19:30:50 +04:00
Alexander Udalov 0cb7c08a7a Minor, delete unneeded underscores from parameter names 2014-09-15 19:30:50 +04:00
Alexander Udalov bc1d59a538 Add KotlinClassFinder#findKotlinClass(ClassId)
Will be used to load nested classes correctly at runtime
2014-09-15 19:30:50 +04:00
Alexander Udalov c854b1d713 Unextend JavaAnnotationArgumentImpl from JavaElementImpl 2014-09-15 19:30:49 +04:00
Alexander Udalov 4c51368244 Rewrite JavaAnnotationArgument interfaces and implementations to Kotlin 2014-09-15 19:30:49 +04:00
Alexander Udalov ec02382976 Assert that reference annotation argument is always an enum value
Rename JavaReferenceAnnotationArgument on that occasion to
JavaEnumValueAnnotationArgument. Also add a test on a nested enum annotation
argument
2014-09-15 19:30:49 +04:00
Alexander Udalov 2f12875515 Extract "values" and "valueOf" names as static constants 2014-09-09 20:42:38 +04:00
Alexander Udalov 4bd603818a Drop LazyJavaDescriptor, JavaPackageFragmentDescriptor 2014-09-09 20:42:38 +04:00
Alexander Udalov 148d583212 Drop JavaPackageFragmentProvider 2014-09-09 20:42:38 +04:00
Alexander Udalov b52f337f7f Drop enum class object hack
Place valueOf() and values() into the static scope of the corresponding enum
class

 #KT-5580 Fixed
 #KT-2410 Fixed
2014-09-09 20:42:37 +04:00
Alexander Udalov 8ccca1781d Support static class scope in frontend, JVM codegen and IDE 2014-09-09 20:42:36 +04:00
Alexander Udalov 76986f850f Drop outdated code in JDR related to static class members 2014-09-09 20:42:36 +04:00
Alexander Udalov bcfb5f3b09 Rewrite Java resolve to use static class scope instead of synthesized packages
#KT-4149 Fixed
 #KT-4839 Fixed
2014-09-09 20:42:36 +04:00
Alexander Udalov 75df4a9ad8 Introduce ClassDescriptor#getStaticScope()
Will be used to exterminate hacks related to static Java methods in our
codebase: synthetic class object for enum, synthetic package for static members
of Java classes, etc.
2014-09-09 20:42:35 +04:00