-- { dg-do run } with System; procedure Protected_Self_Ref1 is protected type P is procedure Foo; end P; protected body P is procedure Foo is Ptr : access P; -- here P denotes the type P T : Integer; A : System.Address; begin Ptr := P'Access; -- here P denotes the "this" instance of P T := P'Size; A := P'Address; end; end P; O : P; begin O.Foo; end Protected_Self_Ref1;