Skip to content

Commit

Permalink
Implement APSTUD-2820 - Handle common meta-programming idioms that de…
Browse files Browse the repository at this point in the history
…fine methods for Ruby indexing

  - Add unit tests and fixes for \"delegate\" method call.
  - Refactor common assertion code
  - Add unit tests for visiting ruby code to be sure we're picking up new methods/variables that some common meta-programming idioms produce in Rails (ie. cattr_*, delegate, attr_*, class_attribute).
  - invert string compares for safety.
  - Refactor attribute methods logic to share same main loop code.
  - Handle class_attribute function call.
  • Loading branch information
sgtcoolguy committed Jul 12, 2011
1 parent a4fca11 commit 2b3f697
Show file tree
Hide file tree
Showing 4 changed files with 1,033 additions and 70 deletions.
Expand Up @@ -16,7 +16,6 @@
import org.jrubyparser.StaticScope;
import org.jrubyparser.ast.ArgsNode;
import org.jrubyparser.ast.ArgumentNode;
import org.jrubyparser.ast.ArrayNode;
import org.jrubyparser.ast.CallNode;
import org.jrubyparser.ast.ClassNode;
import org.jrubyparser.ast.Colon2Node;
Expand All @@ -37,7 +36,6 @@
import org.jrubyparser.ast.NilNode;
import org.jrubyparser.ast.Node;
import org.jrubyparser.ast.SelfNode;
import org.jrubyparser.ast.SplatNode;
import org.jrubyparser.ast.StrNode;
import org.jrubyparser.ast.SymbolNode;
import org.jrubyparser.ast.TrueNode;
Expand Down Expand Up @@ -120,17 +118,11 @@ public static List<Node> getArgumentNodesFromFunctionCall(IArgumentNode iVisited
Node argsNode = iVisited.getArgsNode();

Iterator<Node> iter = null;
if (argsNode instanceof SplatNode)
if (argsNode != null)
{
SplatNode splat = (SplatNode) argsNode;
iter = splat.childNodes().iterator();
iter = argsNode.childNodes().iterator();
}
else if (argsNode instanceof ArrayNode)
{
ArrayNode arrayNode = (ArrayNode) iVisited.getArgsNode();
iter = arrayNode.childNodes().iterator();
}
else if (argsNode == null)
else
{
// block?
Node iterNode = null;
Expand Down

0 comments on commit 2b3f697

Please sign in to comment.