@@ -89,8 +89,8 @@ class TestImportBase : public CompilerOptionSpecificTest,
89
89
public ::testing::WithParamInterface<ArgVector> {
90
90
91
91
template <typename NodeType>
92
- NodeType importNode (ASTUnit *From, ASTUnit *To, ASTImporter &Importer ,
93
- NodeType Node) {
92
+ llvm::Expected< NodeType> importNode (ASTUnit *From, ASTUnit *To,
93
+ ASTImporter &Importer, NodeType Node) {
94
94
ASTContext &ToCtx = To->getASTContext ();
95
95
96
96
// Add 'From' file to virtual file system so importer can 'find' it
@@ -100,17 +100,19 @@ class TestImportBase : public CompilerOptionSpecificTest,
100
100
createVirtualFileIfNeeded (To, FromFileName,
101
101
From->getBufferForFile (FromFileName));
102
102
103
- auto Imported = Importer.Import (Node);
103
+ auto Imported = Importer.Import_New (Node);
104
104
105
- // This should dump source locations and assert if some source locations
106
- // were not imported.
107
- SmallString<1024 > ImportChecker;
108
- llvm::raw_svector_ostream ToNothing (ImportChecker);
109
- ToCtx.getTranslationUnitDecl ()->print (ToNothing);
105
+ if (Imported) {
106
+ // This should dump source locations and assert if some source locations
107
+ // were not imported.
108
+ SmallString<1024 > ImportChecker;
109
+ llvm::raw_svector_ostream ToNothing (ImportChecker);
110
+ ToCtx.getTranslationUnitDecl ()->print (ToNothing);
110
111
111
- // This traverses the AST to catch certain bugs like poorly or not
112
- // implemented subtrees.
113
- Imported->dump (ToNothing);
112
+ // This traverses the AST to catch certain bugs like poorly or not
113
+ // implemented subtrees.
114
+ (*Imported)->dump (ToNothing);
115
+ }
114
116
115
117
return Imported;
116
118
}
@@ -151,11 +153,16 @@ class TestImportBase : public CompilerOptionSpecificTest,
151
153
EXPECT_TRUE (Verifier.match (ToImport, WrapperMatcher));
152
154
153
155
auto Imported = importNode (FromAST.get (), ToAST.get (), Importer, ToImport);
154
- if (!Imported)
155
- return testing::AssertionFailure () << " Import failed, nullptr returned!" ;
156
-
156
+ if (!Imported) {
157
+ std::string ErrorText;
158
+ handleAllErrors (
159
+ Imported.takeError (),
160
+ [&ErrorText](const ImportError &Err) { ErrorText = Err.message (); });
161
+ return testing::AssertionFailure ()
162
+ << " Import failed, error: \" " << ErrorText << " \" !" ;
163
+ }
157
164
158
- return Verifier.match (Imported, WrapperMatcher);
165
+ return Verifier.match (* Imported, WrapperMatcher);
159
166
}
160
167
161
168
template <typename NodeType>
@@ -277,7 +284,9 @@ class TestImportBase : public CompilerOptionSpecificTest,
277
284
EXPECT_TRUE (FoundDecl.size () == 1 );
278
285
const Decl *ToImport = selectFirst<Decl>(DeclToImportID, FoundDecl);
279
286
auto Imported = importNode (From, To, *ImporterRef, ToImport);
280
- EXPECT_TRUE (Imported);
287
+ EXPECT_TRUE (static_cast <bool >(Imported));
288
+ if (!Imported)
289
+ llvm::consumeError (Imported.takeError ());
281
290
}
282
291
283
292
// Find the declaration and import it.
@@ -339,13 +348,23 @@ class ASTImporterTestBase : public CompilerOptionSpecificTest {
339
348
Decl *import (ASTImporterLookupTable &LookupTable, ASTUnit *ToAST,
340
349
Decl *FromDecl) {
341
350
lazyInitImporter (LookupTable, ToAST);
342
- return Importer->Import (FromDecl);
351
+ if (auto ImportedOrErr = Importer->Import_New (FromDecl))
352
+ return *ImportedOrErr;
353
+ else {
354
+ llvm::consumeError (ImportedOrErr.takeError ());
355
+ return nullptr ;
356
+ }
343
357
}
344
358
345
359
QualType import (ASTImporterLookupTable &LookupTable, ASTUnit *ToAST,
346
360
QualType FromType) {
347
361
lazyInitImporter (LookupTable, ToAST);
348
- return Importer->Import (FromType);
362
+ if (auto ImportedOrErr = Importer->Import_New (FromType))
363
+ return *ImportedOrErr;
364
+ else {
365
+ llvm::consumeError (ImportedOrErr.takeError ());
366
+ return QualType{};
367
+ }
349
368
}
350
369
};
351
370
0 commit comments