Skip to content

Commit 37bb049

Browse files
committed
[SourceKit] Add trace logging for typecontextinfo request.
1 parent f41b694 commit 37bb049

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// RUN: %sourcekitd-test -req=track-compiles == -req=typecontextinfo %s -offset=0 -- %s | %FileCheck %s -check-prefix=COMPILE_1
2+
// COMPILE_1: {
3+
// COMPILE_1: key.notification: source.notification.compile-will-start,
4+
// COMPILE_1: key.filepath: "SOURCE_DIR{{.*}}type-context-info.swift",
5+
// COMPILE_1: key.compileid: [[CID1:".*"]]
6+
// COMPILE_1: }
7+
// COMPILE_1: {
8+
// COMPILE_1: key.notification: source.notification.compile-did-finish,
9+
// COMPILE_1: key.compileid: [[CID1]]
10+
// COMPILE_1: }
11+
// COMPILE_1-NOT: compile-will-start
12+
// COMPILE_1-NOT: compile-did-finish

tools/SourceKit/lib/SwiftLang/SwiftTypeContextInfo.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
#include "SwiftASTManager.h"
1414
#include "SwiftLangSupport.h"
15+
#include "SwiftEditorDiagConsumer.h"
1516
#include "swift/Frontend/Frontend.h"
1617
#include "swift/Frontend/PrintingDiagnosticConsumer.h"
1718
#include "swift/IDE/TypeContextInfo.h"
@@ -54,13 +55,30 @@ static bool swiftTypeContextInfoImpl(SwiftLangSupport &Lang,
5455
auto bufferIdentifier =
5556
Lang.resolvePathSymlinks(UnresolvedInputFile->getBufferIdentifier());
5657

58+
auto origOffset = Offset;
5759
auto newBuffer = makeCodeCompletionMemoryBuffer(UnresolvedInputFile, Offset,
5860
bufferIdentifier);
5961

6062
CompilerInstance CI;
6163
PrintingDiagnosticConsumer PrintDiags;
6264
CI.addDiagnosticConsumer(&PrintDiags);
6365

66+
EditorDiagConsumer TraceDiags;
67+
trace::TracedOperation TracedOp(trace::OperationKind::CodeCompletion);
68+
if (TracedOp.enabled()) {
69+
CI.addDiagnosticConsumer(&TraceDiags);
70+
trace::SwiftInvocation SwiftArgs;
71+
trace::initTraceInfo(SwiftArgs, bufferIdentifier, Args);
72+
TracedOp.setDiagnosticProvider(
73+
[&TraceDiags](SmallVectorImpl<DiagnosticEntryInfo> &diags) {
74+
TraceDiags.getAllDiagnostics(diags);
75+
});
76+
TracedOp.start(
77+
SwiftArgs,
78+
{std::make_pair("OriginalOffset", std::to_string(origOffset)),
79+
std::make_pair("Offset", std::to_string(Offset))});
80+
}
81+
6482
CompilerInvocation Invocation;
6583
bool Failed = Lang.getASTManager()->initCompilerInvocation(
6684
Invocation, Args, CI.getDiags(), bufferIdentifier, Error);

0 commit comments

Comments
 (0)