@@ -268,19 +268,82 @@ TEST_F(TestSwiftASTContext, ApplyWorkingDir) {
268
268
EXPECT_EQ (
269
269
single_arg_rel_path,
270
270
llvm::SmallString<128 >(" -fmodule-map-file=rel/dir/module.modulemap" ));
271
+
272
+ // fmodule-file needs to handle different cases:
273
+ // -fmodule-file=path/to/pcm
274
+ // -fmodule-file=name=path/to/pcm
275
+ llvm::SmallString<128 > module_file_abs_path (
276
+ " -fmodule-file=/some/dir/module.pcm" );
277
+ SwiftASTContext::ApplyWorkingDir (module_file_abs_path, abs_working_dir);
278
+ EXPECT_EQ (module_file_abs_path,
279
+ llvm::SmallString<128 >(" -fmodule-file=/some/dir/module.pcm" ));
280
+
281
+ llvm::SmallString<128 > module_file_rel_path (
282
+ " -fmodule-file=relpath/module.pcm" );
283
+ SwiftASTContext::ApplyWorkingDir (module_file_rel_path, abs_working_dir);
284
+ EXPECT_EQ (
285
+ module_file_rel_path,
286
+ llvm::SmallString<128 >(" -fmodule-file=/abs/dir/relpath/module.pcm" ));
287
+
288
+ llvm::SmallString<128 > module_file_with_name_abs_path (
289
+ " -fmodule-file=modulename=/some/dir/module.pcm" );
290
+ SwiftASTContext::ApplyWorkingDir (module_file_with_name_abs_path,
291
+ abs_working_dir);
292
+ EXPECT_EQ (
293
+ module_file_with_name_abs_path,
294
+ llvm::SmallString<128 >(" -fmodule-file=modulename=/some/dir/module.pcm" ));
295
+
296
+ llvm::SmallString<128 > module_file_with_name_rel_path (
297
+ " -fmodule-file=modulename=relpath/module.pcm" );
298
+ SwiftASTContext::ApplyWorkingDir (module_file_with_name_rel_path,
299
+ abs_working_dir);
300
+ EXPECT_EQ (module_file_with_name_rel_path,
301
+ llvm::SmallString<128 >(
302
+ " -fmodule-file=modulename=/abs/dir/relpath/module.pcm" ));
271
303
}
272
304
273
305
namespace {
274
- const std::vector<std::string> duplicated_flags = {
275
- " -DMACRO1" , " -D" , " MACRO1" , " -UMACRO2" , " -U" , " MACRO2" ,
276
- " -I/path1" , " -I" , " /path1" , " -F/path2" , " -F" , " /path2" ,
277
- " -fmodule-map-file=/path3" , " -fmodule-map-file=/path3" ,
278
- " -F/path2" , " -F" , " /path2" , " -I/path1" , " -I" , " /path1" ,
279
- " -UMACRO2" , " -U" , " MACRO2" , " -DMACRO1" , " -D" , " MACRO1" ,
280
- };
281
- const std::vector<std::string> uniqued_flags = {
282
- " -DMACRO1" , " -UMACRO2" , " -I/path1" , " -F/path2" , " -fmodule-map-file=/path3"
283
- };
306
+ const std::vector<std::string> duplicated_flags = {
307
+ " -DMACRO1" ,
308
+ " -D" ,
309
+ " MACRO1" ,
310
+ " -UMACRO2" ,
311
+ " -U" ,
312
+ " MACRO2" ,
313
+ " -I/path1" ,
314
+ " -I" ,
315
+ " /path1" ,
316
+ " -F/path2" ,
317
+ " -F" ,
318
+ " /path2" ,
319
+ " -fmodule-map-file=/path3" ,
320
+ " -fmodule-map-file=/path3" ,
321
+ " -F/path2" ,
322
+ " -F" ,
323
+ " /path2" ,
324
+ " -I/path1" ,
325
+ " -I" ,
326
+ " /path1" ,
327
+ " -UMACRO2" ,
328
+ " -U" ,
329
+ " MACRO2" ,
330
+ " -DMACRO1" ,
331
+ " -D" ,
332
+ " MACRO1" ,
333
+ " -fmodule-file=/path/to/pcm" ,
334
+ " -fmodule-file=/path/to/pcm" ,
335
+ " -fmodule-file=modulename=/path/to/pcm" ,
336
+ " -fmodule-file=modulename=/path/to/pcm" ,
337
+ };
338
+ const std::vector<std::string> uniqued_flags = {
339
+ " -DMACRO1" ,
340
+ " -UMACRO2" ,
341
+ " -I/path1" ,
342
+ " -F/path2" ,
343
+ " -fmodule-map-file=/path3" ,
344
+ " -fmodule-file=/path/to/pcm" ,
345
+ " -fmodule-file=modulename=/path/to/pcm" ,
346
+ };
284
347
} // namespace
285
348
286
349
TEST (ClangArgs, UniquingCollisionWithExistingFlags) {
0 commit comments