ProxyMethodGuardNode.st
branchdevelopment
changeset 1856 f2e8307a717f
parent 1818 2e5ed72e7dfd
child 1864 60a8dc26c8c6
--- a/ProxyMethodGuardNode.st	Sun Dec 02 19:38:19 2012 +0000
+++ b/ProxyMethodGuardNode.st	Mon Dec 03 19:28:28 2012 +0000
@@ -110,12 +110,23 @@
     "Generate a ParseNode that evaluate myself. Used for
      byte-compiling the proxies"
 
+    | first next  |
 
-    ^MessageNode
-        receiver: (condition generate: compiler)
-        selector: #ifTrue:ifFalse:
-        arg1: (BlockNode withExpression: (ReturnNode expression:(action generate: compiler)) in: nil)
-        arg2: (BlockNode withExpression: ("ReturnNode expression:"(fallback generate: compiler)) in: nil)
+    first := StatementNode new.
+    first expression:
+        (MessageNode
+            receiver: (condition generate: compiler)
+            selector: #ifTrue:
+            arg: (BlockNode withExpression: (ReturnNode expression:(action generate: compiler)) in: nil)).
+    next := fallback generate: compiler.
+    fallback isProxyMethodGuardNode ifFalse:[
+        next := ReturnNode expression: next.
+    ].
+    next isStatementNode ifFalse:[
+        next := StatementNode new expression: next.
+    ].
+    first nextStatement: next.
+    ^first.
 
     "
     ^(condition evaluateWithReceiver: receiver arguments: arguments) ifTrue:[
@@ -127,6 +138,7 @@
     "
 
     "Created: / 22-12-2011 / 09:26:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 03-12-2012 / 19:12:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !ProxyMethodGuardNode methodsFor:'testing'!