File tree Expand file tree Collapse file tree 2 files changed +21
-6
lines changed Expand file tree Collapse file tree 2 files changed +21
-6
lines changed Original file line number Diff line number Diff line change @@ -173,11 +173,7 @@ module internal TokenClassifications =
173173 match token with
174174 | HASH_ IDENT s
175175 | IDENT s ->
176- if s.Length <= 0 then
177- System.Diagnostics.Debug.Assert( false , " BUG: Received zero length IDENT token." )
178- // This is related to 4783. Recover by treating as lower case identifier.
179- ( FSharpTokenColorKind.Identifier, FSharpTokenCharKind.Identifier, FSharpTokenTriggerClass.None)
180- else if Char.ToUpperInvariant s[ 0 ] = s[ 0 ] then
176+ if s.Length > 0 && Char.ToUpperInvariant s[ 0 ] = s[ 0 ] then
181177 ( FSharpTokenColorKind.UpperIdentifier, FSharpTokenCharKind.Identifier, FSharpTokenTriggerClass.None)
182178 else
183179 ( FSharpTokenColorKind.Identifier, FSharpTokenCharKind.Identifier, FSharpTokenTriggerClass.None)
Original file line number Diff line number Diff line change @@ -9,7 +9,7 @@ module FSharp.Compiler.Service.Tests.TokenizerTests
99#endif
1010
1111open FSharp.Compiler .Tokenization
12-
12+ open FsUnit
1313open NUnit.Framework
1414
1515let sourceTok = FSharpSourceTokenizer([], Some " C:\\ test.fsx" , None)
@@ -214,3 +214,22 @@ let ``Tokenizer test - single-line nested string interpolation``() =
214214 printfn " expected = %A " expected
215215 Assert.Fail( sprintf " actual and expected did not match,actual =\n %A \n expected=\n %A \n " actual expected)
216216
217+
218+ [<Test>]
219+ let ``Unfinished idents`` () =
220+ let tokenizedLines =
221+ tokenizeLines
222+ [| " `" ; " ``" ; " ``a" ; " ``a`" ; " ```" |]
223+
224+ let actual =
225+ [ for lineTokens in tokenizedLines |> List.map snd do
226+ [ for str, info in lineTokens -> info.TokenName, str ] ]
227+
228+ let expected =
229+ [[ " IDENT" , " `" ]
230+ [ " IDENT" , " ``" ]
231+ [ " IDENT" , " ``a" ]
232+ [ " IDENT" , " ``a`" ]
233+ [ " IDENT" , " ```" ]]
234+
235+ actual |> shouldEqual expected
You can’t perform that action at this time.
0 commit comments