/* * Copyright (c) 2013, the Dart project authors. * * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.eclipse.org/legal/epl-v10.html * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. */ package com.google.dart.engine.internal.context; import com.google.dart.engine.ast.AssignmentExpression; import com.google.dart.engine.ast.BinaryExpression; import com.google.dart.engine.ast.CompilationUnit; import com.google.dart.engine.ast.ConstructorDeclaration; import com.google.dart.engine.ast.ConstructorName; import com.google.dart.engine.ast.Directive; import com.google.dart.engine.ast.Expression; import com.google.dart.engine.ast.FunctionExpression; import com.google.dart.engine.ast.FunctionExpressionInvocation; import com.google.dart.engine.ast.IndexExpression; import com.google.dart.engine.ast.InstanceCreationExpression; import com.google.dart.engine.ast.PostfixExpression; import com.google.dart.engine.ast.PrefixExpression; import com.google.dart.engine.ast.RedirectingConstructorInvocation; import com.google.dart.engine.ast.SimpleIdentifier; import com.google.dart.engine.ast.SuperConstructorInvocation; import com.google.dart.engine.ast.visitor.GeneralizingAstVisitor; /** * Instances of the class {@code ResolutionEraser} remove any resolution information from an AST * structure when used to visit that structure. */ public class ResolutionEraser extends GeneralizingAstVisitor<Void> { @Override public Void visitAssignmentExpression(AssignmentExpression node) { node.setStaticElement(null); node.setPropagatedElement(null); return super.visitAssignmentExpression(node); } @Override public Void visitBinaryExpression(BinaryExpression node) { node.setStaticElement(null); node.setPropagatedElement(null); return super.visitBinaryExpression(node); } @Override public Void visitCompilationUnit(CompilationUnit node) { node.setElement(null); return super.visitCompilationUnit(node); } @Override public Void visitConstructorDeclaration(ConstructorDeclaration node) { node.setElement(null); return super.visitConstructorDeclaration(node); } @Override public Void visitConstructorName(ConstructorName node) { node.setStaticElement(null); return super.visitConstructorName(node); } @Override public Void visitDirective(Directive node) { node.setElement(null); return super.visitDirective(node); } @Override public Void visitExpression(Expression node) { node.setStaticType(null); node.setPropagatedType(null); return super.visitExpression(node); } @Override public Void visitFunctionExpression(FunctionExpression node) { node.setElement(null); return super.visitFunctionExpression(node); } @Override public Void visitFunctionExpressionInvocation(FunctionExpressionInvocation node) { node.setStaticElement(null); node.setPropagatedElement(null); return super.visitFunctionExpressionInvocation(node); } @Override public Void visitIndexExpression(IndexExpression node) { node.setStaticElement(null); node.setPropagatedElement(null); return super.visitIndexExpression(node); } @Override public Void visitInstanceCreationExpression(InstanceCreationExpression node) { node.setStaticElement(null); return super.visitInstanceCreationExpression(node); } @Override public Void visitPostfixExpression(PostfixExpression node) { node.setStaticElement(null); node.setPropagatedElement(null); return super.visitPostfixExpression(node); } @Override public Void visitPrefixExpression(PrefixExpression node) { node.setStaticElement(null); node.setPropagatedElement(null); return super.visitPrefixExpression(node); } @Override public Void visitRedirectingConstructorInvocation(RedirectingConstructorInvocation node) { node.setStaticElement(null); return super.visitRedirectingConstructorInvocation(node); } @Override public Void visitSimpleIdentifier(SimpleIdentifier node) { node.setStaticElement(null); node.setPropagatedElement(null); return super.visitSimpleIdentifier(node); } @Override public Void visitSuperConstructorInvocation(SuperConstructorInvocation node) { node.setStaticElement(null); return super.visitSuperConstructorInvocation(node); } }