41 lines
		
	
	
		
			709 B
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			709 B
		
	
	
	
		
			Plaintext
		
	
	
	
| use aiken/builtin
 | |
| 
 | |
| pub type Thing {
 | |
|   wow: Int,
 | |
| }
 | |
| 
 | |
| test assert_1() {
 | |
|   assert thing: Thing = builtin.constr_data(0, [builtin.i_data(1)])
 | |
| 
 | |
|   thing.wow == 1
 | |
| }
 | |
| 
 | |
| fn cast_to_thing(x: Data) -> Thing {
 | |
|   assert x: Thing = x
 | |
| 
 | |
|   x
 | |
| }
 | |
| 
 | |
| test assert_2() {
 | |
|   let thing = Thing { wow: 1 }
 | |
| 
 | |
|   let still_thing = cast_to_thing(thing)
 | |
| 
 | |
|   still_thing.wow == 1
 | |
| }
 | |
| // should not typecheck
 | |
| // test unlift_data_without_assert_1() {
 | |
| //   let thing: Thing = builtin.constr_data(0, [builtin.i_data(1)])
 | |
| //   thing.wow == 1
 | |
| // }
 | |
| 
 | |
| // should not typecheck
 | |
| // fn bad_cast(x: Thing) -> Int {
 | |
| //   x.wow
 | |
| // }
 | |
| 
 | |
| // test unlift_data_without_assert_2() {
 | |
| //   let thing = builtin.constr_data(0, [builtin.i_data(1)])
 | |
| //   bad_cast(thing) == 1
 | |
| // }
 |