Skip to content

Commit dc743a2

Browse files
authored
Fix module being ignored when it cannot be found based on include dir. (mono#1736)
1 parent 25e2c7c commit dc743a2

File tree

3 files changed

+12
-9
lines changed

3 files changed

+12
-9
lines changed

src/CLI/Generator.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,9 @@ public bool ValidateOptions(List<string> messages)
108108
if (string.IsNullOrEmpty(options.OutputNamespace))
109109
options.OutputNamespace = moduleName;
110110

111+
if (options.IncludeDirs.Count == 0)
112+
options.IncludeDirs.Add(Path.GetDirectoryName(options.HeaderFiles.First()));
113+
111114
SetupTargetTriple();
112115

113116
return true;

src/Generator/Driver.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -439,7 +439,12 @@ public static void Run(ILibrary library)
439439
}
440440

441441
new CleanUnitPass { Context = driver.Context }.VisitASTContext(driver.Context.ASTContext);
442-
options.Modules.RemoveAll(m => m != options.SystemModule && !m.Units.GetGenerated().Any());
442+
foreach (var module in options.Modules.Where(
443+
m => m != options.SystemModule && !m.Units.GetGenerated().Any()))
444+
{
445+
Diagnostics.Message($"Removing module {module} because no translation units are generated...");
446+
options.Modules.Remove(module);
447+
}
443448

444449
if (!options.Quiet)
445450
Diagnostics.Message("Processing code...");

src/Generator/Passes/CleanUnitPass.cs

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,9 @@ private Module GetModule(TranslationUnit unit)
3131
includeDir = ".";
3232
includeDir = Path.GetFullPath(includeDir);
3333

34-
Module module = Options.Modules.Find(
35-
m => m.IncludeDirs.Any(i => Path.GetFullPath(i) == includeDir));
36-
if (module == null)
37-
{
38-
unit.ExplicitlyIgnore();
39-
module = Options.Modules[1];
40-
}
41-
return module;
34+
return Options.Modules.FirstOrDefault(
35+
m => m.IncludeDirs.Any(i => Path.GetFullPath(i) == includeDir)) ??
36+
Options.Modules[1];
4237
}
4338

4439
public override bool VisitDeclarationContext(DeclarationContext context)

0 commit comments

Comments
 (0)