提交 30d40c13 编写于 作者: C CyrusNajmabadi 提交者: GitHub

Move more errors out of the parser. (#16326)

上级 f6dae243
......@@ -2958,10 +2958,6 @@ private ConversionOperatorDeclarationSyntax ParseConversionOperatorDeclaration(S
var type = this.ParseType();
var paramList = this.ParseParenthesizedParameterList();
if (paramList.Parameters.Count != 1)
{
paramList = this.AddErrorToFirstToken(paramList, ErrorCode.ERR_OvlUnaryOperatorExpected);
}
BlockSyntax blockBody;
ArrowExpressionClauseSyntax expressionBody;
......
......@@ -48,6 +48,10 @@ internal sealed class SourceUserDefinedConversionSymbol : SourceUserDefinedOpera
diagnostics,
isExpressionBodied)
{
if (syntax.ParameterList.Parameters.Count != 1)
{
diagnostics.Add(ErrorCode.ERR_OvlUnaryOperatorExpected, syntax.ParameterList.GetLocation());
}
}
internal new ConversionOperatorDeclarationSyntax GetSyntax()
......
......@@ -1827,6 +1827,22 @@ public static void Main()
ParseAndValidate(test, Diagnostic(ErrorCode.ERR_OvlUnaryOperatorExpected, "ii"));
}
[Fact]
public void CS1019ERR_OvlUnaryOperatorExpected2()
{
var test = @"
class C
{
public static implicit operator int(C c1, C c2) => 0;
}
";
CreateCompilationWithMscorlib(test).VerifyDiagnostics(
// (4,40): error CS1019: Overloadable unary operator expected
// public static implicit operator int(C c1, C c2) => 0;
Diagnostic(ErrorCode.ERR_OvlUnaryOperatorExpected, "(C c1, C c2)").WithLocation(4, 40));
}
[WorkItem(906502, "DevDiv/Personal")]
[Fact]
public void CS1020ERR_OvlBinaryOperatorExpected()
......
......@@ -8302,7 +8302,6 @@ public void OperatorError()
new ErrorDescription { Code = 1003, Line = 1, Column = 9 },
new ErrorDescription { Code = 1031, Line = 1, Column = 9 },
new ErrorDescription { Code = 1003, Line = 1, Column = 1 },
new ErrorDescription { Code = 1019, Line = 1, Column = 9 },
new ErrorDescription { Code = 1026, Line = 1, Column = 9 },
new ErrorDescription { Code = (int)ErrorCode.ERR_SemicolonExpected, Line = 1, Column = 9 });
}
......@@ -8315,7 +8314,6 @@ public void OperatorImplicitError()
new ErrorDescription { Code = 1003, Line = 1, Column = 9 },
new ErrorDescription { Code = 1031, Line = 1, Column = 9 },
new ErrorDescription { Code = 1003, Line = 1, Column = 9 },
new ErrorDescription { Code = 1019, Line = 1, Column = 9 },
new ErrorDescription { Code = 1026, Line = 1, Column = 9 },
new ErrorDescription { Code = (int)ErrorCode.ERR_SemicolonExpected, Line = 1, Column = 9 });
}
......@@ -8328,7 +8326,6 @@ public void OperatorExplicitError()
new ErrorDescription { Code = 1003, Line = 1, Column = 9 },
new ErrorDescription { Code = 1031, Line = 1, Column = 9 },
new ErrorDescription { Code = 1003, Line = 1, Column = 9 },
new ErrorDescription { Code = 1019, Line = 1, Column = 9 },
new ErrorDescription { Code = 1026, Line = 1, Column = 9 },
new ErrorDescription { Code = (int)ErrorCode.ERR_SemicolonExpected, Line = 1, Column = 9 });
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册