Adriaan van Os gpc@microbizz.nl wrote:
The following two programs are rejected by gpc
program redeclare1; type Int16 = Integer attribute( size = 16); Integer = Int16; {error: identifier `Integer' redeclared in a scope where an outer value was used} begin end.
program redeclare2; type Integer = Integer attribute( size = 16); {error: identifier `Integer' redeclared in a scope where an outer value was used} begin end.
The following program is accepted:
program redeclare3; type Integer = ShortInt; begin writeln( 'SizeOf( Integer) = ', SizeOf( Integer)) end.
All right and proper in my view. Once an identifier from an outer scope is used in an inner scope it can no longer be redeclared in that inner scope. Usage has extended its scope. The proper way to create a restricted integer type is:
const maxint = 32767; /* for example */ type integer = -maxint .. maxint;
which is why these items are predeclared at level 0, rather than reserved words.
-- Chuck F (cbfalconer@yahoo.com)(cbfalconer@worldnet.att.net) Available for consulting/temporary embedded and systems. http://cbfalconer.home.att.net USE worldnet address!