Skip to content

Commit b284955

Browse files
authored
Merge pull request swiftlang#63739 from bnbarham/add-sg-macros
[SymbolGraph] Generate symbol graphs for macro declarations
2 parents 9e40280 + 72fb01c commit b284955

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
@@ -70,21 +70,31 @@ struct S3 {
7070
// RUN: %s \
7171
// RUN: )
7272

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

8182
//##-- cursor-info at 'stringify' position.
82-
// RUN: %sourcekitd-test -req=cursor -pos=4:8 -cursor-action %s -- ${COMPILER_ARGS[@]} | %FileCheck -check-prefix=CURSOR_MACRONAME %s
83-
83+
// 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
8484
// CURSOR_MACRONAME: source.lang.swift.ref.macro (1:33-1:42)
8585
// CURSOR_MACRONAME: (T) -> (T, String)
8686
// 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>
8787
// 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>
88+
// CURSOR_MACRONAME-LABEL: SYMBOL GRAPH BEGIN
89+
// CURSOR_MACRONAME: "identifier": {
90+
// CURSOR_MACRONAME-NEXT: "interfaceLanguage": "swift",
91+
// CURSOR_MACRONAME-NEXT: "precise": "s:9MacroUser9stringifyyx_SStxcfm"
92+
// CURSOR_MACRONAME-NEXT: },
93+
// CURSOR_MACRONAME-NEXT: "kind": {
94+
// CURSOR_MACRONAME-NEXT: "displayName": "Macro",
95+
// CURSOR_MACRONAME-NEXT: "identifier": "swift.macro"
96+
// CURSOR_MACRONAME-NEXT: },
97+
// CURSOR_MACRONAME: SYMBOL GRAPH END
8898
// CURSOR_MACRONAME-LABEL: ACTIONS BEGIN
8999
// CURSOR_MACRONAME: source.refactoring.kind.rename.global
90100
// CURSOR_MACRONAME-NEXT: Global Rename
@@ -99,9 +109,19 @@ struct S3 {
99109
// EXPAND: source.edit.kind.active:
100110
// EXPAND-NEXT: 4:7-4:24 "(a + b, "a + b")"
101111

102-
//##-- cursor-info at 'macro name' position following @.
103-
// RUN: %sourcekitd-test -req=cursor -pos=21:2 -cursor-action %s -- ${COMPILER_ARGS[@]} | %FileCheck -check-prefix=CURSOR_ATTACHED_MACRO %s
104-
112+
//##-- cursor-info at 'myTypeWrapper' position following @. We don't support
113+
// on the @ currently.
114+
// 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
115+
// CURSOR_ATTACHED_MACRO-LABEL: SYMBOL GRAPH BEGIN
116+
// CURSOR_ATTACHED_MACRO: "identifier": {
117+
// CURSOR_ATTACHED_MACRO-NEXT: "interfaceLanguage": "swift",
118+
// CURSOR_ATTACHED_MACRO-NEXT: "precise": "s:9MacroUser13myTypeWrapperyycfm"
119+
// CURSOR_ATTACHED_MACRO-NEXT: },
120+
// CURSOR_ATTACHED_MACRO-NEXT: "kind": {
121+
// CURSOR_ATTACHED_MACRO-NEXT: "displayName": "Macro",
122+
// CURSOR_ATTACHED_MACRO-NEXT: "identifier": "swift.macro"
123+
// CURSOR_ATTACHED_MACRO-NEXT: },
124+
// CURSOR_ATTACHED_MACRO: SYMBOL GRAPH END
105125
// CURSOR_ATTACHED_MACRO-LABEL: ACTIONS BEGIN
106126
// CURSOR_ATTACHED_MACRO: source.refactoring.kind.expand.macro
107127
// CURSOR_ATTACHED_MACRO-NEXT: Expand Macro

0 commit comments

Comments
 (0)