[swift-evolution] Proposal Idea : Library (third party) Importable Checking

Joe Groff jgroff at apple.com
Thu Jan 14 23:44:24 CST 2016

> On Jan 14, 2016, at 9:22 AM, Jo Albright via swift-evolution <swift-evolution at swift.org> wrote:
> This is a thought from a current problem I am running into (and have ran into in the past).
> If you want to write any code using a library, you must have that library imported into the file. Totally cool with this for most cases.
> Situation :
> Building a third party library that can be used by others to simplify working with server APIs. I want to give the developer an option to use another third party library within mine. However, I don’t want my library to depend on the other library.
> Possible Solution :
> Add a system that does two things. 1) Checks for a library and if found imports it into file. 2) Checks if library is imported and allows source kit to parse conditional scope.
> @importable ThirdPartyLibrary // would check if library is added to project and import it
> if #imported(ThirdPartyLibrary) {
>     // would check if library is imported before source kit parses scope
>     // if library is not imported
>     // scope would remain unparsed
>     // scope could be removed as if it were a comment
> }
> Thanks.

Interesting idea. Unless I'm misunderstanding something, it seems to me you could kill both birds with one stone. If we add an 'importable' predicate to the '#if' language, then you can already use that to conditionalize the import:

#if importable(ThirdPartyLibrary)
import ThirdPartyLibrary
/* decls that depend on library */

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160114/452efa97/attachment.html>

More information about the swift-evolution mailing list