diff --git a/src/Analyzers/CSharp/Tests/UseImplicitOrExplicitType/UseImplicitTypeTests.cs b/src/Analyzers/CSharp/Tests/UseImplicitOrExplicitType/UseImplicitTypeTests.cs index 3fb01362b068dd86586f43ce7281ba5c9381fa0e..fc66247d3b86a76a0e6a3aeae72d20cb76733859 100644 --- a/src/Analyzers/CSharp/Tests/UseImplicitOrExplicitType/UseImplicitTypeTests.cs +++ b/src/Analyzers/CSharp/Tests/UseImplicitOrExplicitType/UseImplicitTypeTests.cs @@ -2793,5 +2793,21 @@ private void M(object sender, EventArgs e) private readonly Action f2; }", parameters: new TestParameters(options: ImplicitTypeEverywhere())); } + + [WpfFact, Trait(Traits.Feature, Traits.Features.CodeActionsUseImplicitType)] + public async Task DoNotSuggestVarForTargetTypedNew() + { + await TestMissingInRegularAndScriptAsync( +@"using System; + +class Program +{ + void Method() + { + [|string|] p = new('c', 1); + } + +}", new TestParameters(options: ImplicitTypeEverywhere())); + } } } diff --git a/src/Workspaces/SharedUtilitiesAndExtensions/Compiler/CSharp/Utilities/TypeStyle/CSharpUseImplicitTypeHelper.cs b/src/Workspaces/SharedUtilitiesAndExtensions/Compiler/CSharp/Utilities/TypeStyle/CSharpUseImplicitTypeHelper.cs index 0642c63d59ccfe666e9ff92b41b0009974a2ac64..e67bf3398416b4786e092074865f46993ff2d60a 100644 --- a/src/Workspaces/SharedUtilitiesAndExtensions/Compiler/CSharp/Utilities/TypeStyle/CSharpUseImplicitTypeHelper.cs +++ b/src/Workspaces/SharedUtilitiesAndExtensions/Compiler/CSharp/Utilities/TypeStyle/CSharpUseImplicitTypeHelper.cs @@ -286,6 +286,16 @@ private static bool IsSafeToSwitchToVarWithoutNeedingSpeculation(DeclarationExpr return false; } + // var cannot be used with target typed new +#if CODE_STYLE + if (expression.IsKind(Formatting.SyntaxKindEx.ImplicitObjectCreationExpression)) +#else + if (expression.IsKind(SyntaxKind.ImplicitObjectCreationExpression)) +#endif + { + return false; + } + // cannot use implicit typing on method group or on dynamic var declaredType = semanticModel.GetTypeInfo(typeName.StripRefIfNeeded(), cancellationToken).Type; if (declaredType != null && declaredType.TypeKind == TypeKind.Dynamic)