# CVS difference for arm/source/11.mss

Differences between 1.82 and version 1.83
Log of other versions for file arm/source/11.mss

```--- arm/source/11.mss	2012/01/22 06:25:08	1.82
+++ arm/source/11.mss	2012/02/18 02:17:38	1.83
@@ -1,10 +1,10 @@

-@Comment{\$Date: 2012/01/22 06:25:08 \$}
+@Comment{\$Date: 2012/02/18 02:17:38 \$}
@LabeledSection{Exceptions}

@Comment{\$Source: e:\\cvsroot/ARM/Source/11.mss,v \$}
-@Comment{\$Revision: 1.82 \$}
+@Comment{\$Revision: 1.83 \$}

@begin{Intro}
@redundant[This section defines the facilities for dealing with errors or other
@@ -958,6 +958,14 @@
Exception_Message should not include the Exception_Name.
Exception_Information should include both the Exception_Name and the
Exception_Message.
+
+
+should return a UTF-8 encoded string starting with a BOM (see
+@RefSecNum{String Encoding}) if and only if the result includes characters with
+code points greater than 255.]}
+
Text=[Exception_Information should provide
information useful for debugging, and should include the Exception_Name
@@ -965,6 +973,10 @@
Text=[Exception_Message by default should be short, provide
information useful for debugging, and should not include the Exception_Name.]}]}
+Text=[Exception_Message and Exception_Information should return a UTF-8 encoded
+string that starts with a BOM if any characters with a code point greater than
+255.]}]}

@begin{Reason}
It may seem strange to define two subprograms whose semantics is
@@ -1117,6 +1129,15 @@
define what the above functions return in the case where the name of an
exception contains such a character.]}
@end{ImplNote}
+@begin{Discussion}
+@ChgAdded{Version=[3],Text=[Since all of the routines and operations that raise
+and set the exception message take a string but do not interpret it, we need to
+say nothing to allow passing UTF-8 encoded strings with a BOM. Since encoding in
+this string is a common programming idiom, implementations should not modify any
+exception message string unless it starts with a BOM and does not contain any
+characters with code points greater than 255.]}
+@end{Discussion}

@begin{Extend83}
@@ -1218,6 +1239,33 @@
@RefSecNum{Type Invariants}) are collectively referred to as
@i{assertions}; their boolean expressions are referred to as @i{assertion
expressions}.@Defn{assertions}@Defn{assertion expressions}]}
+
+Text=<@ChgAdded{Version=[3],Text=[A predicate is an assertion that gives a
+boolean expression that is expected to be True for all objects of a given
+subtype.]}>}
+
+Text=<@ChgAdded{Version=[3],Text=[A precondition is an assertion that gives a
+boolean expression that is expected to be True when a given subprogram is
+called.]}>}
+
+Text=<@ChgAdded{Version=[3],Text=[A postcondition is an assertion that gives a
+boolean expression that is expected to be True when a given subprogram returns
+normally.]}>}
+
+Text=<@ChgAdded{Version=[3],Text=[A invariant is an assertion that gives a
+boolean expression that is expected to be True for all objects of a given
+private type when viewed from outside the enclosing package.]}>}
+