Skip to content

Commit 72fb01c

Browse files
committed
[SymbolGraph] Generate symbol graphs for macro declarations
1 parent 00af28c commit 72fb01c

File tree

3 files changed

+32
-8
lines changed

3 files changed

+32
-8
lines changed

lib/SymbolGraphGen/Symbol.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,8 @@ std::pair<StringRef, StringRef> Symbol::getKind(const Decl *D) {
111111
return {"swift.associatedtype", "Associated Type"};
112112
case swift::DeclKind::Extension:
113113
return {"swift.extension", "Extension"};
114+
case swift::DeclKind::Macro:
115+
return {"swift.macro", "Macro"};
114116
default:
115117
llvm::errs() << "Unsupported kind: " << D->getKindName(D->getKind());
116118
llvm_unreachable("Unsupported declaration kind for symbol graph");
@@ -784,7 +786,8 @@ bool Symbol::supportsKind(DeclKind Kind) {
784786
case DeclKind::Subscript: LLVM_FALLTHROUGH;
785787
case DeclKind::TypeAlias: LLVM_FALLTHROUGH;
786788
case DeclKind::AssociatedType: LLVM_FALLTHROUGH;
787-
case DeclKind::Extension:
789+
case DeclKind::Extension: LLVM_FALLTHROUGH;
790+
case DeclKind::Macro:
788791
return true;
789792
default:
790793
return false;

lib/SymbolGraphGen/SymbolGraphASTWalker.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ bool SymbolGraphASTWalker::walkToDeclPre(Decl *D, CharSourceRange Range) {
132132
case swift::DeclKind::TypeAlias:
133133
case swift::DeclKind::AssociatedType:
134134
case swift::DeclKind::Extension:
135+
case swift::DeclKind::Macro:
135136
break;
136137

137138
// We'll descend into everything else.

test/SourceKit/Macros/macro_basic.swift

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -66,21 +66,31 @@ struct S3 {
6666
// RUN: %s \
6767
// RUN: )
6868

69-
//##-- cursor-info at '#' position.
69+
//##-- cursor-info at '#' position. Cursor doesn't resolve but we will still
70+
// get refactorings. Should fix that in the new cursor info.
7071
// RUN: %sourcekitd-test -req=cursor -pos=4:7 -cursor-action %s -- ${COMPILER_ARGS[@]} | %FileCheck -check-prefix=CURSOR_POUND %s
71-
72+
// CURSOR_POUND-NOT: source.lang.swift.ref.macro
7273
// CURSOR_POUND-LABEL: ACTIONS BEGIN
7374
// CURSOR_POUND: source.refactoring.kind.expand.macro
7475
// CURSOR_POUND-NEXT: Expand Macro
7576
// CURSOR_POUND: ACTIONS END
7677

7778
//##-- cursor-info at 'stringify' position.
78-
// RUN: %sourcekitd-test -req=cursor -pos=4:8 -cursor-action %s -- ${COMPILER_ARGS[@]} | %FileCheck -check-prefix=CURSOR_MACRONAME %s
79-
79+
// RUN: %sourcekitd-test -req=cursor -pos=4:8 -cursor-action -req-opts=retrieve_symbol_graph=1 %s -- ${COMPILER_ARGS[@]} | %FileCheck -check-prefix=CURSOR_MACRONAME %s
8080
// CURSOR_MACRONAME: source.lang.swift.ref.macro (1:33-1:42)
8181
// CURSOR_MACRONAME: (T) -> (T, String)
8282
// CURSOR_MACRONAME: <Declaration>@freestanding(expression) macro stringify&lt;T&gt;(_ value: <Type usr="s:9MacroUser1TL_xmfp">T</Type>) -&gt; (<Type usr="s:9MacroUser1TL_xmfp">T</Type>, <Type usr="s:SS">String</Type>) = #externalMacro(module: &quot;MacroDefinition&quot;, type: &quot;StringifyMacro&quot;)</Declaration>
8383
// CURSOR_MACRONAME: <decl.macro><syntaxtype.attribute.builtin><syntaxtype.attribute.name>@freestanding</syntaxtype.attribute.name>(expression)</syntaxtype.attribute.builtin> <syntaxtype.keyword>macro</syntaxtype.keyword> <decl.name>stringify</decl.name>&lt;<decl.generic_type_param usr="s:9MacroUser1TL_xmfp"><decl.generic_type_param.name>T</decl.generic_type_param.name></decl.generic_type_param>&gt;(<decl.var.parameter><decl.var.parameter.argument_label>_</decl.var.parameter.argument_label> <decl.var.parameter.name>value</decl.var.parameter.name>: <decl.var.parameter.type><ref.generic_type_param usr="s:9MacroUser1TL_xmfp">T</ref.generic_type_param></decl.var.parameter.type></decl.var.parameter>) -&gt; <decl.function.returntype><tuple>(<tuple.element><tuple.element.type><ref.generic_type_param usr="s:9MacroUser1TL_xmfp">T</ref.generic_type_param></tuple.element.type></tuple.element>, <tuple.element><tuple.element.type><ref.struct usr="s:SS">String</ref.struct></tuple.element.type></tuple.element>)</tuple></decl.function.returntype> = #externalMacro(module: &quot;MacroDefinition&quot;, type: &quot;StringifyMacro&quot;)</decl.macro>
84+
// CURSOR_MACRONAME-LABEL: SYMBOL GRAPH BEGIN
85+
// CURSOR_MACRONAME: "identifier": {
86+
// CURSOR_MACRONAME-NEXT: "interfaceLanguage": "swift",
87+
// CURSOR_MACRONAME-NEXT: "precise": "s:9MacroUser9stringifyyx_SStxcfm"
88+
// CURSOR_MACRONAME-NEXT: },
89+
// CURSOR_MACRONAME-NEXT: "kind": {
90+
// CURSOR_MACRONAME-NEXT: "displayName": "Macro",
91+
// CURSOR_MACRONAME-NEXT: "identifier": "swift.macro"
92+
// CURSOR_MACRONAME-NEXT: },
93+
// CURSOR_MACRONAME: SYMBOL GRAPH END
8494
// CURSOR_MACRONAME-LABEL: ACTIONS BEGIN
8595
// CURSOR_MACRONAME: source.refactoring.kind.rename.global
8696
// CURSOR_MACRONAME-NEXT: Global Rename
@@ -95,9 +105,19 @@ struct S3 {
95105
// EXPAND: source.edit.kind.active:
96106
// EXPAND-NEXT: 4:7-4:24 "(a + b, "a + b")"
97107

98-
//##-- cursor-info at 'macro name' position following @.
99-
// RUN: %sourcekitd-test -req=cursor -pos=21:2 -cursor-action %s -- ${COMPILER_ARGS[@]} | %FileCheck -check-prefix=CURSOR_ATTACHED_MACRO %s
100-
108+
//##-- cursor-info at 'myTypeWrapper' position following @. We don't support
109+
// on the @ currently.
110+
// RUN: %sourcekitd-test -req=cursor -pos=21:2 -cursor-action -req-opts=retrieve_symbol_graph=1 %s -- ${COMPILER_ARGS[@]} | %FileCheck -check-prefix=CURSOR_ATTACHED_MACRO %s
111+
// CURSOR_ATTACHED_MACRO-LABEL: SYMBOL GRAPH BEGIN
112+
// CURSOR_ATTACHED_MACRO: "identifier": {
113+
// CURSOR_ATTACHED_MACRO-NEXT: "interfaceLanguage": "swift",
114+
// CURSOR_ATTACHED_MACRO-NEXT: "precise": "s:9MacroUser13myTypeWrapperyycfm"
115+
// CURSOR_ATTACHED_MACRO-NEXT: },
116+
// CURSOR_ATTACHED_MACRO-NEXT: "kind": {
117+
// CURSOR_ATTACHED_MACRO-NEXT: "displayName": "Macro",
118+
// CURSOR_ATTACHED_MACRO-NEXT: "identifier": "swift.macro"
119+
// CURSOR_ATTACHED_MACRO-NEXT: },
120+
// CURSOR_ATTACHED_MACRO: SYMBOL GRAPH END
101121
// CURSOR_ATTACHED_MACRO-LABEL: ACTIONS BEGIN
102122
// CURSOR_ATTACHED_MACRO: source.refactoring.kind.expand.macro
103123
// CURSOR_ATTACHED_MACRO-NEXT: Expand Macro

0 commit comments

Comments
 (0)