Delete the old ones in package kotlin.reflect.jvm because otherwise the code
using those functions will become red in a lot less meaningful way (overload
resolution ambiguity) than if they're deleted (unresolved import)
Based on the work originally done by @dnpetrov
#KT-8380 Fixed
This was already working for accessor-based properties because the assertions
were already generated into corresponding accessors, but for fields we must
manually check the value against null
- compute a FunctionCaller instance for getter and setter so that "call" only
delegates to that FunctionCaller's "call", in the same way it's done in
KFunctionImpl
- use RuntimeTypeMapper.mapPropertySignature to get the exact origin and
signature of a property and its accessors. This makes unwrapFakeOverride call
unnecessary and also fixes some cases like private Java fields
- temporarily drop custom range checks, will be re-added soon
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
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"
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).
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