From 1f240e9fc5fddee14766d5739714a9e2660acd53 Mon Sep 17 00:00:00 2001 From: Dustin Campbell Date: Tue, 8 Dec 2015 11:27:00 -0800 Subject: [PATCH] Fix C# cast simplification issue where removal of a cast can break an implicitly-typed array --- .../Simplification/CastSimplificationTests.vb | 40 +++++++++++++++++++ .../Portable/Utilities/SpeculationAnalyzer.cs | 4 ++ 2 files changed, 44 insertions(+) diff --git a/src/EditorFeatures/Test2/Simplification/CastSimplificationTests.vb b/src/EditorFeatures/Test2/Simplification/CastSimplificationTests.vb index aee5cc23cb5..a581d78c0d0 100644 --- a/src/EditorFeatures/Test2/Simplification/CastSimplificationTests.vb +++ b/src/EditorFeatures/Test2/Simplification/CastSimplificationTests.vb @@ -4819,6 +4819,46 @@ class C } } ]]> + + + Await TestAsync(input, expected) + End Function + + + + Public Async Function TestCSharp_DontRemove_NecessaryCastToNullInImplicitlyTypedArray() As Task + Dim input = + + + + + + + + Dim expected = + Await TestAsync(input, expected) diff --git a/src/Workspaces/CSharp/Portable/Utilities/SpeculationAnalyzer.cs b/src/Workspaces/CSharp/Portable/Utilities/SpeculationAnalyzer.cs index a4a54fded53..4cb398bbc7d 100644 --- a/src/Workspaces/CSharp/Portable/Utilities/SpeculationAnalyzer.cs +++ b/src/Workspaces/CSharp/Portable/Utilities/SpeculationAnalyzer.cs @@ -426,6 +426,10 @@ protected override bool ReplacementChangesSemanticsForNodeLanguageSpecific(Synta { return ReplacementBreaksInterpolation((InterpolationSyntax)currentOriginalNode, (InterpolationSyntax)currentReplacedNode); } + else if (currentOriginalNode.Kind() == SyntaxKind.ImplicitArrayCreationExpression) + { + return !TypesAreCompatible((ImplicitArrayCreationExpressionSyntax)currentOriginalNode, (ImplicitArrayCreationExpressionSyntax)currentReplacedNode); + } return false; } -- GitLab