#UI_ENHANCEMENT by cg
authorClaus Gittinger <cg@exept.de>
Mon, 03 Jul 2017 13:59:14 +0200
changeset 4159 c4e6052f03c7
parent 4158 a52be3648cb6
child 4160 15ffef03219d
#UI_ENHANCEMENT by cg class: UnaryNode class changed: #receiver:selector:fold: better error message on constant-error (-2 sqrt)
UnaryNode.st
--- a/UnaryNode.st	Mon Jul 03 13:58:53 2017 +0200
+++ b/UnaryNode.st	Mon Jul 03 13:59:14 2017 +0200
@@ -59,7 +59,7 @@
     "return a new UnaryNode for sending selector selectorString to receiver r.
      If folding is true, fold constant expressions."
 
-    |result recVal selector canFold globalName|
+    |result recVal selector canFold globalName caughtErrorMessage|
 
 "
     The constant folding code can usually not optimize things - this may change
@@ -190,20 +190,22 @@
             (recVal respondsTo:selector) ifTrue:[
                 SignalSet anySignal "Number domainErrorSignal" handle:[:ex |
                     "in case of an error, abort fold and return original"
+                    caughtErrorMessage := ex description.
                     ex return
                 ] do:[
                     result := recVal perform:selector.
                     ^ ConstantNode type:(ConstantNode typeOfConstant:result) value:result
                 ].
                 "when we reach here, something went wrong (something like 0.0 log)"
-                ^ ParseErrorNode errorString:'error occurred while evaluating constant expression'
+                ^ ParseErrorNode 
+                    errorString:(caughtErrorMessage,' - error occurred while evaluating constant expression')
             ].
         ].
     ].
 
     ^ (self basicNew) receiver:r selector:selectorString args:nil lineno:0
 
-    "Modified: / 05-03-2007 / 15:11:26 / cg"
+    "Modified: / 03-07-2017 / 13:56:31 / cg"
 ! !
 
 !UnaryNode methodsFor:'accessing'!