PowerAda Freezing Rules
From OC Systems Wiki!
The compiler checks the freezing rules (described in RM95 section 13.14). The compiler detects the following as a semantic error:
type T is (A, B, C); OBJ : T; for T use (A => 0, B => 3, C => 5);
The error in this code occurs when an object, OBJ, is declared to be of type T before the representation of type T is determined. To correct this code, move the declaration of the object to follow the representation clause for type T, as shown below:
type T is (A, B, C); for T use (A => 0, B => 3, C => 5); OBJ : T;