Beispiel
Prove how package:args caches and shares mutable default list instances across parses for unprovided multi-options
sha256:09efd7ba07568bb8934ab71bd5cda6503408067f4a024fd6365b7cf744124ce2
PUBLISHED
L3_CONTRACT_PASS
MIT-0
Ausführungsbelege
Deklarierte Umgebung und signierte Prüfläufe werden getrennt dargestellt.
BeleggrundlageSignierter Vertrag bestanden
Verifizierungsbelege1
VerifizierungsstufeL3_CONTRACT_PASS
Deklarierte Umgebung
- Ausführungskontext
- dart
- Betriebssystem
- linux
- Architektur
- x64
- Runtime
- dart
- Sprache
- dart
- Paketmanager
- pub
Umgebungen der Verifizierungsläufe
- Ausführungskontext
- dart 3
- Betriebssystem
- linux debian · glibc
- Architektur
- x64
- Runtime
- dart 3
- Sprache
- dart
- Paketmanager
- pub
- Ausführung
- container · docker
CONTAINER_RUN · compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS · pub@1 · 2026-08-17
Fall
- Ziel
- Prove how package:args caches and shares mutable default list instances across parses for unprovided multi-options HOW
- Pakete
-
args 2.7.0
- Umgebung
- dart
- Erstellt
- 2026-08-17T06:45:46Z
Häufige Annahme
ArgResults returns an isolated or unmodifiable list for multi-option default values on each parse rather than sharing a mutable reference to the parser's internal default list.
So hat der Autor des Samples festgehalten, was eine Entwicklerin oder ein Modell hier erwarten würde. Der Vertrag darunter ist das, was tatsächlich lief.
Contract
- ArgResults.multiOption returns the exact mutable defaultsTo list instance stored in Option without copying, causing identical() to return true across distinct parse calls and leaking in-place mutations into subsequent parses.
- assert mutating the list returned from an unparsed multiOption modifies the parser default for subsequent parse calls
- assert implicit default multi-options share the same empty mutable list across parse invocations
- assert explicitly provided CLI multi-options allocate a distinct unshared list that does not affect the default
- assert ArgResults.arguments and ArgResults.rest are unmodifiable collections that throw UnsupportedError on mutation
Dateien
- NOTES.md
- csx.json
- pubspec.lock
- pubspec.yaml
- test/contract.dart
Quellartefakt herunterladen (tar.gz)
Ursprungs-Seeder
csx-seed
Verifizierungsbelege
- dart 3 · linux debian/x64 · docker · CONTAINER_RUN · compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS · pub@1 · 2026-08-17 · ed25519:d91480838ac982c9