| Index: dart/compiler/java/com/google/dart/compiler/LibraryDepsVisitor.java
|
| diff --git a/dart/compiler/java/com/google/dart/compiler/LibraryDepsVisitor.java b/dart/compiler/java/com/google/dart/compiler/LibraryDepsVisitor.java
|
| deleted file mode 100644
|
| index d0acd51610acb7054a2bb528c8964dafa192e7dc..0000000000000000000000000000000000000000
|
| --- a/dart/compiler/java/com/google/dart/compiler/LibraryDepsVisitor.java
|
| +++ /dev/null
|
| @@ -1,168 +0,0 @@
|
| -// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
|
| -// for details. All rights reserved. Use of this source code is governed by a
|
| -// BSD-style license that can be found in the LICENSE file.
|
| -package com.google.dart.compiler;
|
| -
|
| -import com.google.dart.compiler.ast.ASTVisitor;
|
| -import com.google.dart.compiler.ast.DartClass;
|
| -import com.google.dart.compiler.ast.DartIdentifier;
|
| -import com.google.dart.compiler.ast.DartMethodInvocation;
|
| -import com.google.dart.compiler.ast.DartParameterizedTypeNode;
|
| -import com.google.dart.compiler.ast.DartPropertyAccess;
|
| -import com.google.dart.compiler.ast.DartTypeNode;
|
| -import com.google.dart.compiler.ast.DartUnit;
|
| -import com.google.dart.compiler.resolver.Element;
|
| -import com.google.dart.compiler.resolver.ElementKind;
|
| -import com.google.dart.compiler.type.InterfaceType;
|
| -import com.google.dart.compiler.type.Type;
|
| -import com.google.dart.compiler.type.TypeKind;
|
| -
|
| -import java.net.URI;
|
| -
|
| -/**
|
| - * A visitor that fills in {@link LibraryDeps} for a compilation unit.
|
| - */
|
| -public class LibraryDepsVisitor extends ASTVisitor<Void> {
|
| - /**
|
| - * Fill in {@link LibraryDeps} from a {@link DartUnit}.
|
| - */
|
| - static void exec(DartUnit unit, LibraryDeps.Source source) {
|
| - LibraryDepsVisitor v = new LibraryDepsVisitor(source);
|
| - unit.accept(v);
|
| - }
|
| -
|
| - private final LibraryDeps.Source source;
|
| - private Element currentClass;
|
| -
|
| - private LibraryDepsVisitor(LibraryDeps.Source source) {
|
| - this.source = source;
|
| - }
|
| -
|
| - @Override
|
| - public Void visitIdentifier(DartIdentifier node) {
|
| - Element target = node.getElement();
|
| - ElementKind kind = ElementKind.of(target);
|
| - // Add dependency on the field or method.
|
| - switch (kind) {
|
| - case FIELD:
|
| - case METHOD: {
|
| - Element enclosing = target.getEnclosingElement();
|
| - addHoleIfUnqualifiedSuper(node, enclosing);
|
| - if (enclosing.getKind().equals(ElementKind.LIBRARY)) {
|
| - addElementDependency(target);
|
| - }
|
| - break;
|
| - }
|
| - }
|
| - // Add dependency on the computed type of identifiers.
|
| - switch (kind) {
|
| - case NONE:
|
| - source.addHole(node.getName());
|
| - break;
|
| - case DYNAMIC:
|
| - break;
|
| - default: {
|
| - Type type = target.getType();
|
| - if (type != null) {
|
| - Element element = type.getElement();
|
| - if (ElementKind.of(element).equals(ElementKind.CLASS)) {
|
| - addElementDependency(element);
|
| - }
|
| - }
|
| - break;
|
| - }
|
| - }
|
| - return null;
|
| - }
|
| -
|
| - @Override
|
| - public Void visitPropertyAccess(DartPropertyAccess node) {
|
| - if (node.getQualifier() instanceof DartIdentifier) {
|
| - DartIdentifier qualifier = (DartIdentifier) node.getQualifier();
|
| - Element target = qualifier.getElement();
|
| - if (target != null && target.getKind() == ElementKind.LIBRARY) {
|
| - // Handle library prefixes normally.
|
| - // The prefix part of the qualifier doesn't contain any resolvable library source info.
|
| - return super.visitPropertyAccess(node);
|
| - }
|
| - }
|
| - // Skip rhs of property accesses, so that all identifiers we visit will be unqualified.
|
| - if (node.isCascade()) {
|
| - return null;
|
| - }
|
| - return node.getQualifier().accept(this);
|
| - }
|
| -
|
| - @Override
|
| - public Void visitClass(DartClass node) {
|
| - currentClass = node.getElement();
|
| - node.visitChildren(this);
|
| - currentClass = null;
|
| - return null;
|
| - }
|
| -
|
| - @Override
|
| - public Void visitParameterizedTypeNode(DartParameterizedTypeNode node) {
|
| - if (TypeKind.of(node.getType()).equals(TypeKind.INTERFACE)) {
|
| - addElementDependency(((InterfaceType) node.getType()).getElement());
|
| - }
|
| - node.visitChildren(this);
|
| - return null;
|
| - }
|
| -
|
| - @Override
|
| - public Void visitTypeNode(DartTypeNode node) {
|
| - if (TypeKind.of(node.getType()).equals(TypeKind.INTERFACE)) {
|
| - addElementDependency(((InterfaceType) node.getType()).getElement());
|
| - }
|
| - node.visitChildren(this);
|
| - return null;
|
| - }
|
| -
|
| - /**
|
| - * Add a 'hole' for the given identifier, if its declaring class is a superclass of the current
|
| - * class. A 'hole' dependency specifies a name that, if filled by something in the library scope,
|
| - * would require this unit to be recompiled.
|
| - *
|
| - * This situation occurs because names in the library scope bind more strongly than unqualified
|
| - * superclass members.
|
| - */
|
| - private void addHoleIfUnqualifiedSuper(DartIdentifier node, Element holder) {
|
| - if (isQualified(node)) {
|
| - return;
|
| - }
|
| - if (ElementKind.of(holder) == ElementKind.CLASS && holder != currentClass) {
|
| - source.addHole(node.getName());
|
| - }
|
| - }
|
| -
|
| - /**
|
| - * Adds a direct dependency on the unit providing given {@link Element}.
|
| - */
|
| - private void addElementDependency(Element element) {
|
| - DartSource elementSource = (DartSource) element.getSourceInfo().getSource();
|
| - if (elementSource != null) {
|
| - LibrarySource library = elementSource.getLibrary();
|
| - if (library != null) {
|
| - URI libUri = library.getUri();
|
| - LibraryDeps.Dependency dep = new LibraryDeps.Dependency(libUri, elementSource.getName(),
|
| - elementSource.getLastModified());
|
| - source.addDep(dep);
|
| - }
|
| - }
|
| - }
|
| -
|
| - /**
|
| - * @return <code>true</code> if given {@link DartIdentifier} is "name" part of qualified property
|
| - * access or method invocation.
|
| - */
|
| - private static boolean isQualified(DartIdentifier node) {
|
| - if (node.getParent() instanceof DartPropertyAccess) {
|
| - return ((DartPropertyAccess) node.getParent()).getName() == node;
|
| - }
|
| - if (node.getParent() instanceof DartMethodInvocation) {
|
| - return ((DartMethodInvocation) node.getParent()).getFunctionName() == node;
|
| - }
|
| - return false;
|
| - }
|
| -}
|
|
|