[Pydev-cvs] org.python.pydev/src/org/python/pydev/editor/codecompletion/revisited ASTManager.java,1.
Brought to you by:
fabioz
From: Fabio Z. <fa...@us...> - 2005-06-18 21:27:46
|
Update of /cvsroot/pydev/org.python.pydev/src/org/python/pydev/editor/codecompletion/revisited In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17477/src/org/python/pydev/editor/codecompletion/revisited Modified Files: ASTManager.java CompletionState.java Log Message: Index: CompletionState.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src/org/python/pydev/editor/codecompletion/revisited/CompletionState.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** CompletionState.java 3 Jun 2005 18:49:36 -0000 1.5 --- CompletionState.java 18 Jun 2005 21:27:37 -0000 1.6 *************** *** 13,16 **** --- 13,17 ---- import org.python.pydev.editor.codecompletion.revisited.modules.AbstractModule; import org.python.pydev.editor.codecompletion.revisited.modules.SourceModule; + import org.python.pydev.editor.codecompletion.revisited.visitors.Definition; import org.python.pydev.plugin.nature.PythonNature; *************** *** 24,27 **** --- 25,29 ---- public PythonNature nature; public Map memory = new HashMap(); + public Map definitionMemory = new HashMap(); public Map wildImportMemory = new HashMap(); *************** *** 56,59 **** --- 58,62 ---- state.memory = memory; state.wildImportMemory = wildImportMemory; + state.definitionMemory = definitionMemory; return state; } *************** *** 81,84 **** --- 84,106 ---- /** * @param module + * @param definition + */ + public void checkDefinitionMemory(AbstractModule module, Definition definition) { + List l; + if (this.definitionMemory.containsKey(module)){ + l = (List) this.definitionMemory.get(module); + if(l.contains(definition)){ + throw new CompletionRecursionException("Recursion found (token: "+definition+")"); + } + }else{ + l = new ArrayList(); + } + + l.add(definition); + definitionMemory.put(module, l); + + } + /** + * @param module * @param base */ Index: ASTManager.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src/org/python/pydev/editor/codecompletion/revisited/ASTManager.java,v retrieving revision 1.41 retrieving revision 1.42 diff -C2 -d -r1.41 -r1.42 *** ASTManager.java 3 Jun 2005 18:49:36 -0000 1.41 --- ASTManager.java 18 Jun 2005 21:27:37 -0000 1.42 *************** *** 437,440 **** --- 437,441 ---- if(!(defs[0].ast instanceof FunctionDef)){ //we might want to extend that later to check the return of some function... + CompletionState copy = state.getCopy(); copy.activationToken = defs[i].value; *************** *** 442,445 **** --- 443,449 ---- copy.col = defs[i].col; module = defs[i].module; + + state.checkDefinitionMemory(module, defs[i]); + IToken[] tks = getCompletionsForModule(module, copy); if(tks.length > 0) |