WITH REPORT; USE REPORT;
PROCEDURE C35508O IS
BEGIN
TEST ("C35508O", "CHECK THAT 'FIRST' AND 'LAST' YIELD THE " &
"CORRECT RESULTS WHEN THE PREFIX IS A " &
"BOOLEAN TYPE" );
DECLARE
SUBTYPE TBOOL IS BOOLEAN RANGE IDENT_BOOL(TRUE) ..
IDENT_BOOL(TRUE);
SUBTYPE FBOOL IS BOOLEAN
RANGE IDENT_BOOL(FALSE) .. IDENT_BOOL(FALSE);
SUBTYPE NOBOOL IS BOOLEAN
RANGE IDENT_BOOL(TRUE) .. IDENT_BOOL(FALSE);
TYPE NEWBOOL IS NEW BOOLEAN;
TYPE NIL IS NEW BOOLEAN RANGE IDENT_BOOL(TRUE) ..
IDENT_BOOL(FALSE);
BEGIN
IF IDENT_BOOL(BOOLEAN'FIRST) /= FALSE THEN
FAILED ( "WRONG VALUE FOR BOOLEAN'FIRST" );
END IF;
IF IDENT_BOOL(BOOLEAN'LAST) /= TRUE THEN
FAILED ( "WRONG VALUE FOR BOOLEAN'LAST" );
END IF;
IF TBOOL'FIRST /= TRUE THEN
FAILED ( "WRONG VALUE FOR TBOOL'FIRST" );
END IF;
IF TBOOL'LAST /= TRUE THEN
FAILED ( "WRONG VALUE FOR TBOOL'LAST" );
END IF;
IF FBOOL'FIRST /= FALSE THEN
FAILED ( "WRONG VALUE FOR FBOOL'FIRST" );
END IF;
IF FBOOL'LAST /= FALSE THEN
FAILED ( "WRONG VALUE FOR FBOOL'LAST" );
END IF;
IF NOBOOL'FIRST /= TRUE THEN
FAILED ( "WRONG VALUE FOR NOBOOL'FIRST" );
END IF;
IF NOBOOL'LAST /= FALSE THEN
FAILED ( "WRONG VALUE FOR NOBOOL'LAST" );
END IF;
IF NEWBOOL'FIRST /= FALSE THEN
FAILED ( "WRONG VALUE FOR NEWBOOL'FIRST" );
END IF;
IF NEWBOOL'LAST /= TRUE THEN
FAILED ( "WRONG VALUE FOR NEWBOOL'LAST" );
END IF;
IF NIL'FIRST /= TRUE THEN
FAILED ( "WRONG VALUE FOR NIL'FIRST" );
END IF;
IF NIL'LAST /= FALSE THEN
FAILED ( "WRONG VALUE FOR NIL'LAST" );
END IF;
END;
RESULT;
END C35508O;