Commit Graph

16360 Commits

Author SHA1 Message Date
Alexander Udalov bc8bce7ca1 Provide "toString" for reflection objects 2014-07-02 01:55:55 +04:00
Alexander Udalov c5d92cc03e Provide "equals" and "hashCode" for reflection objects 2014-07-02 01:55:55 +04:00
Alexander Udalov 704de8992e Support mapping between Java and Kotlin reflection objects 2014-07-02 01:55:55 +04:00
Alexander Udalov c575ad9fb0 Fix test, remove duplicate annotation
It started to fail only now because KClassImpl constructor is now loading
class' annotations (previously annotations weren't loaded by Java reflection)
2014-07-02 01:55:54 +04:00
Alexander Udalov f459005fe7 Fix GeneratedClassLoader so that it loads Package instances 2014-07-02 01:55:54 +04:00
Alexander Udalov a38a396a43 Remove default import "kotlin.reflect"
Basic reflection is usable without any imports (with :: literals)

This reverts commit 9503056dd5.
2014-07-02 01:55:53 +04:00
Alexander Udalov d32a02f21a Modify top-level/extension property hierarchy
- rename KTopLevelProperty to KTopLevelVariable
- create KTopLevelExtensionProperty, a subclass of KExtensionProperty
- create KTopLevelProperty, a superclass of KTopLevelVariable and
  KTopLevelExtensionProperty. (In the future, it will have a container of type
  KPackage.)
2014-07-02 01:55:53 +04:00
Alexander Udalov f73b8b9ff8 Extract KForeignMemberProperty out of KMemberPropertyImpl
KClassImpl is now able to create a property by the name, according to its
origin
2014-07-02 01:55:52 +04:00
Alexander Udalov 9c5596cddb Expose Java reflection objects out of Kotlin ones 2014-07-02 01:55:52 +04:00
Alexander Udalov 1ad037f621 Fix KClassOrigin for non-Kotlin classes
Check against presence of KotlinClass annotation
2014-07-02 01:55:21 +04:00
Alexander Udalov 8b619eceed Make KMemberProperty's T parameter have a non-null bound 2014-07-02 01:26:25 +04:00
Alexander Udalov 7cbbeb257e Add NotNull annotations to HashPMap 2014-07-02 01:26:25 +04:00
Alexander Udalov e60428b540 Improve performance of foreignKClasses, add comments 2014-07-02 01:26:24 +04:00
Alexander Udalov 0fa6b40731 Make intermediate *Impl properties traits, not classes
Otherwise multiple inheritance of classes would be needed to make
implementations inherit correctly for mutable properties
2014-07-02 01:26:24 +04:00
Alexander Udalov ef7fbe55cf Make KClass instances weak in foreignKClasses 2014-07-02 01:26:24 +04:00
Alexander Udalov a86cfdc5de Add some simple tests on HashPMap 2014-07-02 01:26:23 +04:00
Alexander Udalov 47b08af66c Inline HashPMap entry's getter methods 2014-07-02 01:26:23 +04:00
Alexander Udalov b00022ef1c Add JetBrains license to HashPMap, remove obsolete author tags and javadocs 2014-07-02 01:26:23 +04:00
Alexander Udalov 41aa12d249 Remove unneeded dependency on ListIterator in ConsPStack 2014-07-02 01:26:22 +04:00
Alexander Udalov 862a785c11 Use pcollections' HashPMap instead of ConcurrentHashMap in reflection 2014-07-02 01:26:22 +04:00
Alexander Udalov fca9a0bca2 Delete unneeded interface dependencies of HashPMap
To reduce class count and to avoid unneeded invokeinterface's
2014-07-02 01:26:22 +04:00
Alexander Udalov d83df541b7 Remove unneeded code and beautify HashPMap and its dependencies 2014-07-02 01:26:21 +04:00
Alexander Udalov 58bc611e3a Copy pcollections's HashPMap to kotlin/reflect/jvm/internal
It will be used for caching KClass instances for foreign (Java) classes
2014-07-02 01:26:21 +04:00
Alexander Udalov 89d6f25fb6 Fix initialization order of KClass field and class object fields 2014-07-02 01:26:21 +04:00
Alexander Udalov c17f515d06 Construct reflection objects via static factory methods
JVM back-end now generates invocations of these methods instead of
KClass/K*Property/... constructors for two reasons:

1. It occupies less space in the bytecode
2. We can (to some degree) alter the implementation of the factory methods
   without changing the ABI compatibility version
2014-07-02 01:26:20 +04:00
Alexander Udalov e7f19c531a Support 'accessible' for reflected properties on JVM
Calls Java reflection's isAccessible/setAccessible
2014-07-02 01:26:20 +04:00
Alexander Udalov 1275c84f92 Fail with IllegalAccessException on :: reference to private property
Instead of mysterious NoSuchMethodException
2014-07-02 01:26:20 +04:00
Alexander Udalov a8e1de48b8 Support :: references to Java instance fields in codegen
#KT-1183 In Progress
2014-07-02 01:26:19 +04:00
Alexander Udalov 5ab83aad8a Support references to extension properties in JVM codegen
#KT-1183 In Progress
2014-07-02 01:26:19 +04:00
Alexander Udalov 461cce103b Support references to top level and member properties in JVM codegen
#KT-1183 In Progress
2014-07-02 01:26:19 +04:00
Alexander Udalov 59777e7df6 Generate "$kotlinClass"/"$kotlinPackage" reflection fields to every class
Some seemingly irrelevant tests were changed because now there's <clinit> in
almost every class and class initialization begins with executing it
2014-07-02 01:26:18 +04:00
Alexander Udalov 4ef089d2ed Introduce KClass, KPackage and their JVM implementations 2014-07-02 01:26:18 +04:00
Alexander Udalov aa4d6a4ea7 Support :: references to properties in frontend
#KT-1183 In Progress
2014-07-02 01:26:18 +04:00
Alexander Udalov 52dadfc264 Add test for obsolete issue
#KT-3311 Obsolete
2014-07-02 00:38:50 +04:00
Alexander Udalov 254a95ba1a Improve non-null assertion messages 2014-07-02 00:38:50 +04:00
Alexander Udalov d4c792d0ee Fix errorlevel returned by kotlinc-*.bat scripts
Propagate errorlevel returned as an exit code from the compiler to the outside
world.

This may not work on Windows XP or earlier, but is required for Windows 7+
2014-07-02 00:38:49 +04:00
Natalia Ukhorskaya 47f4bbedda Fix file separators in Codegen Tests on Windows 2014-07-01 12:17:01 +04:00
Natalia Ukhorskaya 261ba0e364 Fix Android tests after renaming codegen tests with Java 2014-06-30 13:03:05 +04:00
Alexander Udalov 46da00a9a7 Minor, fix typo 2014-06-26 22:03:01 +04:00
Alexander Udalov 2ce4219b43 Add sensible "toString()" to kotlin.jvm.internal.Ref
No tests added because it's difficult to test: codegen always unwraps refs to
the objects they are referencing

 #KT-5205 Fixed
2014-06-26 22:03:01 +04:00
Alexander Udalov c56f397f71 Don't fail when "deprecated" doesn't have a message
EA-57345
2014-06-26 22:03:00 +04:00
Alexander Udalov c18fd179a9 Get rid of intellij Pair in TypeUtils 2014-06-26 22:02:59 +04:00
Alexander Udalov beb66e2247 Minor, don't intersect sets, use retainAll instead 2014-06-26 22:02:59 +04:00
Alexander Udalov eb11a7dc88 Move utilities out of runtime modules
DescriptorUtils & DescriptorSubstitutor contained a lot of utilities that were
used only in compiler & IDE. Move them closer to their usages
2014-06-26 22:02:59 +04:00
Alexander Udalov e04f7c24fa Alias 'kotlinc' for 'kotlinc-jvm' 2014-06-26 22:02:58 +04:00
Alexander Udalov e09052bb1d Unmark dist/kotlinc/bin/*.bat as executable on Unix 2014-06-26 22:02:58 +04:00
Alexander Udalov 760fd73a0a Don't launch REPL on "kotlinc-jvm -version"
#KT-3169 Fixed
2014-06-26 22:02:58 +04:00
Alexander Udalov 16ec4c3805 Minor, add path utility to codegen tests 2014-06-26 22:02:57 +04:00
Alexander Udalov aea230d677 Introduce black box with Java codegen tests
In contrast to "black box against Java", it supports cyclic dependencies
between Java and Kotlin sources in one test case
2014-06-26 20:57:40 +04:00
Alexander Udalov 09863445bb Rename tests: boxWithJava -> boxAgainstJava 2014-06-26 20:57:40 +04:00