|
@@ -1321,5 +1321,36 @@ exports.suite = {
|
|
|
["NEW Abstract()", "cannot instantiate 'Abstract' because it has abstract method(s): abstract"],
|
|
|
["NEW undeclared()", "undeclared identifier: 'undeclared'"]
|
|
|
)
|
|
|
- )
|
|
|
+ ),
|
|
|
+"map": {
|
|
|
+ "declaration": testWithGrammar(
|
|
|
+ grammar.declarationSequence,
|
|
|
+ pass("TYPE M = MAP INTEGER TO INTEGER;",
|
|
|
+ "TYPE M = MAP INTEGER TO PROCEDURE;",
|
|
|
+ "TYPE M = MAP INTEGER TO PROCEDURE();",
|
|
|
+ "TYPE M = MAP INTEGER TO PROCEDURE(): INTEGER;",
|
|
|
+ "TYPE M = MAP INTEGER TO PROCEDURE(): M;",
|
|
|
+ "TYPE M = MAP STRING TO RECORD END;",
|
|
|
+ "TYPE M = MAP STRING TO POINTER TO RECORD END;",
|
|
|
+ "TYPE M = MAP INTEGER TO MAP INTEGER TO INTEGER;",
|
|
|
+ "TYPE M = MAP INTEGER TO M;",
|
|
|
+ "TYPE T = RECORD field: MAP INTEGER TO T; END;",
|
|
|
+ "VAR v: MAP SET TO STRING;"
|
|
|
+ ),
|
|
|
+ fail(["TYPE T = RECORD END; M = MAP T TO INTEGER;", "cannot use 'T' as a key of the map, numeric type or SET or STRING or CHAR expected"],
|
|
|
+ ["TYPE M = MAP RECORD END TO INTEGER;", "cannot use 'anonymous RECORD' as a key of the map, numeric type or SET or STRING or CHAR expected"],
|
|
|
+ ["TYPE M = MAP ARRAY 3 OF INTEGER TO INTEGER;", "cannot use 'ARRAY 3 OF INTEGER' as a key of the map, numeric type or SET or STRING or CHAR expected"],
|
|
|
+ ["TYPE M = MAP ARRAY 3 OF CHAR TO INTEGER;", "cannot use 'ARRAY 3 OF CHAR' as a key of the map, numeric type or SET or STRING or CHAR expected"],
|
|
|
+ ["TYPE M = MAP ARRAY * OF INTEGER TO INTEGER;", "cannot use 'ARRAY * OF INTEGER' as a key of the map, numeric type or SET or STRING or CHAR expected"],
|
|
|
+ ["TYPE M = MAP MAP INTEGER TO INTEGER TO INTEGER;", "cannot use 'MAP INTEGER TO INTEGER' as a key of the map, numeric type or SET or STRING or CHAR expected"],
|
|
|
+ ["TYPE P = POINTER TO MAP INTEGER TO INTEGER;", "RECORD is expected as a POINTER base type, got 'MAP INTEGER TO INTEGER'"],
|
|
|
+ ["TYPE M = MAP POINTER TO RECORD END TO BOOLEAN;", "cannot use 'POINTER TO anonymous RECORD' as a key of the map, numeric type or SET or STRING or CHAR expected"],
|
|
|
+ ["TYPE M = MAP PROCEDURE TO PROCEDURE;", "cannot use 'PROCEDURE' as a key of the map, numeric type or SET or STRING or CHAR expected"],
|
|
|
+ ["TYPE M = MAP INTEGER TO Undeclared;", "undeclared identifier: 'Undeclared'"],
|
|
|
+ ["TYPE M = MAP M TO INTEGER;", "cannot use 'M' as a key of the map, numeric type or SET or STRING or CHAR expected"],
|
|
|
+ ["TYPE T = RECORD field: MAP T TO INTEGER; END", "cannot use 'T' as a key of the map, numeric type or SET or STRING or CHAR expected"],
|
|
|
+ ["VAR MAP: INTEGER;", "not parsed"]
|
|
|
+ )
|
|
|
+ )
|
|
|
+ }
|
|
|
};
|