classOverlapsArgumentsRule
final class OverlapsArgumentsRule
implements RewriteRule
Implements gram.y's two-argument row requirement for each side of OVERLAPS.
Methods§
public function rewrite(TerminalSequence $sequence): TerminalSequencePreserves valid rows and the first two chosen expressions; supplies NULL for missing arguments.
Parameters
$sequence | TerminalSequence |
Returns
Test cases 2
Calls 2
- function-call
array_reverseline 23 - method-call OverlapsArgumentsRule::pair() line 30
public function elements(TerminalSequence $sequence, int $row): list<int>Finds row elements through expr_list only, excluding expressions nested inside another element.
Parameters
$sequence | TerminalSequence | |
$row | int |
Returns
list<int>Test cases 6
OverlapsArgumentsRuleTest::testElementsExcludesNestedExpressionscovers and callsOverlapsArgumentsRuleTest::testPairLeavesMissingRowsUntouchedcoversOverlapsArgumentsRuleTest::testPairPreservesTwoChosenExpressionsWithoutRewritingcoversOverlapsArgumentsRuleTest::testPairRetainsOnlyTheFirstTwoElementsAndTheirIdentities#arity 1coversOverlapsArgumentsRuleTest::testPairRetainsOnlyTheFirstTwoElementsAndTheirIdentities#arity 3coversOverlapsArgumentsRuleTest::testRewriteCompletesOnlyRowsBelongingToOverlapscovers
public function pair(TerminalSequence $sequence, int $row): TerminalSequenceRebuilds only a row whose argument count violates the source action.
Parameters
$sequence | TerminalSequence | |
$row | int |
Returns
Test cases 6
OverlapsArgumentsRuleTest::testPairLeavesMissingRowsUntouchedcovers and callsOverlapsArgumentsRuleTest::testPairPreservesTwoChosenExpressionsWithoutRewritingcovers and callsOverlapsArgumentsRuleTest::testPairRetainsOnlyTheFirstTwoElementsAndTheirIdentitiescallsOverlapsArgumentsRuleTest::testPairRetainsOnlyTheFirstTwoElementsAndTheirIdentities#arity 1coversOverlapsArgumentsRuleTest::testPairRetainsOnlyTheFirstTwoElementsAndTheirIdentities#arity 3coversOverlapsArgumentsRuleTest::testRewriteCompletesOnlyRowsBelongingToOverlapscovers
Called from 1
Calls 7
- method-call OverlapsArgumentsRule::elements() line 63
- method-call TerminalSequence::range() line 64
- function-call
countline 66 - method-call TerminalSequence::insertedFor() line 69
- function-call
array_pushline 75 - function-call
array_sliceline 77 - method-call TerminalSequence::replace() line 80
Test cases 14§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 8
OverlapsArgumentsRuleTest::testElementsExcludesNestedExpressionscovers and callsOverlapsArgumentsRuleTest::testPairLeavesMissingRowsUntouchedcovers and callsOverlapsArgumentsRuleTest::testPairPreservesTwoChosenExpressionsWithoutRewritingcovers and callsOverlapsArgumentsRuleTest::testPairRetainsOnlyTheFirstTwoElementsAndTheirIdentitiescallsOverlapsArgumentsRuleTest::testPairRetainsOnlyTheFirstTwoElementsAndTheirIdentities#arity 1coversOverlapsArgumentsRuleTest::testPairRetainsOnlyTheFirstTwoElementsAndTheirIdentities#arity 3coversOverlapsArgumentsRuleTest::testRewriteCompletesOnlyRowsBelongingToOverlapscovers and callsOverlapsArgumentsRuleTest::testRewriteIgnoresOverlapsWithoutAnExpressionScopecovers and calls
Other tests reaching this symbol 6
MySqlProviderTestcallsGenerationContextTestcallsRewriteDefinitionsTestcallsPostgreSqlProviderTestcallsSqlGeneratorFactoryTestcallsSqliteProviderTestcalls