[SymbolGraph] Generate symbol graphs for macro declarations

This commit is contained in:
Ben Barham
2023-02-16 17:42:42 -08:00
parent 00af28cd6e
commit 72fb01c0e1
3 changed files with 32 additions and 8 deletions

View File

@@ -66,21 +66,31 @@ struct S3 {
// RUN: %s \
// RUN: )
//##-- cursor-info at '#' position.
//##-- cursor-info at '#' position. Cursor doesn't resolve but we will still
// get refactorings. Should fix that in the new cursor info.
// RUN: %sourcekitd-test -req=cursor -pos=4:7 -cursor-action %s -- ${COMPILER_ARGS[@]} | %FileCheck -check-prefix=CURSOR_POUND %s
// CURSOR_POUND-NOT: source.lang.swift.ref.macro
// CURSOR_POUND-LABEL: ACTIONS BEGIN
// CURSOR_POUND: source.refactoring.kind.expand.macro
// CURSOR_POUND-NEXT: Expand Macro
// CURSOR_POUND: ACTIONS END
//##-- cursor-info at 'stringify' position.
// RUN: %sourcekitd-test -req=cursor -pos=4:8 -cursor-action %s -- ${COMPILER_ARGS[@]} | %FileCheck -check-prefix=CURSOR_MACRONAME %s
// 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
// CURSOR_MACRONAME: source.lang.swift.ref.macro (1:33-1:42)
// CURSOR_MACRONAME: (T) -> (T, String)
// 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>
// 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>
// CURSOR_MACRONAME-LABEL: SYMBOL GRAPH BEGIN
// CURSOR_MACRONAME: "identifier": {
// CURSOR_MACRONAME-NEXT: "interfaceLanguage": "swift",
// CURSOR_MACRONAME-NEXT: "precise": "s:9MacroUser9stringifyyx_SStxcfm"
// CURSOR_MACRONAME-NEXT: },
// CURSOR_MACRONAME-NEXT: "kind": {
// CURSOR_MACRONAME-NEXT: "displayName": "Macro",
// CURSOR_MACRONAME-NEXT: "identifier": "swift.macro"
// CURSOR_MACRONAME-NEXT: },
// CURSOR_MACRONAME: SYMBOL GRAPH END
// CURSOR_MACRONAME-LABEL: ACTIONS BEGIN
// CURSOR_MACRONAME: source.refactoring.kind.rename.global
// CURSOR_MACRONAME-NEXT: Global Rename
@@ -95,9 +105,19 @@ struct S3 {
// EXPAND: source.edit.kind.active:
// EXPAND-NEXT: 4:7-4:24 "(a + b, "a + b")"
//##-- cursor-info at 'macro name' position following @.
// RUN: %sourcekitd-test -req=cursor -pos=21:2 -cursor-action %s -- ${COMPILER_ARGS[@]} | %FileCheck -check-prefix=CURSOR_ATTACHED_MACRO %s
//##-- cursor-info at 'myTypeWrapper' position following @. We don't support
// on the @ currently.
// 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
// CURSOR_ATTACHED_MACRO-LABEL: SYMBOL GRAPH BEGIN
// CURSOR_ATTACHED_MACRO: "identifier": {
// CURSOR_ATTACHED_MACRO-NEXT: "interfaceLanguage": "swift",
// CURSOR_ATTACHED_MACRO-NEXT: "precise": "s:9MacroUser13myTypeWrapperyycfm"
// CURSOR_ATTACHED_MACRO-NEXT: },
// CURSOR_ATTACHED_MACRO-NEXT: "kind": {
// CURSOR_ATTACHED_MACRO-NEXT: "displayName": "Macro",
// CURSOR_ATTACHED_MACRO-NEXT: "identifier": "swift.macro"
// CURSOR_ATTACHED_MACRO-NEXT: },
// CURSOR_ATTACHED_MACRO: SYMBOL GRAPH END
// CURSOR_ATTACHED_MACRO-LABEL: ACTIONS BEGIN
// CURSOR_ATTACHED_MACRO: source.refactoring.kind.expand.macro
// CURSOR_ATTACHED_MACRO-NEXT: Expand Macro