Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions src/Microsoft.DocAsCode.Dotnet/CompilationHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public static void Main(string[] foo) { }
"""),
};

public static bool CheckDiagnostics(this Compilation compilation)
public static bool CheckDiagnostics(this Compilation compilation, bool errorAsWarning)
{
var errorCount = 0;

Expand All @@ -34,7 +34,8 @@ public static bool CheckDiagnostics(this Compilation compilation)
if (diagnostic.IsSuppressed)
continue;

if (diagnostic.Severity is DiagnosticSeverity.Warning)
if (diagnostic.Severity is DiagnosticSeverity.Warning ||
(diagnostic.Severity is DiagnosticSeverity.Error && errorAsWarning))
{
Logger.LogWarning(diagnostic.ToString());
continue;
Expand Down
1 change: 1 addition & 0 deletions src/Microsoft.DocAsCode.Dotnet/DotnetApiCatalog.cs
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@ private static ExtractMetadataConfig ConvertConfig(MetadataJsonItemConfig config
DisableDefaultFilter = configModel?.DisableDefaultFilter ?? false,
NoRestore = configModel?.NoRestore ?? false,
NamespaceLayout = configModel?.NamespaceLayout ?? NamespaceLayout.Flattened,
AllowCompilationErrors = configModel?.AllowCompilationErrors ?? false,
Files = expandedFiles.Items.SelectMany(s => s.Files).ToList(),
References = expandedReferences?.Items.SelectMany(s => s.Files).ToList(),
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,6 @@ internal class ExtractMetadataConfig
public NamespaceLayout NamespaceLayout { get; init; }

public Dictionary<string, string> MSBuildProperties { get; init; }

public bool AllowCompilationErrors { get; init; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -101,21 +101,21 @@ await LoadCompilationFromProject(project.AbsolutePath) is { } compilation)

foreach (var compilation in projectCompilations)
{
hasCompilationError |= compilation.CheckDiagnostics();
hasCompilationError |= compilation.CheckDiagnostics(_config.AllowCompilationErrors);
assemblies.Add((compilation.Assembly, compilation));
}

if (_files.TryGetValue(FileType.CSSourceCode, out var csFiles))
{
var compilation = CompilationHelper.CreateCompilationFromCSharpFiles(csFiles.Select(f => f.NormalizedPath));
hasCompilationError |= compilation.CheckDiagnostics();
hasCompilationError |= compilation.CheckDiagnostics(_config.AllowCompilationErrors);
assemblies.Add((compilation.Assembly, compilation));
}

if (_files.TryGetValue(FileType.VBSourceCode, out var vbFiles))
{
var compilation = CompilationHelper.CreateCompilationFromVBFiles(vbFiles.Select(f => f.NormalizedPath));
hasCompilationError |= compilation.CheckDiagnostics();
hasCompilationError |= compilation.CheckDiagnostics(_config.AllowCompilationErrors);
assemblies.Add((compilation.Assembly, compilation));
}

Expand All @@ -125,7 +125,7 @@ await LoadCompilationFromProject(project.AbsolutePath) is { } compilation)
{
Logger.LogInfo($"Loading assembly {assemblyFile.NormalizedPath}");
var (compilation, assembly) = CompilationHelper.CreateCompilationFromAssembly(assemblyFile.NormalizedPath, _config.References);
hasCompilationError |= compilation.CheckDiagnostics();
hasCompilationError |= compilation.CheckDiagnostics(_config.AllowCompilationErrors);
assemblies.Add((assembly, compilation));
}
}
Expand Down
3 changes: 3 additions & 0 deletions src/Microsoft.DocAsCode.Dotnet/MetadataJsonItemConfig.cs
Original file line number Diff line number Diff line change
Expand Up @@ -57,4 +57,7 @@ internal class MetadataJsonItemConfig

[JsonProperty("namespaceLayout")]
public NamespaceLayout NamespaceLayout{ get; set; }

[JsonProperty("allowCompilationErrors")]
public bool AllowCompilationErrors { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -3656,19 +3656,19 @@ public void TestGenerateMetadataWithPrivateMembers()
{
var code =
"""
namespace Test
namespace Test
{
internal class Foo : IFoo
{
internal class Foo : IFoo
{
internal void M1();
protected internal void M2();
private protected void M3();
private void M4();
}

internal interface IFoo { }
internal void M1();
protected internal void M2();
private protected void M3();
private void M4();
}
""";

internal interface IFoo { }
}
""";

var output = Verify(code, new() { IncludePrivateMembers = true });
var foo = output.Items[0].Items[0];
Expand All @@ -3681,4 +3681,20 @@ internal interface IFoo { }
"private void M4()",
}, foo.Items.Select(item => item.Syntax.Content[SyntaxLanguage.CSharp]));
}

[Fact]
public void TestAllowCompilationErrors()
{
var code =
"""
namespace Test
{
public class Foo : Bar {}
}
""";

var output = Verify(code, new() { AllowCompilationErrors = true });
var foo = output.Items[0].Items[0];
Assert.Equal("public class Foo : Bar", foo.Syntax.Content[SyntaxLanguage.CSharp]);
}
}