提交 518616dd 编写于 作者: J Julien Couvreur

Handle null in AssemblyVersion attribute

上级 28688494
......@@ -2189,7 +2189,7 @@ private void DecodeWellKnownAttribute(ref DecodeWellKnownAttributeArguments<Attr
if (!VersionHelper.TryParseAssemblyVersion(verString, allowWildcard: !_compilation.IsEmitDeterministic, version: out version))
{
Location attributeArgumentSyntaxLocation = attribute.GetAttributeArgumentSyntaxLocation(0, arguments.AttributeSyntaxOpt);
bool foundBadWildcard = _compilation.IsEmitDeterministic && verString.Contains('*');
bool foundBadWildcard = _compilation.IsEmitDeterministic && verString?.Contains('*') == true;
arguments.Diagnostics.Add(foundBadWildcard ? ErrorCode.ERR_InvalidVersionFormatDeterministic : ErrorCode.ERR_InvalidVersionFormat, attributeArgumentSyntaxLocation);
}
......
......@@ -25,6 +25,22 @@ public class AttributeTests : WellKnownAttributesTestBase
#region Function Tests
[Fact, WorkItem(26464, "https://github.com/dotnet/roslyn/issues/26464")]
public void TestNullInAssemblyVersionAttribute()
{
var source = @"
[assembly: System.Reflection.AssemblyVersionAttribute(null)]
class Program
{
}";
var comp = CreateCompilation(source, options: TestOptions.DebugDll.WithDeterministic(true));
comp.VerifyDiagnostics(
// (2,55): error CS7034: The specified version string does not conform to the required format - major[.minor[.build[.revision]]]
// [assembly: System.Reflection.AssemblyVersionAttribute(null)]
Diagnostic(ErrorCode.ERR_InvalidVersionFormat, "null").WithLocation(2, 55)
);
}
[Fact]
[WorkItem(21194, "https://github.com/dotnet/roslyn/issues/21194")]
public void TestQuickAttributeChecker()
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册