Files
swift-mirror/tools/SourceKit
Slava Pestov cfe9e6a3de IDE: Use GenericSignatures and interface types (mostly)
There was a ton of complicated logic here to work around
two problems:

- Same-type constraints were not represented properly in
  RequirementReprs, requiring us to store them in strong form
  and parse them out when printing type interfaces.

- The TypeBase::getAllGenericArgs() method did not do the
  right thing for members of protocols and protocol extensions,
  and so instead of simple calls to Type::subst(), we had
  an elaborate 'ArchetypeTransformer' abstraction repeated
  in two places.

Rewrite this code to use GenericSignatures and
GenericFunctionType instead of old-school GenericParamLists
and PolymorphicFunctionType.

This changes the code completion and AST printer output
slightly. A few of the changes are actually fixes for cases
where the old code didn't handle substitutions properly.
A few others are subjective, for example a generic parameter
list of the form <T : Proto> now prints as <T where T : Proto>.

We can add heuristics to make the output whatever we want
here; the important thing is that now we're using modern
abstractions.
2016-10-02 23:49:15 -04:00
..
2015-12-04 16:48:57 +08:00

//===----------------------------------------------------------------------===//
//                              SourceKit README
//===----------------------------------------------------------------------===//

Welcome to SourceKit! SourceKit is a framework for supporting IDE features like
indexing, syntax-coloring, code-completion, etc. In general it provides the
infrastructure that an IDE needs for excellent language support.

SourceKit currently only supports the Swift language.

//===----------------------------------------------------------------------===//
//                       Linking to the SourceKit C API
//===----------------------------------------------------------------------===//

The stable C API for SourceKit is provided via the sourcekitd.framework which 
uses an XPC service for process isolation and the libsourcekitdInProc.dylib
library which is in-process.

libsourcekitdInProc.dylib is more convenient for debugging. To use it either:
  -Link to this library instead of the framework ("-lsourcekitdInProc" instead
   of "-framework sourcekitd")
  -Run the binary that linked to the framework using these environment variables:
 DYLD_INSERT_LIBRARIES=/path/to/libsourcekitdInProc.dylib DYLD_FORCE_FLAT_NAMESPACE=1 <...>

//===----------------------------------------------------------------------===//