@@ -46,6 +46,7 @@ struct swift::ide::api::SDKNodeInitInfo {
4646 SDKNodeInitInfo (SDKContext &Ctx, Decl *D);
4747 SDKNodeInitInfo (SDKContext &Ctx, ValueDecl *VD);
4848 SDKNodeInitInfo (SDKContext &Ctx, OperatorDecl *D);
49+ SDKNodeInitInfo (SDKContext &Ctx, ImportDecl *ID);
4950 SDKNodeInitInfo (SDKContext &Ctx, ProtocolConformance *Conform);
5051 SDKNodeInitInfo (SDKContext &Ctx, Type Ty, TypeInitInfo Info = TypeInitInfo());
5152 SDKNode* createSDKNode (SDKNodeKind Kind);
@@ -80,6 +81,9 @@ void SDKNodeRoot::registerDescendant(SDKNode *D) {
8081 // Operator doesn't have usr
8182 if (isa<SDKNodeDeclOperator>(D))
8283 return ;
84+ // Import doesn't have usr
85+ if (isa<SDKNodeDeclImport>(D))
86+ return ;
8387 if (auto DD = dyn_cast<SDKNodeDecl>(D)) {
8488 assert (!DD->getUsr ().empty ());
8589 DescendantDeclTable[DD->getUsr ()].insert (DD);
@@ -166,6 +170,9 @@ SDKNodeDeclAccessor::SDKNodeDeclAccessor(SDKNodeInitInfo Info):
166170 SDKNodeDeclAbstractFunc(Info, SDKNodeKind::DeclAccessor),
167171 AccKind(Info.AccKind) {}
168172
173+ SDKNodeDeclImport::SDKNodeDeclImport (SDKNodeInitInfo Info):
174+ SDKNodeDecl(Info, SDKNodeKind::DeclImport) {}
175+
169176SDKNodeDeclAssociatedType::SDKNodeDeclAssociatedType (SDKNodeInitInfo Info):
170177 SDKNodeDecl(Info, SDKNodeKind::DeclAssociatedType) {};
171178
@@ -375,6 +382,7 @@ StringRef SDKNodeType::getTypeRoleDescription() const {
375382 case SDKNodeKind::DeclType:
376383 case SDKNodeKind::DeclOperator:
377384 case SDKNodeKind::Conformance:
385+ case SDKNodeKind::DeclImport:
378386 llvm_unreachable (" Type Parent is wrong" );
379387 case SDKNodeKind::DeclFunction:
380388 case SDKNodeKind::DeclConstructor:
@@ -940,6 +948,7 @@ static bool isSDKNodeEqual(SDKContext &Ctx, const SDKNode &L, const SDKNode &R)
940948 }
941949 case SDKNodeKind::Conformance:
942950 case SDKNodeKind::TypeWitness:
951+ case SDKNodeKind::DeclImport:
943952 case SDKNodeKind::Root: {
944953 return L.getPrintedName () == R.getPrintedName () &&
945954 L.hasSameChildren (R);
@@ -1358,6 +1367,13 @@ SDKNodeInitInfo::SDKNodeInitInfo(SDKContext &Ctx, OperatorDecl *OD):
13581367 PrintedName = OD->getName ().str ();
13591368}
13601369
1370+ SDKNodeInitInfo::SDKNodeInitInfo (SDKContext &Ctx, ImportDecl *ID):
1371+ SDKNodeInitInfo(Ctx, cast<Decl>(ID)) {
1372+ std::string content;
1373+ llvm::raw_string_ostream OS (content);
1374+ ID->getModulePath ().print (OS);
1375+ Name = PrintedName = Ctx.buffer (content);
1376+ }
13611377
13621378SDKNodeInitInfo::SDKNodeInitInfo (SDKContext &Ctx, ProtocolConformance *Conform):
13631379 SDKNodeInitInfo(Ctx, Conform->getProtocol ()) {
@@ -1888,6 +1904,10 @@ void SwiftDeclCollector::processDecl(Decl *D) {
18881904 if (auto *OD = dyn_cast<OperatorDecl>(D)) {
18891905 RootNode->addChild (constructOperatorDeclNode (OD));
18901906 }
1907+ if (auto *IM = dyn_cast<ImportDecl>(D)) {
1908+ RootNode->addChild (SDKNodeInitInfo (Ctx, IM)
1909+ .createSDKNode (SDKNodeKind::DeclImport));
1910+ }
18911911}
18921912
18931913void SwiftDeclCollector::processValueDecl (ValueDecl *VD) {
0 commit comments