Alexander Udalov
2eb5201575
Introduce KAnnotatedElement and val annotations: List<Annotation>
2015-08-03 23:32:23 +03:00
Alexander Udalov
af9ae46f9a
Minor, fix test on KParameter.index
2015-08-03 23:06:14 +03:00
Dmitry Petrov
9bf0211152
KT-8408 Prohibit Array<T>::class for non-reified T
2015-07-30 12:18:29 +03:00
Alexander Udalov
a0cc313156
Support class reference expression for reified type parameters
...
Also make KClass::java an intrinsic property.
Based on the work by @dnpetrov
#KT-6976 Fixed
2015-07-30 12:18:28 +03:00
Alexander Udalov
628bb774fd
Support class reference expressions without kotlin-reflect.jar in classpath
...
Currently not much you can do with them, but in the future '.java' extension
property will allow to get the Class instance from it.
Also introduce codegen tests with stdlib but without reflection in the
classpath.
Based on the work by @dnpetrov
2015-07-30 12:18:28 +03:00
Alexander Udalov
a93484b457
Fix callable reference to member of generic class
2015-07-29 23:44:19 +03:00
Alexander Udalov
ef4a5e78ed
Catch IllegalAccessException in KFunction.call
...
Rename IllegalPropertyAccessException -> IllegalCallableAccessException
2015-07-29 21:36:51 +03:00
Alexander Udalov
262099c899
Fix KFunction.javaMethod for property accessors
2015-07-29 21:36:50 +03:00
Alexander Udalov
9c4ba711b8
Rename and implement KProperty.accessible -> KCallable.isAccessible
2015-07-29 21:36:49 +03:00
Alexander Udalov
8f0885ca03
Rename KClass.properties and extensionProperties: prepend 'member'
...
To better emphasize the fact that all returned properties require an instance
of the class they are declared in. Another issue was that
'Some::class.extensionProperties' was sometimes incorrectly perceived as
"get all extension properties available on the class Some"
2015-07-29 21:36:47 +03:00
Alexander Udalov
7fc499df46
Support KClass.primaryConstructor
2015-07-29 21:36:46 +03:00
Alexander Udalov
e079b8f425
Support KCallable.call
...
#KT-2187 Fixed
2015-07-29 21:36:42 +03:00
Alexander Udalov
936bede8b1
Support mapping between Kotlin functions and JVM methods/constructors
2015-07-29 21:36:41 +03:00
Alexander Udalov
93656c93c1
Support KPackage.members, functions and properties
2015-07-29 21:36:40 +03:00
Alexander Udalov
6ab1c6bfb3
Add KParameter.type, KType, KType.isMarkedNullable
2015-07-29 21:36:38 +03:00
Alexander Udalov
81ef1c19d8
Support KClass.constructors in reflection
2015-07-29 21:36:37 +03:00
Alexander Udalov
da5cffdb60
Support KClass.functions and declaredFunctions
2015-07-29 21:36:36 +03:00
Alexander Udalov
50dbda1e1a
Introduce KClass.members, make properties/extensionProperties extensions
...
To avoid significant growth of KClass and KPackage interfaces
2015-07-29 21:36:36 +03:00
Alexander Udalov
5962b79126
Support introspection of parameter names and indices in reflection
2015-07-29 21:36:34 +03:00
Alexander Udalov
87c70aa2ae
Make Class<*>.kotlinPackage nullable
2015-07-29 21:36:33 +03:00
Mikhail Glukhikh
609d696202
Annotations have now retention of "RUNTIME" by default. Java retention is generated as given by kotlin annotation. Annotation rendering changed.
...
Annotation arguments with default values are rendered as ... if renderDefaultAnnotationArguments is true.
Tests: java retention does not taken into account by Descriptor comparator.
Java retentinon changed to kotlin retention in some tests + one new test with java retention added.
More accurate tests for intentions in byte code (visibility controlled).
2015-07-14 16:25:01 +03:00
Dmitry Petrov
d540ff8890
KT-8206 java.lang.NoSuchFieldError: $kotlinClass for deprecated::class
...
Instantiate class literals for annotation classes as foreign.
2015-07-10 20:10:15 +03:00
Alexander Udalov
16b5b95556
Test equals/hashCode/toString for function references
2015-07-10 20:10:14 +03:00
Alexander Udalov
4f1247f03f
Support property getters/setters in reflection
2015-07-10 20:10:10 +03:00
Alexander Udalov
048a9b686e
Generate separate anonymous class for each property reference
...
Each property reference obtained by the '::' operator now causes back-end to
generate an anonymous subclass of the corresponding KProperty class, with the
customized behavior. This fixes a number of issues:
- get/set/name of property references now works without kotlin-reflect.jar in
the classpath
- get/set/name methods are now overridden with statically-generated property
access instead of the default KPropertyImpl's behavior of using Java
reflection, which should be a lot faster
- references to private/protected properties now work without the need to set
'accessible' flag, because corresponding synthetic accessors are generated at
compile-time near the target property
#KT-6870 Fixed
#KT-6873 Fixed
#KT-7033 Fixed
2015-07-10 20:10:09 +03:00
Alexander Udalov
30794060a9
Simplify property hierarchy in reflection
...
Leave only 3*2 = 6 classes: KProperty0, KProperty1, KProperty2 and their
mutable analogs, depending on the number of receivers a property takes
2015-07-10 20:10:09 +03:00
Alexander Udalov
3549e1e035
Add KFunction.name, support reflection for function references
...
#KT-7694 Fixed
2015-07-10 20:10:07 +03:00
Alexander Udalov
bc168c0cba
Support KClass.jvmName = java.lang.Class.getName()
2015-07-10 20:10:07 +03:00
Alexander Udalov
236214305f
Support KClass.qualifiedName for non-local classes
2015-07-10 20:10:06 +03:00
Denis Zharkov
cfadda8061
Fix codegen tests after types enhancement
2015-07-09 16:36:44 +03:00
Denis Zharkov
c9f79c2d05
Adjust testData: get rid of obsolete annotations
2015-06-12 09:23:31 +03:00
Dmitry Jemerov
4bdf598bfe
compiler testdata: s/trait/interface
2015-05-12 19:43:17 +02:00
Alexander Udalov
0dec1eaaad
Refactor RuntimeTypeMapper, extract IntrinsicObjects-related behavior
...
Make it similar to other JavaToKotlinClassMapBuilder implementations to be able
to get rid of that inheritance
2015-04-24 02:09:04 +03:00
Denis Zharkov
cc17f7d82d
JVM: Support using KClass as annotation parameter type
2015-04-16 10:40:19 +03:00
Alexander Udalov
6182b3ff5c
Prohibit Array::class, require type arguments for reified parameters
2015-04-09 19:46:47 +03:00
Alexander Udalov
87ef4ff7c5
Fix KClassImpl#toString to render Kotlin FQ name, not JVM one
2015-04-07 20:25:06 +03:00
Alexander Udalov
715641fb0d
Call getMethod/getDeclaredMethod depending on visibility
2015-04-07 20:20:40 +03:00
Alexander Udalov
0202217135
Fix JVM signatures involving multi-dimensional array types
...
Apparently ASM's Type#getElementType returns the type of the array even if it's
multi-dimensional, so the loop was incorrect
2015-04-07 20:06:23 +03:00
Nikolay Krasko
2946c1d6a8
KT-7271 Accessing an extension property of Char.Companion leads to ClassNotFoundException in runtime
...
#KT-7271 Fixed
2015-04-07 15:59:05 +03:00
Stanislav Erokhin
b152211096
Added init keyword to testdata
2015-04-07 13:08:51 +03:00
Alexander Udalov
7e69a5ac9a
Don't create KProperty instance for synthetic field
...
#KT-5759 Fixed
2015-03-23 16:30:26 +03:00
Alexander Udalov
9cf0720925
Fix KClass.simpleName for local classes
2015-03-23 16:30:24 +03:00
Alexander Udalov
a4f9fe1eaa
Filter out invisible fakes in KClass.properties
...
A user will rarely need those at the moment, and there's currently no other way
to let him filter out them by himself
2015-03-17 23:39:13 +03:00
Alexander Udalov
d3abd54b06
Add 'val KClass.declaredProperties', make getProperties a property
2015-03-17 23:39:13 +03:00
Pavel V. Talanov
06916d98c6
default -> companion: replace all mentions of default and default object
2015-03-17 15:47:39 +03:00
Stanislav Erokhin
a89b48c577
Backend support for function expression
2015-03-12 17:11:46 +03:00
Alexander Udalov
dc4dfbeec1
Fix generic class literals, substitute type parameters with stars
2015-03-11 16:42:47 +03:00
Alexander Udalov
6468515d99
Report error when LHS of class literal is not a class
2015-03-11 16:42:45 +03:00
Alexander Udalov
b93b9bd565
Support KClass.simpleName and built-in class literals
2015-03-11 16:42:43 +03:00
Alexander Udalov
6e45c6f17c
Support class literals (A::class)
2015-03-11 16:42:41 +03:00