CGSInternal
CGSInternal copied to clipboard
Request: Swift Package Manager support
Would you be interested in making this repo compatible with the Swift Package Manager?
I don't mind doing it and making a PR, if there's interest.
Sure! I'm not sure what the look and feel of these APIs is when they're imported in Swift, but if you're up to it I'd certainly appreciate the contribution.
@CodaFi You'll need to mark things with __Nullable and __Nonnull for starters, and I believe you can create a package overlay via NS_SWIFT_NAME pretty easily to transform it into a struct or class-like interface.
Determining nullability for this API surface is going to be a painful slog, I can feel it...
@CodaFi Yeah, not to mention you can't produce correct Swift throws overlays because of the return type. I don't know how to correct that one unfortunately.
Also, I remember you from the TwUI days... hello again! 👋
None of these functions should ever throw a catchable exception. Not only would it have violated an invariant across a MIG’ed interface, it would be bubbling up from across at least one framework boundary.
I think we’re going to need APINotes here too. NS_SWIFT_NAME is only fine in the small.
Well, I would see it as the CGError being returned would instead be caught or ignored by a try? or so. And your suggestion of APINotes is probably more correct - I was thinking of just wrapping the functions in an ObjC class and letting Swift auto-import that but it causes some unwanted (and un-needed) overhead.
The few CGError-returning public APIs I can find don't import as throwing. Do you have an example of what you had in mind?
Right - I was suggesting having them import as throwing instead. i.e. CGError CGSDoSomething(...) would import as func CGSDoSomething(...) throws.