提交 9e7362c0 编写于 作者: C Cyrus Najmabadi

Preserve error message.

Fixup tests (which now show better error recovery).
上级 41f22937
......@@ -3446,6 +3446,13 @@ private bool IsPossibleAccessorModifier()
}
var token = this.PeekToken(peekIndex);
if (token.Kind == SyntaxKind.CloseBraceToken)
{
// If we see "{ get { } public }
// then we will think that "public" likely starts an accessor.
return true;
}
switch (token.ContextualKind)
{
case SyntaxKind.GetKeyword:
......
......@@ -2305,12 +2305,8 @@ public static int Main()
// (7,13): error CS1043: { or ; expected
// get return 1;
Diagnostic(ErrorCode.ERR_SemiOrLBraceExpected, "return"),
// (9,15): error CS1014: A get or set accessor expected
// public static int Main()
Diagnostic(ErrorCode.ERR_GetOrSetExpected, "int"),
// (9,15): error CS1513: } expected
// public static int Main()
Diagnostic(ErrorCode.ERR_RbraceExpected, "int"));
// (8,2): error CS1513: } expected
Diagnostic(ErrorCode.ERR_RbraceExpected, ""));
}
[Fact]
......
......@@ -5494,7 +5494,7 @@ public void TestModifiedMemberAfterPropertyGetBrace()
Assert.False(pd.AccessorList.OpenBraceToken.IsMissing);
Assert.NotNull(pd.AccessorList.CloseBraceToken);
Assert.True(pd.AccessorList.CloseBraceToken.IsMissing);
Assert.Equal(2, pd.AccessorList.Accessors.Count);
Assert.Equal(1, pd.AccessorList.Accessors.Count);
var acc = pd.AccessorList.Accessors[0];
Assert.Equal(SyntaxKind.GetAccessorDeclaration, acc.Kind());
Assert.NotNull(acc.Keyword);
......@@ -5508,10 +5508,9 @@ public void TestModifiedMemberAfterPropertyGetBrace()
Assert.True(acc.Body.CloseBraceToken.IsMissing);
Assert.Equal(SyntaxKind.None, acc.SemicolonToken.Kind());
Assert.Equal(3, file.Errors().Length);
Assert.Equal(2, file.Errors().Length);
Assert.Equal((int)ErrorCode.ERR_RbraceExpected, file.Errors()[0].Code);
Assert.Equal((int)ErrorCode.ERR_GetOrSetExpected, file.Errors()[1].Code);
Assert.Equal((int)ErrorCode.ERR_RbraceExpected, file.Errors()[2].Code);
Assert.Equal((int)ErrorCode.ERR_RbraceExpected, file.Errors()[1].Code);
}
[Fact]
......
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition="'$(NuGetPackageRoot)' == ''">
<NuGetPackageRoot>C:\Users\tomat\.nuget\packages\</NuGetPackageRoot>
<NuGetPackageRoot>C:\Users\cyrusn\.nuget\packages\</NuGetPackageRoot>
</PropertyGroup>
<ImportGroup>
<Import Project="$(NuGetPackageRoot)\xunit.core\2.1.0-beta4-build3109\build\portable-win81+wpa81\xunit.core.targets" Condition="Exists('$(NuGetPackageRoot)\xunit.core\2.1.0-beta4-build3109\build\portable-win81+wpa81\xunit.core.targets')" />
......
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition="'$(NuGetPackageRoot)' == ''">
<NuGetPackageRoot>C:\Users\tomat\.nuget\packages\</NuGetPackageRoot>
<NuGetPackageRoot>C:\Users\cyrusn\.nuget\packages\</NuGetPackageRoot>
</PropertyGroup>
<ImportGroup>
<Import Project="$(NuGetPackageRoot)\xunit.core\2.1.0-beta4-build3109\build\portable-win81+wpa81\xunit.core.targets" Condition="Exists('$(NuGetPackageRoot)\xunit.core\2.1.0-beta4-build3109\build\portable-win81+wpa81\xunit.core.targets')" />
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册