Notes

What I would otherwise forget

View the Project on GitHub

SourceKit – source.request.docinfo

Valid July 2017 with swift:master

Quest: find out how this works.

Flow

initDocEntityInfo

Pull out available and deprecated from the ‘real’ attribute classes - applies to current compiler flags used for platform.

Gets doc comment via ide::getDocumentationCommentAsXML() which does the parent lookup thing for undocumented members of classes and protocol extensions. It does not handle protocol conformances – so cursorinfo is better.

Collect generic params (<T> variables being declared in entity name) and generic requirements (“T: C” clauses).

Create the fully-annotated declaration using the same code as cursorinfo, remarkable.

Releated entities - inherits (a class), conforms (some protocols), extends (an extensible thing). For members, inherits means overrides a superclass member and conforms means implementing a protocol member.

Decode @available but no other attributes. Swift language constraints end up with missing Platform field.

SKDocConsumer

So then these fields are returned in the docinfo element:

And optionally:

And never for source files (vs. modules):