[Pydev-cvs] org.python.pydev.parser/src/org/python/pydev/parser/visitors/scope EasyAstIteratorBase
Brought to you by:
fabioz
From: Fabio Z. <fa...@us...> - 2008-02-27 01:34:30
|
Update of /cvsroot/pydev/org.python.pydev.parser/src/org/python/pydev/parser/visitors/scope In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20989/src/org/python/pydev/parser/visitors/scope Modified Files: EasyAstIteratorBase.java Log Message: Scope fixes when renaming parameter Index: EasyAstIteratorBase.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev.parser/src/org/python/pydev/parser/visitors/scope/EasyAstIteratorBase.java,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** EasyAstIteratorBase.java 31 Oct 2007 00:54:36 -0000 1.20 --- EasyAstIteratorBase.java 27 Feb 2008 01:34:32 -0000 1.21 *************** *** 10,14 **** --- 10,16 ---- import org.python.pydev.parser.jython.ast.ClassDef; import org.python.pydev.parser.jython.ast.FunctionDef; + import org.python.pydev.parser.jython.ast.Module; import org.python.pydev.parser.jython.ast.VisitorBase; + import org.python.pydev.parser.jython.ast.commentType; import org.python.pydev.parser.visitors.NodeUtils; *************** *** 29,32 **** --- 31,35 ---- protected SimpleNode lastVisited; + protected ASTEntry lastDefVisited; //ClassDef or FunctionDef private int higherLine = -1; *************** *** 104,111 **** --- 107,156 ---- entry.endLine = higherLine; } + + //also make comments found after the node a part of its context. + List<Object> s = entry.node.specialsAfter; + if(s != null){ + for(Object o:s){ + if(o instanceof commentType){ + commentType comment = (commentType) o; + if(comment.beginLine > entry.endLine){ + entry.endLine = comment.beginLine; + } + } + } + } } + this.lastDefVisited = entry; } + @Override + public Object visitModule(Module node) throws Exception { + Object ret = super.visitModule(node); + + //after visiting the module, let's put the comments to the last definition found + int size = this.nodes.size(); + if(size > 0){ + int i = -1; + if(node.specialsAfter != null){ + for (Object o : node.specialsAfter) { + if(o instanceof commentType){ + commentType type = (commentType) o; + if(type.beginLine > i){ + i = type.beginLine; + } + } + } + } + if(i != -1 && this.lastDefVisited != null){ + if(lastDefVisited.endLine < i){ + lastDefVisited.endLine = i; + } + } + + } + return ret; + } + /** * @param node the node we're adding in an 'atomic' way |