100 Commits
Author SHA1 Message Date
Sebastian Sellmair a13756cfe9 [aa-klib-reader] Move aa-klib-reader to pkg 'o.j.k.native.analysis.api'
To clearly distinguish this modules API from the Analysis API

^KT-66695 Fixed
2024-03-19 12:35:52 +00:00
Sebastian Sellmair 426d71b088 [aa-klib-reader] Only resolve symbols from the associated library/sourceFile
Previously the addresses were resolved by only respecting
CallableId or ClassId. This however, could lead to
resolving symbols that were not defined in the klib which
initially provided the declaration address.

E.g. this commit adds a test in `GetSymbolsTest`, where
```
// A.kt
private fun foo() = 42

// B.kt
private fun foo() = 42
```

In this case the two source files (A.kt and B.kt) defined
two distinct addresses for `foo`. However: Resolving
any of those two addresses would resolve both functions (A&B), which
is not expected.

^KT-66271 Fixed
2024-03-18 10:13:57 +00:00
Sebastian Sellmair 6b98602afc [Analysis Api] Expose klibSourceFile via KtKlibSourceFileProviderMixIn
This `klibSourceFile` information is deserialized from klibs
to retain the information of the original SourceFile location
of a declaration.

^KT-66271 Fixed
2024-03-18 10:13:57 +00:00
Sebastian Sellmair 6d8a4a28af [FIR] Deserialize Klib KlibMetadataProtoBuf. classFile, functionFile & propertyFile
klibs provide information about the container source file
in the KlibMetadataProtoBuf extensions for functions,
properties and classes.

This information is deserialized and attached to the
`klibSourceFile` extension (stored in FirDeclarationDataRegistry)

^KT-66271 Fixed
2024-03-18 10:13:57 +00:00
Sebastian Sellmair 10cf97f05b [ObjCExport] Support exported library modules
This new module gives the ability to resolve symbols
from provided klib KtLibraryModules withing a Analysis Session.

^KT-65327 Fixed
2024-03-07 09:23:37 +00:00
Sebastian Sellmair b5b7e5f262 [aa-klib-reader] Implement 'analysis-api-klib-reader' for swift- and objc export
This new module gives the ability to resolve symbols
from provided klib KtLibraryModules withing a Analysis Session.

^KT-65327 Fixed
2024-03-07 09:23:37 +00:00
Sebastian Sellmair b7de3709e4 [ObjCExport] Document getObjCClassOrProtocolName
^KT-65670 Fixed
2024-03-01 09:45:12 +00:00
Sebastian Sellmair 436e16efd8 [ObjCExport] AA: Support additional module name prefixes
^KT-65670 Fixed
2024-03-01 09:45:12 +00:00
Sebastian Sellmair 7ee2903e15 [ObjCExport] ObjCExportDependenciesHeaderGeneratorTest: Add tests for exported / non exported dependencies
KT-65670
2024-03-01 09:45:12 +00:00
Sebastian Sellmair 64503d9217 [ObjCExport] AA: AnalysisApiHeaderGenerator: Implement support for klib dependencies
KT-65670
2024-03-01 09:45:12 +00:00
Sebastian Sellmair e377a98815 [ObjCExport] Fe10: Implement test with exported and non exported klib dependencies
KT-65670
2024-03-01 09:45:12 +00:00
Sebastian Sellmair b26f9cb274 [ObjCExport] Remove 'Enum.clone' method special case (AA)
This clone method showed up in K1 because of the test setup
being not close enough to production.

KT-65670
2024-03-01 09:45:12 +00:00
Sebastian Sellmair 19698bf6fa [ObjCExport] Minor: Add '--continue' to Readme.md test invocations
KT-65670
2024-03-01 09:45:12 +00:00
Sebastian Sellmair 152aa24c53 [ObjCExport] K1 header generator test setup: Use native compiler/native builtIns and production namer configuration
To keep the tests closer to 'real life'/'production.'

KT-65670
2024-03-01 09:45:12 +00:00
Sebastian Sellmair 85cfa252c3 [CODEOWNERS] Add 'Kotlin in Fleet' as codeowner for ':kotlin-tooling-core' 2024-02-23 15:48:47 +00:00
Sebastian Sellmair d80e6f8d66 [kotlin-tooling-core] Implement 'closure' sequence APIs 2024-02-23 15:48:47 +00:00
Sebastian Sellmair 6b6808d87c [ObjCExport] ObjCType: Implement HasExtras instead of HasMutableExtras
... to enforce the immutability concept of this entities.

KT-65891 Fixed
2024-02-23 07:31:32 +00:00
Sebastian Sellmair 704379934e [kotlin-tooling-core] Allow nullable extra values
The change is binary compatible, but not source compatible.
Potential clients like Google might need to adapt
a potential `IdeaKotlinExtrasSerializationExtension` implementaiton.

Right now, no such implementation is known
2024-02-23 07:31:32 +00:00
Sebastian Sellmair 622a88ff26 [ObjCExport] Translate ObjCObject types, respecting the @ExternalObjCClass annotation
KT-65891 Fixed
2024-02-23 07:31:32 +00:00
Sebastian Sellmair a5baf42422 [ObjCExport] KtObjCExportHeaderGenerator: Separate 'requiresClassForwardDeclaration' from ObjCType.classId
There are two different objectives associated with this newly
introduced extras:

- originClassId: Used to track where a type came from; Will
ensure that the translation queue will be populated to also
translate potential dependency classes

- requiresForwardDeclaration: Used to track if a certain
type requires rendering as forward declaration

KT-65891
2024-02-23 07:31:32 +00:00
Sebastian Sellmair 98eca9058b [ObjCExport][Minor] Add breadcrumb for KT-65891 2024-02-19 14:24:37 +00:00
Sebastian Sellmair d0e67ff336 [ObjCExport] Restructure ObjC export symbol queue to replicate order of K1
The previous implementation used a two-stage process:
1) Processing of declared symbols
2) Analysis and processing of referenced dependency symbols

However, to replicate the exact same order as in K1
those two steps need to be done together.

^KT-64953 Fixed
2024-02-19 14:24:37 +00:00
Sebastian Sellmair a2d76d739c [ObjCExport] Support translation of enum classes
^KT-64953 Fixed
2024-02-19 14:24:37 +00:00
Sebastian Sellmair ef232ebec7 [ObjCExport] ObjCDependenciesTypesTest.test - arrayList: Remove TodoAnalysisApi
This test is now expected to pass successfully and was
introduced in one MR (muted), but fixed at the same time
in another MR
2024-02-13 10:12:18 +00:00
Sebastian Sellmair 7cf6a86083 [ObjCExport] translateToObjCType: Filter konan primitives and include supertypes for mapped types
^KT-65348 Fixed
2024-02-12 16:14:38 +00:00
Sebastian Sellmair fd33249c47 [ObjCExport] Add tests for Char type translation
^KT-65348 Fixed
2024-02-12 16:14:38 +00:00
Sebastian Sellmair e53e94516f [ObjCExport] AA: Enable generation of base declarations
^KT-65738 Fixed
2024-02-12 16:13:50 +00:00
Sebastian Sellmair 4b6624c920 [ObjCExport] Support naming of nested classes
^KT-65204 Fixed
2024-02-09 08:48:16 +00:00
Sebastian Sellmair 5b11308d1b [ObjCExport] Translate superClass and superClass generics for class and objects
^KT-65384 Verification Pending
2024-02-08 12:43:48 +00:00
Sebastian Sellmair c22149c642 [ObjCExport] Properly detect Array constructors
^KT-65225 Fixed
2024-02-08 12:41:37 +00:00
Sebastian Sellmair 32da1b70f5 [ObjCExport] Implement initial sorting and ordering for ObjC translation
^KT-65237
2024-02-07 20:29:08 +00:00
Sebastian Sellmair 0db8931026 [ObjCExport] Implement 'TodoAnalysisApi' annotation and run AA based tests as part of ':native:objcexport-header-generator:check'
^KT-65281 Fixed
^KT-65108 Fixed
2024-01-26 16:19:20 +00:00
Sebastian Sellmair c958aef679 [ObjCExport] Initial implementation of function type translation
^KT-65167
2024-01-26 10:11:48 +00:00
Sebastian Sellmair 3766a5f2ad [ObjCExport][Minor] Move 'isBinaryRepresentationNullable' utility to bottom of translateToObjCType.kt
^KT-65167
2024-01-26 10:11:48 +00:00
Sebastian Sellmair 9f0aa7d30c [ObjCExport] Use K1 convention and do not mark KtErrorType as nullable
^KT-65167
2024-01-26 10:11:48 +00:00
Sebastian Sellmair 2bf7bbb6c1 [ObjCExport] Support mapping of ObjCObject types to id
^KT-65167
2024-01-26 10:11:48 +00:00
Sebastian Sellmair 3cd20bd7b0 [ObjCExport] Support generic type parameters for ObjC translation
^KT-65167
2024-01-26 10:11:48 +00:00
Sebastian Sellmair 3111678f8b [ObjCExport] Support nullable type arguments in translating known Collection types
^KT-65167
2024-01-26 10:11:48 +00:00
Sebastian Sellmair 858af02a24 [ObjCExport] Initial support for inline classes in type mapping
^KT-65167
2024-01-26 10:11:48 +00:00
Sebastian Sellmair 262bfb18cc [ObjCExport] Initial support for ObjCClassType type arguments
^KT-65167
2024-01-26 08:19:05 +01:00
Sebastian Sellmair a6a27466fc [ObjCExport] Fix emission of 'ValueTypeBridge' for 'non primitive' types
^KT-65167
2024-01-26 08:19:05 +01:00
Sebastian Sellmair 8fbf0f21c8 [ObjCExport] Implement ObjCExportHeaderGeneratorTesttest - topLevelFunctionWithNumberReturn
^KT-65167
2024-01-26 08:19:05 +01:00
Sebastian Sellmair 1912ffded6 [ObjCExport] Implement ObjCExportTypeTranslationTest
^KT-65167
2024-01-26 08:19:05 +01:00
Sebastian Sellmair de4380cd4e [CODEOWNERS] 'objcexport-header-generator' Share ownership between K/N and KiF teams 2024-01-26 07:01:58 +00:00
Sebastian Sellmair 2708c74d9c [ObjCExport] Fix KT-64952 HasErrorTypesTest 2024-01-23 10:03:15 +00:00
Sebastian Sellmair a713d66b7b [ObjCExport] Analysis Api: Ensure KDocs being exported by providing ObjCExportStubOrigin
^KT-64888 Fixed


Co-authored-by: Sebastian Sellmair <Sebastian.sellmair@jetbrains.com>


Merge-request: KT-MR-13854
Merged-by: Eugene Levenetc <Eugene.Levenetc@jetbrains.com>
2024-01-14 01:13:58 +00:00
Sebastian Sellmair 9c3de4332f [ObjCExport] Run new ObjCExport tests as native tests on CI
^KT-64839 Fixed
2024-01-12 15:37:41 +00:00
Sebastian Sellmair 809b278a7b [Minor] Remove unnecessary backend.native/functionalTest/.editorconfig 2024-01-12 15:37:41 +00:00
Sebastian Sellmair 80d9933543 [ObjCExport] Analysis Api: Implement initial support for exporting 'MustBeDocumented' annotations
^KT-64869 Fixed
2024-01-12 09:41:46 +00:00
Sebastian Sellmair 198ebe9a39 [Code Owners] Make "Kotlin in Fleet" owner of objcexport-header-generator-analysis-api 2024-01-08 18:13:12 +00:00
Sebastian Sellmair ad8d4051b8 [ObjCExport] Fix tests with missing 'MustBeDocumented' annotations missing
KT-64226
2024-01-08 15:25:19 +00:00
Sebastian Sellmair 7dbd5cd57f [ObjCExport] Implement 'test - dispatchAndExtensionReceiverWithMustBeDocumentedAnnotation'
KT-64226
2024-01-08 15:25:19 +00:00
Sebastian Sellmair 90632ad746 [ObjCExport] Implement isObjCObjectType util
KT-64226
2024-01-08 15:25:19 +00:00
Sebastian Sellmair e0383282b5 [ObjCExport] Implement isObjCBaseCallable util
KT-64226
2024-01-08 15:25:19 +00:00
Sebastian Sellmair b5bcfaa2e3 [ObjCExport] translateToObjCProtocol: Support building members
KT-64226
2024-01-08 15:25:19 +00:00
Sebastian Sellmair 47273a3d58 [ObjCExport] Move MethodBridge to shared module (2/2)
KT-64226
2024-01-08 15:25:19 +00:00
Sebastian Sellmair 8f7e409bd7 [ObjCExport] Move MethodBridge to shared module (1/2)
KT-64226
2024-01-08 15:25:19 +00:00
Sebastian Sellmair b78f185299 [ObjCExport] Remove unnecessary instances in favor of static methods
All state will later be stored inside the KtObjCExportSession

KT-64226
2024-01-08 15:25:19 +00:00
Sebastian Sellmair 2f759243ba [ObjCExport] Implement isVisibleInObjC util
KT-64226
2024-01-08 15:25:19 +00:00
Sebastian Sellmair 66533141b8 [ObjCExport] Implement getSuperClassSymbolNotAny util
KT-64226
2024-01-08 15:25:19 +00:00
Sebastian Sellmair 9909940b24 [ObjCExport] Implement rudimentary interface to ObjCProtocol translation
KT-64226
2024-01-08 15:25:19 +00:00
Sebastian Sellmair aa3fa9e8c5 [ObjCExport] Implement 'findKdocString' utility for Analysis Api
KT-64226
2024-01-08 15:25:19 +00:00
Sebastian Sellmair 72f135396c [ObjCExport] Extract generation of ObjC base declarations into shared code
KT-64226
2024-01-08 15:25:19 +00:00
Sebastian Sellmair aab9a606ce [ObjCExport] Split ObjCExportHeaderGenerator and ObjCExportTranslator
KT-64226
2024-01-08 15:25:19 +00:00
Sebastian Sellmair 74c39b149f [ObjCExport] ObjCExportLazy: Get 'comment' from 'realStub' 2024-01-08 15:25:19 +00:00
Sebastian Sellmair 1cb60a53d9 [ObjCExport] Cleanup misleading test name for 'functionWithMustBeDocumentedAnnotation' 2024-01-08 15:25:19 +00:00
Sebastian Sellmair 7944a3dc4b [ObjCExport] Document 'ObjCExportStubOrigin' factory special case 2024-01-08 15:25:19 +00:00
Sebastian Sellmair 7ef62d1779 [ObjCExport] KtResolvedObjCNameAnnotation: Return null if ObjCName annotation is absent 2024-01-08 15:25:19 +00:00
Sebastian Sellmair 98fda13523 [ObjCExport] Extract header generation to shared module
^KT-64227 Fixed
2024-01-08 15:25:19 +00:00
Sebastian Sellmair 1440e66519 [ObjCExport] Fix 'MustBeDocumented' annotation missing on non value parameters 2024-01-08 15:25:19 +00:00
Sebastian Sellmair 885a7dcd8f [ObjCExport] Implement test - kdocWithBlockTags
FL-23390
2024-01-08 15:25:19 +00:00
Sebastian Sellmair e409c60780 [ObjCExport] Split ObjCExport into K1 and Analysis Api implementation
FL-23390
^KT-64168 Fixed
2024-01-08 15:25:19 +00:00
Sebastian Sellmair 3e57265fcb [ObjCExport] ObjCExportStub: Do not retain reference to descriptor
FL-23390
^KT-64076 Fixed
2024-01-08 15:25:19 +00:00
Sebastian Sellmair e97463afb3 [ObjCExport][Minor] Reformat Code after move into newly created modules
FL-23390
2024-01-08 15:25:19 +00:00
Sebastian Sellmair 4c7ad7eeb5 [Gradle] Add IdeMultiplatformImportAction API
This API can be used to schedule actions/setup code that is only
relevant for IDE sync.

^KT-56440 Verification Pending
2023-12-12 14:52:04 +00:00
Sebastian Sellmair 0713866c1e [K/N] Modularise :kotlin-native:native.backend to extract objc header generation (2/2)
^KT-63905 Fixed
2023-12-04 18:52:08 +00:00
Sebastian Sellmair ae9f3d66c2 [K/N] Modularise :kotlin-native:native.backend to extract objc header generation (1/2)
^KT-63905
2023-12-04 18:52:08 +00:00
Sebastian Sellmair 977d1c0e41 [K/N] Implement objc export header test: functionWithErrorType 2023-11-27 16:39:15 +00:00
Sebastian Sellmair 04df33eec1 [K/N] Implement ObjCExportNamerTest and ObjCExportMapperTest
... to provide simple and quick validation
for their corresponding entities.

Those tests can also act as convenient entry points
for debugging.
2023-11-27 16:39:15 +00:00
Sebastian Sellmair ddd97e84b9 [K/N] Implement lightweight tests for ObjC header generation 2023-11-27 09:08:54 +00:00
Sebastian Sellmair 59c4c83ed5 [K/N] Samples: Update samples default Kotlin version to 1.9.20 2023-11-23 13:19:04 +00:00
Sebastian Sellmair 359f5fe7b3 [K/N] Samples: Migrate 'echoServer' to modern multiplatform
^KT-50547 Fixed
2023-11-23 13:19:04 +00:00
Sebastian Sellmair 5506384cc9 [Gradle] Remove unused KotlinTargetConfigurator.configurePlatformSpecificModel
KT-61634
2023-11-07 12:29:31 +00:00
Sebastian Sellmair b347ff2c53 [Gradle] Migrate KotlinNativeTargetConfigurator.warnAboutIncorrectDependencies to KotlinGradleProjectChecker
KT-61634
2023-11-07 12:29:31 +00:00
Sebastian Sellmair faecd7f772 [Gradle] Implement KotlinNativeTargetConfigurator.registerEmbedAndSignAppleFrameworkTasks as EP as side effects
KT-61634
2023-11-07 12:29:31 +00:00
Sebastian Sellmair 9b47c98ce9 [Gradle] Implement KotlinNativeTargetConfigurator.createCInteropTasks as EP based side effects
KT-61634
2023-11-07 12:29:31 +00:00
Sebastian Sellmair 8651d67aeb [Gradle] Implement ConfigureFrameworkExportSideEffect
KT-61634
2023-11-07 12:29:31 +00:00
Sebastian Sellmair 3fb415d966 [Gradle] Replace KotlinTargetWithTestsConfigurator with KotlinTestRunFactory
KT-61634
2023-11-02 13:20:38 +00:00
Sebastian Sellmair 40820e42a6 [Gradle] Implement ConfigureBuildSideEffect (replacing 'configureBuild')
KT-61634
2023-11-02 13:20:38 +00:00
Sebastian Sellmair 36d1622276 [Gradle] Mute IdeNativeStdlibDependencyResolver in case of missing stdlib 2023-10-30 10:40:34 +00:00
Sebastian Sellmair ded5cf2caa [Gradle] Replace 'configureArchivesAndComponent' with KotlinTargetArtifact
KT-61634
2023-10-25 08:34:48 +00:00
Sebastian Sellmair eb4daa4482 [Gradle] Implement CreateTargetConfigurationsSideEffect and NativeForwardImplementationToApiElementsSideEffect
KT-61634
2023-10-25 08:34:48 +00:00
Sebastian Sellmair 787420cc21 [Gradle] Introduce KotlinTargetSideEffect and KotlinCompilationSideEffect
KT-61634
2023-10-25 08:34:48 +00:00
Sebastian Sellmair f89a46710a [Gradle] Implement KotlinTargetSideEffect.extensionPoint
KT-61634
2023-10-25 08:34:47 +00:00
Sebastian Sellmair f2a2c28ac9 [Gradle] Deprecate org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMultiplatformPlugin
... in favor of using Kotlin Gradle Plugin Extension Points

KT-61634
2023-10-19 15:54:35 +00:00
Sebastian Sellmair 7650264de3 [Gradle] Move KotlinMultiplatformPlugin.METADATA_TARGET_NAME to KotlinMetadataTarget
KT-61634
2023-10-19 15:54:35 +00:00
Sebastian Sellmair d5be59a8ec [Gradle] Implement ApplyJavaBasePluginSetupAction
KT-61634
2023-10-19 15:54:35 +00:00
Sebastian Sellmair c47db02d30 [Gradle] Move 'checkGradleCompatibility' to a single, very early invocation
This shall ensure that the compatibility with Gradle
- is always checked for all plugins we ship
- is checked as early as possible

KT-61634
2023-10-19 15:54:35 +00:00
Sebastian Sellmair a15c068471 [Gradle] Implement DeprecatedMppGradlePropertiesMigrationSetupAction
KT-61634
2023-10-19 15:54:35 +00:00
Sebastian Sellmair 3210fdfec4 [Gradle] Inline 'sourceSetFreeCompilerArgsPropertyName' to its use site
KT-61634
2023-10-19 15:54:35 +00:00