]>
Commit | Line | Data |
---|---|---|
38cbfe40 RK |
1 | ------------------------------------------------------------------------------ |
2 | -- -- | |
3 | -- GNAT COMPILER COMPONENTS -- | |
4 | -- -- | |
5 | -- I T Y P E S -- | |
6 | -- -- | |
7 | -- B o d y -- | |
8 | -- -- | |
fbf5a39b | 9 | -- Copyright (C) 1992-2003 Free Software Foundation, Inc. -- |
38cbfe40 RK |
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 2, 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 COPYING. If not, write -- | |
19 | -- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, -- | |
20 | -- MA 02111-1307, USA. -- | |
21 | -- -- | |
22 | -- GNAT was originally developed by the GNAT team at New York University. -- | |
71ff80dc | 23 | -- Extensive contributions were provided by Ada Core Technologies Inc. -- |
38cbfe40 RK |
24 | -- -- |
25 | ------------------------------------------------------------------------------ | |
26 | ||
27 | with Atree; use Atree; | |
28 | with Einfo; use Einfo; | |
fbf5a39b | 29 | with Sem; use Sem; |
38cbfe40 RK |
30 | with Sem_Util; use Sem_Util; |
31 | with Sinfo; use Sinfo; | |
32 | with Stand; use Stand; | |
33 | ||
34 | package body Itypes is | |
35 | ||
36 | ------------------ | |
37 | -- Create_Itype -- | |
38 | ------------------ | |
39 | ||
40 | function Create_Itype | |
41 | (Ekind : Entity_Kind; | |
42 | Related_Nod : Node_Id; | |
43 | Related_Id : Entity_Id := Empty; | |
44 | Suffix : Character := ' '; | |
45 | Suffix_Index : Nat := 0; | |
46 | Scope_Id : Entity_Id := Current_Scope) | |
47 | return Entity_Id | |
48 | is | |
49 | Typ : Entity_Id; | |
50 | ||
51 | begin | |
52 | if Related_Id = Empty then | |
53 | Typ := New_Internal_Entity (Ekind, Scope_Id, Sloc (Related_Nod), 'T'); | |
54 | Set_Public_Status (Typ); | |
55 | ||
56 | else | |
57 | Typ := New_External_Entity | |
58 | (Ekind, Scope_Id, Sloc (Related_Nod), Related_Id, Suffix, | |
59 | Suffix_Index, 'T'); | |
60 | end if; | |
61 | ||
62 | Init_Size_Align (Typ); | |
63 | Set_Etype (Typ, Any_Type); | |
64 | Set_Is_Itype (Typ); | |
65 | Set_Associated_Node_For_Itype (Typ, Related_Nod); | |
fbf5a39b AC |
66 | |
67 | if In_Deleted_Code then | |
68 | Set_Is_Frozen (Typ); | |
69 | end if; | |
70 | ||
38cbfe40 RK |
71 | return Typ; |
72 | end Create_Itype; | |
73 | ||
74 | end Itypes; |