From d690d94cdd27cf475056cbd360d17377950ef860 Mon Sep 17 00:00:00 2001 From: Julian Dolby Date: Tue, 16 Oct 2018 00:34:31 -0400 Subject: [PATCH] more use for object literals --- .../ir/translator/ExposedNamesCollector.java | 8 ++++++ .../ibm/wala/cast/tree/visit/CAstVisitor.java | 28 +++++++++++++++++++ .../com/ibm/wala/cast/util/CAstPattern.java | 8 ++++-- 3 files changed, 42 insertions(+), 2 deletions(-) diff --git a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/translator/ExposedNamesCollector.java b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/translator/ExposedNamesCollector.java index 680adea84..e72731348 100644 --- a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/translator/ExposedNamesCollector.java +++ b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/translator/ExposedNamesCollector.java @@ -144,5 +144,13 @@ public class ExposedNamesCollector extends CAstVisitor visitor) { + // assume unknown node types don't do anything relevant to exposed names. + // override if this is untrue + return true; + } + } diff --git a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/tree/visit/CAstVisitor.java b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/tree/visit/CAstVisitor.java index c18231de4..8aef1b5e6 100644 --- a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/tree/visit/CAstVisitor.java +++ b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/tree/visit/CAstVisitor.java @@ -987,6 +987,17 @@ public abstract class CAstVisitor { break; } + case CAstNode.OBJECT_LITERAL: { + assert assign; + for(int i = 1; i < n.getChildCount(); i+=2) { + visitor.visit(n.getChild(i), context, visitor); + } + if (visitor.visitObjectLiteralAssign(n, v, a, context, visitor)) + return true; + visitor.leaveObjectLiteralAssign(n, v, a, context, visitor); + break; + } + default: { if (!visitor.doVisitAssignNodes(n, context, a, v, visitor)) { if (DEBUG) { @@ -1609,6 +1620,23 @@ public abstract class CAstVisitor { * @param c a visitor-specific context */ protected void leaveArrayLiteralAssign(CAstNode n, CAstNode v, CAstNode a, C c, @SuppressWarnings("unused") CAstVisitor visitor) { /* empty */ } + /** + * Visit an array literal Assignment node after visiting the RHS. + * @param n the LHS node to process + * @param v the RHS node to process + * @param a the assignment node to process + * @param c a visitor-specific context + * @return true if no further processing is needed + */ + protected boolean visitObjectLiteralAssign(CAstNode n, CAstNode v, CAstNode a, C c, @SuppressWarnings("unused") CAstVisitor visitor) { /* empty */ return false; } + /** + * Visit an array literal Assignment node after visiting the LHS. + * @param n the LHS node to process + * @param v the RHS node to process + * @param a the assignment node to process + * @param c a visitor-specific context + */ + protected void leaveObjectLiteralAssign(CAstNode n, CAstNode v, CAstNode a, C c, @SuppressWarnings("unused") CAstVisitor visitor) { /* empty */ } /** * Visit a Var Op/Assignment node after visiting the RHS. * @param n the LHS node to process diff --git a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/util/CAstPattern.java b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/util/CAstPattern.java index 64f428a7d..c54123ef0 100644 --- a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/util/CAstPattern.java +++ b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/util/CAstPattern.java @@ -413,8 +413,12 @@ public class CAstPattern { protected boolean doVisit(CAstNode n, Context context, CAstVisitor visitor) { return true; } - - + + @Override + protected boolean doVisitAssignNodes(CAstNode n, Context context, CAstNode v, CAstNode a, CAstVisitor visitor) { + return true; + } + } private static class Parser {