{"action":"created","issue":{"url":"https://api.github.com/repos/dotnet/roslyn/issues/6341","labels_url":"https://api.github.com/repos/dotnet/roslyn/issues/6341/labels{/name}","comments_url":"https://api.github.com/repos/dotnet/roslyn/issues/6341/comments","events_url":"https://api.github.com/repos/dotnet/roslyn/issues/6341/events","html_url":"https://github.com/dotnet/roslyn/issues/6341","id":113459999,"number":6341,"title":"[Flaky Test] DontRemoveLineContinuationInStringInterpolation3 test asserts","user":{"login":"davkean","id":1103906,"avatar_url":"https://avatars.githubusercontent.com/u/1103906?v=3","gravatar_id":"","url":"https://api.github.com/users/davkean","html_url":"https://github.com/davkean","followers_url":"https://api.github.com/users/davkean/followers","following_url":"https://api.github.com/users/davkean/following{/other_user}","gists_url":"https://api.github.com/users/davkean/gists{/gist_id}","starred_url":"https://api.github.com/users/davkean/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/davkean/subscriptions","organizations_url":"https://api.github.com/users/davkean/orgs","repos_url":"https://api.github.com/users/davkean/repos","events_url":"https://api.github.com/users/davkean/events{/privacy}","received_events_url":"https://api.github.com/users/davkean/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/dotnet/roslyn/labels/Area-Compilers","name":"Area-Compilers","color":"5319e7"},{"url":"https://api.github.com/repos/dotnet/roslyn/labels/Flaky","name":"Flaky","color":"e11d21"},{"url":"https://api.github.com/repos/dotnet/roslyn/labels/Test","name":"Test","color":"fc2929"}],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/dotnet/roslyn/milestones/4","html_url":"https://github.com/dotnet/roslyn/milestones/1.2","labels_url":"https://api.github.com/repos/dotnet/roslyn/milestones/4/labels","id":937402,"number":4,"title":"1.2","description":"This is our 1.2 Milestone.\r\n\r\n<!---\r\n@huboard:{\"order\":2.0}\r\n-->\r\n","creator":{"login":"jaredpar","id":146967,"avatar_url":"https://avatars.githubusercontent.com/u/146967?v=3","gravatar_id":"","url":"https://api.github.com/users/jaredpar","html_url":"https://github.com/jaredpar","followers_url":"https://api.github.com/users/jaredpar/followers","following_url":"https://api.github.com/users/jaredpar/following{/other_user}","gists_url":"https://api.github.com/users/jaredpar/gists{/gist_id}","starred_url":"https://api.github.com/users/jaredpar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jaredpar/subscriptions","organizations_url":"https://api.github.com/users/jaredpar/orgs","repos_url":"https://api.github.com/users/jaredpar/repos","events_url":"https://api.github.com/users/jaredpar/events{/privacy}","received_events_url":"https://api.github.com/users/jaredpar/received_events","type":"User","site_admin":false},"open_issues":640,"closed_issues":49,"state":"open","created_at":"2015-01-15T20:48:55Z","updated_at":"2015-11-06T18:18:17Z","due_on":null,"closed_at":null},"comments":3,"created_at":"2015-10-26T21:57:41Z","updated_at":"2015-11-06T19:13:58Z","closed_at":null,"body":"As part of the test cleanup, we're disabling tests that are flaky based on Azure runs that we're doing, this test is one of them.\r\n\r\nThe test is not yet disabled, when it is, the associated commit will be linked.\r\n\r\n__Dump:__\r\n\r\n`\\\\mlangfs1\\public\\davkean\\6341.dmp`\r\n\r\n__Code:__\r\n``` VB\r\n\r\n' Another } may follow the close brace of an interpolation if the interpolation lacked a format clause.\r\n' This is because the normal escaping rules only apply when parsing the format string.\r\nDebug.Assert(Not CanGet(1) OrElse Peek(offset + 1) <> c OrElse IsRightCurlyBracket(c), \"Escape sequence not detected.\")\r\n```\r\n__Stack:__\r\n\r\n```\r\n \tMicrosoft.CodeAnalysis.VisualBasic.dll!Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner.ScanInterpolatedStringPunctuation() Line 34\tBasic\r\n \tMicrosoft.CodeAnalysis.VisualBasic.dll!Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner.GetScannerToken(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ScannerState state) Line 622\tBasic\r\n \tMicrosoft.CodeAnalysis.VisualBasic.dll!Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner.GetCurrentToken() Line 228\tBasic\r\n \tMicrosoft.CodeAnalysis.VisualBasic.dll!Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser.get_CurrentToken() Line 5939\tBasic\r\n \tMicrosoft.CodeAnalysis.VisualBasic.dll!Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser.ParseInterpolatedStringExpression() Line 40\tBasic\r\n \tMicrosoft.CodeAnalysis.VisualBasic.dll!Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser.ParseTerm(Boolean BailIfFirstTokenRejected, Boolean RedimOrNewParent) Line 411\tBasic\r\n \tMicrosoft.CodeAnalysis.VisualBasic.dll!Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser.ParseExpressionCore(Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorPrecedence pendingPrecedence, Boolean bailIfFirstTokenRejected) Line 109\tBasic\r\n \tMicrosoft.CodeAnalysis.VisualBasic.dll!Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser.ParseFieldOrPropertyAsClauseAndInitializer(Boolean isProperty, Boolean allowAsNewWith, Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.AsClauseSyntax optionalAsClause, Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.EqualsValueSyntax optionalInitializer) Line 2311\tBasic\r\n \tMicrosoft.CodeAnalysis.VisualBasic.dll!Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser.ParseVariableDeclaration(Boolean allowAsNewWith) Line 2193\tBasic\r\n \tMicrosoft.CodeAnalysis.VisualBasic.dll!Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser.ParseVarDeclStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxList(Of Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.AttributeListSyntax) attributes, Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxList(Of Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.KeywordSyntax) modifiers) Line 2111\tBasic\r\n \tMicrosoft.CodeAnalysis.VisualBasic.dll!Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser.ParseSpecifierDeclaration(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxList(Of Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.AttributeListSyntax) attributes, Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxList(Of Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.KeywordSyntax) modifiers) Line 1331\tBasic\r\n \tMicrosoft.CodeAnalysis.VisualBasic.dll!Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser.ParseSpecifierDeclaration(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxList(Of Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.AttributeListSyntax) attributes) Line 1294\tBasic\r\n \tMicrosoft.CodeAnalysis.VisualBasic.dll!Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser.ParseSpecifierDeclaration() Line 1289\tBasic\r\n \tMicrosoft.CodeAnalysis.VisualBasic.dll!Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser.ParseDeclarationStatementInternal() Line 723\tBasic\r\n \tMicrosoft.CodeAnalysis.VisualBasic.dll!Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser.ParseDeclarationStatement() Line 644\tBasic\r\n \tMicrosoft.CodeAnalysis.VisualBasic.dll!Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.DeclarationContext.Parse() Line 19\tBasic\r\n \tMicrosoft.CodeAnalysis.VisualBasic.dll!Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser.ParseCompilationUnitCore() Line 488\tBasic\r\n \tMicrosoft.CodeAnalysis.VisualBasic.dll!Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser.ParseWithStackGuard(Of Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CompilationUnitSyntax)(System.Func(Of Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CompilationUnitSyntax) parseFunc, System.Func(Of Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CompilationUnitSyntax) defaultFunc) Line 512\tBasic\r\n \tMicrosoft.CodeAnalysis.VisualBasic.dll!Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser.ParseCompilationUnit() Line 437\tBasic\r\n \tMicrosoft.CodeAnalysis.VisualBasic.dll!Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxTree.ParseText(Microsoft.CodeAnalysis.Text.SourceText text, Boolean isMyTemplate, Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions options, String path, System.Threading.CancellationToken cancellationToken) Line 230\tBasic\r\n \tMicrosoft.CodeAnalysis.VisualBasic.dll!Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxTree.ParseText(Microsoft.CodeAnalysis.Text.SourceText text, Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions options, String path, System.Threading.CancellationToken cancellationToken) Line 209\tBasic\r\n \tMicrosoft.CodeAnalysis.VisualBasic.dll!Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ParseSyntaxTree(Microsoft.CodeAnalysis.Text.SourceText text, Microsoft.CodeAnalysis.ParseOptions options, String path, System.Threading.CancellationToken cancellationToken) Line 57\tBasic\r\n \tMicrosoft.CodeAnalysis.VisualBasic.Workspaces.dll!Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxTreeFactoryServiceFactory.VisualBasicSyntaxTreeFactoryService.ParseSyntaxTree(String fileName, Microsoft.CodeAnalysis.ParseOptions options, Microsoft.CodeAnalysis.Text.SourceText text, System.Threading.CancellationToken cancellationToken) Line 36\tBasic\r\n \tMicrosoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.DocumentState.FullyParseTreeAsync(Roslyn.Utilities.ValueSource<Microsoft.CodeAnalysis.TextAndVersion> newTextSource, Microsoft.CodeAnalysis.ProjectId cacheKey, string filePath, Microsoft.CodeAnalysis.ParseOptions options, Microsoft.CodeAnalysis.Host.HostLanguageServices languageServices, Microsoft.CodeAnalysis.SolutionServices solutionServices, Microsoft.CodeAnalysis.PreservationMode mode, System.Threading.CancellationToken cancellationToken) Line 125\tC#\r\n \tMicrosoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.DocumentState.CreateLazyFullyParsedTree.AnonymousMethod__0(System.Threading.CancellationToken c) Line 104\tC#\r\n \tMicrosoft.CodeAnalysis.Workspaces.dll!Roslyn.Utilities.AsyncLazy<Microsoft.CodeAnalysis.TreeAndVersion>.StartAsynchronousComputation(Roslyn.Utilities.AsyncLazy<Microsoft.CodeAnalysis.TreeAndVersion>.AsynchronousComputationToStart computationToStart, Roslyn.Utilities.AsyncLazy<Microsoft.CodeAnalysis.TreeAndVersion>.Request requestToCompleteSynchronously, System.Threading.CancellationToken callerCancellationToken) Line 378\tC#\r\n \tMicrosoft.CodeAnalysis.Workspaces.dll!Roslyn.Utilities.AsyncLazy<Microsoft.CodeAnalysis.TreeAndVersion>.GetValueAsync(System.Threading.CancellationToken cancellationToken) Line 331\tC#\r\n \tMicrosoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.DocumentState.GetSyntaxTreeAsync(System.Threading.CancellationToken cancellationToken) Line 536\tC#\r\n \tMicrosoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.Document.GetSyntaxTreeAsync(System.Threading.CancellationToken cancellationToken) Line 200\tC#\r\n \tMicrosoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.Document.GetSyntaxRootAsync(System.Threading.CancellationToken cancellationToken) Line 225\tC#\r\n \tMicrosoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.CodeCleanup.AbstractCodeCleanerService.CleanupAsync(Microsoft.CodeAnalysis.Document document, System.Collections.Generic.IEnumerable<Microsoft.CodeAnalysis.Text.TextSpan> spans, System.Collections.Generic.IEnumerable<Microsoft.CodeAnalysis.CodeCleanup.Providers.ICodeCleanupProvider> providers, System.Threading.CancellationToken cancellationToken) Line 28\tC#\r\n \tMicrosoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.CodeCleanup.CodeCleaner.CleanupAsync(Microsoft.CodeAnalysis.Document document, System.Collections.Generic.IEnumerable<Microsoft.CodeAnalysis.Text.TextSpan> spans, System.Collections.Generic.IEnumerable<Microsoft.CodeAnalysis.CodeCleanup.Providers.ICodeCleanupProvider> providers, System.Threading.CancellationToken cancellationToken) Line 80\tC#\r\n \tMicrosoft.CodeAnalysis.Workspaces.dll!Microsoft.CodeAnalysis.CodeCleanup.CodeCleaner.CleanupAsync(Microsoft.CodeAnalysis.Document document, Microsoft.CodeAnalysis.Text.TextSpan span, System.Collections.Generic.IEnumerable<Microsoft.CodeAnalysis.CodeCleanup.Providers.ICodeCleanupProvider> providers, System.Threading.CancellationToken cancellationToken) Line 70\tC#\r\n \tRoslyn.Services.UnitTests.dll!Microsoft.CodeAnalysis.UnitTests.CodeCleanup.RemoveUnnecessaryLineContinuationTests.Verify(string codeWithMarker, string expectedResult, Microsoft.CodeAnalysis.VisualBasic.LanguageVersion langVersion) Line 1464\tC#\r\n>\tRoslyn.Services.UnitTests.dll!Microsoft.CodeAnalysis.UnitTests.CodeCleanup.RemoveUnnecessaryLineContinuationTests.DontRemoveLineContinuationInStringInterpolation3() Line 1377\tC#\r\n\r\n```"},"comment":{"url":"https://api.github.com/repos/dotnet/roslyn/issues/comments/154504682","html_url":"https://github.com/dotnet/roslyn/issues/6341#issuecomment-154504682","issue_url":"https://api.github.com/repos/dotnet/roslyn/issues/6341","id":154504682,"user":{"login":"AdamSpeight2008","id":900107,"avatar_url":"https://avatars.githubusercontent.com/u/900107?v=3","gravatar_id":"","url":"https://api.github.com/users/AdamSpeight2008","html_url":"https://github.com/AdamSpeight2008","followers_url":"https://api.github.com/users/AdamSpeight2008/followers","following_url":"https://api.github.com/users/AdamSpeight2008/following{/other_user}","gists_url":"https://api.github.com/users/AdamSpeight2008/gists{/gist_id}","starred_url":"https://api.github.com/users/AdamSpeight2008/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AdamSpeight2008/subscriptions","organizations_url":"https://api.github.com/users/AdamSpeight2008/orgs","repos_url":"https://api.github.com/users/AdamSpeight2008/repos","events_url":"https://api.github.com/users/AdamSpeight2008/events{/privacy}","received_events_url":"https://api.github.com/users/AdamSpeight2008/received_events","type":"User","site_admin":false},"created_at":"2015-11-06T19:13:58Z","updated_at":"2015-11-06T19:13:58Z","body":"I know a little about `String.Format` and its parsing rules, as I implement an analyser to do some compile-time checks on them. I reimplement a new parser for `string.format`, to report multiple issues, not just the first exception.  *(Currently trying to find time to update it VS2015)*\r\n\r\n**General String.Format Text Structure**\r\n```\r\n[  Format String                                                                ]\r\n [ Text ][EscOB][ ArgHole                                                       ]\r\n                 [OB][ArgIndex    ] [ ArgAlign?          ] [ArgFormat?      ][CB]\r\n                      [Digits][WS]   [,][WS][-?][Digits]   [ArgText][EscOB]\r\n```\r\n\r\n\r\nThe escaping of braces within the **ArgFormat** Clause, `{ obj, -4 : x3}}}` => `0ff}}` is the same as itf you were escaping a brace within the **Text** part of a Format string. `{{{0,-4,x3}}}` The closing brace has to a be distinct singular brace. `}` to close the **ArgHole**\r\n\r\n---------\r\n@Pilchie  Do you have a line number? So I could have a look at it."}}