Initialize VTables for external types (#2343) #2367
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixed a tricky case from Swift: Because of it's C lineage, it doesn't have a way to run initialization code when the module is imported so instead it runs a one-time initialization function the first time a FFI call is run. This system failed when external types were used before the external module ever made an FFI call. I believe this is Swift only, but it might affect other C-like external bindings as well.
@crazytonyli thanks for the great test case for this, I shrunk it down to a mimimal test and added it to the existing fixture. When I rebase your test suite on top of this and run it with
ISSUE_2343=1 cargo test --package uniffi-fixture-ext-types-sub-lib
it passes. I don't think we need the all of the tests, but tell me if you think the other ones are still worth adding.