List of Oberon Errors and Warnings

Niklaus Wirth, Régis Crelier, Michael Franz, Thomas Kistler / 20.11.95


1. Incorrect Use of Language Oberon

0 undeclared identifier

1 multiply defined identifier

2 illegal character in number

3 illegal character in string

4 identifier does not match procedure name

5 comment not closed

9 "=" expected

12 type definition starts with incorrect symbol

13 factor starts with incorrect symbol

14 statement starts with incorrect symbol

15 declaration followed by incorrect symbol

16 MODULE expected

18 "." missing

19 "," missing

20 ":" missing

22 ")" missing

23 "]" missing

24 "}" missing

25 OF missing

26 THEN missing

27 DO missing

28 TO missing

30 "(" missing

34 ":=" missing

35 "," or OF expected

38 identifier expected

39 ";" missing

41 END missing

44 UNTIL missing

46 EXIT not within loop statement

47 illegally marked identifier

50 expression should be constant

51 constant not an integer

52 identifier does not denote a type

53 identifier does not denote a record type

54 result type of procedure is not a basic type

55 procedure call of a function

56 assignment to non_variable

57 pointer not bound to record or array type

58 recursive type definition

59 illegal open array parameter

60 wrong type of case label

61 inadmissible type of case label

62 case label defined more than once

63 illegal value of constant

64 more actual than formal parameters

65 fewer actual than formal parameters

66 element types of actual array and formal open array differ

67 actual parameter corresponding to open array is not an array

68 control variable must be integer

69 parameter must be an integer constant

70 pointer or VAR record required as formal receiver

71 pointer expected as actual receiver

72 procedure must be bound to a record of the same scope

73 procedure must have level 0

74 procedure unknown in base type

75 invalid call of base procedure

76 this variable (field) is read only

77 object is not a record

78 dereferenced object is not a variable

79 indexed object is not a variable

80 index expression is not an integer

81 index out of specified bounds

82 indexed variable is not an array

83 undefined record field

84 dereferenced variable is not a pointer

85 guard or test type is not an extension of variable type

86 guard or testtype is not a pointer

87 guarded or tested variable is neither a pointer nor a VAR_parameter record

88 open array not allowed as variable, record field or array element

92 operand of IN not an integer, or not a set

93 set element type is not an integer

94 operand of & is not of type BOOLEAN

95 operand of OR is not of type BOOLEAN

96 operand not applicable to (unary) +

97 operand not applicable to (unary) -

98 operand of ~ is not of type BOOLEAN

99 ASSERT fault

100 incompatible operands of dyadic operator

101 operand type inapplicable to *

102 operand type inapplicable to /

103 operand type inapplicable to DIV

104 operand type inapplicable to MOD

105 operand type inapplicable to +

106 operand type inapplicable to -

107 operand type inapplicable to = or #

108 operand type inapplicable to relation

109 overriding method must be exported

110 operand is not a type

111 operand inapplicable to (this) function

112 operand is not a variable

113 incompatible assignment

114 string too long to be assigned

115 parameter doesn't match

116 number of parameters doesn't match

117 result type doesn't match

118 export mark doesn't match with forward declaration

119 redefinition textually precedes procedure bound to base type

120 type of expression following IF, WHILE, UNTIL or ASSERT is not BOOLEAN

121 called object is not a procedure (or is an interrupt procedure)

122 actual VAR_parameter is not a variable

123 type of actual parameter is not identical with that of formal VAR_parameter

124 type of result expression differs from that of procedure

125 type of case expression is neither INTEGER nor CHAR

126 this expression cannot be a type or a procedure

127 illegal use of object

128 unsatisfied forward reference

129 unsatisfied forward procedure

130 WITH clause does not specify a variable

131 LEN not applied to array

132 dimension in LEN too large or negative

135 SYSTEM not imported

136 SYSTEM must not be imported by portable modules

140 Oberon(-1) language supports dynamic arrays only in parameter lists

141 imported module exports dynamic array

142 Oberon(-1) language does not support type_bound procedures

143 imported module exports type_bound procedure

150 key inconsistency of imported module

151 incorrect symbol file

152 symbol file of imported module not found

154 recursive import not allowed

155 generation of new symbol file not allowed


2. Limitations of MacOberon Implementation

200 not yet implemented

201 lower bound of set range greater than higher bound

202 set element greater than MAX(SET) or less than 0

203 number too large

204 product too large

205 division by zero

206 sum too large

207 difference too large

208 overflow in arithmetic shift

209 case range too large

210 code too long

211 jump distance too large

213 too many cases in case statement

215 not enough registers: simplify expression

216 not enough floating_point registers: simplify expression

218 illegal value of parameter (20 <= p < 256)

219 illegal value of parameter (0 <= p < 16)

220 illegal value of parameter

221 too many pointers in a record

222 too many global pointers

223 too many record types

224 too many pointer types

226 too many global procedures

227 too many imported modules

228 too many exported structures

229 too many nested records for import

230 too many strings in module

233 record extension hierarchy too high

236 too many HALTs

240 identifier too long

241 string too long

242 address overflow

250 too many different global variables in module (combine into records)

252 too many local variables (32k max)

260 in_line code procedures must consist of even number of bytes

401 Toolbox CHAR data type not supported (use INTEGER) / Toolbox does not accept REAL or LONGREAL arguments

402 dynamic arrays may not be passed to this kind of procedure

403 type tests cannot be performed on untraced pointer types

404 Oberon cannot allocate storage for untraced pointer types; use the memory manager function _NewPtr instead

501 SIZE function not portable (result is machine dependent)

502 SYSTEM is not portable (results of SYSTEM-calls are machine dependent)

503 import of code-procedures not portable

504 methods not implemented

3. Warnings (reported by Compiler or by Analyzer)

301 implicit type cast

302 guarded variable can be side_effected

303 open array (or pointer to array) containing pointers

801 destination in assignment already has this value

900 never used

901 never set

902 used before set

903 set but never used

904 used as varpar, possibly not set

905 also declared in outer scope

906 access/assignment to intermediate

907 redefinition

908 new definition

909 statement after RETURN/EXIT

910 for loop variable set

911 implied type guard in record assignment

912 call might depend on evaluation sequence of params.

1000+ spurious compiler misbehaviour, please notify