Modified: trunk/jparsetree/lib/jparsetree.rb (686 => 687)
--- trunk/jparsetree/lib/jparsetree.rb 2007-08-11 14:51:52 UTC (rev 686)
+++ trunk/jparsetree/lib/jparsetree.rb 2007-08-13 03:16:24 UTC (rev 687)
@@ -479,21 +479,9 @@
visit(iVisited.case_node)
node = @stackElements.pop
@stackElements << []
- iVisited.child_nodes[0].accept(self.to_java_object)
-# iVisited.child_nodes.each {|n|
-# if !n.nil?
- # n.accept(self.to_java_object) unless n.nil?
- # temp = @stackElements.pop
- # if @stackElements.size > 0
- # @stackElements.last << temp
- # else
- # # empty body, :case was popped off, so pop it on again
- # @stackElements.insert(0,temp)
- # end
- # end
- # }
-
+ iVisited.child_nodes.each{|el| el.accept(self.to_java_object)}
+
@stackElements << location([:case, node, *JParseTree.filter_nested_arrays(@stackElements.pop)], iVisited)
nil
end
@@ -505,15 +493,26 @@
# @sexpr << :class
# @sexpr << iVisited.CPath.name.to_sym
clazzname = iVisited.getCPath.name.to_sym
- visit(iVisited.super_node)
+#
if iVisited.super_node != nil
- superclazz = location([:const, iVisited.super_node.name.to_sym], iVisited.super_node)
+ visit(iVisited.super_node)
+ super_node = @stackElements.pop
+ superclazz = super_node
+# superclazz = location([:const, iVisited.super_node.name.to_sym], iVisited.super_node)
+# superclazz = location([:const, iVisited.super_node.name.to_sym], iVisited.super_node)
+
else
superclazz = nil
end
visit(iVisited.body_node)
- klazz = location([:class,clazzname, superclazz, [:scope, JParseTree.filter_nested_arrays(@stackElements.pop)]], iVisited)
+ body_node = JParseTree.filter_nested_arrays(@stackElements.pop)
+ if body_node
+ klazz = location([:class,clazzname, superclazz, [:scope, body_node]], iVisited)
+ else
+ klazz = location([:class,clazzname, superclazz, [:scope]], iVisited)
+ end
+
# puts "CLASS #{klazz}"
if @stackElements == nil
@@ -931,7 +930,13 @@
def visitInstAsgnNode(iVisited)
# visitGlobalAsgnNode(iVisited)
visit(iVisited.value_node)
- @stackElements << location([:iasgn, iVisited.name.to_sym, @stackElements.pop], iVisited)
+ val = @stackElements.pop
+ if val
+ tmp = location([:iasgn, iVisited.name.to_sym, val], iVisited)
+ else
+ tmp = location([:iasgn, iVisited.name.to_sym], iVisited)
+ end
+ @stackElements << tmp
nil
end
@@ -953,7 +958,7 @@
end
visit(iVisited.then_body)
temp << JParseTree.filter_nested_arrays(@stackElements.pop)
- if iVisited.else_body != nil
+ if iVisited.else_body
visit(iVisited.else_body)
temp << JParseTree.filter_nested_arrays(@stackElements.pop)
else
@@ -1031,12 +1036,21 @@
# puts iVisited.to_s
visit(iVisited.head_node)
head = @stackElements.pop
+ if iVisited.args_node
+ visit(iVisited.args_node)
+ args = @stackElements.pop
+ else
+ args = nil
+ end
+
# visit(iVisited.args_node)
visit(iVisited.value_node)
- # TODO: find out how to do this!
- # TODO: handle all elements!
-# @stackElements << [:masgn, head, @stackElements.pop]
- @stackElements << location([:masgn, head, @stackElements.pop], iVisited)
+ val = @stackElements.pop
+ if args
+ @stackElements << location([:masgn, head, args, val], iVisited)
+ else
+ @stackElements << location([:masgn, head, val], iVisited)
+ end
nil
end
@@ -1233,10 +1247,19 @@
rescueNode = @stackElements.pop
visit(iVisited.else_node)
else_node = @stackElements.pop
+ p "Else: #{else_node} ||| #{body}"
if else_node == nil
- @stackElements << location([:rescue, JParseTree.filter_nested_arrays(body), rescueNode], iVisited)
+ if !body
+ @stackElements << location([:rescue, rescueNode], iVisited)
+ else
+ @stackElements << location([:rescue, JParseTree.filter_nested_arrays(body), rescueNode], iVisited)
+ end
else
- @stackElements << location([:rescue, JParseTree.filter_nested_arrays(body), rescueNode, JParseTree.filter_nested_arrays(else_node)], iVisited)
+ if body != [:nil] && body != nil
+ @stackElements << location([:rescue, :fuck3, JParseTree.filter_nested_arrays(body), rescueNode, JParseTree.filter_nested_arrays(else_node)], iVisited)
+ else
+ @stackElements << location([:rescue, :fuck4, rescueNode, JParseTree.filter_nested_arrays(else_node)], iVisited)
+ end
end
nil
end
@@ -1351,7 +1374,7 @@
visit(iVisited.body_node)
body = JParseTree.filter_nested_arrays(@stackElements.pop)
# TODO: ask about the last element "true"
- @stackElements << location([:until, cond, body, true], iVisited)
+ @stackElements << location([:until, cond, body, false], iVisited)
nil
end
@@ -1375,14 +1398,20 @@
def visitWhenNode(iVisited)
# puts iVisited.to_s
+ puts iVisited.expression_nodes
visit(iVisited.expression_nodes)
expr = @stackElements.pop
- visit(iVisited.body_node)
- body = @stackElements.pop
-
-
+ if iVisited.body_node
+ visit(iVisited.body_node)
+ body = @stackElements.pop
+ else
+ body = nil
+ end
+
@stackElements.last << location([:when, JParseTree.filter_nested_arrays(expr), JParseTree.filter_nested_arrays(body) ], iVisited)
+# puts "WHENODE: [EMAIL PROTECTED]"
if iVisited.next_case.class == org.jruby.ast.WhenNode
+ puts iVisited.next_case
visitWhenNode(iVisited.next_case)
else
visit(iVisited.next_case)