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

TEST: 060303T06-X

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: ERROR
Execution: NOT RUN
(67, 18) Variable 'a' cannot be passed by reference in an operator. Remove 'var' before the arguments
PASSED Compiler: 1.2.8.0
Date, time: 2010.08.06, 22:22
Compilation: ERROR
Execution: NOT RUN
(67, 18) Variable 'a' cannot be passed by reference in an operator. Remove 'var' before the arguments
(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  
 (**   
  * 6. Expression.  
  * 6.3. User Defined Operators and Operator Declaration.  
  * 6.3.3. New operator declaration.  
  *  
  * Negative test: operators can not have arguments by reference  
  *)  
   
   
 module Main;  
   
 definition De;  
      procedure Hi;   
 end De;  
 var globalOK: integer;  
 type {value} OA = object  
 var {public} val:integer;  
 begin  
  writeln("this should be called");  
  globalOK :=597;  
 end OA;  
   
 type {value} OB = object implements De, []  
     var o: OA;  
      procedure {public} Hi implements De.Hi;  
      begin  
           writeln("Hello");  
      end Hi;  
        
      procedure {public} Get(i: integer):OA implements [].Get;  
      begin  
           return o;  
      end Get;  
        
      procedure {public} Set(i:integer; val: OA) implements [].Set;  
      begin  
          o:= val;  
           writeln("Set", i, o.val);  
      end Set;  
        
 end OB;  
   
 var a: OB;  
      o: object{De};  
   
 procedure halt(i: integer);  
 begin  
      if i=1 then  
           writeln("success")  
      else  
           writeln("failure")  
      end; readln  
 end halt;       
   
 var oa: OA;       
 (*  
 begin  
      (*a := new OB;*)  
      o := a;  
      oa.val := 5;  
      a[1] := oa;  
      o.Hi;  
      writeln("C: ", a[2].val);  
      if (a[2].val = 5) & (globalOK=597) then halt(1) else halt(0) end  
 end Main.  
 *)  
 operator "+"(var a,b: OA):OA;  
 begin  
      writeln("assignment is called");  
      return a;  
 end "+";  
 begin  
      oa := a[1] + oa;  
      writeln("C: ", oa.val);  
      if (a[2].val = 5) & (globalOK=597) then halt(1) else halt(0) end  
 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