@@ -385,30 +385,54 @@ let _ = List.map (sprintf @"%A
385
385
let _ = (10, 12) ||> sprintf "%A
386
386
%O "
387
387
let _ = 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
+ """
389
401
390
402
let file = " /home/user/Test.fsx"
391
403
let untyped , typeCheckResults = parseAndTypeCheckFileInProject( file, input)
392
404
393
405
typeCheckResults.Errors |> shouldEqual [||]
394
406
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 )|]
412
436
413
437
[<Test>]
414
438
let ``Printf specifiers for triple - quote strings`` () =
@@ -427,11 +451,12 @@ let _ = List.iter(printfn \"\"\"%-A
427
451
428
452
typeCheckResults.Errors |> shouldEqual [||]
429
453
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 )|]
435
460
436
461
[<Test>]
437
462
let ``Printf specifiers for user - defined functions`` () =
@@ -447,24 +472,26 @@ let _ = debug "[LanguageService] Type checking fails for '%s' with content=%A an
447
472
448
473
typeCheckResults.Errors |> shouldEqual [||]
449
474
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 )|]
454
482
455
483
[<Test>]
456
484
let ``should not report format specifiers for illformed format strings`` () =
457
485
let input =
458
486
"""
459
487
let _ = sprintf "%.7f %7.1A %7.f %--8.1f"
460
- let _ = sprintf "%%A "
461
488
let _ = sprintf "ABCDE"
462
489
"""
463
490
464
491
let file = " /home/user/Test.fsx"
465
492
let untyped , typeCheckResults = parseAndTypeCheckFileInProject( file, input)
466
493
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 )
468
495
|> shouldEqual [||]
469
496
470
497
[<Test>]
0 commit comments