Graydon Hoare | ce72993 | 2011-06-15 18:19:50 | [diff] [blame] | 1 | |
2 | |||||
3 | |||||
Brian Anderson | 1326d42 | 2011-04-02 23:32:34 | [diff] [blame] | 4 | // -*- rust -*- |
5 | |||||
Brian Anderson | ecaf9e3 | 2012-08-06 19:34:08 | [diff] [blame] | 6 | // Tests for match as expressions resulting in structural types |
Brian Anderson | 1326d42 | 2011-04-02 23:32:34 | [diff] [blame] | 7 | fn test_rec() { |
Tim Chevalier | e9622f0 | 2012-08-23 21:44:58 | [diff] [blame] | 8 | let rs = match true { true => {i: 100}, _ => fail }; |
Patrick Walton | 9653436 | 2012-08-27 23:26:35 | [diff] [blame^] | 9 | assert (rs.i == 100); |
10 | } | ||||
11 | |||||
12 | enum mood { happy, sad, } | ||||
13 | impl mood : cmp::Eq { | ||||
14 | pure fn eq(&&other: mood) -> bool { | ||||
15 | (self as uint) == (other as uint) | ||||
16 | } | ||||
Brian Anderson | 1326d42 | 2011-04-02 23:32:34 | [diff] [blame] | 17 | } |
18 | |||||
19 | fn test_tag() { | ||||
Brian Anderson | ecaf9e3 | 2012-08-06 19:34:08 | [diff] [blame] | 20 | let rs = match true { true => { happy } false => { sad } }; |
Marijn Haverbeke | 781a265 | 2011-06-25 15:45:49 | [diff] [blame] | 21 | assert (rs == happy); |
Brian Anderson | 1326d42 | 2011-04-02 23:32:34 | [diff] [blame] | 22 | } |
23 | |||||
Brian Anderson | 518dc52 | 2011-08-19 22:16:48 | [diff] [blame] | 24 | fn main() { test_rec(); test_tag(); } |