aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ChangeLog9
-rw-r--r--src/interp/i-analy.boot6
-rw-r--r--src/interp/msgdb.boot16
3 files changed, 25 insertions, 6 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 5f41fd6d..21772fcc 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,14 @@
2010-12-15 Gabriel Dos Reis <gdr@cs.tamu.edu>
+ * interp/msgdb.boot (applyPrefix2String): New.
+ (substituteSegmentedMsg): Use to implement documented behaviour
+ of formatting code P.
+ * interp/i-analy.boot (printableArgModeSetList): Don't call
+ prefix2String here.
+ (bottomUpForm0): Likewise.
+
+2010-12-15 Gabriel Dos Reis <gdr@cs.tamu.edu>
+
* boot/tokens.boot: symbolName is now a builtin function.
* interp/sys-utility.boot (stringImage): New.
* interp/format.boot (form2String1): Use it. Tidy.
diff --git a/src/interp/i-analy.boot b/src/interp/i-analy.boot
index 8645b391..7b44377d 100644
--- a/src/interp/i-analy.boot
+++ b/src/interp/i-analy.boot
@@ -579,9 +579,9 @@ removeUnionsAtStart(argl,modeSets) ==
printableArgModeSetList() ==
amsl := nil
for a in reverse $origArgModeSetList repeat
- b := prefix2String first a
+ b := first a
if atom b then b := [b]
- amsl := ['"%l",:b,:amsl]
+ amsl := ['"%l",b,:amsl]
if amsl then amsl := rest amsl
amsl
@@ -642,7 +642,7 @@ bottomUpForm0(t,op,opName,argl,argModeSetList) ==
if null(opName1) then
opName1 :=
- (o := getValue op0) => prefix2String objMode o
+ (o := getValue op0) => objMode o
'"<unknown type>"
msgKey :=
null amsl => "S2IB0013"
diff --git a/src/interp/msgdb.boot b/src/interp/msgdb.boot
index 6e68ae3f..efa3ddff 100644
--- a/src/interp/msgdb.boot
+++ b/src/interp/msgdb.boot
@@ -153,6 +153,16 @@ removeAttributes msg ==
attList := rest attList
[msg,attList]
+applyPrefix2String args ==
+ [:f x for x in args] where
+ f x ==
+ -- FIXME: we should in fact check for formatting codes
+ cons? x => g x
+ [x]
+ g x ==
+ $texFormatting => prefix2StringAsTeX x
+ prefix2String x
+
substituteSegmentedMsg(msg,args) ==
-- this does substitution of the parameters
l := NIL
@@ -192,9 +202,9 @@ substituteSegmentedMsg(msg,args) ==
$texFormatting => arg := prefix2StringAsTeX arg
arg := prefix2String arg
if char 'P in q then
- $texFormatting => arg := [prefix2StringAsTeX x for x in arg]
- arg := [prefix2String x for x in arg]
- if char 'o in q and $texFormatting then arg := operationLink(arg)
+ arg := applyPrefix2String arg
+ if char 'o in q and $texFormatting then
+ arg := operationLink(arg)
if char 'c in q then arg := [['"%ce",:arg]]
if char 'r in q then arg := [['"%rj",:arg]]