Title: [687] trunk/jparsetree/lib/jparsetree.rb: chipping away at the failures - now down to 16 with ParseTree 2.0 compatibility suite
Revision
687
Author
murphee
Date
2007-08-12 23:16:24 -0400 (Sun, 12 Aug 2007)

Log Message

chipping away at the failures - now down to 16 with ParseTree 2.0 compatibility suite

Modified Paths

Diff

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)
_______________________________________________
Jruby-extras-devel mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/jruby-extras-devel

Reply via email to