@@ -385,30 +385,54 @@ let _ = List.map (sprintf @"%A
385385let _ = (10, 12) ||> sprintf "%A
386386 %O "
387387let _ = sprintf "\n%-8.1e +567" 1.0
388- let _ = sprintf @"%O \n%-5s " "1" "2" """
388+ let _ = sprintf @"%O \n%-5s " "1" "2"
389+ let _ = sprintf "%%"
390+ let _ = sprintf " %*%" 2
391+ let _ = sprintf " %.*%" 2
392+ let _ = sprintf " %*.1%" 2
393+ let _ = sprintf " %*s" 10 "hello"
394+ let _ = sprintf " %*.*%" 2 3
395+ let _ = sprintf " %*.*f" 2 3 4.5
396+ let _ = sprintf " %.*f" 3 4.5
397+ let _ = sprintf " %*.1f" 3 4.5
398+ let _ = sprintf " %6.*f" 3 4.5
399+ let _ = sprintf " %6.*%" 3
400+ """
389401
390402 let file = " /home/user/Test.fsx"
391403 let untyped , typeCheckResults = parseAndTypeCheckFileInProject( file, input)
392404
393405 typeCheckResults.Errors |> shouldEqual [||]
394406 typeCheckResults.GetFormatSpecifierLocations()
395- |> Array.map ( fun range -> range.StartLine, range.StartColumn, range.EndLine, range.EndColumn)
396- |> shouldEqual [|( 2 , 45 , 2 , 46 );
397- ( 3 , 23 , 3 , 24 );
398- ( 4 , 38 , 4 , 39 );
399- ( 5 , 29 , 5 , 30 );
400- ( 6 , 17 , 6 , 19 );
401- ( 7 , 17 , 7 , 21 );
402- ( 8 , 17 , 8 , 22 );
403- ( 9 , 18 , 9 , 21 );
404- ( 10 , 18 , 10 , 20 );
405- ( 12 , 12 , 12 , 14 );
406- ( 15 , 12 , 15 , 14 );
407- ( 16 , 28 , 16 , 29 );
408- ( 18 , 30 , 18 , 31 );
409- ( 19 , 30 , 19 , 31 );
410- ( 20 , 19 , 20 , 24 );
411- ( 21 , 18 , 21 , 19 ); ( 21 , 22 , 21 , 25 )|]
407+ |> Array.map ( fun ( range , numArgs ) -> range.StartLine, range.StartColumn, range.EndLine, range.EndColumn, numArgs)
408+ |> shouldEqual [|( 2 , 45 , 2 , 46 , 1 );
409+ ( 3 , 23 , 3 , 24 , 1 );
410+ ( 4 , 38 , 4 , 39 , 1 );
411+ ( 5 , 29 , 5 , 30 , 1 );
412+ ( 6 , 17 , 6 , 19 , 2 );
413+ ( 7 , 17 , 7 , 21 , 1 );
414+ ( 8 , 17 , 8 , 22 , 1 );
415+ ( 9 , 18 , 9 , 21 , 1 );
416+ ( 10 , 18 , 10 , 20 , 1 );
417+ ( 12 , 12 , 12 , 14 , 1 );
418+ ( 15 , 12 , 15 , 14 , 1 );
419+ ( 16 , 28 , 16 , 29 , 1 );
420+ ( 18 , 30 , 18 , 31 , 1 );
421+ ( 19 , 30 , 19 , 31 , 1 );
422+ ( 20 , 19 , 20 , 24 , 1 );
423+ ( 21 , 18 , 21 , 19 , 1 );
424+ ( 21 , 22 , 21 , 25 , 1 );
425+ ( 22 , 17 , 22 , 18 , 0 );
426+ ( 23 , 18 , 23 , 20 , 1 );
427+ ( 24 , 19 , 24 , 22 , 1 );
428+ ( 25 , 20 , 25 , 24 , 1 );
429+ ( 26 , 21 , 26 , 23 , 2 );
430+ ( 27 , 22 , 27 , 26 , 2 );
431+ ( 28 , 23 , 28 , 27 , 3 );
432+ ( 29 , 24 , 29 , 27 , 2 );
433+ ( 30 , 25 , 30 , 29 , 2 );
434+ ( 31 , 26 , 31 , 30 , 2 );
435+ ( 32 , 27 , 32 , 31 , 1 )|]
412436
413437[<Test>]
414438let ``Printf specifiers for triple - quote strings`` () =
@@ -427,11 +451,12 @@ let _ = List.iter(printfn \"\"\"%-A
427451
428452 typeCheckResults.Errors |> shouldEqual [||]
429453 typeCheckResults.GetFormatSpecifierLocations()
430- |> Array.map ( fun range -> range.StartLine, range.StartColumn, range.EndLine, range.EndColumn)
431- |> shouldEqual [|( 2 , 19 , 2 , 21 );
432- ( 4 , 12 , 4 , 14 );
433- ( 6 , 29 , 6 , 31 );
434- ( 7 , 29 , 7 , 30 ); ( 7 , 33 , 7 , 34 )|]
454+ |> Array.map ( fun ( range , numArgs ) -> range.StartLine, range.StartColumn, range.EndLine, range.EndColumn, numArgs)
455+ |> shouldEqual [|( 2 , 19 , 2 , 21 , 1 );
456+ ( 4 , 12 , 4 , 14 , 1 );
457+ ( 6 , 29 , 6 , 31 , 1 );
458+ ( 7 , 29 , 7 , 30 , 1 );
459+ ( 7 , 33 , 7 , 34 , 1 )|]
435460
436461[<Test>]
437462let ``Printf specifiers for user - defined functions`` () =
@@ -447,24 +472,26 @@ let _ = debug "[LanguageService] Type checking fails for '%s' with content=%A an
447472
448473 typeCheckResults.Errors |> shouldEqual [||]
449474 typeCheckResults.GetFormatSpecifierLocations()
450- |> Array.map ( fun range -> range.StartLine, range.StartColumn, range.EndLine, range.EndColumn)
451- |> shouldEqual [|( 3 , 24 , 3 , 25 );
452- ( 3 , 29 , 3 , 30 );
453- ( 4 , 58 , 4 , 59 ); ( 4 , 75 , 4 , 76 ); ( 4 , 82 , 4 , 83 ); ( 4 , 108 , 4 , 109 )|]
475+ |> Array.map ( fun ( range , numArgs ) -> range.StartLine, range.StartColumn, range.EndLine, range.EndColumn, numArgs)
476+ |> shouldEqual [|( 3 , 24 , 3 , 25 , 1 );
477+ ( 3 , 29 , 3 , 30 , 1 );
478+ ( 4 , 58 , 4 , 59 , 1 );
479+ ( 4 , 75 , 4 , 76 , 1 );
480+ ( 4 , 82 , 4 , 83 , 1 );
481+ ( 4 , 108 , 4 , 109 , 1 )|]
454482
455483[<Test>]
456484let ``should not report format specifiers for illformed format strings`` () =
457485 let input =
458486 """
459487let _ = sprintf "%.7f %7.1A %7.f %--8.1f"
460- let _ = sprintf "%%A "
461488let _ = sprintf "ABCDE"
462489"""
463490
464491 let file = " /home/user/Test.fsx"
465492 let untyped , typeCheckResults = parseAndTypeCheckFileInProject( file, input)
466493 typeCheckResults.GetFormatSpecifierLocations()
467- |> Array.map ( fun range -> range.StartLine, range.StartColumn, range.EndLine, range.EndColumn)
494+ |> Array.map ( fun ( range , numArgs ) -> range.StartLine, range.StartColumn, range.EndLine, range.EndColumn, numArgs )
468495 |> shouldEqual [||]
469496
470497[<Test>]
0 commit comments