1010// RUN: %host-build-swift -swift-version 5 -emit-library -o %t/%target-library-name(IndexMacros) -module-name=IndexMacros %t/IndexMacros.swift -g -no-toolchain-stdlib-rpath
1111
1212// Check indexed symbols
13- // RUN: %target-swift-ide-test -print-indexed-symbols -source-filename %t/IndexTest.swift -load-plugin-library %t/%target-library-name(IndexMacros) -parse-as-library 2>&1 | tee %t/test.idx | %FileCheck %s
13+ // RUN: %target-swift-ide-test -print-indexed-symbols -source-filename %t/IndexTest.swift -load-plugin-library %t/%target-library-name(IndexMacros) -parse-as-library > %t/index.out
14+ // RUN: %FileCheck %s --input-file %t/index.out
1415
1516//--- IndexTest.swift
1617@freestanding ( expression)
17- macro freestandingExpr( ) = #externalMacro( module: " IndexMacros " , type: " FreestandingExprMacro " )
18- // CHECK: [[@LINE-1]]:7 | macro/Swift | freestandingExpr() | [[EXPR_USR:.*]] | Def
18+ macro freestandingExpr< T > ( arg : T ) = #externalMacro( module: " IndexMacros " , type: " FreestandingExprMacro " )
19+ // CHECK: [[@LINE-1]]:7 | macro/Swift | freestandingExpr(arg: ) | [[EXPR_USR:.*]] | Def
1920
2021@freestanding ( declaration, names: named ( TestFree) )
21- macro freestandingDecl( ) = #externalMacro( module: " IndexMacros " , type: " FreestandingDeclMacro " )
22- // CHECK: [[@LINE-1]]:7 | macro/Swift | freestandingDecl() | [[DECL_USR:.*]] | Def
22+ macro freestandingDecl< T > ( arg : T ) = #externalMacro( module: " IndexMacros " , type: " FreestandingDeclMacro " )
23+ // CHECK: [[@LINE-1]]:7 | macro/Swift | freestandingDecl(arg: ) | [[DECL_USR:.*]] | Def
2324
2425@attached ( accessor)
2526macro Accessor( ) = #externalMacro( module: " IndexMacros " , type: " SomeAccessorMacro " )
@@ -38,8 +39,8 @@ macro MemberAttribute() = #externalMacro(module: "IndexMacros", type: "SomeMembe
3839// CHECK: [[@LINE-1]]:7 | macro/Swift | MemberAttribute() | [[MEMBER_ATTRIBUTE_USR:.*]] | Def
3940
4041@attached ( peer, names: named ( TestPeer) )
41- macro Peer( ) = #externalMacro( module: " IndexMacros " , type: " SomePeerMacro " )
42- // CHECK: [[@LINE-1]]:7 | macro/Swift | Peer() | [[PEER_USR:.*]] | Def
42+ macro Peer< T > ( arg : T ) = #externalMacro( module: " IndexMacros " , type: " SomePeerMacro " )
43+ // CHECK: [[@LINE-1]]:7 | macro/Swift | Peer(arg: ) | [[PEER_USR:.*]] | Def
4344
4445@attached ( peer, names: named ( peerMember) )
4546macro PeerMember( ) = #externalMacro( module: " IndexMacros " , type: " SomePeerMemberMacro " )
@@ -72,26 +73,30 @@ struct AddOne {
7273 }
7374}
7475
76+ // CHECK: [[@LINE+2]]:2 | macro/Swift | freestandingDecl(arg:) | [[DECL_USR]] | Ref
77+ // CHECK: [[@LINE+1]]:19 | struct/Swift | Double | s:Sd | Ref
78+ #freestandingDecl< Double> ( arg: 1.0 )
7579// Creates a `TestFree` struct with `freeFunc` calling `freeLog`
76- #freestandingDecl
77- // CHECK: [[@LINE-1]]:2 | macro/Swift | freestandingDecl() | [[DECL_USR]] | Ref
7880// CHECK: [[@LINE-2]]:1 | struct/Swift | TestFree | [[FREE_STRUCT_USR:.*]] | Def,Impl
7981// CHECK: [[@LINE-3]]:1 | instance-method/Swift | freeFunc() | [[FREE_FUNC_USR:.*]] | Def,Impl,RelChild
8082// CHECK-NEXT: RelChild | struct/Swift | TestFree | [[FREE_STRUCT_USR]]
8183// CHECK: [[@LINE-5]]:1 | function/Swift | freeLog() | [[FREE_LOG_USR]] | Ref,Call,Impl,RelCall,RelCont
8284// CHECK-NEXT: RelCall,RelCont | instance-method/Swift | freeFunc() | [[FREE_FUNC_USR]]
8385
8486func testExpr( ) {
85- #freestandingExpr
87+ // CHECK: [[@LINE+2]]:4 | macro/Swift | freestandingExpr(arg:) | [[EXPR_USR]] | Ref
88+ // CHECK: [[@LINE+1]]:21 | struct/Swift | Double | s:Sd | Ref
89+ #freestandingExpr< Double> ( arg: 1.0 )
8690 // CHECK: [[@LINE-1]]:3 | function/Swift | exprLog() | [[EXPR_LOG_USR]] | Ref,Call,Impl,RelCall,RelCont
8791 // CHECK-NEXT: RelCall,RelCont | function/Swift | testExpr()
8892}
8993
90- // CHECK: [[@LINE+4]]:40 | macro/Swift | Peer() | [[PEER_USR]] | Ref
94+ // CHECK: [[@LINE+5]]:40 | macro/Swift | Peer(arg:) | [[PEER_USR]] | Ref
95+ // CHECK: [[@LINE+4]]:45 | struct/Swift | Double | s:Sd | Ref
9196// CHECK: [[@LINE+3]]:23 | macro/Swift | MemberAttribute() | [[MEMBER_ATTRIBUTE_USR]] | Ref
9297// CHECK: [[@LINE+2]]:15 | macro/Swift | Member() | [[MEMBER_USR]] | Ref
9398// CHECK: [[@LINE+1]]:2 | macro/Swift | Conformance() | [[CONFORMANCE_USR]] | Ref
94- @Conformance @Member @MemberAttribute @Peer
99+ @Conformance @Member @MemberAttribute @Peer < Double > ( arg : 1.0 )
95100struct TestAttached {
96101 var attachedMember : Int
97102
@@ -151,7 +156,6 @@ struct Outer {
151156// CHECK: [[@LINE-19]]:3 | protocol/Swift | TestProto | [[PROTO_USR]] | Ref,Impl,RelBase
152157// CHECK-NEXT: RelBase | extension/ext-struct/Swift | TestInner
153158
154-
155159//--- IndexMacros.swift
156160import SwiftSyntax
157161import SwiftSyntaxBuilder
0 commit comments