提交 60f33499 编写于 作者: T Ty Overby 提交者: GitHub

2496 bad arg exception message (#16635)

* remove no-arg-constructors for ArgumentException from compiler

* fix all `new ArgumentException(nameof(paramname))` instances.

* update error
上级 a2128deb
......@@ -72,7 +72,7 @@ public override IEnumerable<string> PreprocessorSymbolNames
{
if (!SyntaxFacts.IsValidIdentifier(preprocessorSymbol))
{
throw new ArgumentException(nameof(preprocessorSymbol));
throw new ArgumentException($"{nameof(preprocessorSymbols)} contains a symbol that is not a valid identifier", nameof(preprocessorSymbols));
}
}
}
......
......@@ -1783,8 +1783,8 @@ protected CSharpSyntaxNode GetBindableParentNode(CSharpSyntaxNode node)
{
return null;
}
throw new ArgumentException();
throw new ArgumentException($"The parent of {nameof(node)} must not be null unless this is a speculative semantic model.", nameof(node));
}
// skip up past parens and ref expressions, as we have no bound nodes for them.
......
......@@ -1458,7 +1458,7 @@ public static SyntaxTriviaList TriviaList(IEnumerable<SyntaxTrivia> trivias)
{
if (!enumerator.MoveNext())
{
throw new ArgumentException();
throw new ArgumentException($"{nameof(nodes)} must not be empty.", nameof(nodes));
}
builder.Add(enumerator.Current);
......@@ -1471,7 +1471,7 @@ public static SyntaxTriviaList TriviaList(IEnumerable<SyntaxTrivia> trivias)
builder.Add(enumerator.Current);
if (enumerator.MoveNext())
{
throw new ArgumentException();
throw new ArgumentException($"{nameof(separators)} must have 1 fewer element than {nameof(nodes)}", nameof(separators));
}
}
......@@ -1480,7 +1480,7 @@ public static SyntaxTriviaList TriviaList(IEnumerable<SyntaxTrivia> trivias)
if (separators != null)
{
throw new ArgumentException();
throw new ArgumentException($"When {nameof(nodes)} is null, {nameof(separators)} must also be null.", nameof(separators));
}
return default(SeparatedSyntaxList<TNode>);
......
......@@ -209,7 +209,7 @@ public INamedTypeSymbol CreateErrorTypeSymbol(INamespaceOrTypeSymbol container,
if (arity < 0)
{
throw new ArgumentException(nameof(arity));
throw new ArgumentException($"{nameof(arity)} must be >= 0", nameof(arity));
}
return CommonCreateErrorTypeSymbol(container, name, arity);
......
......@@ -39,15 +39,10 @@ internal sealed class SimpleDiagnostic : Diagnostic
if ((warningLevel == 0 && severity != DiagnosticSeverity.Error) ||
(warningLevel != 0 && severity == DiagnosticSeverity.Error))
{
throw new ArgumentException(nameof(warningLevel));
throw new ArgumentException($"{nameof(warningLevel)} ({warningLevel}) and {nameof(severity)} ({severity}) are not compatible.", nameof(warningLevel));
}
if (descriptor == null)
{
throw new ArgumentNullException(nameof(descriptor));
}
_descriptor = descriptor;
_descriptor = descriptor ?? throw new ArgumentNullException(nameof(descriptor));
_severity = severity;
_warningLevel = warningLevel;
_location = location ?? Location.None;
......
......@@ -636,7 +636,7 @@ public void RegisterSymbolAction(DiagnosticAnalyzer analyzer, Action<SymbolAnaly
parameters = delegateInvokeMethod?.Parameters ?? ImmutableArray.Create<IParameterSymbol>();
break;
default:
throw new ArgumentException(nameof(context));
throw new ArgumentException($"{context.Symbol.Kind} is not supported.", nameof(context));
}
foreach (var parameter in parameters)
......
......@@ -190,12 +190,7 @@ public static AssemblyMetadata Create(ModuleMetadata module)
/// <exception cref="ArgumentException"><paramref name="modules"/> is empty or contains a module that doesn't own its image (was created via <see cref="Metadata.Copy"/>).</exception>
public static AssemblyMetadata Create(ImmutableArray<ModuleMetadata> modules)
{
if (modules.IsDefault)
{
throw new ArgumentException(nameof(modules));
}
if (modules.Length == 0)
if (modules.IsDefaultOrEmpty)
{
throw new ArgumentException(CodeAnalysisResources.AssemblyMustHaveAtLeastOneModule, nameof(modules));
}
......
......@@ -135,7 +135,7 @@ unsafe void IUnsafeComStream.Seek(long dlibMove, int origin, IntPtr plibNewPosit
break;
default:
throw new ArgumentException(nameof(origin));
throw new ArgumentException($"{nameof(origin)} ({origin}) is invalid.", nameof(origin));
}
if (plibNewPosition != IntPtr.Zero)
......
......@@ -80,7 +80,7 @@ public override int Read(byte[] buffer, int offset, int count)
// The buffer must be able to hold at least one character from the
// SourceText stream. Returning 0 for that case isn't correct because
// that indicates end of stream vs. insufficient buffer.
throw new ArgumentException(nameof(count));
throw new ArgumentException($"{nameof(count)} must be greater than or equal to {_minimumTargetBufferCount}", nameof(count));
}
int originalCount = count;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册