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 a32de08fc..ed1d20169 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 @@ -5,6 +5,7 @@ import java.util.Set; import com.ibm.wala.cast.tree.CAstEntity; import com.ibm.wala.cast.tree.CAstNode; +import com.ibm.wala.cast.tree.CAstSourcePositionMap; import com.ibm.wala.cast.tree.CAstSymbol; import com.ibm.wala.cast.tree.visit.CAstVisitor; import com.ibm.wala.util.collections.HashMapFactory; @@ -41,6 +42,10 @@ public class ExposedNamesCollector extends CAstVisitor { private Position currentPosition; - protected Position getCurrentPosition() { + public Position getCurrentPosition() { return currentPosition; } + protected CAstVisitor() { + + } + /** * This interface represents a visitor-specific context. All * it knows is how to get its top-level entity. It is expected @@ -43,7 +48,10 @@ public abstract class CAstVisitor { * @author Igor Peshansky */ public interface Context { + CAstEntity top(); + + CAstSourcePositionMap getSourceMap(); } /** @@ -406,8 +414,8 @@ public abstract class CAstVisitor { */ public final void visit(final CAstNode n, C context, CAstVisitor visitor) { Position restore = currentPosition; - if (context.top().getSourceMap() != null) { - Position p = context.top().getSourceMap().getPosition(n); + if (context.getSourceMap() != null) { + Position p = context.getSourceMap().getPosition(n); if (p != null) { currentPosition = p; } @@ -939,7 +947,7 @@ public abstract class CAstVisitor { System.err.println(("cannot handle assign to kind " + n.getKind())); throw new UnsupportedOperationException( "cannot handle assignment: " + - CAstPrinter.print(a, context.top().getSourceMap())); + CAstPrinter.print(a, context.getSourceMap())); } } } 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 d42135aa0..143531b2f 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 @@ -22,6 +22,7 @@ import java.util.regex.Pattern; import com.ibm.wala.cast.tree.CAstEntity; import com.ibm.wala.cast.tree.CAstNode; +import com.ibm.wala.cast.tree.CAstSourcePositionMap; import com.ibm.wala.cast.tree.visit.CAstVisitor; import com.ibm.wala.cast.tree.visit.CAstVisitor.Context; import com.ibm.wala.util.collections.HashMapFactory; @@ -394,6 +395,9 @@ public class CAstPattern { public CAstEntity top() { return e; } + public CAstSourcePositionMap getSourceMap() { + return e.getSourceMap(); + } }, v); return result; diff --git a/com.ibm.wala.ide.jdt/source/com/ibm/wala/cast/java/translator/jdt/JDTJava2CAstTranslator.java b/com.ibm.wala.ide.jdt/source/com/ibm/wala/cast/java/translator/jdt/JDTJava2CAstTranslator.java index a3a19af41..0007c8058 100644 --- a/com.ibm.wala.ide.jdt/source/com/ibm/wala/cast/java/translator/jdt/JDTJava2CAstTranslator.java +++ b/com.ibm.wala.ide.jdt/source/com/ibm/wala/cast/java/translator/jdt/JDTJava2CAstTranslator.java @@ -914,7 +914,7 @@ public class JDTJava2CAstTranslator { } public CAstSourcePositionMap.Position getPosition() { - return getSourceMap().getPosition(fAst); + return fDecl==null? getSourceMap().getPosition(fAst): makePosition(fDecl); } public CAstNodeTypeMap getNodeTypeMap() {