classSliceStep
final class SliceStep
One thing that has to happen, on the way to the call, for its argument to have the value it has.
A step is the node that does it: an assignment, a global or static declaration, an unset, the start of one pass through a foreach, or a closure parameter taking whatever a caller passes. A step can instead hold alternatives — whole runs of steps, any one of which may have happened — when the paths had to be gathered up to keep their number bounded. Entering a closure is a step as well: the names it lists are the ones the closure defines for itself, as parameters or not at all, rather than taking them from the body it is written in.
Properties§
public Node|null $nodepublic list<list<SliceStep>> $alternatives = []public list<string> $names = []Methods§
public function __construct(
public Node|null $node,
public list<list<SliceStep>> $alternatives = [],
public list<string> $names = [],
)Parameters
$node | Node|null | What happens, or null for a step made of alternatives |
$alternatives | list<list<SliceStep>> | The runs any one of which happened, each in the order it runs |
$names | list<string> | For entering a closure, the names the closure does not take from outside |
public static function either(list<list<SliceStep>> $alternatives): selfA step that is one of several runs of steps.
Parameters
$alternatives | list<list<SliceStep>> |
Returns
selfTest cases 8
SliceStepTest::testEitherHoldsRunsAnyOneOfWhichHappenedcallsSliceStepTest::testSignatureTellsTwoGatheredStepsApartcallsSliceExecutorTest::providerAffordableRunscallsSliceExecutorTest::providerSizecallsSliceExecutorTest::testAbandonLeavesOpenEveryNameTheStepsLeftWritecallsSliceExecutorTest::testApplyRunsEveryAlternativeFromItsOwnCopycallsSliceExecutorTest::testWrittenByAStepOfAlternativesNamesWhatEveryAlternativeWritescallsSliceExecutorTest::testWrittenByAStepWithNoAlternativesNamesNothingcalls
Called from 1
Calls 1
- new
selfline 44
public function signature(): stringWhat tells this step apart from another, for recognising the same path reached twice.
Returns
stringTest cases 1
Called from 1
Calls 1
- function-call
spl_object_idline 52
Test cases 77§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 4
Other tests reaching this symbol 73
CallEvaluatorTestcallsCalleeReturnsTestcallsCallersTestcallsDeriverTest::testRunKeepsReadingPastTheSearchBudgetOnlyAtDepthZerocallsDeriverTest::testRunReadsTheGoalsAfterRunningEachArrivalForwardcallsEntryBinderTestcallsCallbackEffectsTestcallsPropertyWritesTestcallsAssignmentStepsTestcallsBackwardSlicerTest::testBranchHoldsSeveralRunsAsOneStepcallsBackwardSlicerTest::testSliceFromKeepsWhatTheCallDependsOnInTheOrderItRunscallsLoopPassesTest::testBoundSaysWhetherAPathTookOneOfTheLoopsPassescallsPendingTest::testExhaustMarksThePathStoppedByTheBudgetAndKeepsEverythingElsecallsPendingTest::testForwardTurnsTheStepsIntoTheOrderTheyRuncallsPendingTest::testGatherKeepsEveryPathAsAnAlternativeOfOneStepcallsPendingTest::testSignatureTellsPathsApartByWhatTheyNeedAndWhatTheyPassedThroughcallsPendingTest::testThenJoinsAPathThatStartedWhereThisOneStandscallsPendingTest::testThroughTakesOneStepFurtherBackcallsSliceExecutorTest::providerAffordableRunscallsSliceExecutorTest::providerSizecallsSliceExecutorTest::testAbandonLeavesOpenEveryNameTheStepsLeftWritecallsSliceExecutorTest::testAbandonWithNoEnvironmentsLeavesNonecallsSliceExecutorTest::testApplyAssignsAnExpressionAndSplitsOnWhatItWrotecallsSliceExecutorTest::testApplyBindsADeclarationcallsSliceExecutorTest::testApplyEntersAClosureWithoutEvaluatingAnythingcallsSliceExecutorTest::testApplyEntersAnArrowFunctioncallsSliceExecutorTest::testApplyGoesOnFromThePassAForeachReachedOverWhatItFirstReadcallsSliceExecutorTest::testApplyLeavesAnyOtherStatementAsItFoundItcallsSliceExecutorTest::testApplyRunsEveryAlternativeFromItsOwnCopycallsSliceExecutorTest::testApplySplitsAForeachPastItsElementsWithinTheLimitcallsSliceExecutorTest::testApplyStartsAForeachByReadingWhatItGoesOvercallsSliceExecutorTest::testRunAbandonsTheStepsLeftOnceTheSearchBudgetIsExhaustedcallsSliceExecutorTest::testRunDropsRunsThatEndUpTheSamecallsSliceExecutorTest::testRunJoinsTheRunsPastTheLimitcallsSliceExecutorTest::testRunSizesTheLimitFromTheBudgetWhenNoneIsGivencallsSliceExecutorTest::testRunSplitsOnATernarySoLaterReadsAgreecallsSliceExecutorTest::testRunWhenClosingReadsOnPastTheSearchBudgetcallsSliceExecutorTest::testRunWhenClosingStopsOnceTheReadingBudgetIsSpentcallsSliceExecutorTest::testRunWithALimitOfOneKeepsTheValuesTogethercallsSliceExecutorTest::testWrittenByAClosureNamesWhatItDefinesForItselfcallsSliceExecutorTest::testWrittenByAForeachNamesItsValueAndItsKeycallsSliceExecutorTest::testWrittenByANodeNamesWhatItAssignsThenTheNamesItListscallsSliceExecutorTest::testWrittenByAStepOfAlternativesNamesWhatEveryAlternativeWritescallsSliceExecutorTest::testWrittenByAStepWithNoAlternativesNamesNothingcallsExpressionEvaluatorTest::testEvaluatecallsExpressionEvaluatorTest::testEvaluateAppendStartsFromWhatTheVariableAlreadyHoldscallsExpressionEvaluatorTest::testEvaluateAssignWritesIntoTheEnvironmentcallsExpressionEvaluatorTest::testEvaluateCastEndsTheTrailBackToExternalInputcallsExpressionEvaluatorTest::testEvaluateInterpolationJoinsLiteralPartsAndExpressionscallsExpressionEvaluatorTest::testEvaluateOfAMatchKeepsEveryArmcallsExpressionEvaluatorTest::testEvaluateOfAnAppendingAssignmentExtendsTheVariablecallsExpressionEvaluatorTest::testEvaluateOfAnInterpolatedStringJoinsItsPartscallsExpressionEvaluatorTest::testEvaluateOfATernaryKeepsBothBranchescallsExpressionEvaluatorTest::testEvaluateTernaryHandlesTheShortFormcallsInterpreterTestcallsModelQueriesTestcallsReferenceEvaluatorTest::testAssignWritesIntoAnArrayHeldByAVariablecallsReferenceEvaluatorTest::testEvaluatecallsReferenceEvaluatorTest::testReadArrayMarksAnUnpackedLiteralIncompletecallsReferenceEvaluatorTest::testReadElementFallsBackToTheOriginOfTheArraycallsReferenceEvaluatorTest::testReadElementLeavesAGapForAnElementTheArrayDoesNotHoldcallsReferenceEvaluatorTest::testReadElementUnderAKeyThatDidNotResolveQuotesTheGapOfAnArrayKnownOnlyInPartcallsReferenceEvaluatorTest::testReadElementUnderAKeyThatDidNotResolveReadsEveryElementcallsReferenceEvaluatorTest::testReadEnumPropertyNarrowsToOneCaseWhenTheCaseIsKnowncallsReferenceEvaluatorTest::testReadEnumPropertyReadsCaseNamescallsReferenceEvaluatorTest::testReadPropertyFallsBackToTheDeclaredTypecallsReferenceEvaluatorTest::testReadPropertyFallsBackToTheDeclaredTypeOfAStaticPropertyTheClassAssignscallsReferenceEvaluatorTest::testReadPropertyReadsTheSettledDefaultOfAStaticPropertycallsBuilderQueriesTestcallsCallbackModelTestcallsAnalyzerTestcallsJsonReporterTestcallsTextReporterTestcalls
Relations§
Instantiated in 4
- new SqlCatalog\Core\Analysis\Derivation\Slice\AssignmentSteps::over() packages/sql-catalog/src/Core/Analysis/Derivation/Slice/AssignmentSteps.php:51
- new SqlCatalog\Core\Analysis\Derivation\Slice\AssignmentSteps::declaration() packages/sql-catalog/src/Core/Analysis/Derivation/Slice/AssignmentSteps.php:103
- new SqlCatalog\Core\Analysis\Derivation\Slice\BackwardSlicer::leaveClosure() packages/sql-catalog/src/Core/Analysis/Derivation/Slice/BackwardSlicer.php:180
- new SqlCatalog\Core\Analysis\Derivation\Slice\LoopPasses::binding() packages/sql-catalog/src/Core/Analysis/Derivation/Slice/LoopPasses.php:162
Static calls 1
Method calls 1
Type declarations 4
- type SqlCatalog\Core\Analysis\Derivation\Slice\Pending packages/sql-catalog/src/Core/Analysis/Derivation/Slice/Pending.php:48
- type SqlCatalog\Core\Analysis\Derivation\Slice\Pending::signature() packages/sql-catalog/src/Core/Analysis/Derivation/Slice/Pending.php:109
- type SqlCatalog\Core\Analysis\Derivation\SliceExecutor packages/sql-catalog/src/Core/Analysis/Derivation/SliceExecutor.php:188
- type SqlCatalog\Core\Analysis\Derivation\SliceExecutor packages/sql-catalog/src/Core/Analysis/Derivation/SliceExecutor.php:216