Skip to content

Commit 2c2512d

Browse files
committed
Fix lineSpecialForm
lineSpecialForm now correctly handles omission of the color argument as well as line-continuation behaviour. This fixes part 1 of #4875
1 parent b8a45e4 commit 2c2512d

File tree

2 files changed

+8
-5
lines changed

2 files changed

+8
-5
lines changed

Rubberduck.Parsing/Grammar/VBAParser.g4

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -571,10 +571,13 @@ withStmt :
571571
;
572572

573573
// Special forms with special syntax, only available in VBA reports or VB6 forms and pictureboxes.
574-
lineSpecialForm : expression whiteSpace ((STEP whiteSpace?)? tuple whiteSpace?)?
575-
MINUS (STEP whiteSpace?)? tuple whiteSpace?
576-
(COMMA whiteSpace? expression)? whiteSpace?
577-
(COMMA whiteSpace? lineSpecialFormOption)?;
574+
// lineSpecialFormOption is required if expression is missing
575+
lineSpecialForm : expression whiteSpace ((STEP whiteSpace?)? tuple)?
576+
whiteSpace? MINUS whiteSpace?
577+
(STEP whiteSpace?)? tuple whiteSpace?
578+
(COMMA whiteSpace? expression? whiteSpace?)?
579+
(COMMA whiteSpace? lineSpecialFormOption)?
580+
;
578581
circleSpecialForm : (expression whiteSpace? DOT whiteSpace?)? CIRCLE whiteSpace (STEP whiteSpace?)? tuple (whiteSpace? COMMA whiteSpace? expression)+;
579582
scaleSpecialForm : (expression whiteSpace? DOT whiteSpace?)? SCALE whiteSpace tuple whiteSpace? MINUS whiteSpace? tuple;
580583
pSetSpecialForm : (expression whiteSpace? DOT whiteSpace?)? PSET (whiteSpace STEP)? whiteSpace? tuple whiteSpace? (COMMA whiteSpace? expression)?;

RubberduckTests/Inspections/ThunderCode/ThunderCodeInspectionTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public class ThunderCodeInspectionTests
2020
[TestCase(0, @"Public Sub foo()
2121
End Sub")]
2222
[TestCase(0, @"Public Sub foo bar()
23-
End Sub")]
23+
End Sub")] // Correctly provokes a parser error
2424
public void NonBreakingSpaceIdentifier_ReturnsResult(int expectedCount, string inputCode)
2525
{
2626
var func = new Func<RubberduckParserState, IInspection>(state =>

0 commit comments

Comments
 (0)