2cdf8cd7b1
Objective-C has a special type, "instancetype". Generally, it is a type that matches the method receiver type. So, if `Foo.foo` method returns `instancetype`, then `Foo.foo()` would be of type `Foo`, while `Bar.foo()` would be of type `Bar` (where `Bar` is a subclass of `Foo`). Surprisingly, `instancetype` can be used not only as a return type, but also somewhere inside a return type. cinterop wasn't ready for this. This commit expands implementation of `instancetype` in cinterop to cover more cases. ^KT-59597 Fixed
Running tests
- To run all tests, use
./gradlew :native:native.tests:test. Please note, this Gradle task is available only in development environment and it not available at CI server. - To execute certain tests only, use the appropriate Gradle tasks. Example:
./gradlew :native:native.tests:codegenBoxTest - To execute InteropIndexer tests for all targets, use:
for TARGET in android_x64 android_x86 android_arm32 android_arm64 \
ios_arm32 ios_arm64 ios_x64 ios_simulator_arm64 \
linux_x64 linux_arm64 linux_arm32_hfp linux_mips32 linux_mipsel32 \
macos_x64 macos_arm64 \
mingw_x86 mingw_x64 \
tvos_arm64 tvos_x64 tvos_simulator_arm64 \
wasm32 \
watchos_arm32 watchos_arm64 watchos_x86 watchos_x64 watchos_simulator_arm64 watchos_device_arm64
do
echo $TARGET
./gradlew :native:native.tests:interopIndexerTest -Pkotlin.internal.native.test.target=$TARGET
done
- To re-generate tests, use
./gradlew :native:native.tests:generateTests
For more details see Testing.