From b1bd07f6c9d8c206b8a7647567b31a3c9429cc12 Mon Sep 17 00:00:00 2001 From: Dana Binkley Date: Tue, 7 Jan 2025 17:39:28 +0000 Subject: [PATCH] Adding type invariant diagram as svg (and removing old png) --- .../03-type_invariants.rst | 2 +- .../276_type_contracts/02-type_invariants.rst | 2 +- images/type_invariant_check_flow.png | Bin 45326 -> 0 bytes images/type_invariant_check_flow.svg | 439 ++++++++++++++++++ 4 files changed, 441 insertions(+), 2 deletions(-) delete mode 100644 images/type_invariant_check_flow.png create mode 100644 images/type_invariant_check_flow.svg diff --git a/courses/fundamentals_of_ada/270_introduction_to_contracts/03-type_invariants.rst b/courses/fundamentals_of_ada/270_introduction_to_contracts/03-type_invariants.rst index 0e84fc0b4..b0f8cb8e3 100644 --- a/courses/fundamentals_of_ada/270_introduction_to_contracts/03-type_invariants.rst +++ b/courses/fundamentals_of_ada/270_introduction_to_contracts/03-type_invariants.rst @@ -62,7 +62,7 @@ Type Invariant Invariant Over Object Lifetime (Calls) ---------------------------------------- -.. image:: type_invariant_check_flow.png +.. image:: type_invariant_check_flow.svg .. container:: speakernote diff --git a/courses/fundamentals_of_ada/276_type_contracts/02-type_invariants.rst b/courses/fundamentals_of_ada/276_type_contracts/02-type_invariants.rst index 3761ec848..13f157b83 100644 --- a/courses/fundamentals_of_ada/276_type_contracts/02-type_invariants.rst +++ b/courses/fundamentals_of_ada/276_type_contracts/02-type_invariants.rst @@ -48,7 +48,7 @@ Type Invariant Verifications Invariant Over Object Lifetime (Calls) ---------------------------------------- -.. image:: type_invariant_check_flow.png +.. image:: type_invariant_check_flow.svg .. container:: speakernote diff --git a/images/type_invariant_check_flow.png b/images/type_invariant_check_flow.png deleted file mode 100644 index 8c2eac58bb29016224b2aaae03e1e81fe8819b1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45326 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 NzOIQ*xt9Iie*yWK*>C^= diff --git a/images/type_invariant_check_flow.svg b/images/type_invariant_check_flow.svg new file mode 100644 index 000000000..7551de7b5 --- /dev/null +++ b/images/type_invariant_check_flow.svg @@ -0,0 +1,439 @@ + + + +Exported Routine CallExported Routine CallImported Routine CallAutomaticType InvariantCheckNo invariant checksRaiseAssertion_ErrorException