mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
This is a test-only change except for the introduction of a new request that is only used by tests. Our notifications are dispatched in the XPC event handler, which is not synchronized with replies to explicit XPC send_message_with_reply calls. This is fine for most users of sourcekitd, since the notifications are already enqueued on the client side, but for testing we need a way to guarantee that all notifications are passed to the client-side handler before we exit. This commit introduces a new request for testing that triggers a notification, allowing the client to wait on that notification to ensure all previously posted notifications have been handled. Note: the non-deterministic test failures can be triggered by adding a sleep of ~100 ms in the event handler before the notification is dispatched to the main queue. rdar://40311995
//===----------------------------------------------------------------------===//
// 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 <...>
//===----------------------------------------------------------------------===//