Hi, 

while writing some code transformation code, I found out
that in many implementations of RBProgramNode & co. the #copy 
message makes a sort of deep copy, copying also it's child nodes. 

However, it does NOT sets it's parent to the copy, so for copied
nodes, following does not hold: 

  someNode children anyOne parent == someNode

This seems to br wrong to me. In other implementations I can 
simply use #deepCopy and works fine, but I cannot do this in 
Pharo because #deepCopy fails. The reason is that in Pharo
RBProgramNodes are infested with OpalCompiler stuff which
apparently keeps BlockClosures which cannot be deep-copied. 
The tree I'm trying to copy is obtained using 
BlockClosure>>sourceNode. 

Question: Is there a way how to copy the parse tree with parents
set properly? 

If not, I'm inclined to fix #copy so it sets parent node properly
If that's not desirable for one reason or another, no problem, I'll 
do it differently (but not-so-nicely :-) 

Best, Jan




Reply via email to