File tree 1 file changed +66
-0
lines changed
1 file changed +66
-0
lines changed Original file line number Diff line number Diff line change
1
+ // Sanity-check the code examples that appear in the object system
2
+ // documentation.
3
+
4
+ fn main ( ) {
5
+
6
+ // Ref.Item.Obj
7
+ obj counter ( state: @mutable int) {
8
+ fn incr ( ) {
9
+ * state += 1 ;
10
+ }
11
+ fn get ( ) -> int {
12
+ ret * state;
13
+ }
14
+ }
15
+
16
+ let c: counter = counter ( @mutable 1 ) ;
17
+
18
+ c. incr ( ) ;
19
+ c. incr ( ) ;
20
+ assert c. get ( ) == 3 ;
21
+
22
+ obj my_obj( ) {
23
+ fn get ( ) -> int {
24
+ ret 3 ;
25
+ }
26
+ fn foo ( ) -> int {
27
+ let c = self . get ( ) ;
28
+ ret c + 2 ; // returns 5
29
+ }
30
+ }
31
+
32
+ let o = my_obj ( ) ;
33
+ assert o. foo ( ) == 5 ;
34
+
35
+ // Ref.Type.Obj
36
+ type taker = obj {
37
+ fn take ( int ) ;
38
+ } ;
39
+
40
+ obj adder( x: @mutable int) {
41
+ fn take ( y : int ) {
42
+ * x += y;
43
+ }
44
+ }
45
+
46
+ obj sender( c: chan[ int] ) {
47
+ fn take ( z : int ) {
48
+ c <| z;
49
+ }
50
+ }
51
+
52
+ fn give_ints ( t : taker ) {
53
+ t. take ( 1 ) ;
54
+ t. take ( 2 ) ;
55
+ t. take ( 3 ) ;
56
+ }
57
+
58
+ let p: port[ int ] = port ( ) ;
59
+
60
+ let t1: taker = adder ( @mutable 0 ) ;
61
+ let t2: taker = sender ( chan ( p) ) ;
62
+
63
+ give_ints ( t1) ;
64
+ give_ints ( t2) ;
65
+ }
66
+
You can’t perform that action at this time.
0 commit comments