use of org.python.pydev.parser.jython.ast.Pass in project Pydev by fabioz.
the class MessagesManager method addUnusedMessage.
/**
* adds a message for something that was not used
*
* @param node the node representing the scope being closed when adding the
* unused message
*/
public void addUnusedMessage(SimpleNode node, Found f) {
List<GenAndTok> all = f.getAll();
int len = all.size();
for (int i = 0; i < len; i++) {
GenAndTok g = all.get(i);
if (g.generator instanceof SourceToken) {
SimpleNode ast = ((SourceToken) g.generator).getAst();
// it can be an unused import
boolean isFromImport = ast instanceof ImportFrom;
if (isFromImport || ast instanceof Import) {
if (isFromImport && AbstractVisitor.isWildImport((ImportFrom) ast)) {
addMessage(IAnalysisPreferences.TYPE_UNUSED_WILD_IMPORT, g.generator, g.tok);
} else if (!(g.generator instanceof ImportPartSourceToken)) {
addMessage(IAnalysisPreferences.TYPE_UNUSED_IMPORT, g.generator, g.tok);
}
// finish it...
continue;
}
}
// we have to check if this is a name we should ignore
if (startsWithNamesToIgnore(g)) {
int type = IAnalysisPreferences.TYPE_UNUSED_VARIABLE;
if (g.tok instanceof SourceToken) {
SourceToken t = (SourceToken) g.tok;
SimpleNode ast = t.getAst();
if (ast instanceof NameTok) {
NameTok n = (NameTok) ast;
if (n.ctx == NameTok.KwArg || n.ctx == NameTok.VarArg || n.ctx == NameTok.KeywordName) {
type = IAnalysisPreferences.TYPE_UNUSED_PARAMETER;
}
} else if (ast instanceof Name) {
Name n = (Name) ast;
if (n.ctx == Name.Param || n.ctx == Name.KwOnlyParam) {
type = IAnalysisPreferences.TYPE_UNUSED_PARAMETER;
}
}
}
boolean addMessage = true;
if (type == IAnalysisPreferences.TYPE_UNUSED_PARAMETER) {
if (node instanceof FunctionDef) {
addMessage = false;
FunctionDef def = (FunctionDef) node;
for (stmtType b : def.body) {
if (b instanceof Pass) {
continue;
}
if (b instanceof Expr) {
Expr expr = (Expr) b;
if (expr.value instanceof Str) {
continue;
}
}
addMessage = true;
break;
}
}
}
if (addMessage) {
addMessage(type, g.generator, g.tok);
}
}
}
}
use of org.python.pydev.parser.jython.ast.Pass in project Pydev by fabioz.
the class MakeAstValidForPrettyPrintingVisitor method visitTryFinally.
@Override
public Object visitTryFinally(TryFinally node) throws Exception {
if (node.body == null || node.body.length == 0) {
node.body = new stmtType[] { new Pass() };
}
visitTryPart(node, node.body);
visitOrElsePart(node.finalbody, "finally");
return null;
}
use of org.python.pydev.parser.jython.ast.Pass in project Pydev by fabioz.
the class MakeAstValidForPrettyPrintingVisitor method visitFunctionDef.
@Override
public Object visitFunctionDef(FunctionDef node) throws Exception {
if (node.decs != null) {
for (decoratorsType n : node.decs) {
if (n != null) {
handleDecorator(n);
}
}
}
fixNode(node);
node.name.accept(this);
if (node.args != null) {
handleArguments(node.args);
}
// this is the "['->' test]"
if (node.returns != null) {
node.returns.accept(this);
}
if (node.body == null || node.body.length == 0) {
node.body = new stmtType[] { new Pass() };
}
int length = node.body.length;
for (int i = 0; i < length; i++) {
if (node.body[i] != null) {
node.body[i].accept(this);
}
}
fixAfterNode(node);
return null;
}
use of org.python.pydev.parser.jython.ast.Pass in project Pydev by fabioz.
the class MakeAstValidForPrettyPrintingVisitor method visitIfPart.
private void visitIfPart(suiteType orelse, If node, boolean isElif) throws Exception {
if (orelse != null) {
fixNode(orelse);
}
fixNode(node);
node.test.accept(this);
if (node.body == null || node.body.length == 0) {
node.body = new stmtType[] { new Pass() };
}
// write the body and dedent
for (SimpleNode n : node.body) {
n.accept(this);
}
if (orelse != null) {
fixAfterNode(orelse);
}
if (node.orelse != null && ((Suite) node.orelse).body != null && ((Suite) node.orelse).body.length > 0) {
stmtType[] body = ((Suite) node.orelse).body;
if (body.length == 1 && body[0] instanceof If) {
If if1 = (If) body[0];
if (if1.test == null) {
visitOrElsePart(node.orelse, "else");
} else {
boolean foundIf = false;
if (if1.specialsBefore != null) {
for (Object o : if1.specialsBefore) {
if (o.toString().equals("if")) {
foundIf = true;
break;
}
}
}
if (foundIf) {
visitIfPart(node.orelse, if1, false);
} else {
visitIfPart(node.orelse, if1, true);
}
}
} else {
visitOrElsePart(node.orelse, "else");
}
}
fixAfterNode(node);
}
use of org.python.pydev.parser.jython.ast.Pass in project Pydev by fabioz.
the class MakeAstValidForPrettyPrintingVisitor method visitFor.
@Override
public Object visitFor(For node) throws Exception {
// for a in b: xxx else: yyy
// a
fixNode(node);
node.target.accept(this);
// in b
node.iter.accept(this);
if (node.body == null || node.body.length == 0) {
node.body = new stmtType[] { new Pass() };
}
for (SimpleNode n : node.body) {
n.accept(this);
}
suiteType orelse = node.orelse;
endSuiteWithOrElse(orelse);
fixAfterNode(node);
return null;
}
Aggregations