* Remove binary ast nodes
* SourceElementRequestVisitor uses IElementRequestor as input requesting element.
diff --git a/plugins/org.eclipse.dltk.python.core/src/org/eclipse/dltk/python/internal/core/parser/visitors/PythonSourceElementRequestor.java b/plugins/org.eclipse.dltk.python.core/src/org/eclipse/dltk/python/internal/core/parser/visitors/PythonSourceElementRequestor.java
index 6a17222..9f5b669 100644
--- a/plugins/org.eclipse.dltk.python.core/src/org/eclipse/dltk/python/internal/core/parser/visitors/PythonSourceElementRequestor.java
+++ b/plugins/org.eclipse.dltk.python.core/src/org/eclipse/dltk/python/internal/core/parser/visitors/PythonSourceElementRequestor.java
@@ -52,7 +52,8 @@
private ASTNode fToNode;
private ASTNode declaredIn; // The node where the declaration was found
- // (should be either class or method node)
+
+ // (should be either class or method node)
TypeField(String name, String initValue, PositionInformation pos,
Expression expression, ASTNode toNode, ASTNode declaredIn) {
@@ -113,7 +114,7 @@
private static String ANONYMOUS_LAMBDA_FORM_MARKER = "<anonymous>";
// Used to prehold fields if adding in methods.
private List fNotAddedFields = new ArrayList();
-
+
private String lastLambdaFormName = ANONYMOUS_LAMBDA_FORM_MARKER;
/**
@@ -144,8 +145,8 @@
return outValue;
}
- private void onVisitLambdaAssignnment(String ref, PythonLambdaExpression lambdaExpression)
- {
+ private void onVisitLambdaAssignnment(String ref,
+ PythonLambdaExpression lambdaExpression) {
// Declare new Method.
List/* < Argument > */args = lambdaExpression.getArguments();
@@ -167,15 +168,17 @@
mi.declarationStart = lambdaExpression.sourceStart();
this.fRequestor.enterMethod(mi);
-//FIXME Expression body = lambdaExpression.getBodyExpression();
-//FIXME if (body instanceof PythonLambdaExpression)
-//FIXME onVisitLambdaAssignnment(ANONYMOUS_LAMBDA_FORM_MARKER,(PythonLambdaExpression)body);
+ // FIXME Expression body = lambdaExpression.getBodyExpression();
+ // FIXME if (body instanceof PythonLambdaExpression)
+ // FIXME
+ // onVisitLambdaAssignnment(ANONYMOUS_LAMBDA_FORM_MARKER,(PythonLambdaExpression)body);
this.fRequestor.exitMethod(lambdaExpression.sourceEnd());
}
- private void onVisitStaticVariableAssignment(SimpleReference var, Statement val)
- {
+
+ private void onVisitStaticVariableAssignment(SimpleReference var,
+ Statement val) {
// for module static of class static variables.
-
+
if (canAddVariables((ASTNode) this.fNodes.peek(), var.getName())) {
ISourceElementRequestor.FieldInfo info = new ISourceElementRequestor.FieldInfo();
info.modifiers = Modifiers.AccStatic;
@@ -191,21 +194,21 @@
}
}
}
- private void onVisitInstanceVariableAssignment(ExtendedVariableReference extendedVariable, Statement right)
- {
+
+ private void onVisitInstanceVariableAssignment(
+ ExtendedVariableReference extendedVariable, Statement right) {
List varParts = extendedVariable.getExpressions();
if (extendedVariable.isDot(0)) {
Expression first = (Expression) varParts.get(0);
Expression second = (Expression) varParts.get(1);
- if (first instanceof VariableReference && second instanceof VariableReference) {
+ if (first instanceof VariableReference
+ && second instanceof VariableReference) {
String varName = ((VariableReference) first).getName();
- MethodDeclaration currentMethod = this
- .getCurrentMethod();
+ MethodDeclaration currentMethod = this.getCurrentMethod();
List arguments = currentMethod.getArguments();
if (arguments != null && arguments.size() > 0) {
- Argument firstArgument = (Argument) arguments
- .get(0);
+ Argument firstArgument = (Argument) arguments.get(0);
String argumentName = firstArgument.getName();
if (argumentName.equals(varName)) {
VariableReference var = (VariableReference) second;
@@ -215,19 +218,21 @@
initialValueStart = right.sourceStart();
initialValueEnd = right.sourceEnd();
}
- PositionInformation pos = new PositionInformation(
- var.sourceStart(), var.sourceEnd(),
+ PositionInformation pos = new PositionInformation(var
+ .sourceStart(), var.sourceEnd(),
initialValueStart, initialValueEnd);
String initialString = this.makeValue(right);
ASTNode method = (ASTNode) this.fNodes.pop();
ASTNode toClass = (ASTNode) this.fNodes.peek();
this.fNodes.push(method);
- if (toClass instanceof TypeDeclaration)
- {
- List decorators = ((MethodDeclaration)method).getDecorators();
- if (null == decorators || null != decorators && decorators.size() == 0)
- {
- TypeField field = new TypeField(var.getName(), initialString, pos, extendedVariable, toClass, method);
+ if (toClass instanceof TypeDeclaration) {
+ List decorators = ((MethodDeclaration) method)
+ .getDecorators();
+ if (null == decorators || null != decorators
+ && decorators.size() == 0) {
+ TypeField field = new TypeField(var.getName(),
+ initialString, pos, extendedVariable,
+ toClass, method);
this.fNotAddedFields.add(field);
}
}
@@ -236,49 +241,49 @@
}
}
}
- private void onVisitTestListAssignment(ExpressionList left, Statement right)
- {
+
+ private void onVisitTestListAssignment(ExpressionList left, Statement right) {
Iterator iter = left.getChilds().iterator();
- if (right instanceof ExpressionList)
- {
- ExpressionList exprs = (ExpressionList)right;
+ if (right instanceof ExpressionList) {
+ ExpressionList exprs = (ExpressionList) right;
Iterator j = exprs.getChilds().iterator();
- while (iter.hasNext() && j.hasNext())
- {
- Expression expr = (Expression)iter.next();
- processAssignment(expr, (Expression)j.next());
+ while (iter.hasNext() && j.hasNext()) {
+ Expression expr = (Expression) iter.next();
+ processAssignment(expr, (Expression) j.next());
}
-
- }
- else
- {
- while (iter.hasNext())
- {
- Expression expr = (Expression)iter.next();
+
+ } else {
+ while (iter.hasNext()) {
+ Expression expr = (Expression) iter.next();
processAssignment(expr, right);
}
}
}
- private void processAssignment(Statement left, Statement right)
- {
- if (left instanceof Assignment)
- {
+
+ private void processAssignment(Statement left, Statement right) {
+ if (left instanceof Assignment) {
Assignment assignment = (Assignment) left;
processAssignment(assignment.getLeft(), right);
processAssignment(assignment.getRight(), right);
- }
- else if (left instanceof SimpleReference && right instanceof PythonLambdaExpression)
- onVisitLambdaAssignnment(((SimpleReference)left).getName(), (PythonLambdaExpression)right);
- else if (left instanceof VariableReference && !this.fInMethod) // Handle static variables
- onVisitStaticVariableAssignment((VariableReference)left, right);
- else if (left instanceof ExtendedVariableReference && this.fInClass && this.fInMethod) // This is for in class and in method.
- onVisitInstanceVariableAssignment((ExtendedVariableReference)left, right);
+ } else if (left instanceof SimpleReference
+ && right instanceof PythonLambdaExpression)
+ onVisitLambdaAssignnment(((SimpleReference) left).getName(),
+ (PythonLambdaExpression) right);
+ else if (left instanceof VariableReference && !this.fInMethod) // Handle
+ // static
+ // variables
+ onVisitStaticVariableAssignment((VariableReference) left, right);
+ else if (left instanceof ExtendedVariableReference && this.fInClass
+ && this.fInMethod) // This is for in class and in method.
+ onVisitInstanceVariableAssignment((ExtendedVariableReference) left,
+ right);
else if (left instanceof ExpressionList)
- onVisitTestListAssignment((ExpressionList)left, right);
+ onVisitTestListAssignment((ExpressionList) left, right);
else {// TODO: dynamic variable handling not yet
- // supported.
+ // supported.
}
}
+
public boolean visit(Expression expression) throws Exception {
if (expression instanceof Assignment) {
@@ -293,13 +298,12 @@
}
processAssignment(left, right);
return false;
- }
- else if (expression instanceof ExtendedVariableReference) {
+ } else if (expression instanceof ExtendedVariableReference) {
ExtendedVariableReference ref = (ExtendedVariableReference) expression;
int expressionCount = ref.getExpressionCount();
for (int i = 0; i < expressionCount; i++) {
Expression e = ref.getExpression(i);
- if (ref.isCall(i) && e instanceof VariableReference ) {
+ if (ref.isCall(i) && e instanceof VariableReference) {
this.fRequestor.acceptMethodReference(
((VariableReference) e).getName().toCharArray(), 0,
e.sourceStart(), e.sourceEnd());
@@ -323,18 +327,16 @@
protected void onEndVisitMethod(MethodDeclaration method) {
- if (fNotAddedFields.size() >= 1)
- {
+ if (fNotAddedFields.size() >= 1) {
TypeField typeField = (TypeField) fNotAddedFields.get(0);
- if (null != typeField && typeField.getDeclaredIn().equals(method))
- {
+ if (null != typeField && typeField.getDeclaredIn().equals(method)) {
Iterator i = this.fNotAddedFields.iterator();
while (i.hasNext()) {
TypeField field = (TypeField) i.next();
if (canAddVariables(field.getToNode(), field.getName())) {
-
+
PositionInformation pos = field.getPos();
-
+
ISourceElementRequestor.FieldInfo info = new ISourceElementRequestor.FieldInfo();
info.modifiers = Modifiers.AccStatic;
info.name = field.getName();
@@ -343,7 +345,7 @@
info.declarationStart = pos.sourceStart;
this.fRequestor.enterField(info);
this.fRequestor.exitField(pos.sourceEnd);
-
+
}
}
this.fNotAddedFields.clear();
@@ -446,7 +448,7 @@
mi.nameSourceEnd = method.getNameEnd() - 1;
mi.declarationStart = method.sourceStart();
- this.fRequestor.enterMethodRemoveSame(mi);
+ ((ISourceElementRequestor) this.fRequestor).enterMethodRemoveSame(mi);
this.fInMethod = true;
this.fCurrentMethod = method;