@@ -62,6 +62,33 @@ static void printValidationInfo(llvm::StringRef data) {
62
62
}
63
63
}
64
64
65
+ static void resolveTypeFromMangledNameList (
66
+ swift::ASTContext &Ctx, llvm::SmallVector<std::string, 8 > &MangledNames) {
67
+ std::string Error;
68
+ for (auto &Mangled : MangledNames) {
69
+ swift::Type ResolvedType =
70
+ swift::ide::getTypeFromMangledSymbolname (Ctx, Mangled, Error);
71
+ if (!ResolvedType) {
72
+ llvm::errs () << " Can't resolve type of " << Mangled << " \n " ;
73
+ } else {
74
+ ResolvedType->print (llvm::errs ());
75
+ llvm::errs () << " \n " ;
76
+ }
77
+ }
78
+ }
79
+
80
+ static void
81
+ collectMangledNames (std::string &FilePath,
82
+ llvm::SmallVector<std::string, 8 > &MangledNames) {
83
+ std::string Name;
84
+ std::ifstream InputStream (FilePath);
85
+ while (std::getline (InputStream, Name)) {
86
+ if (Name.empty ())
87
+ continue ;
88
+ MangledNames.push_back (Name);
89
+ }
90
+ }
91
+
65
92
int main (int argc, char **argv) {
66
93
PROGRAM_START (argc, argv);
67
94
INITIALIZE_LLVM ();
@@ -238,28 +265,9 @@ int main(int argc, char **argv) {
238
265
}
239
266
}
240
267
if (!DumpTypeFromMangled.empty ()) {
241
- std::string Error;
242
- std::string Name;
243
- swift::ASTContext &Ctx = CI.getASTContext ();
244
268
llvm::SmallVector<std::string, 8 > MangledNames;
245
-
246
- std::ifstream InputStream (DumpTypeFromMangled);
247
- while (std::getline (InputStream, Name)) {
248
- if (Name.empty ())
249
- continue ;
250
- MangledNames.push_back (Name);
251
- }
252
-
253
- for (auto &Mangled : MangledNames) {
254
- swift::Type ResolvedType = swift::ide::getTypeFromMangledSymbolname (
255
- Ctx, Mangled, Error);
256
- if (!ResolvedType) {
257
- llvm::errs () << " Can't resolve type of " << Mangled << " \n " ;
258
- } else {
259
- ResolvedType->print (llvm::errs ());
260
- llvm::errs () << " \n " ;
261
- }
262
- }
269
+ collectMangledNames (DumpTypeFromMangled, MangledNames);
270
+ resolveTypeFromMangledNameList (CI.getASTContext (), MangledNames);
263
271
}
264
272
}
265
273
return 0 ;
0 commit comments