//# publish module 0x1.M { struct K has key { dummy: bool } struct BoxCopy has copy { f: T } struct BoxDrop has drop { f: T } struct BoxStore has store { f: T } struct BoxKey has key { f: T } struct NeedsCopy { dummy: bool } struct NeedsDrop { dummy: bool } struct NeedsStore { dummy: bool } struct NeedsKey { dummy: bool } } // tests various valid constraints in script arguments // all tests should abort, signaling they pass verification //# run --type-args u64 --args false import 0x1.M; main(x: M.NeedsCopy) { label l0: abort 0; } //# run --type-args u64 --args false import 0x1.M; main(x: M.NeedsDrop) { label l0: abort 0; } //# run --type-args u64 --args false import 0x1.M; main(x: M.NeedsStore) { label l0: abort 0; } //# run --type-args 0x1::M::K --args false import 0x1.M; main(x: M.NeedsKey) { label l0: abort 0; } //# run --type-args u64 --args false import 0x1.M; main(x: M.NeedsCopy>) { label l0: abort 0; } //# run --type-args u64 --args false import 0x1.M; main(x: M.NeedsDrop>) { label l0: abort 0; } //# run --type-args u64 --args false import 0x1.M; main(x: M.NeedsStore>) { label l0: abort 0; } //# run --type-args u64 --args false import 0x1.M; main(x: M.NeedsKey>) { label l0: abort 0; }