From eb66104801cae0a052c84ff777a61667b1ad79c2 Mon Sep 17 00:00:00 2001 From: Balaji Soundrarajan Date: Wed, 11 Mar 2015 10:57:14 -0700 Subject: [PATCH] Dont Assume Certain Node Are Always Parented Fix 1118 : Dont assume that some of the nodes are always parented. Always check if the parent is not null before accessing the parent. --- .../CSharp/Portable/Formatting/FormattingHelpers.cs | 7 +++---- src/Workspaces/CSharpTest/Formatting/FormattingTests.cs | 8 ++++++++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/Workspaces/CSharp/Portable/Formatting/FormattingHelpers.cs b/src/Workspaces/CSharp/Portable/Formatting/FormattingHelpers.cs index 18b54348c78..69cc75e8dc1 100644 --- a/src/Workspaces/CSharp/Portable/Formatting/FormattingHelpers.cs +++ b/src/Workspaces/CSharp/Portable/Formatting/FormattingHelpers.cs @@ -98,8 +98,7 @@ public static bool IsLambdaBodyBlock(this SyntaxNode node) return false; } - return node.Parent.Kind() == SyntaxKind.SimpleLambdaExpression || - node.Parent.Kind() == SyntaxKind.ParenthesizedLambdaExpression; + return node.IsParentKind(SyntaxKind.SimpleLambdaExpression) || node.IsParentKind(SyntaxKind.ParenthesizedLambdaExpression); } public static bool IsAnonymousMethodBlock(this SyntaxNode node) @@ -109,7 +108,7 @@ public static bool IsAnonymousMethodBlock(this SyntaxNode node) return false; } - return node.Parent.Kind() == SyntaxKind.AnonymousMethodExpression; + return node.IsParentKind(SyntaxKind.AnonymousMethodExpression); } public static bool IsSemicolonInForStatement(this SyntaxToken token) @@ -502,7 +501,7 @@ public static bool IsBlockBody(this SyntaxNode node) Contract.ThrowIfNull(node); var blockNode = node as BlockSyntax; - if (blockNode == null) + if (blockNode == null || blockNode.Parent == null) { return false; } diff --git a/src/Workspaces/CSharpTest/Formatting/FormattingTests.cs b/src/Workspaces/CSharpTest/Formatting/FormattingTests.cs index 08344b4f827..e9bef82af17 100644 --- a/src/Workspaces/CSharpTest/Formatting/FormattingTests.cs +++ b/src/Workspaces/CSharpTest/Formatting/FormattingTests.cs @@ -6010,5 +6010,13 @@ static void Main(string[] args) }"; AssertFormat(expected, code); } + + [WorkItem(1118, "https://github.com/dotnet/roslyn/issues/1118")] + [Fact, Trait(Traits.Feature, Traits.Features.Formatting)] + public void DontAssumeCertainNodeAreAlwaysParented() + { + var block = SyntaxFactory.Block(); + Formatter.Format(block, new AdhocWorkspace()); + } } } -- GitLab