PR modula2/112893 detect procedure address incompatible with cardinal in iso
In ISO m2 the type cardinal is assignment incompatible with address (but it is allowed in PIM). The patch also extends the type checker to include procedures (which appear as having GetType () = address). At some point this should be be improved to use a pointer to proc type. Perhaps in the next stage1. For now this will catch procedures being passed as actual parameters into a formal cardinal parameter in ISO m2 (for example). gcc/m2/ChangeLog: PR modula2/112893 * gm2-compiler/M2Base.mod (Ass): Extend array to include proc row and column. Allow PIM to assign cardinal variables to address variables. (Expr): Ditto. (Comp): Ditto. * gm2-compiler/M2Check.mod (getSType): New procedure function. Replace all occurances of GetSType with getSType. * gm2-compiler/M2GenGCC.mod (CodeParam): Rewrite format specifier error message. * gm2-compiler/M2Quads.mod (CheckProcTypeAndProcedure): Add tokno parameter. * gm2-compiler/M2Range.def (InitTypesParameterCheck): Add tokno parameter. (InitParameterRangeCheck): Add tokno parameter. Remove EXPORT QUALIFIED list. (InitParameterRangeCheck): Add tokno parameter. * gm2-compiler/M2Range.mod (InitTypesParameterCheck): Add tokno parameter and pass tokno to PutRangeParam. (InitParameterRangeCheck): Add tokno parameter and pass tokno to PutRangeParam. (PutRangeParam): Add tokno parameter and assign to tokenNo. (FoldTypeParam): Rewrite format string. gcc/testsuite/ChangeLog: PR modula2/112893 * gm2/iso/fail/proccard.mod: New test. * gm2/pim/pass/proccard.mod: New test. Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
This commit is contained in:
parent
abded9bf3e
commit
f8c8aebc59
8 changed files with 254 additions and 235 deletions
|
@ -2480,7 +2480,6 @@ BEGIN
|
|||
END ;
|
||||
INC(x) |
|
||||
|
||||
|
||||
ELSE
|
||||
InternalError ('unexpected specifier')
|
||||
END ;
|
||||
|
@ -2544,84 +2543,85 @@ BEGIN
|
|||
(*
|
||||
1 p w
|
||||
|
||||
N W B A C I S L C S L P E R S L S O L R Z I I I I C C C C W W W R R R R S S S C S L C C C C C R A
|
||||
u o y d h n h o a h o t n e h o e p o t t n n n n a a a a o o o e e e e e e e o h o o o o o t e r
|
||||
l r t d a t o n r o n r u a o n t a c y y t t t t r r r r r r r a a a a t t t m o n m m m m y c r
|
||||
S d e r r e r g d r g m l r g q p p 8 1 3 6 d d d d d d d l l l l 8 1 3 p r g p p p p p a
|
||||
y e g t i i t c t r u e e 6 2 4 8 1 3 6 1 3 6 3 6 9 1 6 2 l t C l l l l e y
|
||||
m s e i n n c a r e e 6 2 4 6 2 4 2 4 6 2 e C o e e e e
|
||||
C W B A C I S L C S L P E R S L S O L R Z I I I I C C C C W W W R R R R S S S C S L C C C C C R A P
|
||||
o o y d h n h o a h o t n e h o e p o t t n n n n a a a a o o o e e e e e e e o h o o o o o t e r r
|
||||
n r t d a t o n r o n r u a o n t a c y y t t t t r r r r r r r a a a a t t t m o n m m m m y c r o
|
||||
s d e r r e r g d r g m l r g q p p 8 1 3 6 d d d d d d d l l l l 8 1 3 p r g p p p p p a c
|
||||
t e g t i i t c t r u e e 6 2 4 8 1 3 6 1 3 6 3 6 9 1 6 2 l t C l l l l e y
|
||||
s e i n n c a r e e 6 2 4 6 2 4 2 4 6 2 e C o e e e e
|
||||
s r n t a a r e a 8 x o m x x x x
|
||||
t l r d a l m p 3 6 9 1
|
||||
d l p l 2 4 6 2
|
||||
l e 8
|
||||
e x
|
||||
x
|
||||
------------------------------------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------------------
|
||||
2
|
||||
P
|
||||
W
|
||||
*)
|
||||
A(const , 'T T T T T T T T T T T T T T T T T T T F T T T T T T T T T T T T F F F F F F F F F F F F F F F F F') ;
|
||||
A(word , '. T S S S 2 S S 2 S S S 2 S S S T T S S T S S S S S S S S S S S S S S S S S S S S S S S S S T T T') ;
|
||||
A(byte , '. . T S 2 S S S S S S S S S S S T T S S T S S S S S S S S S S S S S S S S S S S S S S S S S T T T') ;
|
||||
A(address , '. . . T F F F F F F F 2 F F F F F 2 2 F T F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
A(chr , '. . . . T F F F F F F F F F F F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
A(normint , '. . . . . T T T T T T F F F F F F F F F T T T T T T T T T F F F F F F F F F F F F F F F F F F F F') ;
|
||||
A(shortint , '. . . . . . T T T T T F F F F F F F F F T T T T T T T T T F F F F F F F F F F F F F F F F F F F F') ;
|
||||
A(longint , '. . . . . . . T T T T F F F F F F F F F T T T T T T T T T F F F F F F F F F F F F F F F F F F F F') ;
|
||||
A(normcard , '. . . . . . . . T T T F F F F F F F F F T T T T T T T T T F F F F F F F F F F F F F F F F F F F F') ;
|
||||
A(shortcard , '. . . . . . . . . T T F F F F F F F F F T T T T T T T T T F F F F F F F F F F F F F F F F F F F F') ;
|
||||
A(longcard , '. . . . . . . . . . T F F F F F F F F F T T T T T T T T T F F F F F F F F F F F F F F F F F F F F') ;
|
||||
A(pointer , '. . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
A(enum , '. . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F T T F F F F F F F F F F F F F F F') ;
|
||||
A(real , '. . . . . . . . . . . . . T T T F F F 2 F F F F F F F F F F F F T T T T F F F F F F F F F F F F F') ;
|
||||
A(shortreal , '. . . . . . . . . . . . . . T T F F F 2 F F F F F F F F F F F F T T T T F F F F F F F F F F F F F') ;
|
||||
A(longreal , '. . . . . . . . . . . . . . . T F F F 2 F F F F F F F F F F F F T T T T F F F F F F F F F F F F F') ;
|
||||
A(set , '. . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
A(opaque , '. . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
A(loc , '. . . . . . . . . . . . . . . . . . T F F T F F F T F F F F F F F F F F S F F F F F F F F F F T T') ;
|
||||
A(rtype , '. . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F 1 1 1 1 F F F F F F F F F F F F F') ;
|
||||
A(ztype , '. . . . . . . . . . . . . . . . . . . . T T T T T T T T T T T T F F F F F F F F F F F F F F F F F') ;
|
||||
A(int8 , '. . . . . . . . . . . . . . . . . . . . . T T T T T T T T F F F F F F F F F F F F F F F F F F F F') ;
|
||||
A(int16 , '. . . . . . . . . . . . . . . . . . . . . . T T T T T T T T F F F F F F F F F F F F F F F F F F F') ;
|
||||
A(int32 , '. . . . . . . . . . . . . . . . . . . . . . . T T T T T T F T T F F F F F F F F F F F F F F F F F') ;
|
||||
A(int64 , '. . . . . . . . . . . . . . . . . . . . . . . . T T T T T F F F F F F F F F F F F F F F F F F F F') ;
|
||||
A(card8 , '. . . . . . . . . . . . . . . . . . . . . . . . . T T T T T F F F F F F F F F F F F F F F F F F F') ;
|
||||
A(card16 , '. . . . . . . . . . . . . . . . . . . . . . . . . . T T T F F F F F F F F F F F F F F F F F F F F') ;
|
||||
A(card32 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . T T F T F F F F F F F F F F F F F F F F F F') ;
|
||||
A(card64 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F T F F F F F F F F F F F F F F F F F') ;
|
||||
A(word16 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F') ;
|
||||
A(word32 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F T F F F F F F F F F F F F F F F F') ;
|
||||
A(word64 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F T F F F F F F F F F F F F F F F') ;
|
||||
A(real32 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F') ;
|
||||
A(real64 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F') ;
|
||||
A(real96 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F') ;
|
||||
A(real128 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F') ;
|
||||
A(set8 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F') ;
|
||||
A(set16 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F') ;
|
||||
A(set32 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F') ;
|
||||
A(complex , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F T F F') ;
|
||||
A(shortcomplex, '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F T F F') ;
|
||||
A(longcomplex , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F T F F') ;
|
||||
A(complex32 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F T F F') ;
|
||||
A(complex64 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F T F F') ;
|
||||
A(complex96 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F T F F') ;
|
||||
A(complex128 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T T F F') ;
|
||||
A(ctype , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F') ;
|
||||
A(rec , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F') ;
|
||||
A(array , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T') ;
|
||||
A(const , 'T T T T T T T T T T T T T T T T T T T F T T T T T T T T T T T T F F F F F F F F F F F F F F F F F F') ;
|
||||
A(word , '. T S S S 2 S S 2 S S S 2 S S S T T S S T S S S S S S S S S S S S S S S S S S S S S S S S S T T T F') ;
|
||||
A(byte , '. . T S 2 S S S S S S S S S S S T T S S T S S S S S S S S S S S S S S S S S S S S S S S S S T T T F') ;
|
||||
A(address , '. . . T F F F F P F F 2 F F F F F 2 2 F T F F F F F F F F F F F F F F F F F F F F F F F F F F F F T') ;
|
||||
A(chr , '. . . . T F F F F F F F F F F F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
A(normint , '. . . . . T T T T T T F F F F F F F F F T T T T T T T T T F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
A(shortint , '. . . . . . T T T T T F F F F F F F F F T T T T T T T T T F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
A(longint , '. . . . . . . T T T T F F F F F F F F F T T T T T T T T T F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
A(normcard , '. . . . . . . . T T T F F F F F F F F F T T T T T T T T T F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
A(shortcard , '. . . . . . . . . T T F F F F F F F F F T T T T T T T T T F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
A(longcard , '. . . . . . . . . . T F F F F F F F F F T T T T T T T T T F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
A(pointer , '. . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
A(enum , '. . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F T T F F F F F F F F F F F F F F F F') ;
|
||||
A(real , '. . . . . . . . . . . . . T T T F F F 2 F F F F F F F F F F F F T T T T F F F F F F F F F F F F F F') ;
|
||||
A(shortreal , '. . . . . . . . . . . . . . T T F F F 2 F F F F F F F F F F F F T T T T F F F F F F F F F F F F F F') ;
|
||||
A(longreal , '. . . . . . . . . . . . . . . T F F F 2 F F F F F F F F F F F F T T T T F F F F F F F F F F F F F F') ;
|
||||
A(set , '. . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
A(opaque , '. . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
A(loc , '. . . . . . . . . . . . . . . . . . T F F T F F F T F F F F F F F F F F S F F F F F F F F F F T T F') ;
|
||||
A(rtype , '. . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F 1 1 1 1 F F F F F F F F F F F F F F') ;
|
||||
A(ztype , '. . . . . . . . . . . . . . . . . . . . T T T T T T T T T T T T F F F F F F F F F F F F F F F F F F') ;
|
||||
A(int8 , '. . . . . . . . . . . . . . . . . . . . . T T T T T T T T F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
A(int16 , '. . . . . . . . . . . . . . . . . . . . . . T T T T T T T T F F F F F F F F F F F F F F F F F F F F') ;
|
||||
A(int32 , '. . . . . . . . . . . . . . . . . . . . . . . T T T T T T F T T F F F F F F F F F F F F F F F F F F') ;
|
||||
A(int64 , '. . . . . . . . . . . . . . . . . . . . . . . . T T T T T F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
A(card8 , '. . . . . . . . . . . . . . . . . . . . . . . . . T T T T T F F F F F F F F F F F F F F F F F F F F') ;
|
||||
A(card16 , '. . . . . . . . . . . . . . . . . . . . . . . . . . T T T F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
A(card32 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . T T F T F F F F F F F F F F F F F F F F F F F') ;
|
||||
A(card64 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F T F F F F F F F F F F F F F F F F F F') ;
|
||||
A(word16 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F') ;
|
||||
A(word32 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F T F F F F F F F F F F F F F F F F F') ;
|
||||
A(word64 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F T F F F F F F F F F F F F F F F F') ;
|
||||
A(real32 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F') ;
|
||||
A(real64 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F') ;
|
||||
A(real96 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F') ;
|
||||
A(real128 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F') ;
|
||||
A(set8 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F') ;
|
||||
A(set16 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F') ;
|
||||
A(set32 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F') ;
|
||||
A(complex , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F T F F F') ;
|
||||
A(shortcomplex, '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F T F F F') ;
|
||||
A(longcomplex , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F T F F F') ;
|
||||
A(complex32 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F T F F F') ;
|
||||
A(complex64 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F T F F F') ;
|
||||
A(complex96 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F T F F F') ;
|
||||
A(complex128 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T T F F F') ;
|
||||
A(ctype , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F') ;
|
||||
A(rec , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F') ;
|
||||
A(array , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F') ;
|
||||
A(procedure , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T') ;
|
||||
(* Expression compatibility *)
|
||||
|
||||
|
||||
(*
|
||||
1 p w
|
||||
|
||||
N W B A C I S L C S L P E R S L S O L R Z I I I I C C C C W W W R R R R S S S C S L C C C C C R A
|
||||
u o y d h n h o a h o t n e h o e p o t t n n n n a a a a o o o e e e e e e e o h o o o o o t e r
|
||||
l r t d a t o n r o n r u a o n t a c y y t t t t r r r r r r r a a a a t t t m o n m m m m y c r
|
||||
S d e r r e r g d r g m l r g q p p 8 1 3 6 d d d d d d d l l l l 8 1 3 p r g p p p p p a
|
||||
y e g t i i t c t r u e e 6 2 4 8 1 3 6 1 3 6 3 6 9 1 6 2 l t C l l l l e y
|
||||
m s e i n n c a r e e 6 2 4 6 2 4 2 4 6 2 e C o e e e e
|
||||
C W B A C I S L C S L P E R S L S O L R Z I I I I C C C C W W W R R R R S S S C S L C C C C C R A P
|
||||
o o y d h n h o a h o t n e h o e p o t t n n n n a a a a o o o e e e e e e e o h o o o o o t e r r
|
||||
n r t d a t o n r o n r u a o n t a c y y t t t t r r r r r r r a a a a t t t m o n m m m m y c r o
|
||||
s d e r r e r g d r g m l r g q p p 8 1 3 6 d d d d d d d l l l l 8 1 3 p r g p p p p p a c
|
||||
t e g t i i t c t r u e e 6 2 4 8 1 3 6 1 3 6 3 6 9 1 6 2 l t C l l l l e y
|
||||
s e i n n c a r e e 6 2 4 6 2 4 2 4 6 2 e C o e e e e
|
||||
s r n t a a r e a 8 x o m x x x x
|
||||
t l r d a l m p 3 6 9 1
|
||||
d l p l 2 4 6 2
|
||||
|
@ -2634,55 +2634,56 @@ BEGIN
|
|||
W
|
||||
*)
|
||||
|
||||
E(const , 'T T T T T T T T T T T T T T T T T T F F T T T T T T T T T T T T T T T T F F F F F F F F F F F F F') ;
|
||||
E(word , '. T F F F F F F F F F F F F F F F F F W F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(byte , '. . T F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(address , '. . . T F P F F P F F T F F F F F F F F P F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(chr , '. . . . T F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(normint , '. . . . . T F F F F F F F F F F F F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(shortint , '. . . . . . T F F F F F F F F F F F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(longint , '. . . . . . . T F F F F F F F F F F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(normcard , '. . . . . . . . T F F F F F F F F F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(shortcard , '. . . . . . . . . T F F F F F F F F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(longcard , '. . . . . . . . . . T F F F F F F F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(pointer , '. . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(enum , '. . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(real , '. . . . . . . . . . . . . T F F F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(shortreal , '. . . . . . . . . . . . . . T F F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(longreal , '. . . . . . . . . . . . . . . T F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(set , '. . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(opaque , '. . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(loc , '. . . . . . . . . . . . . . . . . . F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(rtype , '. . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F 1 1 1 1 F F F F F F F F F F F F F') ;
|
||||
E(ztype , '. . . . . . . . . . . . . . . . . . . . T 1 1 1 1 1 1 1 1 1 1 1 F F F F F F F F F F F F F F F F F') ;
|
||||
E(int8 , '. . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(int16 , '. . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(int32 , '. . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(int64 , '. . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(card8 , '. . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(card16 , '. . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(card32 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(card64 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(word16 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(word32 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(word64 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F F F F F F F F F F F F F F F F F F') ;
|
||||
E(real32 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F') ;
|
||||
E(real64 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F') ;
|
||||
E(real96 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F') ;
|
||||
E(real128 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F') ;
|
||||
E(set8 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F') ;
|
||||
E(set16 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F') ;
|
||||
E(set32 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F') ;
|
||||
E(complex , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F T F F') ;
|
||||
E(shortcomplex, '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F T F F') ;
|
||||
E(longcomplex , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F T F F') ;
|
||||
E(complex32 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F T F F') ;
|
||||
E(complex64 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F T F F') ;
|
||||
E(complex96 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F T F F') ;
|
||||
E(complex128 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T T F F') ;
|
||||
E(ctype , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F') ;
|
||||
E(rec , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F F') ;
|
||||
E(array , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F') ;
|
||||
E(const , 'T T T T T T T T T T T T T T T T T T F F T T T T T T T T T T T T T T T T F F F F F F F F F F F F F F') ;
|
||||
E(word , '. T F F F F F F F F F F F F F F F F F W F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(byte , '. . T F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(address , '. . . T F P F F P F F T F F F F F F F F P F F F F F F F F F F F F F F F F F F F F F F F F F F F F T') ;
|
||||
E(chr , '. . . . T F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(normint , '. . . . . T F F F F F F F F F F F F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(shortint , '. . . . . . T F F F F F F F F F F F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(longint , '. . . . . . . T F F F F F F F F F F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(normcard , '. . . . . . . . T F F F F F F F F F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(shortcard , '. . . . . . . . . T F F F F F F F F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(longcard , '. . . . . . . . . . T F F F F F F F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(pointer , '. . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(enum , '. . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(real , '. . . . . . . . . . . . . T F F F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(shortreal , '. . . . . . . . . . . . . . T F F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(longreal , '. . . . . . . . . . . . . . . T F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(set , '. . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(opaque , '. . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(loc , '. . . . . . . . . . . . . . . . . . F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(rtype , '. . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F 1 1 1 1 F F F F F F F F F F F F F F') ;
|
||||
E(ztype , '. . . . . . . . . . . . . . . . . . . . T 1 1 1 1 1 1 1 1 1 1 1 F F F F F F F F F F F F F F F F F F') ;
|
||||
E(int8 , '. . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(int16 , '. . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(int32 , '. . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(int64 , '. . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(card8 , '. . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(card16 , '. . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(card32 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(card64 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(word16 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(word32 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(word64 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F F F F F F F F F F F F F F F F F F F') ;
|
||||
E(real32 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F') ;
|
||||
E(real64 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F') ;
|
||||
E(real96 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F') ;
|
||||
E(real128 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F') ;
|
||||
E(set8 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F') ;
|
||||
E(set16 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F') ;
|
||||
E(set32 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F') ;
|
||||
E(complex , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F T F F F') ;
|
||||
E(shortcomplex, '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F T F F F') ;
|
||||
E(longcomplex , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F T F F F') ;
|
||||
E(complex32 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F T F F F') ;
|
||||
E(complex64 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F T F F F') ;
|
||||
E(complex96 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F T F F F') ;
|
||||
E(complex128 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T T F F F') ;
|
||||
E(ctype , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F') ;
|
||||
E(rec , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F F F') ;
|
||||
E(array , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F F') ;
|
||||
E(procedure , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T') ;
|
||||
|
||||
(* Comparison compatibility *)
|
||||
|
||||
|
@ -2690,12 +2691,12 @@ BEGIN
|
|||
(*
|
||||
1 p w
|
||||
|
||||
N W B A C I S L C S L P E R S L S O L R Z I I I I C C C C W W W R R R R S S S C S L C C C C C R A
|
||||
u o y d h n h o a h o t n e h o e p o t t n n n n a a a a o o o e e e e e e e o h o o o o o t e r
|
||||
l r t d a t o n r o n r u a o n t a c y y t t t t r r r r r r r a a a a t t t m o n m m m m y c r
|
||||
S d e r r e r g d r g m l r g q p p 8 1 3 6 d d d d d d d l l l l 8 1 3 p r g p p p p p a
|
||||
y e g t i i t c t r u e e 6 2 4 8 1 3 6 1 3 6 3 6 9 1 6 2 l t C l l l l e y
|
||||
m s e i n n c a r e e 6 2 4 6 2 4 2 4 6 2 e C o e e e e
|
||||
C W B A C I S L C S L P E R S L S O L R Z I I I I C C C C W W W R R R R S S S C S L C C C C C R A P
|
||||
o o y d h n h o a h o t n e h o e p o t t n n n n a a a a o o o e e e e e e e o h o o o o o t e r r
|
||||
n r t d a t o n r o n r u a o n t a c y y t t t t r r r r r r r a a a a t t t m o n m m m m y c r o
|
||||
s d e r r e r g d r g m l r g q p p 8 1 3 6 d d d d d d d l l l l 8 1 3 p r g p p p p p a c
|
||||
t e g t i i t c t r u e e 6 2 4 8 1 3 6 1 3 6 3 6 9 1 6 2 l t C l l l l e y
|
||||
s e i n n c a r e e 6 2 4 6 2 4 2 4 6 2 e C o e e e e
|
||||
s r n t a a r e a 8 x o m x x x x
|
||||
t l r d a l m p 3 6 9 1
|
||||
d l p l 2 4 6 2
|
||||
|
@ -2708,55 +2709,56 @@ BEGIN
|
|||
W
|
||||
*)
|
||||
|
||||
C(const , 'T T T T T T T T T T T T T T T T T T F F T T T T T T T T T T T T T T T T F F F F F F F F F F F F F') ;
|
||||
C(word , '. T F F F F F F F F F F F F F F F F F F T F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(byte , '. . T F F F F F F F F F F F F F F F F F T F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(address , '. . . T F F F F F F F T F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(chr , '. . . . T F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(normint , '. . . . . T F F F F F F F F F F F F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(shortint , '. . . . . . T F F F F F F F F F F F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(longint , '. . . . . . . T F F F F F F F F F F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(normcard , '. . . . . . . . T F F F F F F F F F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(shortcard , '. . . . . . . . . T F F F F F F F F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(longcard , '. . . . . . . . . . T F F F F F F F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(pointer , '. . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(enum , '. . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(real , '. . . . . . . . . . . . . T F F F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(shortreal , '. . . . . . . . . . . . . . T F F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(longreal , '. . . . . . . . . . . . . . . T F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(set , '. . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(opaque , '. . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(loc , '. . . . . . . . . . . . . . . . . . F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(rtype , '. . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F 1 1 1 1 F F F F F F F F F F F F F') ;
|
||||
C(ztype , '. . . . . . . . . . . . . . . . . . . . T 1 1 1 1 1 1 1 1 1 1 1 F F F F F F F F F F F F F F F F F') ;
|
||||
C(int8 , '. . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(int16 , '. . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(int32 , '. . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(int64 , '. . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(card8 , '. . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(card16 , '. . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(card32 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(card64 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(word16 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(word32 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(word64 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F F F F F F F F F F F F F F F F F F') ;
|
||||
C(real32 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F') ;
|
||||
C(real64 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F') ;
|
||||
C(real96 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F') ;
|
||||
C(real128 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F') ;
|
||||
C(set8 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F') ;
|
||||
C(set16 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F') ;
|
||||
C(set32 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F') ;
|
||||
C(complex , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F T F F') ;
|
||||
C(shortcomplex, '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F T F F') ;
|
||||
C(longcomplex , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F T F F') ;
|
||||
C(complex32 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F T F F') ;
|
||||
C(complex64 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F T F F') ;
|
||||
C(complex96 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F T F F') ;
|
||||
C(complex128 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T T F F') ;
|
||||
C(ctype , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F') ;
|
||||
C(rec , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F F') ;
|
||||
C(array , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F') ;
|
||||
C(const , 'T T T T T T T T T T T T T T T T T T F F T T T T T T T T T T T T T T T T F F F F F F F F F F F F F F') ;
|
||||
C(word , '. T F F F F F F F F F F F F F F F F F F T F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(byte , '. . T F F F F F F F F F F F F F F F F F T F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(address , '. . . T F F F F F F F T F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F T') ;
|
||||
C(chr , '. . . . T F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(normint , '. . . . . T F F F F F F F F F F F F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(shortint , '. . . . . . T F F F F F F F F F F F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(longint , '. . . . . . . T F F F F F F F F F F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(normcard , '. . . . . . . . T F F F F F F F F F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(shortcard , '. . . . . . . . . T F F F F F F F F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(longcard , '. . . . . . . . . . T F F F F F F F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(pointer , '. . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(enum , '. . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(real , '. . . . . . . . . . . . . T F F F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(shortreal , '. . . . . . . . . . . . . . T F F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(longreal , '. . . . . . . . . . . . . . . T F F F 2 F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(set , '. . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(opaque , '. . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(loc , '. . . . . . . . . . . . . . . . . . F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(rtype , '. . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F 1 1 1 1 F F F F F F F F F F F F F F') ;
|
||||
C(ztype , '. . . . . . . . . . . . . . . . . . . . T 1 1 1 1 1 1 1 1 1 1 1 F F F F F F F F F F F F F F F F F F') ;
|
||||
C(int8 , '. . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(int16 , '. . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(int32 , '. . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(int64 , '. . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(card8 , '. . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(card16 , '. . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(card32 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(card64 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(word16 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . F F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(word32 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(word64 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F F F F F F F F F F F F F F F F F F F') ;
|
||||
C(real32 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F F') ;
|
||||
C(real64 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F F') ;
|
||||
C(real96 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F F') ;
|
||||
C(real128 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F F') ;
|
||||
C(set8 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F F') ;
|
||||
C(set16 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F F') ;
|
||||
C(set32 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F F F F F F') ;
|
||||
C(complex , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F F T F F F') ;
|
||||
C(shortcomplex, '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F F T F F F') ;
|
||||
C(longcomplex , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F F T F F F') ;
|
||||
C(complex32 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F T F F F') ;
|
||||
C(complex64 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F T F F F') ;
|
||||
C(complex96 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F T F F F') ;
|
||||
C(complex128 , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T T F F F') ;
|
||||
C(ctype , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T F F F') ;
|
||||
C(rec , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F F F') ;
|
||||
C(array , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F F') ;
|
||||
C(procedure , '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T') ;
|
||||
|
||||
END InitCompatibilityMatrices ;
|
||||
|
||||
|
|
|
@ -221,11 +221,11 @@ BEGIN
|
|||
result := checkPair (result, tinfo, GetType (left), GetType (right)) ;
|
||||
IF (lSub # NulSym) AND (rSub # NulSym)
|
||||
THEN
|
||||
result := checkSubrange (result, tinfo, GetSType (lSub), GetSType (rSub))
|
||||
result := checkSubrange (result, tinfo, getSType (lSub), getSType (rSub))
|
||||
END
|
||||
ELSIF IsUnbounded (left) AND (IsArray (right) OR IsUnbounded (right))
|
||||
THEN
|
||||
IF IsGenericSystemType (GetSType (left)) OR IsGenericSystemType (GetSType (right))
|
||||
IF IsGenericSystemType (getSType (left)) OR IsGenericSystemType (getSType (right))
|
||||
THEN
|
||||
RETURN true
|
||||
ELSE
|
||||
|
@ -296,9 +296,12 @@ BEGIN
|
|||
THEN
|
||||
(* need to create top level error message first. *)
|
||||
tinfo^.error := NewError (tinfo^.token) ;
|
||||
(* The parameters to MetaString4 in buildError4 must match the order
|
||||
of paramters passed to ParameterTypeCompatible. *)
|
||||
s := MetaString4 (tinfo^.format,
|
||||
tinfo^.procedure,
|
||||
tinfo^.left, tinfo^.right,
|
||||
tinfo^.procedure, tinfo^.nth) ;
|
||||
tinfo^.nth) ;
|
||||
ErrorString (tinfo^.error, s)
|
||||
END ;
|
||||
(* and also generate a sub error containing detail. *)
|
||||
|
@ -396,7 +399,7 @@ BEGIN
|
|||
THEN
|
||||
IF IsVar (right) OR IsConst (right)
|
||||
THEN
|
||||
right := GetSType (right)
|
||||
right := getSType (right)
|
||||
END
|
||||
END ;
|
||||
IF tinfo^.strict
|
||||
|
@ -1179,7 +1182,10 @@ END checkRecordEquivalence ;
|
|||
|
||||
PROCEDURE getType (sym: CARDINAL) : CARDINAL ;
|
||||
BEGIN
|
||||
IF IsTyped (sym)
|
||||
IF (sym # NulSym) AND IsProcedure (sym)
|
||||
THEN
|
||||
RETURN Address
|
||||
ELSIF IsTyped (sym)
|
||||
THEN
|
||||
RETURN GetDType (sym)
|
||||
ELSE
|
||||
|
@ -1188,6 +1194,21 @@ BEGIN
|
|||
END getType ;
|
||||
|
||||
|
||||
(*
|
||||
getSType -
|
||||
*)
|
||||
|
||||
PROCEDURE getSType (sym: CARDINAL) : CARDINAL ;
|
||||
BEGIN
|
||||
IF IsProcedure (sym)
|
||||
THEN
|
||||
RETURN Address
|
||||
ELSE
|
||||
RETURN GetSType (sym)
|
||||
END
|
||||
END getSType ;
|
||||
|
||||
|
||||
(*
|
||||
determineCompatible - check for compatibility by checking
|
||||
equivalence, array, generic and type kind.
|
||||
|
@ -1459,8 +1480,8 @@ VAR
|
|||
tinfo : tInfo ;
|
||||
BEGIN
|
||||
tinfo := newtInfo () ;
|
||||
formalT := GetSType (formal) ;
|
||||
actualT := GetSType (actual) ;
|
||||
formalT := getSType (formal) ;
|
||||
actualT := getSType (actual) ;
|
||||
tinfo^.format := collapseString (format) ;
|
||||
tinfo^.token := token ;
|
||||
tinfo^.kind := parameter ;
|
||||
|
@ -1545,11 +1566,11 @@ BEGIN
|
|||
THEN
|
||||
IF IsConst (right) OR IsVar (right)
|
||||
THEN
|
||||
right := GetSType (right)
|
||||
right := getSType (right)
|
||||
END ;
|
||||
IF IsSet (right)
|
||||
THEN
|
||||
right := GetSType (right)
|
||||
right := getSType (right)
|
||||
END
|
||||
END
|
||||
END ;
|
||||
|
|
|
@ -2528,13 +2528,13 @@ BEGIN
|
|||
THEN
|
||||
IF IsVarParam (procedure, nth) AND
|
||||
(NOT ParameterTypeCompatible (CurrentQuadToken,
|
||||
'parameter incompatibility when attempting to pass actual parameter {%3Ead} to a {%kVAR} formal parameter {%2ad} during call to procedure {%1ad}',
|
||||
'parameter incompatibility when attempting to pass actual parameter {%2ad} to a {%kVAR} formal parameter {%3Ead} during call to procedure {%1ad}',
|
||||
procedure, GetNthParam (procedure, nth), parameter, nth, TRUE))
|
||||
THEN
|
||||
|
||||
ELSIF (NOT IsVarParam (procedure, nth)) AND
|
||||
(NOT ParameterTypeCompatible (CurrentQuadToken,
|
||||
'parameter incompatibility when attempting to pass actual parameter {%3Ead} to a formal parameter {%2ad} during call to procedure {%1ad}',
|
||||
'parameter incompatibility when attempting to pass actual parameter {%3Ead} to the {%4EN} formal parameter {%2ad} during call to procedure {%1ad}',
|
||||
procedure, GetNthParam (procedure, nth), parameter, nth, FALSE))
|
||||
THEN
|
||||
(* use the AssignmentTypeCompatible as the rules are for assignment for non var parameters. *)
|
||||
|
|
|
@ -5418,7 +5418,7 @@ BEGIN
|
|||
WarnStringAt (s, paramtok)
|
||||
END ;
|
||||
|
||||
BuildRange(InitTypesParameterCheck(Proc, i, FormalI, Actual)) ;
|
||||
BuildRange (InitTypesParameterCheck (paramtok, Proc, i, FormalI, Actual)) ;
|
||||
IF IsConst(Actual)
|
||||
THEN
|
||||
IF IsVarParam(Proc, i)
|
||||
|
@ -5482,7 +5482,7 @@ END CheckProcedureParameters ;
|
|||
CheckProcTypeAndProcedure - checks the ProcType with the call.
|
||||
*)
|
||||
|
||||
PROCEDURE CheckProcTypeAndProcedure (ProcType: CARDINAL; call: CARDINAL) ;
|
||||
PROCEDURE CheckProcTypeAndProcedure (tokno: CARDINAL; ProcType: CARDINAL; call: CARDINAL) ;
|
||||
VAR
|
||||
n1, n2 : Name ;
|
||||
i, n, t : CARDINAL ;
|
||||
|
@ -5516,14 +5516,14 @@ BEGIN
|
|||
ELSE
|
||||
i := 1 ;
|
||||
WHILE i<=n DO
|
||||
IF IsVarParam(ProcType, i) # IsVarParam(CheckedProcedure, i)
|
||||
IF IsVarParam (ProcType, i) # IsVarParam (CheckedProcedure, i)
|
||||
THEN
|
||||
MetaError3('parameter {%3n} in {%1dD} causes a mismatch it was declared as a {%2d}', ProcType, GetNth(ProcType, i), i) ;
|
||||
MetaError3('parameter {%3n} in {%1dD} causes a mismatch it was declared as a {%2d}', call, GetNth(call, i), i)
|
||||
MetaError3 ('parameter {%3n} in {%1dD} causes a mismatch it was declared as a {%2d}', ProcType, GetNth (ProcType, i), i) ;
|
||||
MetaError3 ('parameter {%3n} in {%1dD} causes a mismatch it was declared as a {%2d}', call, GetNth (call, i), i)
|
||||
END ;
|
||||
BuildRange(InitTypesParameterCheck(CheckedProcedure, i,
|
||||
GetParam(CheckedProcedure, i),
|
||||
GetParam(ProcType, i))) ;
|
||||
BuildRange (InitTypesParameterCheck (tokno, CheckedProcedure, i,
|
||||
GetParam (CheckedProcedure, i),
|
||||
GetParam (ProcType, i))) ;
|
||||
(* CheckParameter(tokpos, GetParam(CheckedProcedure, i), 0, GetParam(ProcType, i), call, i, TypeList) ; *)
|
||||
INC(i)
|
||||
END
|
||||
|
@ -5716,7 +5716,7 @@ BEGIN
|
|||
END
|
||||
END ;
|
||||
(* now to check each parameter of the proc type *)
|
||||
CheckProcTypeAndProcedure (FormalType, Actual)
|
||||
CheckProcTypeAndProcedure (tokpos, FormalType, Actual)
|
||||
ELSIF (ActualType#FormalType) AND (ActualType#NulSym)
|
||||
THEN
|
||||
IF IsUnknown(FormalType)
|
||||
|
@ -6414,6 +6414,7 @@ END ManipulateParameters ;
|
|||
|
||||
PROCEDURE CheckParameterOrdinals ;
|
||||
VAR
|
||||
tokno : CARDINAL ;
|
||||
Proc,
|
||||
ProcSym : CARDINAL ;
|
||||
Actual,
|
||||
|
@ -6438,13 +6439,14 @@ BEGIN
|
|||
THEN
|
||||
FormalI := GetParam (Proc, i) ;
|
||||
Actual := OperandT (pi) ;
|
||||
tokno := OperandTok (pi) ;
|
||||
IF IsOrdinalType (GetLType (FormalI))
|
||||
THEN
|
||||
IF NOT IsSet (GetDType (FormalI))
|
||||
THEN
|
||||
(* tell code generator to test runtime values of assignment so ensure we
|
||||
catch overflow and underflow *)
|
||||
BuildRange (InitParameterRangeCheck (Proc, i, FormalI, Actual))
|
||||
BuildRange (InitParameterRangeCheck (tokno, Proc, i, FormalI, Actual))
|
||||
END
|
||||
END
|
||||
END ;
|
||||
|
|
|
@ -43,42 +43,6 @@ FROM m2tree IMPORT Tree ;
|
|||
FROM m2linemap IMPORT location_t ;
|
||||
FROM DynamicStrings IMPORT String ;
|
||||
|
||||
EXPORT QUALIFIED InitAssignmentRangeCheck,
|
||||
InitReturnRangeCheck,
|
||||
InitSubrangeRangeCheck,
|
||||
InitStaticArraySubscriptRangeCheck,
|
||||
InitDynamicArraySubscriptRangeCheck,
|
||||
InitIncRangeCheck,
|
||||
InitDecRangeCheck,
|
||||
InitInclCheck,
|
||||
InitExclCheck,
|
||||
InitRotateCheck,
|
||||
InitShiftCheck,
|
||||
InitTypesExpressionCheck,
|
||||
InitTypesAssignmentCheck,
|
||||
InitTypesParameterCheck,
|
||||
InitParameterRangeCheck,
|
||||
InitForLoopBeginRangeCheck,
|
||||
InitForLoopToRangeCheck,
|
||||
InitForLoopEndRangeCheck,
|
||||
InitPointerRangeCheck,
|
||||
InitNoReturnRangeCheck,
|
||||
InitNoElseRangeCheck,
|
||||
InitCaseBounds,
|
||||
InitWholeNonPosDivCheck,
|
||||
InitWholeNonPosModCheck,
|
||||
InitWholeZeroDivisionCheck,
|
||||
InitWholeZeroRemainderCheck,
|
||||
CodeRangeCheck, FoldRangeCheck, CodeErrorCheck,
|
||||
(* CheckRangeAddVariableRead, *)
|
||||
(* CheckRangeRemoveVariableRead, *)
|
||||
WriteRangeCheck,
|
||||
OverlapsRange,
|
||||
IsEqual, IsGreaterOrEqual, IsGreater,
|
||||
BuildIfCallRealHandlerLoc,
|
||||
BuildIfCallWholeHandlerLoc,
|
||||
GetMinMax ;
|
||||
|
||||
|
||||
(*
|
||||
InitAssignmentRangeCheck - returns a range check node which
|
||||
|
@ -286,7 +250,8 @@ PROCEDURE InitTypesAssignmentCheck (tokno: CARDINAL; d, e: CARDINAL) : CARDINAL
|
|||
are parameter compatible.
|
||||
*)
|
||||
|
||||
PROCEDURE InitTypesParameterCheck (proc: CARDINAL; i: CARDINAL;
|
||||
PROCEDURE InitTypesParameterCheck (tokno: CARDINAL;
|
||||
proc: CARDINAL; i: CARDINAL;
|
||||
formal, actual: CARDINAL) : CARDINAL ;
|
||||
|
||||
|
||||
|
@ -295,7 +260,8 @@ PROCEDURE InitTypesParameterCheck (proc: CARDINAL; i: CARDINAL;
|
|||
are parameter compatible.
|
||||
*)
|
||||
|
||||
PROCEDURE InitParameterRangeCheck (proc: CARDINAL; i: CARDINAL;
|
||||
PROCEDURE InitParameterRangeCheck (tokno: CARDINAL;
|
||||
proc: CARDINAL; i: CARDINAL;
|
||||
formal, actual: CARDINAL) : CARDINAL ;
|
||||
|
||||
|
||||
|
|
|
@ -492,7 +492,7 @@ END PutRangeUnary ;
|
|||
and returns, p.
|
||||
*)
|
||||
|
||||
PROCEDURE PutRangeParam (p: Range; t: TypeOfRange; proc: CARDINAL;
|
||||
PROCEDURE PutRangeParam (tokno: CARDINAL; p: Range; t: TypeOfRange; proc: CARDINAL;
|
||||
i: CARDINAL; formal, actual: CARDINAL) : Range ;
|
||||
BEGIN
|
||||
WITH p^ DO
|
||||
|
@ -504,7 +504,7 @@ BEGIN
|
|||
procedure := proc ;
|
||||
paramNo := i ;
|
||||
isLeftValue := FALSE ;
|
||||
tokenNo := GetTokenNo () ;
|
||||
tokenNo := tokno ;
|
||||
strict := FALSE ;
|
||||
isin := FALSE
|
||||
END ;
|
||||
|
@ -737,13 +737,13 @@ END InitTypesAssignmentCheck ;
|
|||
and, e, are parameter compatible.
|
||||
*)
|
||||
|
||||
PROCEDURE InitTypesParameterCheck (proc: CARDINAL; i: CARDINAL;
|
||||
PROCEDURE InitTypesParameterCheck (tokno: CARDINAL; proc: CARDINAL; i: CARDINAL;
|
||||
formal, actual: CARDINAL) : CARDINAL ;
|
||||
VAR
|
||||
r: CARDINAL ;
|
||||
BEGIN
|
||||
r := InitRange () ;
|
||||
Assert (PutRangeParam (GetIndice (RangeIndex, r), typeparam, proc, i, formal, actual) # NIL) ;
|
||||
Assert (PutRangeParam (tokno, GetIndice (RangeIndex, r), typeparam, proc, i, formal, actual) # NIL) ;
|
||||
RETURN r
|
||||
END InitTypesParameterCheck ;
|
||||
|
||||
|
@ -755,7 +755,7 @@ END InitTypesParameterCheck ;
|
|||
and returns, p.
|
||||
*)
|
||||
|
||||
PROCEDURE PutRangeParamAssign (p: Range; t: TypeOfRange; proc: CARDINAL;
|
||||
PROCEDURE PutRangeParamAssign (tokno: CARDINAL; p: Range; t: TypeOfRange; proc: CARDINAL;
|
||||
i: CARDINAL; formal, actual: CARDINAL) : Range ;
|
||||
BEGIN
|
||||
WITH p^ DO
|
||||
|
@ -768,7 +768,7 @@ BEGIN
|
|||
paramNo := i ;
|
||||
dimension := i ;
|
||||
isLeftValue := FALSE ;
|
||||
tokenNo := GetTokenNo ()
|
||||
tokenNo := tokno
|
||||
END ;
|
||||
RETURN( p )
|
||||
END PutRangeParamAssign ;
|
||||
|
@ -779,13 +779,13 @@ END PutRangeParamAssign ;
|
|||
are parameter compatible.
|
||||
*)
|
||||
|
||||
PROCEDURE InitParameterRangeCheck (proc: CARDINAL; i: CARDINAL;
|
||||
PROCEDURE InitParameterRangeCheck (tokno: CARDINAL; proc: CARDINAL; i: CARDINAL;
|
||||
formal, actual: CARDINAL) : CARDINAL ;
|
||||
VAR
|
||||
r: CARDINAL ;
|
||||
BEGIN
|
||||
r := InitRange () ;
|
||||
Assert (PutRangeParamAssign (GetIndice (RangeIndex, r), paramassign, proc, i, formal, actual) # NIL) ;
|
||||
Assert (PutRangeParamAssign (tokno, GetIndice (RangeIndex, r), paramassign, proc, i, formal, actual) # NIL) ;
|
||||
RETURN r
|
||||
END InitParameterRangeCheck ;
|
||||
|
||||
|
@ -1619,7 +1619,7 @@ END FoldTypeAssign ;
|
|||
PROCEDURE FoldTypeParam (q: CARDINAL; tokenNo: CARDINAL; formal, actual, procedure: CARDINAL; paramNo: CARDINAL) ;
|
||||
BEGIN
|
||||
IF ParameterTypeCompatible (tokenNo,
|
||||
'{%4EN} type failure between actual {%3ad} and the {%2ad}',
|
||||
'{%4EN} parameter type failure between actual parameter type {%3ad} and the formal type {%2ad}',
|
||||
procedure, formal, actual, paramNo, IsVarParam (procedure, paramNo))
|
||||
THEN
|
||||
SubQuad(q)
|
||||
|
|
14
gcc/testsuite/gm2/iso/fail/proccard.mod
Normal file
14
gcc/testsuite/gm2/iso/fail/proccard.mod
Normal file
|
@ -0,0 +1,14 @@
|
|||
MODULE proccard ;
|
||||
|
||||
FROM NumberIO IMPORT WriteCard ;
|
||||
FROM StrIO IMPORT WriteString, WriteLn ;
|
||||
|
||||
PROCEDURE func () : CARDINAL ;
|
||||
BEGIN
|
||||
RETURN 42
|
||||
END func ;
|
||||
|
||||
|
||||
BEGIN
|
||||
WriteString ('the value is: ') ; WriteCard (func, 5) ; WriteLn
|
||||
END proccard.
|
14
gcc/testsuite/gm2/pim/pass/proccard.mod
Normal file
14
gcc/testsuite/gm2/pim/pass/proccard.mod
Normal file
|
@ -0,0 +1,14 @@
|
|||
MODULE proccard ;
|
||||
|
||||
FROM NumberIO IMPORT WriteCard ;
|
||||
FROM StrIO IMPORT WriteString, WriteLn ;
|
||||
|
||||
PROCEDURE func () : CARDINAL ;
|
||||
BEGIN
|
||||
RETURN 42
|
||||
END func ;
|
||||
|
||||
|
||||
BEGIN
|
||||
WriteString ('the value is: ') ; WriteCard (func, 5) ; WriteLn
|
||||
END proccard.
|
Loading…
Add table
Reference in a new issue