提交 6a26c852 编写于 作者: C CyrusNajmabadi

Be resilient to not being able to find ArgumentNullException

上级 e79ae96d
......@@ -374,21 +374,25 @@ private bool IsNullLiteral(IOperation operand)
return null;
}
private static SyntaxNode CreateArgumentNullException(
Compilation compilation, SyntaxGenerator generator, IParameterSymbol parameter)
private static SyntaxNode GetTypeNode(
Compilation compilation, SyntaxGenerator generator, Type type)
{
var argumentNullExceptionType = compilation.GetTypeByMetadataName(typeof(ArgumentNullException).FullName);
if (argumentNullExceptionType == null)
var typeSymbol = compilation.GetTypeByMetadataName(type.FullName);
if (typeSymbol == null)
{
return generator.ObjectCreationExpression(
generator.QualifiedName(
generator.IdentifierName(nameof(System)),
generator.IdentifierName(nameof(ArgumentNullException))),
generator.NameOfExpression(generator.IdentifierName(parameter.Name)));
return generator.QualifiedName(
generator.IdentifierName(nameof(System)),
generator.IdentifierName(type.Name));
}
return generator.TypeExpression(typeSymbol);
}
private static SyntaxNode CreateArgumentNullException(
Compilation compilation, SyntaxGenerator generator, IParameterSymbol parameter)
{
return generator.ObjectCreationExpression(
argumentNullExceptionType,
GetTypeNode(compilation, generator, typeof(ArgumentNullException)),
generator.NameOfExpression(generator.IdentifierName(parameter.Name)));
}
......@@ -398,7 +402,7 @@ private bool IsNullLiteral(IOperation operand)
// Note "message" is not localized. It is the name of the first parameter of
// "ArgumentException"
return generator.ObjectCreationExpression(
compilation.GetTypeByMetadataName("System.ArgumentException"),
GetTypeNode(compilation, generator, typeof(ArgumentException)),
generator.LiteralExpression("message"),
generator.NameOfExpression(generator.IdentifierName(parameter.Name)));
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册