diff --git a/src/Workspaces/CSharp/Portable/Extensions/SyntaxTokenExtensions.cs b/src/Workspaces/CSharp/Portable/Extensions/SyntaxTokenExtensions.cs index 277c5f65ee130f2e63b4dac866b73fc07d1515bb..c71bc151deaff930ead1b51db996453134a8f4c9 100644 --- a/src/Workspaces/CSharp/Portable/Extensions/SyntaxTokenExtensions.cs +++ b/src/Workspaces/CSharp/Portable/Extensions/SyntaxTokenExtensions.cs @@ -357,5 +357,11 @@ public static bool IsValidAttributeTarget(this SyntaxToken token) return false; } } + + public static bool IsOpenBraceOrCommaOfObjectInitializer(this SyntaxToken token) + { + return (token.IsKind(SyntaxKind.OpenBraceToken) || token.IsKind(SyntaxKind.CommaToken)) && + token.Parent.IsKind(SyntaxKind.ObjectInitializerExpression); + } } } diff --git a/src/Workspaces/CSharp/Portable/Formatting/Rules/SpacingFormattingRule.cs b/src/Workspaces/CSharp/Portable/Formatting/Rules/SpacingFormattingRule.cs index 7adf2adfddaf6a64946d6f6d366eb7ab44c630a1..e461eff335bfb2c08db3ae7521dcdb1284290be5 100644 --- a/src/Workspaces/CSharp/Portable/Formatting/Rules/SpacingFormattingRule.cs +++ b/src/Workspaces/CSharp/Portable/Formatting/Rules/SpacingFormattingRule.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using Microsoft.CodeAnalysis; -using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Extensions; using Microsoft.CodeAnalysis.CSharp.Syntax; using Microsoft.CodeAnalysis.Formatting.Rules; @@ -141,7 +140,7 @@ public override AdjustSpacesOperation GetAdjustSpacesOperation(SyntaxToken previ } // For spacing Before Square Braces - if (currentKind == SyntaxKind.OpenBracketToken && HasFormattableBracketParent(currentToken)) + if (currentKind == SyntaxKind.OpenBracketToken && HasFormattableBracketParent(currentToken) && !previousToken.IsOpenBraceOrCommaOfObjectInitializer()) { return AdjustSpacesOperationZeroOrOne(optionSet, CSharpFormattingOptions.SpaceBeforeOpenSquareBracket); } diff --git a/src/Workspaces/CSharp/Portable/Formatting/Rules/TokenBasedFormattingRule.cs b/src/Workspaces/CSharp/Portable/Formatting/Rules/TokenBasedFormattingRule.cs index ea1b9aa3d9702c6e6867a24cc2b3f3ee824481d0..bf6ae49bb7ceccca518336cbc8774fa685ae9299 100644 --- a/src/Workspaces/CSharp/Portable/Formatting/Rules/TokenBasedFormattingRule.cs +++ b/src/Workspaces/CSharp/Portable/Formatting/Rules/TokenBasedFormattingRule.cs @@ -229,7 +229,6 @@ public override AdjustSpacesOperation GetAdjustSpacesOperation(SyntaxToken previ } // * ) - // * [ // * ] // * , // * . @@ -237,7 +236,6 @@ public override AdjustSpacesOperation GetAdjustSpacesOperation(SyntaxToken previ switch (currentToken.Kind()) { case SyntaxKind.CloseParenToken: - case SyntaxKind.OpenBracketToken: case SyntaxKind.CloseBracketToken: case SyntaxKind.CommaToken: case SyntaxKind.DotToken: @@ -245,6 +243,12 @@ public override AdjustSpacesOperation GetAdjustSpacesOperation(SyntaxToken previ return CreateAdjustSpacesOperation(0, AdjustSpacesOption.ForceSpacesIfOnSingleLine); } + // * [ + if (currentToken.IsKind(SyntaxKind.OpenBracketToken) && !previousToken.IsOpenBraceOrCommaOfObjectInitializer()) + { + return CreateAdjustSpacesOperation(0, AdjustSpacesOption.ForceSpacesIfOnSingleLine); + } + // case * : // default: //