提交 a88584da 编写于 作者: K Kent Boogaart 提交者: Neal Gafter

Make SyntaxGenerator.MethodDeclaration properly handle partial methods

Fixes #1604.
Closes #1605.
上级 f8bc07f3
......@@ -147,7 +147,7 @@ private SyntaxTokenList GetParameterModifiers(RefKind refKind)
parameters = this.ClearTrivia(parameters);
returnType = this.ClearTrivia(returnType);
bool hasBody = !modifiers.IsAbstract;
bool hasBody = !modifiers.IsAbstract && (!modifiers.IsPartial || statements != null);
return SyntaxFactory.MethodDeclaration(
default(SyntaxList<AttributeListSyntax>),
......
......@@ -614,6 +614,14 @@ public void TestMethodDeclarations()
VerifySyntax<MethodDeclarationSyntax>(
_g.MethodDeclaration("m", returnType: _g.IdentifierName("x"), accessibility: Accessibility.Public, modifiers: DeclarationModifiers.Abstract),
"public abstract x m();");
VerifySyntax<MethodDeclarationSyntax>(
_g.MethodDeclaration("m", modifiers: DeclarationModifiers.Partial),
"partial void m();");
VerifySyntax<MethodDeclarationSyntax>(
_g.MethodDeclaration("m", modifiers: DeclarationModifiers.Partial, statements: new[] { _g.IdentifierName("y") }),
"partial void m()\r\n{\r\n y;\r\n}");
}
[Fact]
......
......@@ -682,6 +682,11 @@ End Function</x>.Value)
VerifySyntax(Of MethodStatementSyntax)(
_g.MethodDeclaration("m", returnType:=_g.IdentifierName("x"), accessibility:=Accessibility.Public, modifiers:=DeclarationModifiers.Abstract),
<x>Public MustInherit Function m() As x</x>.Value)
VerifySyntax(Of MethodBlockSyntax)(
_g.MethodDeclaration("m", accessibility:=Accessibility.Private, modifiers:=DeclarationModifiers.Partial),
<x>Private Partial Sub m()
End Sub</x>.Value)
End Sub
<Fact>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册