--- a/src/ProxyMethodJavaMethodInvocationNode.st Fri Feb 24 17:57:26 2012 +0000
+++ b/src/ProxyMethodJavaMethodInvocationNode.st Fri Feb 24 21:57:32 2012 +0000
@@ -83,6 +83,30 @@
].
"Created: / 16-12-2011 / 00:26:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+unwrappedArg: arg atIndex: index
+ | argJClass |
+
+ argJClass := (descriptor parameters at: index) javaClass.
+ ^MessageNode
+ receiver: (ConstantNode value: argJClass)
+ selector: #javaUnwrap:
+ arg: arg .
+
+ "Created: / 24-02-2012 / 20:39:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+unwrappedArgs: args
+ | unwrappedArgs |
+
+ unwrappedArgs := OrderedCollection new.
+ args withIndexDo:[:arg :idx|
+ unwrappedArgs add: (self unwrappedArg: arg atIndex: idx).
+ ].
+ ^unwrappedArgs
+
+ "Created: / 24-02-2012 / 20:41:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!ProxyMethodJavaMethodInvocationNode methodsFor:'evaluation'!
@@ -148,7 +172,10 @@
MessageNode
receiver: (ConstantNode value: descriptor return javaClass)
selector: #javaWrap:
- arg: (super generate: compiler).
+ arg: (MessageNode
+ receiver: SelfNode new
+ selector: method selector
+ args: (self unwrappedArgs: compiler args)).
^invocation
].
^self error:'Unknown programming language'.
@@ -171,7 +198,7 @@
"Created: / 22-12-2011 / 09:27:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 30-12-2011 / 15:20:08 / kursjan <kursjan@fit.cvut.cz>"
- "Modified (comment): / 03-01-2012 / 21:18:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 24-02-2012 / 20:41:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!ProxyMethodJavaMethodInvocationNode methodsFor:'testing'!