@@ -172,6 +172,9 @@ SDKNodeDeclVar::SDKNodeDeclVar(SDKNodeInitInfo Info):
172
172
SDKNodeDecl(Info, SDKNodeKind::DeclVar), IsLet(Info.IsLet),
173
173
HasStorage(Info.HasStorage) {}
174
174
175
+ SDKNodeDeclMacro::SDKNodeDeclMacro (SDKNodeInitInfo Info):
176
+ SDKNodeDecl(Info, SDKNodeKind::DeclMacro) {}
177
+
175
178
SDKNodeDeclAbstractFunc::SDKNodeDeclAbstractFunc (SDKNodeInitInfo Info,
176
179
SDKNodeKind Kind): SDKNodeDecl(Info, Kind), IsThrowing(Info.IsThrowing),
177
180
ReqNewWitnessTableEntry(Info.ReqNewWitnessTableEntry),
@@ -226,6 +229,10 @@ SDKNodeType *SDKNodeDeclVar::getType() const {
226
229
return cast<SDKNodeType>(childAt (0 ));
227
230
}
228
231
232
+ SDKNodeType *SDKNodeDeclMacro::getType () const {
233
+ return cast<SDKNodeType>(childAt (0 ));
234
+ }
235
+
229
236
NodePtr UpdatedNodesMap::findUpdateCounterpart (const SDKNode *Node) const {
230
237
assert (Node->isAnnotatedAs (NodeAnnotation::Updated) && " Not update operation." );
231
238
auto FoundPair = std::find_if (MapImpl.begin (), MapImpl.end (),
@@ -409,6 +416,7 @@ StringRef SDKNodeType::getTypeRoleDescription() const {
409
416
return SDKNodeDeclAbstractFunc::getTypeRoleDescription (Ctx,
410
417
P->getChildIndex (this ));
411
418
case SDKNodeKind::DeclVar:
419
+ case SDKNodeKind::DeclMacro:
412
420
return " declared" ;
413
421
case SDKNodeKind::DeclTypeAlias:
414
422
return " underlying" ;
@@ -993,6 +1001,7 @@ static bool isSDKNodeEqual(SDKContext &Ctx, const SDKNode &L, const SDKNode &R)
993
1001
return false ;
994
1002
LLVM_FALLTHROUGH;
995
1003
}
1004
+ case SDKNodeKind::DeclMacro:
996
1005
case SDKNodeKind::Conformance:
997
1006
case SDKNodeKind::TypeWitness:
998
1007
case SDKNodeKind::DeclImport:
@@ -1833,6 +1842,13 @@ SwiftDeclCollector::constructTypeAliasNode(TypeAliasDecl *TAD) {
1833
1842
return Alias;
1834
1843
}
1835
1844
1845
+ SDKNode *swift::ide::api::
1846
+ SwiftDeclCollector::constructMacroNode (MacroDecl *MD) {
1847
+ auto Macro = SDKNodeInitInfo (Ctx, MD).createSDKNode (SDKNodeKind::DeclMacro);
1848
+ Macro->addChild (constructTypeNode (MD->getInterfaceType (), TypeInitInfo ()));
1849
+ return Macro;
1850
+ }
1851
+
1836
1852
SDKNode *swift::ide::api::
1837
1853
SwiftDeclCollector::constructAssociatedTypeNode (AssociatedTypeDecl *ATD) {
1838
1854
auto Asso = SDKNodeInitInfo (Ctx, ATD).
@@ -2028,6 +2044,8 @@ void SwiftDeclCollector::processValueDecl(ValueDecl *VD) {
2028
2044
RootNode->addChild (constructVarNode (VAD));
2029
2045
} else if (auto TAD = dyn_cast<TypeAliasDecl>(VD)) {
2030
2046
RootNode->addChild (constructTypeAliasNode (TAD));
2047
+ } else if (auto MD = dyn_cast<MacroDecl>(VD)) {
2048
+ RootNode->addChild (constructMacroNode (MD));
2031
2049
} else {
2032
2050
llvm_unreachable (" unhandled value decl" );
2033
2051
}
0 commit comments