classArrays
final class Arrays
Ordered PHP array updates, append indices, and distinct unpack/merge semantics.
Methods§
public function next(Term $array): int|nullChooses the next append index under PHP 8.3 semantics.
Parameters
$array | Term | Array shape |
Returns
int|null Append index or null when unknown/overflowingTest cases 4
Called from 7
- method-call Deriver\Deriver\Evaluator\Builtin\ArrayMutation::remove() packages/deriver/src/Deriver/Evaluator/Builtin/ArrayMutation.php:62
- method-call Deriver\Deriver\Evaluator\Execution\Memory\Memory::remove() packages/deriver/src/Deriver/Evaluator/Execution/Memory/Memory.php:261
- method-call Deriver\Deriver\Evaluator\Expression\ArrayConstruction::value() packages/deriver/src/Deriver/Evaluator/Expression/ArrayConstruction.php:36
- method-call Deriver\Deriver\Evaluator\Scalar\Arrays::appendKey() packages/deriver/src/Deriver/Evaluator/Scalar/Arrays.php:42
- method-call Deriver\Deriver\Evaluator\Scalar\Arrays::set() packages/deriver/src/Deriver/Evaluator/Scalar/Arrays.php:78
- method-call Deriver\Deriver\Evaluator\Scalar\Arrays::set() packages/deriver/src/Deriver/Evaluator/Scalar/Arrays.php:79
- method-call Deriver\Deriver\Evaluator\Scalar\Arrays::appendable() packages/deriver/src/Deriver/Evaluator/Scalar/Arrays.php:169
Validates the capped PHP append counter independently of an explicit integer assignment.
Parameters
$array | Term | Existing array |
Returns
Term Append key, an unknown index, or an occupied-maximum ErrorTest cases 2
Called from 3
- method-call Deriver\Deriver\Evaluator\Execution\Offset\Path::locate() packages/deriver/src/Deriver/Evaluator/Execution/Offset/Path.php:102
- method-call Deriver\Deriver\Evaluator\Execution\Transfer\MemoryStep::address() packages/deriver/src/Deriver/Evaluator/Execution/Transfer/MemoryStep.php:193
- method-call Deriver\Deriver\Evaluator\Scalar\Arrays::set() packages/deriver/src/Deriver/Evaluator/Scalar/Arrays.php:62
Calls 5
- method-call Arrays::next() line 42
- static-call Term::opaque() line 44
- new Term line 46
- class-const TermKind::Throwable() line 46
- static-call Term::constant() line 46
Updates a known key or preserves a conservative unknown-key remainder.
Returns
Term Updated array or explicit throwableTest cases 9
IterationStepTest::testCandidatesRetainsTheUnknownPrefixBesideAKnownSuffixcallsArraysTest::testAppendKeyKeepsTheMaximumCounterReusableAfterUnsetcallsArraysTest::testMergeRetainsTheUnknownOverwriteAndFollowingAppendcallsArraysTest::testSetNormalizesIntegerKeyscallsArraysTest::testSetRejectsIllegalKeysAndRetainsUnknownAppendPositioncallsArraysTest::testSetRetainsEarlierAppendHistoryAndOpenRemainderscallsArraysTest::testSetRetainsExplicitKeysAfterAnUnknownMergecallsArraysTest::testSetUnknownKeysKeepKnownPresenceWithoutKeepingStaleValuescallsArraysTest::testTailKeepsOnlyAppendSuffixesWithAvailableIndicescalls
Called from 5
- method-call Deriver\Deriver\Evaluator\Builtin\ArrayMutation::push() packages/deriver/src/Deriver/Evaluator/Builtin/ArrayMutation.php:86
- method-call Deriver\Deriver\Evaluator\Evaluator::reduce() packages/deriver/src/Deriver/Evaluator/Evaluator.php:152
- method-call Deriver\Deriver\Evaluator\Execution\InstructionTransfer::apply() packages/deriver/src/Deriver/Evaluator/Execution/InstructionTransfer.php:98
- method-call Deriver\Deriver\Evaluator\Execution\Memory\Memory::replace() packages/deriver/src/Deriver/Evaluator/Execution/Memory/Memory.php:194
- method-call Deriver\Deriver\Evaluator\Scalar\Arrays::merge() packages/deriver/src/Deriver/Evaluator/Scalar/Arrays.php:98
Calls 16
- class-const TermKind::Array() line 58
- new Term line 59
- class-const TermKind::ArraySet() line 59
- class-const TermKind::Append() line 59
- method-call Arrays::appendKey() line 62
- class-const TermKind::Throwable() line 64
- method-call Operations::arrayKey() line 64
- new Operations line 64
- class-const TermKind::Constant() line 68
- function-call
is_stringline 68 - function-call
is_intline 68 - static-call Term::opaque() line 71
- static-call Term::array() line 77
- method-call Arrays::next() line 78
- function-call
array_key_existsline 80 - function-call
maxline 81
Appends numeric entries and overwrites named entries for unpack/array_merge.
Returns
Term Merged array with conservative remainderTest cases 12
ArrayFunctionsTest::testMembershipFindsKnownHeadEntriesOfAnUnknownMergecallsIterationStepTest::testCandidatesRetainsTheUnknownPrefixBesideAKnownSuffixcallsReaderTest::testArrayReadsOnlyIntegerHeadKeysOfAnUnknownMergeExactlycallsArraysTest::testAppendableRequiresRoomForEveryMergedSourcecallsArraysTest::testHeadKeepsOnlyClosedIntegerKeyedDestinationsOfMergescallsArraysTest::testMergeReindexesNumericKeyscallsArraysTest::testMergeRetainsEitherOpenRemainderAndUnknownDestinationcallsArraysTest::testMergeRetainsTheUnknownOverwriteAndFollowingAppendcallsArraysTest::testMergeStopsAtTheFirstAppendFailurecallsArraysTest::testMergeTreatsShapesWithoutRemainderMetadataAsClosedcallsArraysTest::testSplitSeparatesOnlyASingleMergeLevelcallsArraysTest::testTailKeepsOnlyAppendSuffixesWithAvailableIndicescalls
Called from 4
- method-call Deriver\Deriver\Evaluator\Builtin\ArrayFunctions::apply() packages/deriver/src/Deriver/Evaluator/Builtin/ArrayFunctions.php:52
- method-call Deriver\Deriver\Evaluator\Builtin\ArrayMutation::push() packages/deriver/src/Deriver/Evaluator/Builtin/ArrayMutation.php:79
- method-call Deriver\Deriver\Evaluator\Builtin\ArrayMutation::prepend() packages/deriver/src/Deriver/Evaluator/Builtin/ArrayMutation.php:104
- method-call Deriver\Deriver\Evaluator\Execution\InstructionTransfer::unpack() packages/deriver/src/Deriver/Evaluator/Execution/InstructionTransfer.php:119
Calls 7
- class-const TermKind::Array() line 94
- new Term line 95
- class-const TermKind::ArrayMerge() line 95
- method-call Arrays::set() line 98
- function-call
is_intline 98 - static-call Term::constant() line 98
- class-const TermKind::Throwable() line 99
Finds the closed integer-keyed destination at the start of a symbolic merge, whose entries no source can replace or reorder.
Parameters
$array | Term | Possibly symbolic merge |
Returns
Term|null Leading entries in order, or null when the merge has no such destinationTest cases 1
Called from 7
- method-call Deriver\Deriver\Evaluator\Builtin\ArrayFunctions::membership() packages/deriver/src/Deriver/Evaluator/Builtin/ArrayFunctions.php:152
- method-call Deriver\Deriver\Evaluator\Execution\Control\IterationStep::evaluate() packages/deriver/src/Deriver/Evaluator/Execution/Control/IterationStep.php:52
- method-call Deriver\Deriver\Evaluator\Execution\Control\IterationStep::candidates() packages/deriver/src/Deriver/Evaluator/Execution/Control/IterationStep.php:86
- method-call Deriver\Deriver\Evaluator\Execution\Control\LoopConvergence::position() packages/deriver/src/Deriver/Evaluator/Execution/Control/LoopConvergence.php:99
- method-call Deriver\Deriver\Evaluator\Execution\Offset\ReadCandidates::apply() packages/deriver/src/Deriver/Evaluator/Execution/Offset/ReadCandidates.php:39
- method-call Deriver\Deriver\Evaluator\Execution\Offset\Reader::array() packages/deriver/src/Deriver/Evaluator/Execution/Offset/Reader.php:85
- method-call Deriver\Deriver\Evaluator\Scalar\Arrays::split() packages/deriver/src/Deriver/Evaluator/Scalar/Arrays.php:135
Calls 7
- class-const TermKind::ArraySet() line 113
- class-const TermKind::Append() line 113
- class-const TermKind::ArrayMerge() line 116
- class-const TermKind::Array() line 122
- function-call
array_filterline 122 - function-call
array_keysline 122 - function-call
is_stringline 122
Separates a single symbolic merge into its known head and the source appended after it.
Parameters
$array | Term | Possibly symbolic merge |
Test cases 1
Called from 1
Calls 1
- method-call Arrays::head() line 135
Separates trailing append entries whose order is known after an unknown array.
Parameters
$array | Term | Constructed array |
Test cases 1
Called from 2
- method-call Deriver\Deriver\Evaluator\Execution\Control\IterationStep::candidates() packages/deriver/src/Deriver/Evaluator/Execution/Control/IterationStep.php:81
- method-call Deriver\Deriver\Evaluator\Execution\Operation\StringJoining::apply() packages/deriver/src/Deriver/Evaluator/Execution/Operation/StringJoining.php:49
Calls 5
- class-const TermKind::ArraySet() line 150
- class-const TermKind::Append() line 150
- method-call Arrays::appendable() line 154
- static-call Term::array() line 154
- function-call
array_reverseline 154
public function appendable(Term $array): boolChecks that appending arrays cannot reach the occupied maximum append index; a PHP array holds fewer than 2^32 elements.
Parameters
$array | Term | Unpack destination |
Returns
bool Whether every later append index is provably availableTest cases 1
Called from 3
- method-call Deriver\Deriver\Evaluator\Builtin\ArrayMutation::push() packages/deriver/src/Deriver/Evaluator/Builtin/ArrayMutation.php:80
- method-call Deriver\Deriver\Evaluator\Execution\InstructionTransfer::unpack() packages/deriver/src/Deriver/Evaluator/Execution/InstructionTransfer.php:120
- method-call Deriver\Deriver\Evaluator\Scalar\Arrays::tail() packages/deriver/src/Deriver/Evaluator/Scalar/Arrays.php:154
Calls 3
- class-const TermKind::ArrayMerge() line 165
- class-const TermKind::Array() line 169
- method-call Arrays::next() line 169
Test cases 106§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 18
ArraysTest::testAppendableRequiresRoomForEveryMergedSourcecallsArraysTest::testAppendKeyKeepsItsUnknownSourceDependencycallsArraysTest::testAppendKeyKeepsTheMaximumCounterReusableAfterUnsetcallsArraysTest::testHeadKeepsOnlyClosedIntegerKeyedDestinationsOfMergescallsArraysTest::testMergeReindexesNumericKeyscallsArraysTest::testMergeRetainsEitherOpenRemainderAndUnknownDestinationcallsArraysTest::testMergeRetainsTheUnknownOverwriteAndFollowingAppendcallsArraysTest::testMergeStopsAtTheFirstAppendFailurecallsArraysTest::testMergeTreatsShapesWithoutRemainderMetadataAsClosedcallsArraysTest::testNextUsesPhp83NegativeAppendRulescallsArraysTest::testNextUsesTheLargestIntegerKeyAndZeroForOnlyNamedKeyscallsArraysTest::testSetNormalizesIntegerKeyscallsArraysTest::testSetRejectsIllegalKeysAndRetainsUnknownAppendPositioncallsArraysTest::testSetRetainsEarlierAppendHistoryAndOpenRemainderscallsArraysTest::testSetRetainsExplicitKeysAfterAnUnknownMergecallsArraysTest::testSetUnknownKeysKeepKnownPresenceWithoutKeepingStaleValuescallsArraysTest::testSplitSeparatesOnlyASingleMergeLevelcallsArraysTest::testTailKeepsOnlyAppendSuffixesWithAvailableIndicescalls
Other tests reaching this symbol 88
ArrayFunctionsTest::testMembershipFindsKnownHeadEntriesOfAnUnknownMergecallsArrayMutationTestcallsFunctionEvaluatorTestcallsLibraryTestcallsScalarFunctionsTestcallsTypePredicatesTestcallsPlanCompilerTestcallsFrontierTestcallsAllocationTestcallsArgumentBindingTestcallsArgumentOrderTestcallsCallExecutorTestcallsBindingTestcallsCaptureTestcallsAccessTestcallsInvocationTestcallsMethodInvocationTestcallsInvocationTestcallsPropertiesTestcallsParameterBindingTestcallsArgumentsTestcallsCreationTestcallsEntryPropertiesTestcallsMethodsTestcallsResolutionTestcallsUnpackTestcallsUnknownCallTestcallsAlternativeTestcallsExceptionalTestcallsCollectionCallsTestcallsExceptionChainTestcallsIterationStepTest::testCandidatesRetainsTheUnknownPrefixBesideAKnownSuffixcallsIteratorCursorTestcallsLoopConvergenceTestcallsStateJoinTestcallsUnwindingTestcallsEvaluatorTestcallsHavocTestcallsInstructionTransferTestcallsLocationTestcallsMemoryTest::testRemoveKeepsTheNextAppendIndexcallsReferenceConstraintTestcallsStateStorageTestcallsPathTestcallsProtocolTestcallsReaderTest::testArrayReadsOnlyIntegerHeadKeysOfAnUnknownMergeExactlycallsTransferTestcallsConversionsTestcallsCountableCallsTestcallsStateTestcallsEvaluationTestcallsInvocationTestcallsCallableTransferTestcallsCompoundAssignmentTestcallsConstantTransferTestcallsIntrinsicTransferTestcallsMemoryStepTestcallsObjectAccessTestcallsPropertyAccessCheckTestcallsPropertyMagicTestcallsPropertyReferenceTestcallsPropertyTransferTestcallsPureStepTestcallsReferenceAssignmentTestcallsOperationsTestcallsTermTestcallsDerivationResultTestcallsQueryExecutionTestcallsResultAssessmentTestcallsValueGraphTestcallsAggregateLoweringTestcallsAssignmentLoweringTestcallsCallLoweringTestcallsConditionalLoweringTestcallsDestructuringLoweringTestcallsLoopLoweringTestcallsStaticLoweringTestcallsCallableSourceTestcallsIndexerTestcallsClassDeclarationTestcallsPropertyDeclarationTestcallsExpressionLoweringTestcallsArgumentTestcallsCatchTargetTestcallsParameterTestcallsDispatchTestcallsLowererTestcallsStatementLoweringTestcalls
Relations§
Instantiated in 22
- new Deriver\Deriver\Evaluator\Builtin\ArrayFunctions::apply() packages/deriver/src/Deriver/Evaluator/Builtin/ArrayFunctions.php:52
- new Deriver\Deriver\Evaluator\Builtin\ArrayFunctions::membership() packages/deriver/src/Deriver/Evaluator/Builtin/ArrayFunctions.php:152
- new Deriver\Deriver\Evaluator\Builtin\ArrayMutation::remove() packages/deriver/src/Deriver/Evaluator/Builtin/ArrayMutation.php:62
- new Deriver\Deriver\Evaluator\Builtin\ArrayMutation::push() packages/deriver/src/Deriver/Evaluator/Builtin/ArrayMutation.php:77
- new Deriver\Deriver\Evaluator\Builtin\ArrayMutation::prepend() packages/deriver/src/Deriver/Evaluator/Builtin/ArrayMutation.php:104
- new Deriver\Deriver\Evaluator\Evaluator::reduce() packages/deriver/src/Deriver/Evaluator/Evaluator.php:152
- new Deriver\Deriver\Evaluator\Execution\Control\IterationStep::evaluate() packages/deriver/src/Deriver/Evaluator/Execution/Control/IterationStep.php:52
- new Deriver\Deriver\Evaluator\Execution\Control\IterationStep::candidates() packages/deriver/src/Deriver/Evaluator/Execution/Control/IterationStep.php:81
- new Deriver\Deriver\Evaluator\Execution\Control\IterationStep::candidates() packages/deriver/src/Deriver/Evaluator/Execution/Control/IterationStep.php:86
- new Deriver\Deriver\Evaluator\Execution\Control\LoopConvergence::position() packages/deriver/src/Deriver/Evaluator/Execution/Control/LoopConvergence.php:99
- new Deriver\Deriver\Evaluator\Execution\InstructionTransfer::apply() packages/deriver/src/Deriver/Evaluator/Execution/InstructionTransfer.php:98
- new Deriver\Deriver\Evaluator\Execution\InstructionTransfer::unpack() packages/deriver/src/Deriver/Evaluator/Execution/InstructionTransfer.php:119
- new Deriver\Deriver\Evaluator\Execution\InstructionTransfer::unpack() packages/deriver/src/Deriver/Evaluator/Execution/InstructionTransfer.php:120
- new Deriver\Deriver\Evaluator\Execution\Memory\Memory::replace() packages/deriver/src/Deriver/Evaluator/Execution/Memory/Memory.php:194
- new Deriver\Deriver\Evaluator\Execution\Memory\Memory::remove() packages/deriver/src/Deriver/Evaluator/Execution/Memory/Memory.php:261
- new Deriver\Deriver\Evaluator\Execution\Offset\Path::locate() packages/deriver/src/Deriver/Evaluator/Execution/Offset/Path.php:102
- new Deriver\Deriver\Evaluator\Execution\Offset\ReadCandidates::apply() packages/deriver/src/Deriver/Evaluator/Execution/Offset/ReadCandidates.php:39
- new Deriver\Deriver\Evaluator\Execution\Offset\Reader::array() packages/deriver/src/Deriver/Evaluator/Execution/Offset/Reader.php:85
- new Deriver\Deriver\Evaluator\Execution\Operation\StringJoining::apply() packages/deriver/src/Deriver/Evaluator/Execution/Operation/StringJoining.php:49
- new Deriver\Deriver\Evaluator\Execution\Operation\StringJoining::apply() packages/deriver/src/Deriver/Evaluator/Execution/Operation/StringJoining.php:53
- new Deriver\Deriver\Evaluator\Execution\Transfer\MemoryStep::address() packages/deriver/src/Deriver/Evaluator/Execution/Transfer/MemoryStep.php:193
- new Deriver\Deriver\Evaluator\Expression\ArrayConstruction::value() packages/deriver/src/Deriver/Evaluator/Expression/ArrayConstruction.php:36
Method calls 24
- method-call Deriver\Deriver\Evaluator\Builtin\ArrayFunctions::apply() packages/deriver/src/Deriver/Evaluator/Builtin/ArrayFunctions.php:52
- method-call Deriver\Deriver\Evaluator\Builtin\ArrayFunctions::membership() packages/deriver/src/Deriver/Evaluator/Builtin/ArrayFunctions.php:152
- method-call Deriver\Deriver\Evaluator\Builtin\ArrayMutation::remove() packages/deriver/src/Deriver/Evaluator/Builtin/ArrayMutation.php:62
- method-call Deriver\Deriver\Evaluator\Builtin\ArrayMutation::push() packages/deriver/src/Deriver/Evaluator/Builtin/ArrayMutation.php:79
- method-call Deriver\Deriver\Evaluator\Builtin\ArrayMutation::push() packages/deriver/src/Deriver/Evaluator/Builtin/ArrayMutation.php:80
- method-call Deriver\Deriver\Evaluator\Builtin\ArrayMutation::push() packages/deriver/src/Deriver/Evaluator/Builtin/ArrayMutation.php:86
- method-call Deriver\Deriver\Evaluator\Builtin\ArrayMutation::prepend() packages/deriver/src/Deriver/Evaluator/Builtin/ArrayMutation.php:104
- method-call Deriver\Deriver\Evaluator\Evaluator::reduce() packages/deriver/src/Deriver/Evaluator/Evaluator.php:152
- method-call Deriver\Deriver\Evaluator\Execution\Control\IterationStep::evaluate() packages/deriver/src/Deriver/Evaluator/Execution/Control/IterationStep.php:52
- method-call Deriver\Deriver\Evaluator\Execution\Control\IterationStep::candidates() packages/deriver/src/Deriver/Evaluator/Execution/Control/IterationStep.php:81
- method-call Deriver\Deriver\Evaluator\Execution\Control\IterationStep::candidates() packages/deriver/src/Deriver/Evaluator/Execution/Control/IterationStep.php:86
- method-call Deriver\Deriver\Evaluator\Execution\Control\LoopConvergence::position() packages/deriver/src/Deriver/Evaluator/Execution/Control/LoopConvergence.php:99
- method-call Deriver\Deriver\Evaluator\Execution\InstructionTransfer::apply() packages/deriver/src/Deriver/Evaluator/Execution/InstructionTransfer.php:98
- method-call Deriver\Deriver\Evaluator\Execution\InstructionTransfer::unpack() packages/deriver/src/Deriver/Evaluator/Execution/InstructionTransfer.php:119
- method-call Deriver\Deriver\Evaluator\Execution\InstructionTransfer::unpack() packages/deriver/src/Deriver/Evaluator/Execution/InstructionTransfer.php:120
- method-call Deriver\Deriver\Evaluator\Execution\Memory\Memory::replace() packages/deriver/src/Deriver/Evaluator/Execution/Memory/Memory.php:194
- method-call Deriver\Deriver\Evaluator\Execution\Memory\Memory::remove() packages/deriver/src/Deriver/Evaluator/Execution/Memory/Memory.php:261
- method-call Deriver\Deriver\Evaluator\Execution\Offset\Path::locate() packages/deriver/src/Deriver/Evaluator/Execution/Offset/Path.php:102
- method-call Deriver\Deriver\Evaluator\Execution\Offset\ReadCandidates::apply() packages/deriver/src/Deriver/Evaluator/Execution/Offset/ReadCandidates.php:39
- method-call Deriver\Deriver\Evaluator\Execution\Offset\Reader::array() packages/deriver/src/Deriver/Evaluator/Execution/Offset/Reader.php:85
- method-call Deriver\Deriver\Evaluator\Execution\Operation\StringJoining::apply() packages/deriver/src/Deriver/Evaluator/Execution/Operation/StringJoining.php:49
- method-call Deriver\Deriver\Evaluator\Execution\Operation\StringJoining::apply() packages/deriver/src/Deriver/Evaluator/Execution/Operation/StringJoining.php:53
- method-call Deriver\Deriver\Evaluator\Execution\Transfer\MemoryStep::address() packages/deriver/src/Deriver/Evaluator/Execution/Transfer/MemoryStep.php:193
- method-call Deriver\Deriver\Evaluator\Expression\ArrayConstruction::value() packages/deriver/src/Deriver/Evaluator/Expression/ArrayConstruction.php:36