Files
swift-mirror/tools/SourceKit
Ben Langmuir a88c73fe60 [sourcekit] Fix non-deterministic failure in CompileNotifications tests
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
2018-06-13 11:32:18 -07:00
..
2017-05-09 20:44:30 +02: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 <...>

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