Skip to content

Commit 0dcd5e2

Browse files
committed
Do not stop after first AST pipeline
1 parent d9821a3 commit 0dcd5e2

File tree

6 files changed

+260
-25
lines changed

6 files changed

+260
-25
lines changed

third_party/move/move-compiler-v2/tests/macros/assert.exp

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,3 +105,74 @@ module 0x42::M {
105105
if (cond) () else abort 0x1::string::into_bytes(0x1::string_utils::format4<T0,T1,T2,T3>(&vector[97u8, 32u8, 61u8, 32u8, 123u8, 125u8, 44u8, 32u8, 98u8, 32u8, 61u8, 32u8, 123u8, 125u8, 44u8, 32u8, 99u8, 32u8, 61u8, 32u8, 123u8, 125u8, 44u8, 32u8, 100u8, 32u8, 61u8, 32u8, 123u8, 125u8], a, b, c, d))
106106
}
107107
}
108+
109+
// -- Model dump before second bytecode pipeline
110+
module 0x1::string_utils {
111+
use std::string::{String};
112+
public fun format1<T0>(_fmt: &vector<u8>,_a: T0): string::String {
113+
Abort(0)
114+
}
115+
public fun format2<T0,T1>(_fmt: &vector<u8>,_a: T0,_b: T1): string::String {
116+
Abort(0)
117+
}
118+
public fun format3<T0,T1,T2>(_fmt: &vector<u8>,_a: T0,_b: T1,_c: T2): string::String {
119+
Abort(0)
120+
}
121+
public fun format4<T0,T1,T2,T3>(_fmt: &vector<u8>,_a: T0,_b: T1,_c: T2,_d: T3): string::String {
122+
Abort(0)
123+
}
124+
} // end 0x1::string_utils
125+
module 0x42::M {
126+
private fun foo1(cond: bool) {
127+
if cond {
128+
Tuple()
129+
} else {
130+
Abort(14566554180833181696)
131+
}
132+
}
133+
private fun foo2(cond: bool,code: u64) {
134+
if cond {
135+
Tuple()
136+
} else {
137+
Abort(code)
138+
}
139+
}
140+
private fun foo3(cond: bool,message: vector<u8>) {
141+
if cond {
142+
Tuple()
143+
} else {
144+
Abort(14566554180833181696, message)
145+
}
146+
}
147+
private fun foo4<T0>(cond: bool,a: T0) {
148+
if cond {
149+
Tuple()
150+
} else {
151+
Abort(14566554180833181696, string::into_bytes(string_utils::format1<T0>(Borrow(Immutable)([97, 32, 61, 32, 123, 125]), a)))
152+
}
153+
}
154+
private fun foo5<T0,T1>(cond: bool,a: T0,b: T1) {
155+
if cond {
156+
Tuple()
157+
} else {
158+
Abort(14566554180833181696, string::into_bytes(string_utils::format2<T0, T1>(Borrow(Immutable)([97, 32, 61, 32, 123, 125, 44, 32, 98, 32, 61, 32, 123, 125]), a, b)))
159+
}
160+
}
161+
private fun foo6<T0,T1,T2>(cond: bool,a: T0,b: T1,c: T2) {
162+
if cond {
163+
Tuple()
164+
} else {
165+
Abort(14566554180833181696, string::into_bytes(string_utils::format3<T0, T1, T2>(Borrow(Immutable)([97, 32, 61, 32, 123, 125, 44, 32, 98, 32, 61, 32, 123, 125, 44, 32, 99, 32, 61, 32, 123, 125]), a, b, c)))
166+
}
167+
}
168+
private fun foo7<T0,T1,T2,T3>(cond: bool,a: T0,b: T1,c: T2,d: T3) {
169+
if cond {
170+
Tuple()
171+
} else {
172+
Abort(14566554180833181696, string::into_bytes(string_utils::format4<T0, T1, T2, T3>(Borrow(Immutable)([97, 32, 61, 32, 123, 125, 44, 32, 98, 32, 61, 32, 123, 125, 44, 32, 99, 32, 61, 32, 123, 125, 44, 32, 100, 32, 61, 32, 123, 125]), a, b, c, d)))
173+
}
174+
}
175+
} // end 0x42::M
176+
177+
178+
============ bytecode verification succeeded ========

third_party/move/move-compiler-v2/tests/macros/assert_eq.exp

Lines changed: 88 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -94,28 +94,110 @@ module 0x1::string_utils {
9494
}
9595
}
9696
module 0x42::M {
97-
fun foo1<T: drop>(left: T, right: T) {
97+
fun foo1<T: copy + drop>(left: T, right: T) {
9898
let (_left,_right) = (left, right);
9999
if (_left == _right) () else abort 0x1::string::into_bytes(0x1::string_utils::format2<T,T>(&vector[97u8, 115u8, 115u8, 101u8, 114u8, 116u8, 105u8, 111u8, 110u8, 32u8, 96u8, 108u8, 101u8, 102u8, 116u8, 32u8, 61u8, 61u8, 32u8, 114u8, 105u8, 103u8, 104u8, 116u8, 96u8, 32u8, 102u8, 97u8, 105u8, 108u8, 101u8, 100u8, 10u8, 32u8, 32u8, 108u8, 101u8, 102u8, 116u8, 58u8, 32u8, 123u8, 125u8, 10u8, 32u8, 114u8, 105u8, 103u8, 104u8, 116u8, 58u8, 32u8, 123u8, 125u8], _left, _right))
100100
}
101-
fun foo2<T: drop>(left: T, right: T, message: vector<u8>) {
101+
fun foo2<T: copy + drop>(left: T, right: T, message: vector<u8>) {
102102
let (_left,_right) = (left, right);
103103
if (_left == _right) () else abort 0x1::string::into_bytes(0x1::string_utils::format3<0x1::string::String,T,T>(&vector[97u8, 115u8, 115u8, 101u8, 114u8, 116u8, 105u8, 111u8, 110u8, 32u8, 96u8, 108u8, 101u8, 102u8, 116u8, 32u8, 61u8, 61u8, 32u8, 114u8, 105u8, 103u8, 104u8, 116u8, 96u8, 32u8, 102u8, 97u8, 105u8, 108u8, 101u8, 100u8, 58u8, 32u8, 123u8, 125u8, 10u8, 32u8, 32u8, 108u8, 101u8, 102u8, 116u8, 58u8, 32u8, 123u8, 125u8, 10u8, 32u8, 114u8, 105u8, 103u8, 104u8, 116u8, 58u8, 32u8, 123u8, 125u8], 0x1::string::utf8(message), _left, _right))
104104
}
105-
fun foo3<T: drop, T0: drop>(left: T, right: T, a: T0) {
105+
fun foo3<T: copy + drop, T0: drop>(left: T, right: T, a: T0) {
106106
let (_left,_right) = (left, right);
107107
if (_left == _right) () else abort 0x1::string::into_bytes(0x1::string_utils::format3<0x1::string::String,T,T>(&vector[97u8, 115u8, 115u8, 101u8, 114u8, 116u8, 105u8, 111u8, 110u8, 32u8, 96u8, 108u8, 101u8, 102u8, 116u8, 32u8, 61u8, 61u8, 32u8, 114u8, 105u8, 103u8, 104u8, 116u8, 96u8, 32u8, 102u8, 97u8, 105u8, 108u8, 101u8, 100u8, 58u8, 32u8, 123u8, 125u8, 10u8, 32u8, 32u8, 108u8, 101u8, 102u8, 116u8, 58u8, 32u8, 123u8, 125u8, 10u8, 32u8, 114u8, 105u8, 103u8, 104u8, 116u8, 58u8, 32u8, 123u8, 125u8], 0x1::string_utils::format1<T0>(&vector[97u8, 32u8, 61u8, 32u8, 123u8, 125u8], a), _left, _right))
108108
}
109-
fun foo4<T: drop, T0: drop, T1: drop>(left: T, right: T, a: T0, b: T1) {
109+
fun foo4<T: copy + drop, T0: drop, T1: drop>(left: T, right: T, a: T0, b: T1) {
110110
let (_left,_right) = (left, right);
111111
if (_left == _right) () else abort 0x1::string::into_bytes(0x1::string_utils::format3<0x1::string::String,T,T>(&vector[97u8, 115u8, 115u8, 101u8, 114u8, 116u8, 105u8, 111u8, 110u8, 32u8, 96u8, 108u8, 101u8, 102u8, 116u8, 32u8, 61u8, 61u8, 32u8, 114u8, 105u8, 103u8, 104u8, 116u8, 96u8, 32u8, 102u8, 97u8, 105u8, 108u8, 101u8, 100u8, 58u8, 32u8, 123u8, 125u8, 10u8, 32u8, 32u8, 108u8, 101u8, 102u8, 116u8, 58u8, 32u8, 123u8, 125u8, 10u8, 32u8, 114u8, 105u8, 103u8, 104u8, 116u8, 58u8, 32u8, 123u8, 125u8], 0x1::string_utils::format2<T0,T1>(&vector[97u8, 32u8, 61u8, 32u8, 123u8, 125u8, 44u8, 32u8, 98u8, 32u8, 61u8, 32u8, 123u8, 125u8], a, b), _left, _right))
112112
}
113-
fun foo5<T: drop, T0: drop, T1: drop, T2: drop>(left: T, right: T, a: T0, b: T1, c: T2) {
113+
fun foo5<T: copy + drop, T0: drop, T1: drop, T2: drop>(left: T, right: T, a: T0, b: T1, c: T2) {
114114
let (_left,_right) = (left, right);
115115
if (_left == _right) () else abort 0x1::string::into_bytes(0x1::string_utils::format3<0x1::string::String,T,T>(&vector[97u8, 115u8, 115u8, 101u8, 114u8, 116u8, 105u8, 111u8, 110u8, 32u8, 96u8, 108u8, 101u8, 102u8, 116u8, 32u8, 61u8, 61u8, 32u8, 114u8, 105u8, 103u8, 104u8, 116u8, 96u8, 32u8, 102u8, 97u8, 105u8, 108u8, 101u8, 100u8, 58u8, 32u8, 123u8, 125u8, 10u8, 32u8, 32u8, 108u8, 101u8, 102u8, 116u8, 58u8, 32u8, 123u8, 125u8, 10u8, 32u8, 114u8, 105u8, 103u8, 104u8, 116u8, 58u8, 32u8, 123u8, 125u8], 0x1::string_utils::format3<T0,T1,T2>(&vector[97u8, 32u8, 61u8, 32u8, 123u8, 125u8, 44u8, 32u8, 98u8, 32u8, 61u8, 32u8, 123u8, 125u8, 44u8, 32u8, 99u8, 32u8, 61u8, 32u8, 123u8, 125u8], a, b, c), _left, _right))
116116
}
117-
fun foo6<T: drop, T0: drop, T1: drop, T2: drop, T3: drop>(left: T, right: T, a: T0, b: T1, c: T2, d: T3) {
117+
fun foo6<T: copy + drop, T0: drop, T1: drop, T2: drop, T3: drop>(left: T, right: T, a: T0, b: T1, c: T2, d: T3) {
118118
let (_left,_right) = (left, right);
119119
if (_left == _right) () else abort 0x1::string::into_bytes(0x1::string_utils::format3<0x1::string::String,T,T>(&vector[97u8, 115u8, 115u8, 101u8, 114u8, 116u8, 105u8, 111u8, 110u8, 32u8, 96u8, 108u8, 101u8, 102u8, 116u8, 32u8, 61u8, 61u8, 32u8, 114u8, 105u8, 103u8, 104u8, 116u8, 96u8, 32u8, 102u8, 97u8, 105u8, 108u8, 101u8, 100u8, 58u8, 32u8, 123u8, 125u8, 10u8, 32u8, 32u8, 108u8, 101u8, 102u8, 116u8, 58u8, 32u8, 123u8, 125u8, 10u8, 32u8, 114u8, 105u8, 103u8, 104u8, 116u8, 58u8, 32u8, 123u8, 125u8], 0x1::string_utils::format4<T0,T1,T2,T3>(&vector[97u8, 32u8, 61u8, 32u8, 123u8, 125u8, 44u8, 32u8, 98u8, 32u8, 61u8, 32u8, 123u8, 125u8, 44u8, 32u8, 99u8, 32u8, 61u8, 32u8, 123u8, 125u8, 44u8, 32u8, 100u8, 32u8, 61u8, 32u8, 123u8, 125u8], a, b, c, d), _left, _right))
120120
}
121121
}
122+
123+
// -- Model dump before second bytecode pipeline
124+
module 0x1::string_utils {
125+
use std::string::{String};
126+
public fun format1<T0>(_fmt: &vector<u8>,_a: T0): string::String {
127+
Abort(0)
128+
}
129+
public fun format2<T0,T1>(_fmt: &vector<u8>,_a: T0,_b: T1): string::String {
130+
Abort(0)
131+
}
132+
public fun format3<T0,T1,T2>(_fmt: &vector<u8>,_a: T0,_b: T1,_c: T2): string::String {
133+
Abort(0)
134+
}
135+
public fun format4<T0,T1,T2,T3>(_fmt: &vector<u8>,_a: T0,_b: T1,_c: T2,_d: T3): string::String {
136+
Abort(0)
137+
}
138+
} // end 0x1::string_utils
139+
module 0x42::M {
140+
private fun foo1<T>(left: T,right: T) {
141+
{
142+
let ($left: T, $right: T): (T, T) = Tuple(left, right);
143+
if Eq<T>($left, $right) {
144+
Tuple()
145+
} else {
146+
Abort(14566554180833181696, string::into_bytes(string_utils::format2<T, T>(Borrow(Immutable)([97, 115, 115, 101, 114, 116, 105, 111, 110, 32, 96, 108, 101, 102, 116, 32, 61, 61, 32, 114, 105, 103, 104, 116, 96, 32, 102, 97, 105, 108, 101, 100, 10, 32, 32, 108, 101, 102, 116, 58, 32, 123, 125, 10, 32, 114, 105, 103, 104, 116, 58, 32, 123, 125]), $left, $right)))
147+
}
148+
}
149+
}
150+
private fun foo2<T>(left: T,right: T,message: vector<u8>) {
151+
{
152+
let ($left: T, $right: T): (T, T) = Tuple(left, right);
153+
if Eq<T>($left, $right) {
154+
Tuple()
155+
} else {
156+
Abort(14566554180833181696, string::into_bytes(string_utils::format3<0x1::string::String, T, T>(Borrow(Immutable)([97, 115, 115, 101, 114, 116, 105, 111, 110, 32, 96, 108, 101, 102, 116, 32, 61, 61, 32, 114, 105, 103, 104, 116, 96, 32, 102, 97, 105, 108, 101, 100, 58, 32, 123, 125, 10, 32, 32, 108, 101, 102, 116, 58, 32, 123, 125, 10, 32, 114, 105, 103, 104, 116, 58, 32, 123, 125]), string::utf8(message), $left, $right)))
157+
}
158+
}
159+
}
160+
private fun foo3<T,T0>(left: T,right: T,a: T0) {
161+
{
162+
let ($left: T, $right: T): (T, T) = Tuple(left, right);
163+
if Eq<T>($left, $right) {
164+
Tuple()
165+
} else {
166+
Abort(14566554180833181696, string::into_bytes(string_utils::format3<0x1::string::String, T, T>(Borrow(Immutable)([97, 115, 115, 101, 114, 116, 105, 111, 110, 32, 96, 108, 101, 102, 116, 32, 61, 61, 32, 114, 105, 103, 104, 116, 96, 32, 102, 97, 105, 108, 101, 100, 58, 32, 123, 125, 10, 32, 32, 108, 101, 102, 116, 58, 32, 123, 125, 10, 32, 114, 105, 103, 104, 116, 58, 32, 123, 125]), string_utils::format1<T0>(Borrow(Immutable)([97, 32, 61, 32, 123, 125]), a), $left, $right)))
167+
}
168+
}
169+
}
170+
private fun foo4<T,T0,T1>(left: T,right: T,a: T0,b: T1) {
171+
{
172+
let ($left: T, $right: T): (T, T) = Tuple(left, right);
173+
if Eq<T>($left, $right) {
174+
Tuple()
175+
} else {
176+
Abort(14566554180833181696, string::into_bytes(string_utils::format3<0x1::string::String, T, T>(Borrow(Immutable)([97, 115, 115, 101, 114, 116, 105, 111, 110, 32, 96, 108, 101, 102, 116, 32, 61, 61, 32, 114, 105, 103, 104, 116, 96, 32, 102, 97, 105, 108, 101, 100, 58, 32, 123, 125, 10, 32, 32, 108, 101, 102, 116, 58, 32, 123, 125, 10, 32, 114, 105, 103, 104, 116, 58, 32, 123, 125]), string_utils::format2<T0, T1>(Borrow(Immutable)([97, 32, 61, 32, 123, 125, 44, 32, 98, 32, 61, 32, 123, 125]), a, b), $left, $right)))
177+
}
178+
}
179+
}
180+
private fun foo5<T,T0,T1,T2>(left: T,right: T,a: T0,b: T1,c: T2) {
181+
{
182+
let ($left: T, $right: T): (T, T) = Tuple(left, right);
183+
if Eq<T>($left, $right) {
184+
Tuple()
185+
} else {
186+
Abort(14566554180833181696, string::into_bytes(string_utils::format3<0x1::string::String, T, T>(Borrow(Immutable)([97, 115, 115, 101, 114, 116, 105, 111, 110, 32, 96, 108, 101, 102, 116, 32, 61, 61, 32, 114, 105, 103, 104, 116, 96, 32, 102, 97, 105, 108, 101, 100, 58, 32, 123, 125, 10, 32, 32, 108, 101, 102, 116, 58, 32, 123, 125, 10, 32, 114, 105, 103, 104, 116, 58, 32, 123, 125]), string_utils::format3<T0, T1, T2>(Borrow(Immutable)([97, 32, 61, 32, 123, 125, 44, 32, 98, 32, 61, 32, 123, 125, 44, 32, 99, 32, 61, 32, 123, 125]), a, b, c), $left, $right)))
187+
}
188+
}
189+
}
190+
private fun foo6<T,T0,T1,T2,T3>(left: T,right: T,a: T0,b: T1,c: T2,d: T3) {
191+
{
192+
let ($left: T, $right: T): (T, T) = Tuple(left, right);
193+
if Eq<T>($left, $right) {
194+
Tuple()
195+
} else {
196+
Abort(14566554180833181696, string::into_bytes(string_utils::format3<0x1::string::String, T, T>(Borrow(Immutable)([97, 115, 115, 101, 114, 116, 105, 111, 110, 32, 96, 108, 101, 102, 116, 32, 61, 61, 32, 114, 105, 103, 104, 116, 96, 32, 102, 97, 105, 108, 101, 100, 58, 32, 123, 125, 10, 32, 32, 108, 101, 102, 116, 58, 32, 123, 125, 10, 32, 114, 105, 103, 104, 116, 58, 32, 123, 125]), string_utils::format4<T0, T1, T2, T3>(Borrow(Immutable)([97, 32, 61, 32, 123, 125, 44, 32, 98, 32, 61, 32, 123, 125, 44, 32, 99, 32, 61, 32, 123, 125, 44, 32, 100, 32, 61, 32, 123, 125]), a, b, c, d), $left, $right)))
197+
}
198+
}
199+
}
200+
} // end 0x42::M
201+
202+
203+
============ bytecode verification succeeded ========

third_party/move/move-compiler-v2/tests/macros/assert_eq.move

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,27 +20,27 @@ module aptos_std::string_utils {
2020
}
2121

2222
module 0x42::M {
23-
fun foo1<T: drop>(left: T, right: T) {
23+
fun foo1<T: copy + drop>(left: T, right: T) {
2424
assert_eq!(left, right)
2525
}
2626

27-
fun foo2<T: drop>(left: T, right: T, message: vector<u8>) {
27+
fun foo2<T: copy + drop>(left: T, right: T, message: vector<u8>) {
2828
assert_eq!(left, right, message)
2929
}
3030

31-
fun foo3<T: drop, T0: drop>(left: T, right: T, a: T0) {
31+
fun foo3<T: copy + drop, T0: drop>(left: T, right: T, a: T0) {
3232
assert_eq!(left, right, b"a = {}", a)
3333
}
3434

35-
fun foo4<T: drop, T0: drop, T1: drop>(left: T, right: T, a: T0, b: T1) {
35+
fun foo4<T: copy + drop, T0: drop, T1: drop>(left: T, right: T, a: T0, b: T1) {
3636
assert_eq!(left, right, b"a = {}, b = {}", a, b)
3737
}
3838

39-
fun foo5<T: drop, T0: drop, T1: drop, T2: drop>(left: T, right: T, a: T0, b: T1, c: T2) {
39+
fun foo5<T: copy + drop, T0: drop, T1: drop, T2: drop>(left: T, right: T, a: T0, b: T1, c: T2) {
4040
assert_eq!(left, right, b"a = {}, b = {}, c = {}", a, b, c)
4141
}
4242

43-
fun foo6<T: drop, T0: drop, T1: drop, T2: drop, T3: drop>(left: T, right: T, a: T0, b: T1, c: T2, d: T3) {
43+
fun foo6<T: copy + drop, T0: drop, T1: drop, T2: drop, T3: drop>(left: T, right: T, a: T0, b: T1, c: T2, d: T3) {
4444
assert_eq!(left, right, b"a = {}, b = {}, c = {}, d = {}", a, b, c, d)
4545
}
4646
}

0 commit comments

Comments
 (0)