@@ -3481,7 +3481,7 @@ End Sub
3481
3481
3482
3482
3483
3483
[ Test ]
3484
- public void LeftOutOptionalArgumentsAreCountedAsMissingArguments ( )
3484
+ public void LeftOutOptionalArgumentsAreCountedAsMissingArguments_Mid_Function ( )
3485
3485
{
3486
3486
const string code = @"
3487
3487
Public Sub Test()
@@ -3498,7 +3498,100 @@ End Function
3498
3498
AssertTree ( parseResult . Item1 , parseResult . Item2 , "//argumentList" , matches => matches . Count == 1 ) ;
3499
3499
}
3500
3500
3501
-
3501
+
3502
+ [ Test ]
3503
+ public void LeftOutOptionalArgumentsAreCountedAsMissingArguments_Mid_Procedure ( )
3504
+ {
3505
+ const string code = @"
3506
+ Public Sub Test()
3507
+ Dim x As Long
3508
+ Foo 1, , 5
3509
+ End Sub
3510
+
3511
+ Public Sub Foo(a, Optional b, Optional c)
3512
+ End Sub
3513
+ " ;
3514
+ var parseResult = Parse ( code ) ;
3515
+ AssertTree ( parseResult . Item1 , parseResult . Item2 , "//missingArgument" , matches => matches . Count == 1 ) ;
3516
+ AssertTree ( parseResult . Item1 , parseResult . Item2 , "//argumentList" , matches => matches . Count == 1 ) ;
3517
+ }
3518
+
3519
+
3520
+ [ Test ]
3521
+ public void LeftOutOptionalArgumentsAreCountedAsMissingArguments_MultipleAtStart_Function ( )
3522
+ {
3523
+ const string code = @"
3524
+ Public Sub Test()
3525
+ Dim x As Long
3526
+ x = Foo(, , 5)
3527
+ End Sub
3528
+
3529
+ Public Function Foo(Optional a, Optional b, Optional c) As Long
3530
+ Foo = 42
3531
+ End Function
3532
+ " ;
3533
+ var parseResult = Parse ( code ) ;
3534
+ AssertTree ( parseResult . Item1 , parseResult . Item2 , "//missingArgument" , matches => matches . Count == 2 ) ;
3535
+ AssertTree ( parseResult . Item1 , parseResult . Item2 , "//argumentList" , matches => matches . Count == 1 ) ;
3536
+ }
3537
+
3538
+
3539
+ [ Test ]
3540
+ public void LeftOutOptionalArgumentsAreCountedAsMissingArguments_SingleAtStart_Function ( )
3541
+ {
3542
+ const string code = @"
3543
+ Public Sub Test()
3544
+ Dim x As Long
3545
+ x = Foo(, 1, 5)
3546
+ End Sub
3547
+
3548
+ Public Function Foo(Optional a, Optional b, Optional c) As Long
3549
+ Foo = 42
3550
+ End Function
3551
+ " ;
3552
+ var parseResult = Parse ( code ) ;
3553
+ AssertTree ( parseResult . Item1 , parseResult . Item2 , "//missingArgument" , matches => matches . Count == 1 ) ;
3554
+ AssertTree ( parseResult . Item1 , parseResult . Item2 , "//argumentList" , matches => matches . Count == 1 ) ;
3555
+ }
3556
+
3557
+
3558
+ [ Test ]
3559
+ public void LeftOutOptionalArgumentsAreCountedAsMissingArguments_AtStart_Procedure ( )
3560
+ {
3561
+ const string code = @"
3562
+ Public Sub Test()
3563
+ Dim x As Long
3564
+ Foo , , 5
3565
+ End Sub
3566
+
3567
+ Public Sub Foo(Optional a, Optional b, Optional c)
3568
+ End Sub
3569
+ " ;
3570
+ var parseResult = Parse ( code ) ;
3571
+ AssertTree ( parseResult . Item1 , parseResult . Item2 , "//missingArgument" , matches => matches . Count == 2 ) ;
3572
+ AssertTree ( parseResult . Item1 , parseResult . Item2 , "//argumentList" , matches => matches . Count == 1 ) ;
3573
+ }
3574
+
3575
+
3576
+ [ Test ]
3577
+ //See issue #5440 at https://github.com/rubberduck-vba/Rubberduck/issues/5440
3578
+ public void LeftOutOptionalArgumentsAreCountedAsMissingArguments_OneAtStart_Procedure ( )
3579
+ {
3580
+ const string code = @"
3581
+ Public Sub Test()
3582
+ Dim x As Long
3583
+ Foo , 1, 5
3584
+ End Sub
3585
+
3586
+ Public Sub Foo(Optional a, Optional b, Optional c)
3587
+ End Sub
3588
+ " ;
3589
+ var parseResult = Parse ( code ) ;
3590
+ AssertTree ( parseResult . Item1 , parseResult . Item2 , "//missingArgument" , matches => matches . Count == 1 ) ;
3591
+ AssertTree ( parseResult . Item1 , parseResult . Item2 , "//argumentList" , matches => matches . Count == 1 ) ;
3592
+ }
3593
+
3594
+
3502
3595
[ Test ]
3503
3596
public void TestReDimWithLineContinuation ( )
3504
3597
{
0 commit comments