1------------------------------------------------------------------------------ 2-- -- 3-- GNAT COMPILER COMPONENTS -- 4-- -- 5-- E X P _ C H 1 2 -- 6-- -- 7-- B o d y -- 8-- -- 9-- Copyright (C) 1997-2011, Free Software Foundation, Inc. -- 10-- -- 11-- GNAT is free software; you can redistribute it and/or modify it under -- 12-- terms of the GNU General Public License as published by the Free Soft- -- 13-- ware Foundation; either version 3, or (at your option) any later ver- -- 14-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- 15-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- 16-- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -- 17-- for more details. You should have received a copy of the GNU General -- 18-- Public License distributed with GNAT; see file COPYING3. If not, go to -- 19-- http://www.gnu.org/licenses for a complete copy of the license. -- 20-- -- 21-- GNAT was originally developed by the GNAT team at New York University. -- 22-- Extensive contributions were provided by Ada Core Technologies Inc. -- 23-- -- 24------------------------------------------------------------------------------ 25 26with Atree; use Atree; 27with Checks; use Checks; 28with Einfo; use Einfo; 29with Exp_Util; use Exp_Util; 30with Nmake; use Nmake; 31with Sinfo; use Sinfo; 32with Snames; use Snames; 33with Stand; use Stand; 34with Tbuild; use Tbuild; 35 36package body Exp_Ch12 is 37 38 ------------------------------------ 39 -- Expand_N_Generic_Instantiation -- 40 ------------------------------------ 41 42 -- If elaboration entity is defined and this is not an outer level entity, 43 -- we need to generate a check for it here. 44 45 procedure Expand_N_Generic_Instantiation (N : Node_Id) is 46 Loc : constant Source_Ptr := Sloc (N); 47 Ent : constant Entity_Id := Entity (Name (N)); 48 49 begin 50 if Etype (Name (N)) = Any_Type then 51 return; 52 end if; 53 54 if Present (Elaboration_Entity (Ent)) 55 and then not Is_Compilation_Unit (Ent) 56 and then not Elaboration_Checks_Suppressed (Ent) 57 then 58 Insert_Action (Instance_Spec (N), 59 Make_Raise_Program_Error (Loc, 60 Condition => 61 Make_Op_Not (Loc, 62 Right_Opnd => 63 Make_Attribute_Reference (Loc, 64 Attribute_Name => Name_Elaborated, 65 Prefix => New_Occurrence_Of (Ent, Loc))), 66 Reason => PE_Access_Before_Elaboration)); 67 end if; 68 end Expand_N_Generic_Instantiation; 69 70end Exp_Ch12; 71