#UI_ENHANCEMENT by cg
class: UnaryNode class
changed: #receiver:selector:fold:
better error message on constant-error (-2 sqrt)
--- 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'!