Commit Graph

217 Commits

Author SHA1 Message Date
Mikhail Glukhikh 4c03aaabd4 Implicit nothing / intersection types are now checked also for member functions #KT-11666 Fixed 2016-03-31 11:59:17 +03:00
Alexander Udalov 6924d883eb Support reflection calls to multifile class members
#KT-11447 Fixed
2016-03-28 21:11:14 +03:00
Alexander Udalov eef3631b8a Improve toString() for lambdas and function expressions
#KT-9952 Fixed
2016-03-09 10:49:26 +03:00
Alexander Udalov dc085c45b7 Improve exception on creating KClass for classes which are not classes in Kotlin 2016-03-03 16:08:18 +03:00
Alexander Udalov ae14d185eb Support setters for Java-method-based properties in reflection
Also heuristically support the corner case of multiple properties with the same
name and signature in a Java class, see the comment in
KDeclarationContainerImpl

 #KT-11258 Fixed
2016-03-03 16:08:18 +03:00
Alexander Udalov 14b1a3a048 Don't fail on requesting members of Java collection classes
RuntimeTypeMapper assumed that JavaPropertyDescriptor was necessarily backed by
JavaField, which has changed when we started to load Java method (or a pair of
methods) overriding a Kotlin property as a property, not as a method. Another
example of this situation is special built-in properties which are mapped to
Java methods, e.g. java.util.Collection#size() <-> kotlin.Collection#size. This
change adds support for the case of a property backed by a JavaMethod.

Note that callable references or usage of any reflection API related to
built-in members is not supported anyway and will currently fail with errors

 #KT-11258 Fixed
2016-03-03 16:08:18 +03:00
Alexander Udalov 371051b1d6 Filter out package members from other facades in KPackageImpl
#KT-10690 Fixed
2016-03-03 16:08:18 +03:00
Alexander Udalov 1c0bbcd72b Fix KProperty.javaField for fake overrides
#KT-8131 Fixed
2016-03-03 16:08:18 +03:00
Alexander Udalov e849792712 Minor, add KCallableImpl#container 2016-03-02 19:01:10 +03:00
Alexander Udalov 1a5a077bd6 Replace map + filterNotNull -> mapNotNull in project 2016-02-20 19:05:30 +03:00
Pavel V. Talanov 1800e5a7db Remove some usages of Name.guess (and rename this utility to discourage new usages) 2016-02-15 13:32:42 +03:00
Alexander Udalov ba80e8ba81 Use kotlin.Metadata instead of old annotations in IDE, reflection and tests 2016-02-06 15:53:55 +05:30
Alexander Udalov 2a5b4d2c83 Fix annotations on Java elements in reflection
#KT-10840 Fixed
2016-01-28 21:48:16 +03:00
Michael Bogdanov 829978a37d Added additional parameter for default methods 2016-01-22 10:10:32 +03:00
Alexander Udalov 9620893fa4 Drop synthetic class kind Function, drop Metadata#xi 2016-01-19 18:39:59 +03:00
Alexander Udalov a4daa08e5c Write module name as proto extension instead of another annotation argument 2016-01-19 18:39:59 +03:00
Alexander Udalov 7906ac63b5 Read Metadata annotation, support option to ignore old annotations 2016-01-19 18:39:59 +03:00
Dmitry Jemerov 3870bd04b8 core: cleanup 'public', property access syntax 2016-01-07 18:03:09 +01:00
Alexander Udalov 890c961383 Fix reflection internal error on enum nested classes query
#KT-10520 Fixed
2015-12-28 16:40:34 +03:00
Alexander Udalov 3513a64351 Move utilities about companion property fields to JvmAbi
To reuse that logic in reflection
2015-12-25 20:16:18 +03:00
Alexander Udalov dc6a176282 Drop old JVM binary format extensions: static in outer, impl class name 2015-12-25 20:16:18 +03:00
Alexander Udalov 03606c13aa Introduce PackagePartSource to store part class name in deserialized descriptors
Not used at the moment, will be in the following commits
2015-12-23 16:45:26 +03:00
Alexander Udalov a9476dfe37 Replace 'kotlin-runtime' in module dependencies with 'util' 2015-12-21 18:46:08 +03:00
Alexander Udalov dc84445e2e Inherit KProperty interfaces from function types
To be able to write the following: listOfStrings.map(String::length)
2015-12-16 19:48:28 +03:00
Ilya Gorbunov 5aff07561d Move jvm annotations and class mapping intrinsics to runtime.jvm module to kotlin.jvm package.
Make annotationClass to be a property.
Deprecate with error javaClass property on KClass<T>
2015-12-14 03:51:07 +03:00
Dmitry Jemerov e97e82d119 use terms "lambda expression" and "anonymous function" instead of "function literal" and "function expression" 2015-12-09 13:55:40 +01:00
Alexander Udalov 9a01c0d9cb Test that no delegated properties are used in critical classes in reflection 2015-12-08 22:59:00 +03:00
Alexander Udalov 8594cfca46 Remove kotlin.jvm.internal.KotlinPackage and corresponding code 2015-11-27 21:22:04 +03:00
Alexander Udalov ad6888dac6 Drop KPackage and deprecated stuff from Reflection/ReflectionFactory 2015-11-27 21:22:04 +03:00
Alexander Udalov 6367e5e133 Fix deadlock on static initializers of KProperty implementations
#KT-10041 Fixed
2015-11-19 02:57:27 +03:00
Alexander Udalov 596a74d288 Code cleanup in reflection.jvm, generator scripts 2015-11-09 22:24:41 +03:00
Alexander Udalov 1576160390 Improve implementation of callable reference superclasses
Previously to use reflection on them, you had to wrap an already created object
with a "Reflection.function" or "Reflection.propertyN" call, which the JVM
back-end was doing. This was not optimal in several senses and current solution
fixes that
2015-11-09 22:24:40 +03:00
Alexander Udalov 7d32524754 Do not fail with type cast when not needed in reflection.jvm 2015-11-09 22:24:40 +03:00
Alexander Udalov baa28de865 Add factory methods to create class references with internal names
Will be used in future versions to support references to mapped mutable
collections
2015-11-09 22:24:39 +03:00
Stanislav Erokhin 2c3f58eeb7 Renamed methods in MemberScope from getSmth to getContributedSmth 2015-11-05 14:34:00 +03:00
Stanislav Erokhin 6f9d9759ce Renamed KtScope to MemberScope 2015-11-05 14:34:00 +03:00
Stanislav Erokhin 0b5de434fa Removed usages KtScope.getAllDescriptors 2015-11-04 12:41:34 +03:00
Dmitry Jemerov 736b496f6a drop deprecated @platformName and @platformStatic annotations 2015-11-02 17:00:44 +01:00
Mikhail Glukhikh f8a70302ac Cleanup: get rid of effective visibility warnings 2015-10-28 14:31:51 +03:00
Alexander Udalov b8b98b4eaa Support get/set on KProperty objects for delegated properties 2015-10-26 21:02:35 +03:00
Alexander Udalov f2a37b4150 Minor, move KProperty for property references to separate file 2015-10-26 21:02:35 +03:00
Dmitry Jemerov d6a3870101 rename Kt to Kotlin in KtType, KtIcons 2015-10-20 16:23:31 +02:00
Dmitry Jemerov 49033e0002 rename Jet* classes to Kt* 2015-10-19 21:35:30 +02:00
Alexander Udalov a501878d60 Workaround circular dependency of KProperty1 and KClassImpl
This appeared after introduction of KProperty in delegated property convention
methods. If a KProperty1 instance is created while constructing a KClassImpl
instance before assigning the 'jClass' field, an NPE is thrown because the
constructor of that KProperty1 instance tries to lookup the declaring class of
the property, which in some case happens to be the exact KClassImpl we're
constructing. No test added because I was not able to reproduce the behavior in
an isolated environment
2015-10-19 15:20:20 +03:00
Alexander Udalov 82d2e623d3 Support a more optimized way of storing types in metadata
Together with almost every type now there's also an id which references a type
from a separate table. Storing such ids instead of Type messages will allow to
reduce the size of the metadata for files where types are used many times over
and over again. Currently only deserialization of such types is supported,
along with the former mechanism
2015-10-15 18:25:39 +03:00
Dmitry Petrov 8cd624a58a Drop package facades: code cleanup in Kotlin project. 2015-10-15 10:33:47 +03:00
Alexander Udalov 3c74f48f91 Pass KProperty instances to property delegates
Inherit KProperty from PropertyMetadata, cache corresponding KProperty objects
instead of PropertyMetadataImpl objects, add support for properties with 2
receivers
2015-10-14 20:45:24 +03:00
Andrey Breslav 8e7f6f3c8c Migrated from @HiddenDeclaration to @Deprecated(..., level = DeprecationLevel.HIDDEN) 2015-10-13 13:50:16 +03:00
Alexander Udalov 5f18cb8703 Rename files in reflection.jvm
Move KDeclarationContainer.functions to KClasses and make it accept only
KClass, since KPackage is deprecated anyway
2015-10-13 11:58:45 +03:00
Michael Bogdanov a09c8105c4 Support reflection on top level properties 2015-10-13 11:14:33 +03:00