From: Pierre-Marie de Rodat <derodat@adacore.com>
To: gcc-patches@gcc.gnu.org
Cc: Piotr Trojanek <trojanek@adacore.com>
Subject: [Ada] Use pygments for Ada code examples of elaboration control
Date: Wed, 11 May 2022 08:54:33 +0000 [thread overview]
Message-ID: <20220511085433.GA2166696@adacore.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 188 bytes --]
Only enhancement of formatting.
Tested on x86_64-pc-linux-gnu, committed on trunk
gcc/ada/
* doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Change
blocks from plain code to Ada.
[-- Attachment #2: patch.diff --]
[-- Type: text/x-diff, Size: 5810 bytes --]
diff --git a/gcc/ada/doc/gnat_ugn/elaboration_order_handling_in_gnat.rst b/gcc/ada/doc/gnat_ugn/elaboration_order_handling_in_gnat.rst
--- a/gcc/ada/doc/gnat_ugn/elaboration_order_handling_in_gnat.rst
+++ b/gcc/ada/doc/gnat_ugn/elaboration_order_handling_in_gnat.rst
@@ -93,7 +93,7 @@ Elaboration code may appear in two distinct contexts:
[body] compilation unit, ignoring any other package [body] declarations in
between.
- ::
+ .. code-block:: ada
with Server;
package Client is
@@ -116,7 +116,7 @@ Elaboration code may appear in two distinct contexts:
bounded by the region starting from the ``begin`` keyword of the package body
and ending at the ``end`` keyword of the package body.
- ::
+ .. code-block:: ada
package body Client is
procedure Proc is
@@ -142,7 +142,7 @@ executed is referred to as **elaboration order**.
Within a single unit, elaboration code is executed in sequential order.
- ::
+ .. code-block:: ada
package body Client is
Result : ... := Server.Func;
@@ -190,13 +190,13 @@ factors:
A program may have several elaboration orders depending on its structure.
- ::
+ .. code-block:: ada
package Server is
function Func (Index : Integer) return Integer;
end Server;
- ::
+ .. code-block:: ada
package body Server is
Results : array (1 .. 5) of Integer := (1, 2, 3, 4, 5);
@@ -207,14 +207,14 @@ A program may have several elaboration orders depending on its structure.
end Func;
end Server;
- ::
+ .. code-block:: ada
with Server;
package Client is
Val : constant Integer := Server.Func (3);
end Client;
- ::
+ .. code-block:: ada
with Client;
procedure Main is begin null; end Main;
@@ -320,7 +320,7 @@ the desired elaboration order and avoiding ABE problems altogether.
A library package which does not require a completing body does not suffer
from ABE problems.
- ::
+ .. code-block:: ada
package Pack is
generic
@@ -358,7 +358,7 @@ the desired elaboration order and avoiding ABE problems altogether.
scenario can invoke a server target before the target body has been
elaborated because the spec and body are effectively "glued" together.
- ::
+ .. code-block:: ada
package Server is
pragma Elaborate_Body;
@@ -366,7 +366,7 @@ the desired elaboration order and avoiding ABE problems altogether.
function Func return Integer;
end Server;
- ::
+ .. code-block:: ada
package body Server is
function Func return Integer is
@@ -375,7 +375,7 @@ the desired elaboration order and avoiding ABE problems altogether.
end Func;
end Server;
- ::
+ .. code-block:: ada
with Server;
package Client is
@@ -425,13 +425,13 @@ depend on.
be elaborated prior to the unit with the pragma. Note that other unrelated
units may be elaborated in between the spec and the body.
- ::
+ .. code-block:: ada
package Server is
function Func return Integer;
end Server;
- ::
+ .. code-block:: ada
package body Server is
function Func return Integer is
@@ -440,7 +440,7 @@ depend on.
end Func;
end Server;
- ::
+ .. code-block:: ada
with Server;
pragma Elaborate (Server);
@@ -479,13 +479,13 @@ depend on.
|withed| by the spec and body of the argument, recursively. Note that other
unrelated units may be elaborated in between the spec and the body.
- ::
+ .. code-block:: ada
package Math is
function Factorial (Val : Natural) return Natural;
end Math;
- ::
+ .. code-block:: ada
package body Math is
function Factorial (Val : Natural) return Natural is
@@ -494,7 +494,7 @@ depend on.
end Factorial;
end Math;
- ::
+ .. code-block:: ada
package Computer is
type Operation_Kind is (None, Op_Factorial);
@@ -504,7 +504,7 @@ depend on.
Op : Operation_Kind) return Natural;
end Computer;
- ::
+ .. code-block:: ada
with Math;
package body Computer is
@@ -520,7 +520,7 @@ depend on.
end Compute;
end Computer;
- ::
+ .. code-block:: ada
with Computer;
pragma Elaborate_All (Computer);
@@ -738,7 +738,7 @@ execution. The warnings can be suppressed selectively with ``pragma Warnings
A *guaranteed ABE* arises when the body of a target is not elaborated early
enough, and causes *all* scenarios that directly invoke the target to fail.
- ::
+ .. code-block:: ada
package body Guaranteed_ABE is
function ABE return Integer;
@@ -765,7 +765,7 @@ the declaration of ``Val``. This invokes function ``ABE``, however the body of
A *conditional ABE* arises when the body of a target is not elaborated early
enough, and causes *some* scenarios that directly invoke the target to fail.
- ::
+ .. code-block:: ada
1. package body Conditional_ABE is
2. procedure Force_Body is null;
@@ -850,19 +850,19 @@ clauses, elaboration-control pragmas, or invocations in elaboration code.
The following example exhibits an elaboration circularity.
- ::
+ .. code-block:: ada
with B; pragma Elaborate (B);
package A is
end A;
- ::
+ .. code-block:: ada
package B is
procedure Force_Body;
end B;
- ::
+ .. code-block:: ada
with C;
package body B is
@@ -871,13 +871,13 @@ The following example exhibits an elaboration circularity.
Elab : constant Integer := C.Func;
end B;
- ::
+ .. code-block:: ada
package C is
function Func return Integer;
end C;
- ::
+ .. code-block:: ada
with A;
package body C is
reply other threads:[~2022-05-11 8:54 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220511085433.GA2166696@adacore.com \
--to=derodat@adacore.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=trojanek@adacore.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).