[Glass] RefactoringBrowser (RB) failing to correctly bind "self" in closures?
Dale Henrichs via Glass
glass at lists.gemtalksystems.com
Fri Nov 20 11:54:45 PST 2015
In tODE, I've been able to make `self` resolve to a proper object by
using the following to evaluate code:
| meth |
meth := self
_compileInContext: aContext
symbolList: symbolList
oldLitVars: litVarArray
environmentId: 0.
^ meth _executeInContext: aContext
`self` is bound to aContext ... presumable RB is passing in a `nil` arg
there ....
If you have fixes for RB, please fork the RB project[1] and share your
fixes via a pull request.
Dale
[1] https://github.com/dalehenrich/rb
On 11/19/2015 12:17 PM, Mariano Martinez Peck via Glass wrote:
> Hi guys,
>
> I have some code that uses RB and such code works correctly in Pharo
> but it fails in GemStone. It seems a problem with a closure which in
> Pharo "self" resolves to the real object while in GemStone resolves to
> nil.
>
> The way to reproduce it is:
>
> /| tree rewriter |/
> /tree := RBParser parseMethod: 'DoIt ^ [:proxy | proxy at:
> #oldSelector. ]'./
> /rewriter := RBParseTreeRewriter new./
> /rewriter /
> /replace: ('`#oldSelector `{:node | node value isSymbol and: [node
> value matchesRegex: ''.*oldSelector.*''] }')/
> /with: ('`{RBLiteralNode value: (`#oldSelector value copyReplaceAll:
> ''oldSelector'' with: ''newSelector'') asSymbol }')./
> /rewriter executeTree: tree./
> /rewriter tree newSource/
> And the problem is the line:
> /with: ('`{RBLiteralNode value: (`#oldSelector value copyReplaceAll:
> ''oldSelector'' with: ''newSelector'') asSymbol }')./
> which gets translated to:
> /
> [ :aDictionary |
> RBLiteralNode
> value:
> ((*self* lookupMatchFor: '`#oldSelector' in: aDictionary) value
> copyReplaceAll: 'oldSelector'
> with: 'newSelector') asSymbol ]
> /
> And the self there fails.
> Any idea how this is expected to work?
> Thanks in advance
>
> --
> Mariano
> http://marianopeck.wordpress.com
>
>
> _______________________________________________
> Glass mailing list
> Glass at lists.gemtalksystems.com
> http://lists.gemtalksystems.com/mailman/listinfo/glass
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gemtalksystems.com/mailman/private/glass/attachments/20151120/e4bdc7de/attachment.html>
More information about the Glass
mailing list