1"use strict";(self.webpackChunkada_lang_io=self.webpackChunkada_lang_io||[]).push([["5104"],{74581(e,i,n){n.r(i),n.d(i,{metadata:()=>s,default:()=>p,frontMatter:()=>h,contentTitle:()=>x,toc:()=>j,assets:()=>A});var s=JSON.parse('{"id":"arm/AA-13/AA-13.12","title":"13.12. Pragma Restrictions and Pragma Profile","description":"This Reference Manual output has not been verified,","source":"@site/docs/arm/AA-13/AA-13.12.mdx","sourceDirName":"arm/AA-13","slug":"/arm/AA-13/AA-13.12","permalink":"/docs/arm/AA-13/AA-13.12","draft":false,"unlisted":false,"tags":[],"version":"current","sidebarPosition":116,"frontMatter":{"sidebar_position":116},"sidebar":"referenceManualSidebar","previous":{"title":"13.11. Storage Management","permalink":"/docs/arm/AA-13/AA-13.11"},"next":{"title":"13.13. Streams","permalink":"/docs/arm/AA-13/AA-13.13"}}'),r=n(74848),t=n(28453),a=n(98113),d=n(60271),o=n(9011),c=n(48554),l=n(94029);let h={sidebar_position:116},x="13.12. Pragma Restrictions and Pragma Profile",A={},j=[{value:"Syntax",id:"syntax",level:4},{value:"Name Resolution Rules",id:"name-resolution-rules",level:4},{value:"Legality Rules",id:"legality-rules",level:4},{value:"Post-Compilation Rules",id:"post-compilation-rules",level:4},{value:"Implementation Permissions",id:"implementation-permissions",level:4},{value:"Syntax",id:"syntax-1",level:4},{value:"Legality Rules",id:"legality-rules-1",level:4},{value:"Static Semantics",id:"static-semantics",level:4},{value:"Post-Compilation Rules",id:"post-compilation-rules-1",level:4},{value:"Implementation Permissions",id:"implementation-permissions-1",level:4},{value:"Extensions to Ada 83",id:"extensions-to-ada-83",level:4},{value:"Extensions to Ada 95",id:"extensions-to-ada-95",level:4},{value:"Wording Changes from Ada 95",id:"wording-changes-from-ada-95",level:4},{value:"Wording Changes from Ada 2005",id:"wording-changes-from-ada-2005",level:4},{value:"13.12.1 Language-Defined Restrictions and Profiles",id:"13121--language-defined-restrictions-and-profiles",level:2},{value:"Static Semantics",id:"static-semantics-1",level:4},{value:"Legality Rules",id:"legality-rules-2",level:4},{value:"Post-Compilation Rules",id:"post-compilation-rules-2",level:4},{value:"Static Semantics",id:"static-semantics-2",level:4},{value:"Extensions to Ada 95",id:"extensions-to-ada-95-1",level:4},{value:"Extensions to Ada 2005",id:"extensions-to-ada-2005",level:4},{value:"Extensions to Ada 2012",id:"extensions-to-ada-2012",level:4}];function m(e){let i={a:"a",admonition:"admonition",h1:"h1",h2:"h2",h4:"h4",header:"header",p:"p",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(i.header,{children:(0,r.jsx)(i.h1,{id:"1312-pragma-restrictions-and-pragma-profile",children:"13.12. Pragma Restrictions and Pragma Profile"})}),"\n",(0,r.jsx)(i.admonition,{type:"danger",children:(0,r.jsxs)(i.p,{children:["This Reference Manual output has not been verified,\nand may contain omissions or errors.\nReport any problems on the ",(0,r.jsx)(i.a,{href:"https://github.com/ada-lang-io/ada-lang-io/issues/20",children:"tracking issue"})]})}),"\n","\n",(0,r.jsx)(c.A,{children:"1/3"}),"\n",(0,r.jsx)(l.A,{items:["AI05-0246-1"]}),"\n",(0,r.jsxs)("p",{children:["[A ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-2/AA-2.8#S0019",children:"pragma"})})," Restrictions expresses the user's intent to abide by certain restrictions. A ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-2/AA-2.8#S0019",children:"pragma"})})," Profile expresses the user's intent to abide by a set of Restrictions or other specified run-time policies. These may facilitate the construction of simpler run-time environments.] ",(0,r.jsx)("br",{})]}),"\n",(0,r.jsx)(i.h4,{id:"syntax",children:"Syntax"}),"\n",(0,r.jsx)(c.A,{children:"2"}),"\n",(0,r.jsxs)("p",{class:"Indented2",children:["The form of a ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-2/AA-2.8#S0019",children:"pragma"})})," Restrictions is as follows: ",(0,r.jsx)("br",{})]}),"\n",(0,r.jsx)(c.A,{children:"3"}),"\n",(0,r.jsxs)("p",{class:"Indented2",children:[" ",(0,r.jsx)("b",{children:"pragma"})," Restrictions(",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-13/AA-13.12#S0359",children:"restriction"})}),"{",", ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-13/AA-13.12#S0359",children:"restriction"})}),"}",");",(0,r.jsx)("br",{})]}),"\n",(0,r.jsx)(c.A,{children:"4/2"}
1),"\n",(0,r.jsx)(l.A,{items:["AI95-00381-01"]}),"\n",(0,r.jsx)(o.A,{children:(0,r.jsxs)(i.p,{children:[(0,r.jsx)("code",{children:"restriction"}),(0,r.jsx)("a",{id:"S0359"}),(0,r.jsx)("code",{children:" ::= "}),(0,r.jsxs)("i",{children:["restriction","_"]}),(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-2/AA-2.3#S0002",children:"identifier"})}),(0,r.jsx)("br",{})," | ",(0,r.jsxs)("i",{children:["restriction","_","parameter","_"]}),(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-2/AA-2.3#S0002",children:"identifier"})})," =",">"," ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-13/AA-13.12#S0360",children:"restriction_parameter_argument"})}),(0,r.jsx)("br",{})]})}),"\n",(0,r.jsx)(c.A,{children:"4.1/2"}),"\n",(0,r.jsx)(l.A,{items:["AI95-00381-01"]}),"\n",(0,r.jsx)(o.A,{children:(0,r.jsxs)(i.p,{children:[(0,r.jsxs)("code",{children:["restriction","_","parameter","_","argument"]}),(0,r.jsx)("a",{id:"S0360"}),(0,r.jsx)("code",{children:" ::= "}),(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-4/AA-4.1#S0091",children:"name"})})," | ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-4/AA-4.4#S0132",children:"expression"})}),(0,r.jsx)("br",{})]})}),"\n",(0,r.jsx)(i.h4,{id:"name-resolution-rules",children:"Name Resolution Rules"}),"\n",(0,r.jsx)(c.A,{children:"5"}),"\n",(0,r.jsxs)("p",{children:["Unless otherwise specified for a particular restriction, the ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-4/AA-4.4#S0132",children:"expression"})})," is expected to be of any integer type. ",(0,r.jsx)("br",{})]}),"\n",(0,r.jsx)(i.h4,{id:"legality-rules",children:"Legality Rules"}),"\n",(0,r.jsx)(c.A,{children:"6"}),"\n",(0,r.jsxs)("p",{children:["Unless otherwise specified for a particular restriction, the ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-4/AA-4.4#S0132",children:"expression"})})," shall be static, and its value shall be nonnegative. ",(0,r.jsx)("br",{})]}),"\n",(0,r.jsxs)(d.A,{children:[(0,r.jsx)(c.A,{children:"7.a/3"}),(0,r.jsxs)(a.A,{type:"aarm",aarm:"note",children:[(0,r.jsx)("i",{children:"This paragraph was deleted."}),(0,r.jsx)("br",{})]})]}),"\n",(0,r.jsxs)("p",{children:[(0,r.jsx)("i",{children:"Paragraph 7 was deleted."})," ",(0,r.jsx)("br",{})]}),"\n",(0,r.jsx)(i.h4,{id:"post-compilation-rules",children:"Post-Compilation Rules"}),"\n",(0,r.jsx)(c.A,{children:"8/3"}),"\n",(0,r.jsx)(l.A,{items:["AI05-0013-1"]}),"\n",(0,r.jsxs)("p",{children:["A ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-2/AA-2.8#S0019",children:"pragma"})})," Restrictions is a configuration pragma. If a ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-2/AA-2.8#S0019",children:"pragma"})})," Restrictions applies to any compilation unit included in the partition, this may impose either (or both) of two kinds of requirements, as specified for the particular restriction:",(0,r.jsx)("br",{})]}),"\n",(0,r.jsx)(c.A,{children:"8.1/3"}),"\n",(0,r.jsx)(l.A,{items:["AI05-0013-1"]}),"\n",(0,r.jsxs)("ul",{children:[(0,r.jsxs)("li",{children:["A restriction may impose requirements on some or all of the units comprising the partition. Unless otherwise specified for a particular restriction, such a requirement applies to all of the units comprising the partition and is enforced via a post-compilation check.",(0,r.jsx)("br",{})]}),(0,r.jsx)(c.A,{children:"8.2/3"}),(0,r.jsx)(l.A,{items:["AI05-0013-1"]}),(0,r.jsxs)("li",{children:["A restriction may impose requirements on the run-time behavior of the program, as indicated by the specification of run-time behavior associated with a violation of the requirement.",(0,r.jsx)("br",{})]})]}),"\n",(0,r.jsxs)(d.A,{children:[(0,r.jsx)(c.A,{children:"8.a.1/3"}),(0,r.jsx)(a.A,{type:"aarm",aarm:"ramification",children:(0,r.jsxs)(i.p,{children:[(0,r.jsx)("b",{}),"In this latter case, there is no post-compilation check needed for the requirement. ",(0,r.jsx)("br",{})]})})]}),"\n",(0,r.jsx)(c.A,{children:"8.3/1"}),"\n",(0,r.jsx)(l.A,{items:["AI95-00130-01"]}),"\n",(0,r.jsxs)("p",{children:["{",(0,r.jsx)("i",{children:"8652/0042"}),"}"," For the purpose of checking whether a partition contains constructs that violate any restriction (unless specified otherwise for a particular restriction):",(0,r.jsx)("br",{})]}),"\n",(0,r.jsx)(c.A,{children:"8.4/1"}),"\n",(0,r.jsx)(l.A,{items:["AI95-00130-01"]}),"\n",(0,r.jsxs)("ul",{children:[(0,r.jsxs)("li",{children:["{",(0,r.jsx)("i",{children:"8652/0042"}),"}"," Generic instances are logically expanded at the point of instantiation;",(0,r.jsx)("br",{})]}),(0,r.jsx)(c.A,{children:"8.5/1"}),(0,r.jsx)(l.A,{items:["AI95-00130-01"]}),(0,r.jsxs)("li",{children:["{",(0,r.jsx)("i",{children:"8652/0042"}),"}"," If an object of a type is declared or allocated and not explicitly initialized, then all expressions appearing in the definition for the type and any of its ancestors are presumed to be used;",(0,r.jsx)("br",{})]}),(0,r.jsx)(c.A,{children:"8.6/1"}),(0,r.jsx)(l.A,{items:["AI95-00130-01"]}),(0,r.jsxs)("li",{children:["{",(0,r.jsx)("i",{children:"8652/0042"}),"}"," A ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-3/AA-3.7#S0063",children:"default_expression"})})," for a formal parameter or a generic formal object is considered to be used if and only if the corresponding actual parameter is not provided in a given call or instantiation. ",(0,r.jsx)("br",{})]})]}),"\n",(0,r.jsx)(i.h4,{id:"implementation-permissions",children:"Implementation Permissions"}),"\n",(0,r.jsx)(c.A,{children:"8.7/3"}),"\n",(0,r.jsx)(l.A,{items:["AI05-0269-1"]}),"\n",(0,r.jsxs)("p",{children:["An implementation may provide implementation-defined restrictions; the identifier for an implementation-defined restriction shall differ from those of the language-defined restrictions. ",(0,r.jsx)("br",{})]}),"\n",(0,r.jsxs)(d.A,{children:[(0,r.jsx)(c.A,{children:"8.a.2/3"}),(0,r.jsx)(a.A,{type:"aarm",aarm:"implementation-defined",children:(0,r.jsxs)(i.p,{children:[(0,r.jsx)("b",{}),"Implementation-defined restrictions allowed in a ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-2/AA-2.8#S0019",children:"pragma"})})," Restrictions.",(0,r.jsx)("br",{})]})})]}),"\n",(0,r.jsx)(c.A,{children:"9"}),"\n",(0,r.jsxs)("p",{children:["An implementation may place limitations on the values of the ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-4/AA-4.4#S0132",children:"expression"})})," that are supported, and limitations on the supported combinations of restrictions. The consequences of violating such limitations are implementation defined. ",(0,r.jsx)("br",{})]}),"\n",(0,r.jsxs)(d.A,{children:[(0,r.jsx)(c.A,{children:"9.a"}),(0,r.jsx)(a.A,{type:"aarm",aarm:"implementation-defined",children:(0,r.jsxs)(i.p,{children:[(0,r.jsx)("b",{}),"The consequences of violating limitations on Restrictions ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-2/AA-2.8#S0019",children:"pragma"})}),"s.",(0,r.jsx)("br",{})]})})]}),"\n",(0,r.jsxs)(d.A,{children:[(0,r.jsx)(c.A,{children:"9.b"}),(0,r.jsx)(a.A,{type:"aarm",aarm:"ramification",children:(0,r.jsxs)(i.p,{children:[(0,r.jsx)("b",{}),"Such limitations may be enforced at compile time or at run time. Alternatively, the implementation is allowed to declare violations of the restrictions to be erroneous, and not enforce them at all. ",(0,r.jsx)("br",{})]})})]}),"\n",(0,r.jsx)(c.A,{children:"9.1/1"}),"\n",(0,r.jsx)(l.A,{items:["AI95-00130-01"]}),"\n",(0,r.jsxs)("p",{children:["{",(0,r.jsx)("i",{children:"8652/0042"}),"}"," An implementation is permitted to omit restriction checks for c
1ode that is recognized at compile time to be unreachable and for which no code is generated.",(0,r.jsx)("br",{})]}),"\n",(0,r.jsx)(c.A,{children:"9.2/1"}),"\n",(0,r.jsx)(l.A,{items:["AI95-00190-01"]}),"\n",(0,r.jsxs)("p",{children:["{",(0,r.jsx)("i",{children:"8652/0043"}),"}"," Whenever enforcement of a restriction is not required prior to execution, an implementation may nevertheless enforce the restriction prior to execution of a partition to which the restriction applies, provided that every execution of the partition would violate the restriction. ",(0,r.jsx)("br",{})]}),"\n",(0,r.jsx)(i.h4,{id:"syntax-1",children:"Syntax"}),"\n",(0,r.jsx)(c.A,{children:"10/3"}),"\n",(0,r.jsx)(l.A,{items:["AI95-00249-01","AI05-0246-1"]}),"\n",(0,r.jsxs)("p",{class:"Indented2",children:["The form of a ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-2/AA-2.8#S0019",children:"pragma"})})," Profile is as follows: ",(0,r.jsx)("br",{})]}),"\n",(0,r.jsx)(c.A,{children:"11/3"}),"\n",(0,r.jsxs)("p",{class:"Indented2",children:[" ",(0,r.jsx)("b",{children:"pragma"})," Profile (",(0,r.jsxs)("i",{children:["profile","_"]}),(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-2/AA-2.3#S0002",children:"identifier"})})," ","{",", ",(0,r.jsxs)("i",{children:["profile","_"]}),(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-2/AA-2.8#S0020",children:"pragma_argument_association"})}),"}",");",(0,r.jsx)("br",{})]}),"\n",(0,r.jsx)(i.h4,{id:"legality-rules-1",children:"Legality Rules"}),"\n",(0,r.jsx)(c.A,{children:"12/3"}),"\n",(0,r.jsx)(l.A,{items:["AI95-00249-01","AI05-0246-1"]}),"\n",(0,r.jsxs)("p",{children:["The ",(0,r.jsxs)("i",{children:["profile","_"]}),(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-2/AA-2.3#S0002",children:"identifier"})})," shall be the name of a usage profile. The semantics of any ",(0,r.jsxs)("i",{children:["profile","_"]}),(0,r.jsx)("code",{children:(0,r.jsxs)("a",{href:"/docs/arm/AA-2/AA-2.8#S0020",children:["pragma","_","argument","_","association"]})}),"s are defined by the usage profile specified by the ",(0,r.jsxs)("i",{children:["profile","_"]}),(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-2/AA-2.3#S0002",children:"identifier"})}),". ",(0,r.jsx)("br",{})]}),"\n",(0,r.jsx)(i.h4,{id:"static-semantics",children:"Static Semantics"}),"\n",(0,r.jsx)(c.A,{children:"13/3"}),"\n",(0,r.jsx)(l.A,{items:["AI95-00249-01","AI05-0246-1"]}),"\n",(0,r.jsxs)("p",{children:["A profile is equivalent to the set of configuration pragmas that is defined for each usage profile. ",(0,r.jsx)("br",{})]}),"\n",(0,r.jsx)(i.h4,{id:"post-compilation-rules-1",children:"Post-Compilation Rules"}),"\n",(0,r.jsx)(c.A,{children:"14/3"}),"\n",(0,r.jsx)(l.A,{items:["AI95-00249-01"]}),"\n",(0,r.jsxs)("p",{children:["A ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-2/AA-2.8#S0019",children:"pragma"})})," Profile is a configuration pragma. There may be more than one ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-2/AA-2.8#S0019",children:"pragma"})})," Profile for a partition. ",(0,r.jsx)("br",{})]}),"\n",(0,r.jsx)(i.h4,{id:"implementation-permissions-1",children:"Implementation Permissions"}),"\n",(0,r.jsx)(c.A,{children:"15/3"}),"\n",(0,r.jsx)(l.A,{items:["AI05-0269-1"]}),"\n",(0,r.jsxs)("p",{children:["An implementation may provide implementation-defined usage profiles; the identifier for an implementation-defined usage profile shall differ from those of the language-defined usage profiles.",(0,r.jsx)("br",{})]}),"\n",(0,r.jsxs)(d.A,{children:[(0,r.jsx)(c.A,{children:"15.a.1/3"}),(0,r.jsx)(a.A,{type:"aarm",aarm:"implementation-defined",children:(0,r.jsxs)(i.p,{children:[(0,r.jsx)("b",{}),"Implementation-defined usage profiles allowed in a ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-2/AA-2.8#S0019",children:"pragma"})})," Profile.",(0,r.jsx)("br",{})]})})]}),"\n",(0,r.jsxs)(d.A,{children:[(0,r.jsx)(c.A,{children:"16/2"}),(0,r.jsx)(l.A,{items:["AI95-00347-01"]}),(0,r.jsx)(a.A,{type:"aarm",aarm:"note",children:(0,r.jsxs)(i.p,{children:["NOTE 1 Restrictions intended to facilitate the construction of efficient tasking run-time systems are defined in ",(0,r.jsx)("a",{href:"/docs/arm/AA-D/AA-D.7",children:"D.7"}),". Restrictions intended for use when constructing high integrity systems are defined in ",(0,r.jsx)("a",{href:"/docs/arm/AA-H/AA-H.4",children:"H.4"}),".",(0,r.jsx)("br",{})]})})]}),"\n",(0,r.jsxs)(d.A,{children:[(0,r.jsx)(c.A,{children:"17"}),(0,r.jsx)(a.A,{type:"aarm",aarm:"note",children:(0,r.jsxs)(i.p,{children:["NOTE 2 An implementation has to enforce the restrictions in cases where enforcement is required, even if it chooses not to take advantage of the restrictions in terms of efficiency. ",(0,r.jsx)("br",{})]})})]}),"\n",(0,r.jsxs)(d.A,{children:[(0,r.jsx)(c.A,{children:"17.a"}),(0,r.jsx)(a.A,{type:"aarm",aarm:"discussion",children:(0,r.jsxs)(i.p,{children:[(0,r.jsx)("b",{}),"It is not the intent that an implementation will support a different run-time system for every possible combination of restrictions. An implementation might support only two run-time systems, and document a set of restrictions that is sufficient to allow use of the more efficient and safe one. ",(0,r.jsx)("br",{})]})})]}),"\n",(0,r.jsx)(d.A,{children:(0,r.jsx)(i.h4,{id:"extensions-to-ada-83",children:"Extensions to Ada 83"})}),"\n",(0,r.jsxs)(d.A,{children:[(0,r.jsx)(c.A,{children:"17.b"}),(0,r.jsx)(a.A,{type:"aarm",aarm:"note",children:(0,r.jsxs)(i.p,{children:["Pragma Restrictions is new to Ada 95. ",(0,r.jsx)("br",{})]})})]}),"\n",(0,r.jsx)(d.A,{children:(0,r.jsx)(i.h4,{id:"extensions-to-ada-95",children:"Extensions to Ada 95"})}),"\n",(0,r.jsxs)(d.A,{children:[(0,r.jsx)(c.A,{children:"17.c/3"}),(0,r.jsx)(l.A,{items:["AI95-00249-01","AI05-0246-1"]}),(0,r.jsx)(a.A,{type:"aarm",aarm:"note",children:(0,r.jsxs)(i.p,{children:[(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-2/AA-2.8#S0019",children:"Pragma"})}),' Profile is new; it was moved here by Ada 2012 and renamed to a "usage profile" but was otherwise unchanged. ',(0,r.jsx)("br",{})]})})]}),"\n",(0,r.jsx)(d.A,{children:(0,r.jsx)(i.h4,{id:"wording-changes-from-ada-95",children:"Wording Changes from Ada 95"})}),"\n",(0,r.jsxs)(d.A,{children:[(0,r.jsx)(c.A,{children:"17.d/2"}),(0,r.jsx)(l.A,{items:["AI95-00130-01"]}),(0,r.jsx)(a.A,{type:"aarm",aarm:"note",children:(0,r.jsxs)(i.p,{children:["{",(0,r.jsx)("i",{children:"8652/0042"}),"}"," ",(0,r.jsx)("b",{children:"Corrigendum:"})," Corrected the wording so that restrictions are checked inside of generic instantiations and in default expressions. Since not making these checks would violate the purpose of restrictions, we are not documenting this as an incompatibility.",(0,r.jsx)("br",{})]})})]}),"\n",(0,r.jsxs)(d.A,{children:[(0,r.jsx)(c.A,{children:"17.e/2"}),(0,r.jsx)(l.A,{items:["AI95-00190-01"]}),(0,r.jsx)(a.A,{type:"aarm",aarm:"note",children:(0,r.jsxs)(i.p,{children:["{",(0,r.jsx)("i",{children:"8652/0043"}),"}"," ",(0,r.jsx)("b",{children:"Corrigendum:"})," Added a permission that restrictions can be enforced at compile-time. While this is technically incompatible, documenting it as such would be unnecessarily alarming - there should not be any programs depen
1ding on the runtime failure of restrictions.",(0,r.jsx)("br",{})]})})]}),"\n",(0,r.jsxs)(d.A,{children:[(0,r.jsx)(c.A,{children:"17.f/2"}),(0,r.jsx)(l.A,{items:["AI95-00381-01"]}),(0,r.jsx)(a.A,{type:"aarm",aarm:"note",children:(0,r.jsxs)(i.p,{children:["The syntax of a ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-13/AA-13.12#S0360",children:"restriction_parameter_argument"})})," has been defined to better support restriction No","_","Dependence (see ",(0,r.jsx)("a",{href:"/docs/arm/AA-13/AA-13.12#Subclause_13.12.1",children:"13.12.1"}),"). ",(0,r.jsx)("br",{})]})})]}),"\n",(0,r.jsx)(d.A,{children:(0,r.jsx)(i.h4,{id:"wording-changes-from-ada-2005",children:"Wording Changes from Ada 2005"})}),"\n",(0,r.jsxs)(d.A,{children:[(0,r.jsx)(c.A,{children:"17.g/3"}),(0,r.jsx)(l.A,{items:["AI05-0013-1"]}),(0,r.jsx)(a.A,{type:"aarm",aarm:"note",children:(0,r.jsxs)(i.p,{children:[(0,r.jsx)("b",{children:"Correction"}),": When restrictions are checked has been clarified. ",(0,r.jsx)("br",{})]})})]}),"\n",(0,r.jsx)("a",{id:"Subclause_13.12.1"}),"\n",(0,r.jsx)(i.h2,{id:"13121--language-defined-restrictions-and-profiles",children:"13.12.1 Language-Defined Restrictions and Profiles"}),"\n",(0,r.jsx)(i.h4,{id:"static-semantics-1",children:"Static Semantics"}),"\n",(0,r.jsx)(c.A,{children:"1/2_13.12.1"}),"\n",(0,r.jsx)(l.A,{items:["AI95-00257-01"]}),"\n",(0,r.jsxs)("p",{children:["The following ",(0,r.jsxs)("i",{children:["restriction","_"]}),(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-2/AA-2.3#S0002",children:"identifier"})}),"s are language defined (additional restrictions are defined in the Specialized Needs Annexes):",(0,r.jsx)("br",{})]}),"\n",(0,r.jsx)(c.A,{children:"1.1/3_13.12.1"}),"\n",(0,r.jsx)(l.A,{items:["AI05-0241-1"]}),"\n",(0,r.jsxs)("dt",{children:[(0,r.jsx)("br",{}),"No","_","Implementation","_","Aspect","_","Specifications "]}),"\n",(0,r.jsx)("dl",{children:(0,r.jsxs)("dd",{children:["There are no implementation-defined aspects specified by an ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-13/AA-13.1#S0346",children:"aspect_specification"})}),". This restriction applies only to the current compilation or environment, not the entire partition. ",(0,r.jsx)("br",{})]})}),"\n",(0,r.jsxs)(d.A,{children:[(0,r.jsx)(c.A,{children:"1.a/3_13.12.1"}),(0,r.jsx)(l.A,{items:["AI05-0241-1"]}),(0,r.jsx)(a.A,{type:"aarm",aarm:"discussion",children:(0,r.jsxs)(i.p,{children:[(0,r.jsx)("b",{}),"This restriction (as well as others below) applies only to the current compilation, because it is likely that the runtime (and possibly user-written low-level code) will need to use implementation-defined aspects. But a partition-wide restriction applies everywhere, including the runtime. ",(0,r.jsx)("br",{})]})})]}),"\n",(0,r.jsx)(c.A,{children:"2/2_13.12.1"}),"\n",(0,r.jsx)(l.A,{items:["AI95-00257-01"]}),"\n",(0,r.jsxs)("dt",{children:[(0,r.jsx)("br",{}),"No","_","Implementation","_","Attributes "]}),"\n",(0,r.jsxs)("dl",{children:[(0,r.jsxs)("dd",{children:["There are no implementation-defined attributes. This restriction applies only to the current compilation or environment, not the entire partition. ",(0,r.jsx)("br",{})]}),(0,r.jsx)(c.A,{children:"2.1/3_13.12.1"}),(0,r.jsx)(l.A,{items:["AI05-0246-1","AI05-0269-1"]}),(0,r.jsxs)("dt",{children:[(0,r.jsx)("br",{}),"No","_","Implementation","_","Identifiers "]}),(0,r.jsxs)("dd",{children:["There are no usage names that denote declarations with implementation-defined identifiers that occur within language-defined packages or instances of language-defined generic packages. Such identifiers can arise as follows: ",(0,r.jsx)("br",{})]})]}),"\n",(0,r.jsx)(c.A,{children:"2.2/3_13.12.1"}),"\n",(0,r.jsx)("ul",{children:(0,r.jsxs)("li",{children:["The following language-defined packages and generic packages allow implementation-defined identifiers:",(0,r.jsx)("br",{})]})}),"\n",(0,r.jsx)(c.A,{children:"2.3/3_13.12.1"}),"\n",(0,r.jsxs)("ul",{children:[(0,r.jsxs)("li",{children:["package System (see ",(0,r.jsx)("a",{href:"/docs/arm/AA-13/AA-13.7",children:"13.7"}),");",(0,r.jsx)("br",{})]}),(0,r.jsx)(c.A,{children:"2.4/3_13.12.1"}),(0,r.jsxs)("li",{children:["package Standard (see ",(0,r.jsx)("a",{href:"/docs/arm/AA-A/AA-A.1",children:"A.1"}),");",(0,r.jsx)("br",{})]}),(0,r.jsx)(c.A,{children:"2.5/3_13.12.1"}
1),(0,r.jsxs)("li",{children:["package Ada.Command","_","Line (see ",(0,r.jsx)("a",{href:"/docs/arm/AA-A/AA-A.15",children:"A.15"}),");",(0,r.jsx)("br",{})]}),(0,r.jsx)(c.A,{children:"2.6/3_13.12.1"}),(0,r.jsxs)("li",{children:["package Interfaces.C (see ",(0,r.jsx)("a",{href:"/docs/arm/AA-B/AA-B.3",children:"B.3"}),");",(0,r.jsx)("br",{})]}),(0,r.jsx)(c.A,{children:"2.7/3_13.12.1"}),(0,r.jsxs)("li",{children:["package Interfaces.C.Strings (see ",(0,r.jsx)("a",{href:"/docs/arm/AA-B/AA-B.3#Subclause_B.3.1",children:"B.3.1"}),");",(0,r.jsx)("br",{})]}),(0,r.jsx)(c.A,{children:"2.8/3_13.12.1"}),(0,r.jsxs)("li",{children:["package Interfaces.C.Pointers (see ",(0,r.jsx)("a",{href:"/docs/arm/AA-B/AA-B.3#Subclause_B.3.2",children:"B.3.2"}),");",(0,r.jsx)("br",{})]}),(0,r.jsx)(c.A,{children:"2.9/3_13.12.1"}),(0,r.jsxs)("li",{children:["package Interfaces.COBOL (see ",(0,r.jsx)("a",{href:"/docs/arm/AA-B/AA-B.4",children:"B.4"}),");",(0,r.jsx)("br",{})]}),(0,r.jsx)(c.A,{children:"2.10/3_13.12.1"}),(0,r.jsxs)("li",{children:["package Interfaces.Fortran (see ",(0,r.jsx)("a",{href:"/docs/arm/AA-B/AA-B.5",children:"B.5"}),"); ",(0,r.jsx)("br",{})]})]}),"\n",(0,r.jsx)(c.A,{children:"2.11/3_13.12.1"}),"\n",(0,r.jsx)("ul",{children:(0,r.jsxs)("li",{children:["The following language-defined packages contain only implementation-defined identifiers:",(0,r.jsx)("br",{})]})}),"\n",(0,r.jsx)(c.A,{children:"2.12/3_13.12.1"}),"\n",(0,r.jsxs)("ul",{children:[(0,r.jsxs)("li",{children:["package System.Machine","_","Code (see ",(0,r.jsx)("a",{href:"/docs/arm/AA-13/AA-13.8",children:"13.8"}),");",(0,r.jsx)("br",{})]}),(0,r.jsx)(c.A,{children:"2.13/3_13.12.1"}),(0,r.jsxs)("li",{children:["package Ada.Directories.Information (see ",(0,r.jsx)("a",{href:"/docs/arm/AA-A/AA-A.16",children:"A.16"}),");",(0,r.jsx)("br",{})]}),(0,r.jsx)(c.A,{children:"2.14/3_13.12.1"}),(0,r.jsxs)("li",{children:["nested Implementation packages of the Queue containers (see ",(0,r.jsx)("a",{href:"/docs/arm/AA-A/AA-A.18#Subclause_A.18.28",children:"A.18.28"}),"-31);",(0,r.jsx)("br",{})]}),(0,r.jsx)(c.A,{children:"2.15/3_13.12.1"}),(0,r.jsxs)("li",{children:["package Interfaces (see ",(0,r.jsx)("a",{href:"/docs/arm/AA-B/AA-B.2",children:"B.2"}),");",(0,r.jsx)("br",{})]}),(0,r.jsx)(c.A,{children:"2.16/3_13.12.1"}),(0,r.jsxs)("li",{children:["package Ada.Interrupts.Names (see ",(0,r.jsx)("a",{href:"/docs/arm/AA-C/AA-C.3#Subclause_C.3.2",children:"C.3.2"}),").",(0,r.jsx)("br",{})]})]}),"\n",(0,r.jsx)(c.A,{children:"2.17/3_13.12.1"}),"\n",(0,r.jsxs)("dl",{children:[(0,r.jsxs)("dd",{children:["For package Standard, Standard.Long","_","Integer and Standard.Long","_","Float are considered language-defined identifiers, but identifiers such as Standard.Short","_","Short","_","Integer are considered implementation-defined.",(0,r.jsx)("br",{})]}),(0,r.jsx)(c.A,{children:"2.18/3_13.12.1"}),(0,r.jsxs)("dd",{children:["This restriction applies only to the current compilation or environment, not the entire partition.",(0,r.jsx)("br",{})]}),(0,r.jsx)(c.A,{children:"3/2_13.12.1"}),(0,r.jsx)(l.A,{items:["AI95-00257-01"]}),(0,r.jsxs)("dt",{children:[(0,r.jsx)("br",{}),"No","_","Implementation","_","Pragmas "]}),(0,r.jsxs)("dd",{children:["There are no implementation-defined pragmas or pragma arguments. This restriction applies only to the current compilation or environment, not the entire partition.",(0,r.jsx)("br",{})]}),(0,r.jsx)(c.A,{children:"3.1/3_13.12.1"}),(0,r.jsx)(l.A,{items:["AI05-0242-1"]}),(0,r.jsxs)("dt",{children:[(0,r.jsx)("br",{}),"No","_","Implementation","_","Units "]}),(0,r.jsxs)("dd",{children:["There is no mention in the ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-10/AA-10.1#S0292",children:"context_clause"})})," of any implementation-defined descendants of packages Ada, Interfaces, or System. This restriction applies only to the current compilation or environment, not the entire partition.",(0,r.jsx)("br",{})]}),(0,r.jsx)(c.A,{children:"4/3_13.12.1"}),(0,r.jsx)(l.A,{items:["AI95-00368-01","AI05-0229-1"]}),(0,r.jsxs)("dt",{children:[(0,r.jsx)("br",{}),"No","_","Obsolescent","_","Features "]}),(0,r.jsxs)("dd",{children:["There is no use of language features defined in Annex J. It is implementation defined whether uses of the renamings of ",(0,r.jsx)("a",{href:"/docs/arm/AA-J/AA-J.1",children:"J.1"})," and of the ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-2/AA-2.8#S0019",children:"pragma"})}),"s of ",(0,r.jsx)("a",{href:"/docs/arm/AA-J/AA-J.15",children:"J.15"})," are detected by this restriction. This restriction applies only to the current compilation or environment, not the entire partition. ",(0,r.jsx)("br",{})]})]}),"\n",(0,r.jsxs)(d.A,{children:[(0,r.jsx)(c.A,{children:"4.a/2_13.12.1"}),(0,r.jsx)(a.A,{type:"aarm",aarm:"reason",children:(0,r.jsxs)(i.p,{children:[(0,r.jsx)("b",{}),"A user could compile a rename like ",(0,r.jsx)("br",{})]})})]}),"\n",(0,r.jsxs)(d.A,{children:[(0,r.jsx)(c.A,{children:"4.b/2_13.12.1"}),(0,r.jsx)(o.A,{language:"ada",children:(0,r.jsxs)(i.p,{children:["with Ada.Text","_","IO;","\n","package Text","_","IO renames Ada.Text","_","IO;","\n"]})})]}),"\n",(0,r.jsxs)(d.A,{children:[(0,r.jsx)(c.A,{children:"4.c/2_13.12.1"}),(0,r.jsx)(a.A,{type:"aarm",aarm:"note",children:(0,r.jsxs)(i.p,{children:["Such a rename must not be disallowed by this restriction, nor should the compilation of such a rename be restricted by an implementation. Many implementations implement the renames of ",(0,r.jsx)("a",{href:"/docs/arm/AA-J/AA-J.1",children:"J.1"})," by compiling them normally; we do not want to require implementations to use a special mechanism to implement these renames.",(0,r.jsx)("br",{})]})})]}),"\n",(0,r.jsxs)(d.A,{children:[(0,r.jsx)(c.A,{children:"4.d/3_13.12.1"}),(0,r.jsx)(l.A,{items:["AI05-0229-1"]}),(0,r.jsx)(a.A,{type:"aarm",aarm:"note",children:(0,r.jsxs)(i.p,{children:["The pragmas have the same functionality as the corresponding aspect (unlike the typical obsolescent feature), and rejecting them could be a significant portability problem for existing code. ",(0,r.jsx)("br",{})]})})]}),"\n",(0,r.jsx)(c.A,{children:"5/3_13.12.1"}
1),"\n",(0,r.jsx)(l.A,{items:["AI95-00381-01","AI05-0241-1"]}),"\n",(0,r.jsxs)("p",{children:["The following ",(0,r.jsxs)("i",{children:["restriction","_","parameter","_"]}),(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-2/AA-2.3#S0002",children:"identifier"})}),"s are language defined:",(0,r.jsx)("br",{})]}),"\n",(0,r.jsx)(c.A,{children:"6/2_13.12.1"}),"\n",(0,r.jsx)(l.A,{items:["AI95-00381-01"]}),"\n",(0,r.jsxs)("dt",{children:[(0,r.jsx)("br",{}),"No","_","Dependence "]}),"\n",(0,r.jsxs)("dl",{children:[(0,r.jsxs)("dd",{children:["Specifies a library unit on which there are no semantic dependences.",(0,r.jsx)("br",{})]}),(0,r.jsx)(c.A,{children:"6.1/3_13.12.1"}),(0,r.jsx)(l.A,{items:["AI05-0241-1"]}),(0,r.jsxs)("dt",{children:[(0,r.jsx)("br",{}),"No","_","Specification","_","of","_","Aspect "]}),(0,r.jsxs)("dd",{children:["Identifies an aspect for which no ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-13/AA-13.1#S0346",children:"aspect_specification"})}),", ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-13/AA-13.3#S0349",children:"attribute_definition_clause"})}),", or ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-2/AA-2.8#S0019",children:"pragma"})})," is given.",(0,r.jsx)("br",{})]}),(0,r.jsx)(c.A,{children:"6.2/3_13.12.1"}),(0,r.jsx)(l.A,{items:["AI05-0272-1"]}),(0,r.jsxs)("dt",{children:[(0,r.jsx)("br",{}),"No","_","Use","_","Of","_","Attribute "]}),(0,r.jsxs)("dd",{children:["Identifies an attribute for which no ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-4/AA-4.1#S0100",children:"attribute_reference"})})," or ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-13/AA-13.3#S0349",children:"attribute_definition_clause"})})," is given.",(0,r.jsx)("br",{})]}),(0,r.jsx)(c.A,{children:"6.3/3_13.12.1"}),(0,r.jsx)(l.A,{items:["AI05-0272-1"]}),(0,r.jsxs)("dt",{children:[(0,r.jsx)("br",{}),"No","_","Use","_","Of","_","Pragma "]}),(0,r.jsxs)("dd",{children:["Identifies a ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-2/AA-2.8#S0019",children:"pragma"})})," which is not to be used.",(0,r.jsx)("br",{})]}),(0,r.jsx)(c.A,{children:"6.4/5_13.12.1"}),(0,r.jsx)(l.A,{items:["AI12-0389-1"]}),(0,r.jsxs)("dt",{children:[(0,r.jsx)("br",{}),"No","_","Unrecognized","_","Aspects "]}),(0,r.jsxs)("dd",{children:["There are no ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-13/AA-13.1#S0346",children:"aspect_specification"})}),"s having an unrecognized ",(0,r.jsxs)("i",{children:["aspect","_"]}),(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-2/AA-2.3#S0002",children:"identifier"})}),". This restriction applies only to the current compilation or environment, not the entire partition.",(0,r.jsx)("br",{})]})]}),"\n",(0,r.jsxs)(d.A,{children:[(0,r.jsx)(c.A,{children:"6.a/5_13.12.1"}),(0,r.jsx)(a.A,{type:"aarm",aarm:"ramification",children:(0,r.jsxs)(i.p,{children:[(0,r.jsx)("b",{}),"When this restriction is in effect, unrecognized aspects cannot be ignored in the current compilation; they violate the restriction. This is true despite the Implementation Permissions of ",(0,r.jsx)("a",{href:"/docs/arm/AA-13/AA-13.1#Subclause_13.1.1",children:"13.1.1"}),". ",(0,r.jsx)("br",{})]})})]}),"\n",(0,r.jsx)(c.A,{children:"6.5/5_13.12.1"}),"\n",(0,r.jsx)(l.A,{items:["AI12-0389-1"]}),"\n",(0,r.jsxs)("dt",{children:[(0,r.jsx)("br",{}),"No","_","Unrecognized","_","Pragmas "]}),"\n",(0,r.jsx)("dl",{children:(0,r.jsxs)("dd",{children:["There are no ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-2/AA-2.8#S0019",children:"pragma"})}),"s having an unrecognized pragma ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-2/AA-2.3#S0002",children:"identifier"})}),". This restriction applies only to the current compilation or environment, not the entire partition.",(0,r.jsx)("br",{})]})}),"\n",(0,r.jsxs)(d.A,{children:[(0,r.jsx)(c.A,{children:"6.b/5_13.12.1"}),(0,r.jsx)(a.A,{type:"aarm",aarm:"ramification",children:(0,r.jsxs)(i.p,{children:[(0,r.jsx)("b",{}),"When this restriction is in effect, unrecognized pragmas cannot be ignored in the current compilation; they violate the restriction. This is true despite the rules of ",(0,r.jsx)("a",{href:"/docs/arm/AA-2/AA-2.8",children:"2.8"}),". ",(0,r.jsx)("br",{})]})})]}),"\n",(0,r.jsx)(i.h4,{id:"legality-rules-2",children:"Legality Rules"}),"\n",(0,r.jsx)(c.A,{children:"7/5_13.12.1"}
1),"\n",(0,r.jsx)(l.A,{items:["AI95-00381-01","AI12-0444-1"]}),"\n",(0,r.jsxs)("p",{children:["The ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-13/AA-13.12#S0360",children:"restriction_parameter_argument"})})," of a No","_","Dependence restriction shall be a ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-4/AA-4.1#S0091",children:"name"})}),"; the ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-4/AA-4.1#S0091",children:"name"})})," shall have the form of a full expanded name of a library unit, but can be a name that has no corresponding unit currently present in the environment.",(0,r.jsx)("br",{})]}),"\n",(0,r.jsxs)(d.A,{children:[(0,r.jsx)(c.A,{children:"7.a/2_13.12.1"}),(0,r.jsx)(a.A,{type:"aarm",aarm:"ramification",children:(0,r.jsxs)(i.p,{children:[(0,r.jsx)("b",{}),"This ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-4/AA-4.1#S0091",children:"name"})})," is not resolved. ",(0,r.jsx)("br",{})]})})]}),"\n",(0,r.jsx)(c.A,{children:"7.1/3_13.12.1"}),"\n",(0,r.jsx)(l.A,{items:["AI05-0241-1"]}),"\n",(0,r.jsxs)("p",{children:["The ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-13/AA-13.12#S0360",children:"restriction_parameter_argument"})})," of a No","_","Specification","_","of","_","Aspect restriction shall be an ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-2/AA-2.3#S0002",children:"identifier"})}),"; this is an identifier specific to a pragma (see ",(0,r.jsx)("a",{href:"/docs/arm/AA-2/AA-2.8",children:"2.8"}),") and does not denote any declaration.",(0,r.jsx)("br",{})]}),"\n",(0,r.jsxs)(d.A,{children:[(0,r.jsx)(c.A,{children:"7.b/3_13.12.1"}),(0,r.jsx)(a.A,{type:"aarm",aarm:"ramification",children:(0,r.jsxs)(i.p,{children:[(0,r.jsx)("b",{}),"This ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-13/AA-13.12#S0360",children:"restriction_parameter_argument"})})," is not resolved as it is an identifier specific to a pragma. As for No","_","Dependence, there is no check that the aspect ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-2/AA-2.3#S0002",children:"identifier"})})," is meaningful; it might refer to an implementation-defined aspect on one implementation, but nothing at all on another implementation. ",(0,r.jsx)("br",{})]})})]}),"\n",(0,r.jsx)(c.A,{children:"7.2/3_13.12.1"}),"\n",(0,r.jsx)(l.A,{items:["AI05-0272-1"]}),"\n",(0,r.jsxs)("p",{children:["The ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-13/AA-13.12#S0360",children:"restriction_parameter_argument"})})," of a No","_","Use","_","Of","_","Attribute restriction shall be an ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-2/AA-2.3#S0002",children:"identifier"})})," or one of the reserved words Access, Delta, Digits, Mod, or Range; this is an identifier specific to a pragma.",(0,r.jsx)("br",{})]}),"\n",(0,r.jsxs)(d.A,{children:[(0,r.jsx)(c.A,{children:"7.c/3_13.12.1"}),(0,r.jsx)(a.A,{type:"aarm",aarm:"ramification",children:(0,r.jsxs)(i.p,{children:[(0,r.jsx)("b",{}),"This ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-13/AA-13.12#S0360",children:"restriction_parameter_argument"})})," is not resolved as it is an identifier specific to a pragma. There is no check that the attribute identifier refers to a known ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-4/AA-4.1#S0101",children:"attribute_designator"})}),"; it might refer to an implementation-defined attribute on one implementation, but nothing at all on another implementation. ",(0,r.jsx)("br",{})]})})]}),"\n",(0,r.jsx)(c.A,{children:"7.3/3_13.12.1"}),"\n",(0,r.jsx)(l.A,{items:["AI05-0272-1"]}),"\n",(0,r.jsxs)("p",{children:["The ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-13/AA-13.12#S0360",children:"restriction_parameter_argument"})})," of a No","_","Use","_","Of","_","Pragma restriction shall be an ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-2/AA-2.3#S0002",children:"identifier"})})," or the reserved word Interface; this is an identifier specific to a pragma.",(0,r.jsx)("br",{})]}),"\n",(0,r.jsxs)(d.A,{children:[(0,r.jsx)(c.A,{children:"7.d/3_13.12.1"}),(0,r.jsx)(a.A,{type:"aarm",aarm:"ramification",children:(0,r.jsxs)(i.p,{children:[(0,r.jsx)("b",{}),"This ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-13/AA-13.12#S0360",children:"restriction_parameter_argument"})})," is not resolved as it is an identifier specific to a pragma. There is no check that the pragma identifier refers to a known ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-2/AA-2.8#S0019",children:"pragma"})}),"; it might refer to an implementation-defined pragma on one implementation, but nothing at all on another implementation. ",(0,r.jsx)("br",{})]})})]}),"\n",(0,r.jsx)(i.h4,{id:"post-compilation-rules-2",children:"Post-Compilation Rules"}),"\n",(0,r.jsx)(c.A,{children:"8/3_13.12.1"}
1),"\n",(0,r.jsx)(l.A,{items:["AI95-00381-01","AI05-0241-1"]}),"\n",(0,r.jsxs)("p",{children:["No compilation unit included in the partition shall depend semantically on the library unit identified by the ",(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-4/AA-4.1#S0091",children:"name"})})," of a No","_","Dependence restriction.",(0,r.jsx)("br",{})]}),"\n",(0,r.jsxs)(d.A,{children:[(0,r.jsx)(c.A,{children:"8.a/5_13.12.1"}),(0,r.jsx)(l.A,{items:["AI12-0005-1"]}),(0,r.jsx)(a.A,{type:"aarm",aarm:"ramification",children:(0,r.jsxs)(i.p,{children:[(0,r.jsx)("b",{}),"There is no requirement that the library unit actually exists. One possible use of the pragma is to prevent the use of implementation-defined units; when the program is ported to a different compiler, it is perfectly reasonable that no unit with the name exists. ",(0,r.jsx)("br",{})]})})]}),"\n",(0,r.jsx)(i.h4,{id:"static-semantics-2",children:"Static Semantics"}),"\n",(0,r.jsx)(c.A,{children:"9/3_13.12.1"}),"\n",(0,r.jsx)(l.A,{items:["AI05-0246-1"]}),"\n",(0,r.jsxs)("p",{children:["The following ",(0,r.jsxs)("i",{children:["profile","_"]}),(0,r.jsx)("code",{children:(0,r.jsx)("a",{href:"/docs/arm/AA-2/AA-2.3#S0002",children:"identifier"})})," is language defined:",(0,r.jsx)("br",{})]}),"\n",(0,r.jsx)(c.A,{children:"10/3_13.12.1"}),"\n",(0,r.jsx)(l.A,{items:["AI05-0246-1"]}),"\n",(0,r.jsxs)("dt",{children:[(0,r.jsx)("br",{}),"No","_","Implementation","_","Extensions "]}),"\n",(0,r.jsx)("dl",{children:(0,r.jsx)("dd",{children:(0,r.jsx)("br",{})})}),"\n",(0,r.jsx)(c.A,{children:"11/3_13.12.1"}),"\n",(0,r.jsx)(l.A,{items:["AI05-0246-1"]}),"\n",(0,r.jsxs)("p",{children:["For usage profile No","_","Implementation","_","Extensions, there shall be no ",(0,r.jsxs)("i",{children:["profile","_"]}),(0,r.jsx)("code",{children:(0,r.jsxs)("a",{href:"/docs/arm/AA-2/AA-2.8#S0020",children:["pragma","_","argument","_","association"]})}),"s.",(0,r.jsx)("br",{})]}),"\n",(0,r.jsx)(c.A,{children:"12/3_13.12.1"}),"\n",(0,r.jsx)(l.A,{items:["AI05-0246-1"]}),"\n",(0,r.jsxs)("p",{children:["The No","_","Implementation","_","Extensions usage profile is equivalent to the following restrictions: ",(0,r.jsx)("br",{})]}),"\n",(0,r.jsx)(c.A,{children:"13/3_13.12.1"}),"\n",(0,r.jsx)(o.A,{language:"ada",children:(0,r.jsxs)(i.p,{children:["No","_","Implementation","_","Aspect","_","Specifications,","\n","No","_","Implementation","_","Attributes,","\n","No","_","Implementation","_","Identifiers,","\n","No","_","Implementation","_","Pragmas,","\n","No","_","Implementation","_","Units.","\n"]})}),"\n",(0,r.jsx)(d.A,{children:(0,r.jsx)(i.h4,{id:"extensions-to-ada-95-1",children:"Extensions to Ada 95"})}),"\n",(0,r.jsxs)(d.A,{children:[(0,r.jsx)(c.A,{children:"13.a/2_13.12.1"}),(0,r.jsx)(l.A,{items:["AI95-00257-01","AI95-00368-01"]}),(0,r.jsx)(a.A,{type:"aarm",aarm:"note",children:(0,r.jsxs)(i.p,{children:["Restrictions No","_","Implementation","_","Attributes, No","_","Implementation","_","Pragmas, and No","_","Obsolescent","_","Features are new.",(0,r.jsx)("br",{})]})})]}),"\n",(0,r.jsxs)(d.A,{children:[(0,r.jsx)(c.A,{children:"13.b/2_13.12.1"}),(0,r.jsx)(l.A,{items:["AI95-00381-01"]}),(0,r.jsx)(a.A,{type:"aarm",aarm:"note",children:(0,r.jsxs)(i.p,{children:["Restriction No","_","Dependence is new. ",(0,r.jsx)("br",{})]})})]}),"\n",(0,r.jsx)(d.A,{children:(0,r.jsx)(i.h4,{id:"extensions-to-ada-2005",children:"Extensions to Ada 2005"})}),"\n",(0,r.jsxs)(d.A,{children:[(0,r.jsx)(c.A,{children:"13.c/3_13.12.1"}),(0,r.jsx)(l.A,{items:["AI05-0241-1","AI05-0242-1","AI05-0246-1","AI05-0272-1"]}),(0,r.jsx)(a.A,{type:"aarm",aarm:"note",children:(0,r.jsxs)(i.p,{children:["Restrictions No","_","Implementation","_","Aspect","_","Specifications, No","_","Implementation","_","Identifiers, No","_","Implementation","_","Units, No","_","Specification","_","of","_","Aspect, No","_","Use","_","of","_","Attribute, and No","_","Use","_","of","_","Pragma are new.",(0,r.jsx)("br",{})]})})]}),"\n",(0,r.jsxs)(d.A,{children:[(0,r.jsx)(c.A,{children:"13.d/3_13.12.1"}),(0,r.jsx)(l.A,{items:["AI05-0246-1"]}),(0,r.jsx)(a.A,{type:"aarm",aarm:"note",children:(0,r.jsxs)(i.p,{children:["Profile No","_","Implementation","_","Extensions is new. ",(0,r.jsx)("br",{})]})})]}),"\n",(0,r.jsx)(d.A,{children:(0,r.jsx)(i.h4,{id:"extensions-to-ada-2012",children:"Extensions to Ada 2012"})}),"\n",(0,r.jsxs)(d.A,{children:[(0,r.jsx)(c.A,{children:"13.e/5_13.12.1"}),(0,r.jsx)(l.A,{items:["AI12-0389-1"]}),(0,r.jsx)(a.A,{type:"aarm",aarm:"note",children:(0,r.jsxs)(i.p,{children:["Restrictions No","_","Unrecognized","_","Aspects and No","_","Unrecognized","_","Pragmas are new. ",(0,r.jsx)("br",{})]})})]})]})}function p(e={}){let{wrapper:i}={...(0,t.R)(),...e.components};return i?(0,r.jsx)(i,{...e,children:(0,r.jsx)(m,{...e})}):m(e)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.