mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
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.
//===----------------------------------------------------------------------===//
// 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 <...>
//===----------------------------------------------------------------------===//