blob: 66c217492aabc2251cbc42980058c6db3952568d [file] [log] [blame]
package org.eclipse.dltk.itcl.internal.core.parser;
import java.util.List;
import org.eclipse.dltk.ast.ASTNode;
import org.eclipse.dltk.ast.declarations.FieldDeclaration;
import org.eclipse.dltk.ast.declarations.ModuleDeclaration;
import org.eclipse.dltk.itcl.internal.core.parser.ast.IncrTclExInstanceVariable;
import org.eclipse.dltk.itcl.internal.core.parser.ast.IncrTclInstanceVariable;
import org.eclipse.dltk.tcl.core.TclParseUtil;
import org.eclipse.dltk.tcl.internal.core.codeassist.TclASTUtil;
public class IncrTclParseUtil {
public static FieldDeclaration findInstanceVariableDeclarationFrom(ModuleDeclaration module, ASTNode parent,
String commandNameValue) {
List<ASTNode> levels = TclParseUtil.findLevelsTo(module, parent);
int len = levels.size();
for (int j = 0; j < len; ++j) {
ASTNode astNodeParent = levels.get(len - 1 - j);
List childs = TclASTUtil.getStatements(astNodeParent);
if (childs == null) {
continue;
}
for (int i = 0; i < childs.size(); i++) {
if ((childs.get(i) instanceof IncrTclInstanceVariable)) {
IncrTclInstanceVariable inst = (IncrTclInstanceVariable) childs.get(i);
String elementFQN = TclParseUtil.getElementFQN(inst, "::", module);
if (inst.getName().equals(commandNameValue) || elementFQN.equals(commandNameValue)) {
return inst;
}
} else if (childs.get(i) instanceof IncrTclExInstanceVariable) {
IncrTclExInstanceVariable inst = (IncrTclExInstanceVariable) childs.get(i);
String elementFQN = TclParseUtil.getElementFQN(inst, "::", module);
if (inst.getName().equals(commandNameValue) || elementFQN.equals(commandNameValue)) {
return inst;
}
}
}
}
return null;
}
}