--- a/VSEFileSourceWriter.st Wed Jan 28 13:58:30 2015 +0100
+++ b/VSEFileSourceWriter.st Wed Jan 28 15:11:49 2015 +0100
@@ -163,6 +163,7 @@
self rewriteEOLComments.
self rewriteGlobalsWithNamespace.
self rewriteClassReferences.
+ self rewriteExceptionHandlers.
^ source.
!
@@ -246,6 +247,43 @@
].
!
+rewriteExceptionHandlers
+ |parser replacer newSource|
+
+ "/ all references to namespace variables
+ parser := Parser
+ parseMethod:source
+ in:methodClass
+ ignoreErrors:false
+ ignoreWarnings:false.
+
+ (parser messagesSent includesAny: #( 'answer:do:' 'ignoreIn:' )) ifTrue:[
+ self halt
+ ].
+
+ replacer := ParseTreeSourceRewriter new.
+ replacer alwaysPerformAllSearches:true.
+
+ replacer
+ replace: '[| `@temps | ``@.Statements. ] valueNowOrOnUnwindDo: ``@block'
+ "->"
+ with: '[| `@temps | ``@.Statements. ] ensure: ``@block';
+
+ replace: '[| `@temps | ``@.Statements. ] valueOnUnwindDo: ``@block'
+ "->"
+ with: '[| `@temps | ``@.Statements. ] ifCurtailed: ``@block';
+
+ replace:'``@err handle:``@handler do: ``@expr'
+ "->"
+ with: '``@expr on: ``@err do: ``@handler'.
+
+ (replacer executeTree: method parseTree) ifTrue:[
+ newSource := replacer executeReplacementsInSource:source.
+"/ self halt.
+ source := newSource.
+ ].
+!
+
rewriteGlobalsWithNamespace
|tree parser namesToRewrite|
@@ -298,10 +336,10 @@
!VSEFileSourceWriter class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic3/VSEFileSourceWriter.st,v 1.2 2015-01-28 12:58:30 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/VSEFileSourceWriter.st,v 1.3 2015-01-28 14:11:49 cg Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic3/VSEFileSourceWriter.st,v 1.2 2015-01-28 12:58:30 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/VSEFileSourceWriter.st,v 1.3 2015-01-28 14:11:49 cg Exp $'
! !