address 0x42 { module M { struct Cup { f: T } struct Box has copy, drop, store, key { f: T } struct Pair has copy, drop, store, key { f1: T1, f2: T2 } fun c() {} fun k() {} fun cds() {} struct Sc {} struct Sk {} struct Scds {} // tests that a variety of constraint instantiations are all invalid fun t< TnoC: drop + store + key, TnoK: copy + drop + store, T, >() { c(); c>(); c>(); k(); k>(); k>>(); cds(); cds>(); cds>(); cds>(); let Sc {} = Sc {}; let Sc {} = Sc> {}; let Sc {} = Sc> {}; let Sk {} = Sk {}; let Sk {} = Sk> {}; let Sk {} = Sk>> {}; let Scds {} = Scds {}; let Scds {} = Scds> {}; let Scds {} = Scds> {}; let Scds {} = Scds> {}; } } }