Home
   News
   About the project
   Language
   Compiler download
   Test suite
   Blog on the programming model
   Zonnon @ OCP Forum
   Collection of examples

TEST: 0803T02-T

category

status

Compilation and execution results for Windows (first) and Mono (second)
PASSED Compiler: 1.2.8.0
Date, time: 2010.08.06, 18:06
Compilation: SUCCESS
Execution: SUCCESS
PASSED Compiler: 1.2.8.0
Date, time: 2010.08.06, 22:22
Compilation: SUCCESS
Execution: SUCCESS
(0, 0) Assembly reference not resolved: System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a.

code

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
59  
60  
61  
62  
63  
64  
65  
66  
67  
68  
69  
70  
71  
72  
73  
74  
75  
76  
77  
78  
79  
80  
81  
82  
83  
84  
85  
86  
87  
88  
89  
90  
91  
92  
93  
94  
95  
96  
97  
98  
99  
100  
101  
102  
103  
104  
105  
106  
107  
108  
109  
110  
111  
112  
113  
114  
115  
116  
117  
118  
119  
120  
121  
122  
123  
124  
125  
126  
127  
128  
129  
130  
131  
132  
133  
134  
135  
136  
137  
138  
139  
140  
141  
142  
143  
144  
145  
146  
147  
148  
149  
150  
151  
152  
153  
154  
155  
156  
157  
158  
159  
160  
161  
162  
163  
164  
165  
166  
167  
 (**   
  * 8. Procedure declaration and formal parameters  
  *  
  * Positive test: Overloading  
  *)  
   
 module Main;  
 import  
       System.Byte    as Card8,        
       System.UInt16  as Card16,       
       System.UInt32  as Card32,       
       System.UInt64  as Card64,       
       System.Int16   as Int16,        
       System.Int32   as Int32,        
       System.Int64   as Int64,      
       System.Single  as Real32,      
       System.Double  as Real64,     
       System.SByte   as Int8;  
   
 type {public} Number = object  
 var {public} val: Real64;  
 end Number;  
   
    (* assignment *)  
   
    operator {public} ":=" (var l : Number; r : Real32);  
    begin  
       writeln(" assign");  
    end ":=";  
   
    operator {public} ":=" (var l : Number; r : Card64);  
    begin  
       writeln(" assign");  
    end ":=";  
   
    operator {public} ":=" (var l : Number; r : Card32);  
    begin  
       writeln(" assign");  
    end ":=";  
   
    operator {public} ":=" (var l : Number; r : Card16);  
    begin  
       writeln(" assign");  
    end ":=";  
   
    operator {public} ":=" (var l : Number; r : Card8);  
    begin  
       writeln(" assign");  
       Real64ToNumber(d);        
    end ":=";  
   
    operator {public} ":=" (var l : Number; r : Int64);  
    begin  
       writeln(" assign");  
    end ":=";  
   
    operator {public} ":=" (var l : Number; r : Int32);  
    begin  
       writeln(" assign");  
    end ":=";  
   
    operator {public} ":=" (var l : Number; r : Int16);  
    begin  
       writeln(" assign");  
    end ":=";  
   
    operator {public} ":=" (var l : Number; r : Int8);  
    begin  
       writeln(" assign");  
    end ":=";  
   
    operator {public} ":=" (var l : Number; r : string);  
    begin  
       writeln(" assign");  
    end ":=";  
   
 operator {public} "-" (arg1:Number; arg2: Int32): Number;  
 begin  
      writeln("int minus");  
      arg1.val := arg1.val - Int64(arg2);  
      return arg1;  
 end "-";  
   
 operator {public} "-" (arg1:Number; arg2: boolean): Number;  
 begin  
      return arg1;  
 end "-";  
   
 operator {public} "-" (arg1:Number; arg2: Int64): Number;  
 begin  
      writeln("double minus");  
      arg1.val := arg1.val - arg2;  
      return arg1;  
 end "-";  
   
 operator {public} "-" (arg1:Number; arg2: Number): Number;  
 begin  
      writeln("number minus");  
      arg1.val := arg1.val - arg2.val;  
      return arg1;  
 end "-";  
   
   
 operator {public} "+" (arg1:Number; arg2: Int32): Number;  
 begin  
      writeln("int plus");  
      arg1.val := arg1.val + Real64(arg2);  
      return arg1;  
 end "+";  
   
 operator {public} "+" (arg1:Number; arg2: boolean): Number;  
 begin  
      return arg1;  
 end "+";  
   
 operator {public} "+" (arg1:Number; arg2: Real64): Number;  
 begin  
      writeln("double plus");  
      arg1.val := arg1.val + arg2;  
      return arg1;  
 end "+";  
   
 operator {public} "+" (arg1:Number; arg2: Real32): Number;  
 begin  
      writeln("double plus");  
      arg1.val := arg1.val + arg2;  
      return arg1;  
 end "+";  
   
 operator {public} "+" (arg1:Number; arg2: Number): Number;  
 begin  
      writeln("number plus");  
      arg1.val := arg1.val + arg2.val;  
      return arg1;  
 end "+";  
   
 operator {public} "+" (arg2: Int32; arg1:Number): Number;  
 begin  
      writeln("f int plus");  
      arg1.val := arg1.val + Real64(arg2);  
      return arg1;  
 end "+";  
   
 operator {public} "+" (arg2: boolean; arg1:Number): Number;  
 begin  
      return arg1;  
 end "+";  
   
 operator {public} "+" (arg2: Real64; arg1:Number): Number;  
 begin  
      writeln("f double plus");  
      arg1.val := arg1.val + arg2;  
      return arg1;  
 end "+";  
   
    procedure {private} Real64ToNumber (x : Real64) : Number;  
    var  
       n : Number;  
    begin        
       return n  
    end Real64ToNumber;  
   
 var n, k: Number;  
      d: Real64;  
 begin  
      halt(1);  
 end Main. 

information

  • PASSED - overall positive decision about the test
  • NOT PASSED - overall negative decision about the test
  • SUCCESS - compilation / execution successful
  • ERROR - compilation failed with normal syntax or semantic error
  • ABORT - compilation failed because of an internal compiler error
  • NOT RUN - the test was not / not supposed to be executed
  • FAIL - execution failed
Copyright © 2010 ETH Zurich, Switzerland