Brace completion exception in Code Analysis (Version: 18.3.0 Insiders [11114.75.main])
- Dominant language
- C#
- Stars
- 20.7k
- Forks
- 4.3k
- PR merge metrics
- PR metrics pending
Description
Hit an exception from Microsoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.Formatting.Rules.IndentBlockOperation.IndentBlockOperation when typing something stupid.
Type [ here (after foreach on line 21):
<!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:0;
mso-generic-font-family:roman;
mso-font-pitch:variable;
mso-font-signature:-536869121 1107305727 33554432 0 415 0;}
@font-face
{font-family:Aptos;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:536871559 3 0 0 415 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin:0in;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Aptos",sans-serif;
mso-fareast-font-family:Aptos;
mso-fareast-theme-font:minor-latin;
mso-bidi-font-family:Aptos;
mso-ligatures:standardcontextual;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
font-size:10.0pt;
mso-ansi-font-size:10.0pt;
mso-bidi-font-size:10.0pt;
mso-font-kerning:0pt;
mso-ligatures:none;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;
mso-header-margin:.5in;
mso-footer-margin:.5in;
mso-paper-source:0;}
div.WordSection1
{page:WordSection1;}
-->
Get:
| Name | Value | Type
-- | -- | -- | --
◢ | $exception | {"Unexpected false - file IndentBlockOperation.cs line 38"} | System.InvalidOperationException
| ▶ Data | {System.Collections.ListDictionaryInternal} | System.Collections.IDictionary {System.Collections.ListDictionaryInternal}
| HResult | -2146233079 | int
| HelpLink | null | string
| IPForWatsonBuckets | 0x00007ffdc01e46d5 | System.UIntPtr
| ▶ InnerException | null | System.Exception
| IsTransient | false | bool
| Message | "Unexpected false - file IndentBlockOperation.cs line 38" | string
| RemoteStackTrace | null | string
| Source | "Microsoft.CodeAnalysis.Workspaces" | string
| StackTrace | " at Microsoft.CodeAnalysis.Contract.Fail(String message, Int32 lineNumber, String filePath) in /_/src/Dependencies/Contracts/Contract.cs:line 161" | string
| ▶ TargetSite | {Void Fail(System.String, Int32, System.String)} | System.Reflection.MethodBase {System.Reflection.RuntimeMethodInfo}
| WatsonBuckets | null | object
| _HResult | -2146233079 | int
| _className | null | string
| ▶ _data | {System.Collections.ListDictionaryInternal} | System.Collections.IDictionary {System.Collections.ListDictionaryInternal}
| _dynamicMethods | null | object
| _exceptionMethod | null | System.Reflection.MethodBase
| _exceptionMethodString | null | string
| _helpURL | null | string
| ▶ _innerException | null | System.Exception
| _ipForWatsonBuckets | 0x00007ffdc01e46d5 | System.UIntPtr
| _message | "Unexpected false - file IndentBlockOperation.cs line 38" | string
| _remoteStackIndex | 0 | int
| _remoteStackTraceString | null | string
| ▶ _safeSerializationManager | {System.Runtime.Serialization.SafeSerializationManager} | System.Runtime.Serialization.SafeSerializationManager
| _source | "Microsoft.CodeAnalysis.Workspaces" | string
| ▶ _stackTrace | {sbyte[48]} | object {sbyte[]}
| _stackTraceString | null | string
| _watsonBuckets | null | object
| _xcode | -532462766 | int
| _xptrs | 0x0000000000000000 | System.IntPtr
> Microsoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.Formatting.Rules.IndentBlockOperation.IndentBlockOperation(Microsoft.CodeAnalysis.SyntaxToken
baseToken, Microsoft.CodeAnalysis.SyntaxToken startToken,
Microsoft.CodeAnalysis.SyntaxToken endToken,
Microsoft.CodeAnalysis.Text.TextSpan textSpan, int indentationDelta,
Microsoft.CodeAnalysis.Formatting.Rules.IndentBlockOption option) Line 53 C#
Microsoft.CodeAnalysis.CSharp.Workspaces.dll!Microsoft.CodeAnalysis.CSharp.Formatting.IndentBlockFormattingRule.AddBracketIndentationOperation(System.Collections.Generic.List<Microsoft.CodeAnalysis.Formatting.Rules.IndentBlockOperation>
list, Microsoft.CodeAnalysis.SyntaxNode node) Unknown
Microsoft.CodeAnalysis.CSharp.Workspaces.dll!Microsoft.CodeAnalysis.CSharp.Formatting.IndentBlockFormattingRule.AddIndentBlockOperations(System.Collections.Generic.List<Microsoft.CodeAnalysis.Formatting.Rules.IndentBlockOperation>
list, Microsoft.CodeAnalysis.SyntaxNode node,
Microsoft.CodeAnalysis.Formatting.Rules.NextIndentBlockOperationAction
nextOperation)
Unknown
Microsoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.Formatting.Rules.NextIndentBlockOperationAction.Invoke()
Line
30
C#
Microsoft.CodeAnalysis.CSharp.Workspaces.dll!Microsoft.CodeAnalysis.CSharp.Formatting.IndentUserSettingsFormattingRule.AddIndentBlockOperations(System.Collections.Generic.List<Microsoft.CodeAnalysis.Formatting.Rules.IndentBlockOperation>
list, Microsoft.CodeAnalysis.SyntaxNode node,
Microsoft.CodeAnalysis.Formatting.Rules.NextIndentBlockOperationAction
nextOperation)
Unknown
Microsoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.Formatting.Rules.NextIndentBlockOperationAction.Invoke()
Line
30
C#
Microsoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.Formatting.ChainedFormattingRules.AddIndentBlockOperations(System.Collections.Generic.List<Microsoft.CodeAnalysis.Formatting.Rules.IndentBlockOperation>
list, Microsoft.CodeAnalysis.SyntaxNode currentNode) Line 61 C#
Microsoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.Formatting.AbstractFormatEngine.AddOperations<Microsoft.CodeAnalysis.Formatting.Rules.IndentBlockOperation>(Microsoft.CodeAnalysis.Collections.SegmentedList<Microsoft.CodeAnalysis.Formatting.Rules.IndentBlockOperation>
operations,
System.Collections.Generic.List<Microsoft.CodeAnalysis.Formatting.Rules.IndentBlockOperation>
scratch, Microsoft.CodeAnalysis.SyntaxNode node,
System.Action<System.Collections.Generic.List<Microsoft.CodeAnalysis.Formatting.Rules.IndentBlockOperation>,
Microsoft.CodeAnalysis.SyntaxNode> addOperations) Line
193
C#
Microsoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.Formatting.AbstractFormatEngine.CreateNodeOperations(System.Threading.CancellationToken
cancellationToken) Line 175 C#
Microsoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.Formatting.AbstractFormatEngine.Format(System.Threading.CancellationToken
cancellationToken) Line 118 C#
Microsoft.CodeAnalysis.CSharp.Workspaces.dll!Microsoft.CodeAnalysis.CSharp.Formatting.CSharpSyntaxFormatting.Format(Microsoft.CodeAnalysis.SyntaxNode
node, Microsoft.CodeAnalysis.Formatting.SyntaxFormattingOptions options,
System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.Formatting.Rules.AbstractFormattingRule>
formattingRules, Microsoft.CodeAnalysis.SyntaxToken startToken,
Microsoft.CodeAnalysis.SyntaxToken endToken, System.Threading.CancellationToken
cancellationToken) Unknown
Microsoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.Formatting.AbstractSyntaxFormatting.GetFormattingResult(Microsoft.CodeAnalysis.SyntaxNode
node,
System.Collections.Generic.IEnumerable<Microsoft.CodeAnalysis.Text.TextSpan>
spans, Microsoft.CodeAnalysis.Formatting.SyntaxFormattingOptions options,
System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.Formatting.Rules.AbstractFormattingRule>
rules, System.Threading.CancellationToken cancellationToken) Line
62
C#
Microsoft.CodeAnalysis.CSharp.Features.dll!Microsoft.CodeAnalysis.CSharp.BraceCompletion.AbstractCurlyBraceOrBracketCompletionService.FormatTrackingSpan(Microsoft.CodeAnalysis.ParsedDocument
document, int openingPoint, int closingPoint, System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.Formatting.Rules.AbstractFormattingRule>
braceFormattingIndentationRules,
Microsoft.CodeAnalysis.Indentation.IndentationOptions options,
System.Threading.CancellationToken cancellationToken)
Unknown
Microsoft.CodeAnalysis.CSharp.Features.dll!Microsoft.CodeAnalysis.CSharp.BraceCompletion.AbstractCurlyBraceOrBracketCompletionService.GetTextChangesAfterCompletion(Microsoft.CodeAnalysis.BraceCompletion.BraceCompletionContext
context, Microsoft.CodeAnalysis.Indentation.IndentationOptions options,
System.Threading.CancellationToken
cancellationToken)
Unknown
Microsoft.CodeAnalysis.EditorFeatures.dll!Microsoft.CodeAnalysis.AutomaticCompletion.BraceCompletionSessionProvider.BraceCompletionSession.TryStartAsync(System.Threading.CancellationToken
cancellationToken) Unknown
Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.ExecuteJob<bool>(System.Func<System.Threading.Tasks.Task>
asyncMethod, Microsoft.VisualStudio.Threading.JoinableTask
job) Unknown
Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync<bool>(System.Func<System.Threading.Tasks.Task<bool>>
asyncMethod, bool synchronouslyBlocking, string parentToken,
Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions
creationOptions) Unknown
Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.Run<bool>(System.Func<System.Threading.Tasks.Task<bool>>
asyncMethod, Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions
creationOptions)
Unknown
Microsoft.CodeAnalysis.EditorFeatures.dll!Microsoft.CodeAnalysis.AutomaticCompletion.BraceCompletionSessionProvider.BraceCompletionSession.Start()
Unknown
Microsoft.VisualStudio.Platform.VSEditor.dll!Microsoft.VisualStudio.Text.BraceCompletion.Implementation.BraceCompletionStack.PushSession.AnonymousMethod__1()
Line
78
C#
Contributor guide
Research direction
Reproduce the exception by typing [ after foreach on line 21 in the reported C# scenario. Start by examining Microsoft.CodeAnalysis.Workspaces.dll and Microsoft.CodeAnalysis.Formatting.Rules.IndentBlockOperation, then identify the failing formatting path. Done means the same input no longer throws an exception.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- devtools
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100