Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(111)

Unified Diff: dart/compiler/java/com/google/dart/compiler/LibraryDeps.java

Issue 20722006: Removed compiler/ directory from repository (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: dart/compiler/java/com/google/dart/compiler/LibraryDeps.java
diff --git a/dart/compiler/java/com/google/dart/compiler/LibraryDeps.java b/dart/compiler/java/com/google/dart/compiler/LibraryDeps.java
deleted file mode 100644
index bcdf2e46aca1c26af89ef7adbbf6246b8df24f68..0000000000000000000000000000000000000000
--- a/dart/compiler/java/com/google/dart/compiler/LibraryDeps.java
+++ /dev/null
@@ -1,313 +0,0 @@
-// Copyright (c) 2011, 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.common.base.Objects;
-import com.google.common.base.Splitter;
-import com.google.common.base.Strings;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
-import com.google.dart.compiler.ast.DartUnit;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.Reader;
-import java.io.Writer;
-import java.net.URI;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-
-/**
- * Represents a library's dependencies artifact.
- */
-public class LibraryDeps {
- private static final String VERSION = "v00001";
-
- /**
- * Each dependency record contains the library in which it was found, name of the unit in this
- * library and last-modified timestamp. Any change in the timestamp of the target dependency will
- * force a recompile of the associated compilation unit.
- */
- public static class Dependency {
- private final URI libUri;
- private final String unitName;
- private final long lastModified;
-
- public Dependency(URI libUri, String unitName, long lastModified) {
- this.libUri = libUri;
- this.unitName = unitName;
- this.lastModified = lastModified;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (obj instanceof Dependency) {
- Dependency dep = (Dependency) obj;
- return Objects.equal(libUri, dep.libUri) && Objects.equal(unitName, dep.unitName);
- }
- return false;
- }
-
- @Override
- public int hashCode() {
- return Objects.hashCode(libUri, unitName);
- }
-
- public URI getLibUri() {
- return libUri;
- }
-
- public String getUnitName() {
- return unitName;
- }
-
- public long getLastModified() {
- return lastModified;
- }
- }
-
- public static class Source {
- private final Set<Dependency> deps = Sets.newHashSet();
- private final Set<String> topSymbols = Sets.newHashSet();
- private final Set<String> allSymbols = Sets.newHashSet();
- private final Set<String> holes = Sets.newHashSet();
- private boolean shouldRecompileOnAnyTopLevelChange = false;
-
- /**
- * @return the {@link Set} of {@link Dependency}s.
- */
- public Set<Dependency> getDeps() {
- return deps;
- }
-
- /**
- * @return the names of top-level elements, such as methods and classes.
- */
- public Set<String> getTopSymbols() {
- return topSymbols;
- }
-
- /**
- * @return the names of all elements in unit, such as names of local variables, fields, etc.
- */
- public Set<String> getAllSymbols() {
- return allSymbols;
- }
-
- /**
- * @return the names of functions, which are invoked without qualifier. So, declaration or
- * removing function with such name on top-level should cause recompiling.
- */
- public Set<String> getHoles() {
- return holes;
- }
-
- /**
- * @return <code>true</code> if this unit should be recompiled on any change in the set of
- * top-level symbols. Typically unit has compilation errors, which potentially may be
- * fixed, so we should recompile this unit.
- */
- public boolean shouldRecompileOnAnyTopLevelChange() {
- return shouldRecompileOnAnyTopLevelChange;
- }
-
- /**
- * Adds new {@link Dependency}.
- */
- public void addDep(Dependency dep) {
- deps.add(dep);
- }
-
- /**
- * Adds symbol to the {@link Set} of top symbols.
- */
- public void addTopSymbol(String symbol) {
- if (!Strings.isNullOrEmpty(symbol)) {
- topSymbols.add(symbol);
- }
- }
-
- /**
- * Adds symbol to the {@link Set} of all symbols.
- */
- public void addAllSymbol(String symbol) {
- allSymbols.add(symbol);
- }
-
- /**
- * Adds new hole for {@link #getHoles()}.
- */
- public void addHole(String hole) {
- holes.add(hole);
- }
- }
-
- public static LibraryDeps fromReader(Reader reader) {
- try {
- return fromReaderEx(reader);
- } catch (Throwable e) {
- return null;
- }
- }
-
- private static LibraryDeps fromReaderEx(Reader reader) throws Exception {
- LibraryDeps deps = new LibraryDeps();
- BufferedReader buf = new BufferedReader(reader);
- // Check version.
- {
- String line = buf.readLine();
- if (!Objects.equal(line, VERSION)) {
- return deps;
- }
- }
- // Read units dependencies.
- String relPath;
- while (null != (relPath = buf.readLine())) {
- Source source = new Source();
- // Read flags.
- source.shouldRecompileOnAnyTopLevelChange = Boolean.parseBoolean(buf.readLine());
- // Read top symbols.
- {
- String line = buf.readLine();
- Iterable<String> topSymbols = Splitter.on(' ').omitEmptyStrings().split(line);
- Iterables.addAll(source.topSymbols, topSymbols);
- }
- // Read all symbols.
- {
- String line = buf.readLine();
- Iterable<String> allSymbols = Splitter.on(' ').omitEmptyStrings().split(line);
- Iterables.addAll(source.allSymbols, allSymbols);
- }
- // Read holes.
- {
- String line = buf.readLine();
- Iterable<String> holes = Splitter.on(' ').omitEmptyStrings().split(line);
- Iterables.addAll(source.holes, holes);
- }
- // Read dependencies.
- while (true) {
- String line = buf.readLine();
- // Blank line: next unit.
- if (line.length() == 0) {
- break;
- }
- // Parse line.
- String[] parts = line.split(" ");
- source.deps.add(new Dependency(new URI(parts[0]), parts[1], Long.parseLong(parts[2])));
- }
- // Remember dependencies for current unit.
- deps.sources.put(relPath, source);
- }
- return deps;
- }
-
- private final Map<String, Source> sources = Maps.newHashMap();
-
- public LibraryDeps() {
- }
-
- /**
- * @return the relative paths of all units with remembered dependencies.
- */
- public Set<String> getUnitPaths() {
- return sources.keySet();
- }
-
- /**
- * @return all {@link Source} descriptions for all units in this library.
- */
- public Iterable<Source> getSources() {
- return sources.values();
- }
-
- /**
- * @return the {@link Source} description of the unit with given path.
- */
- public Source getSource(String relPath) {
- return sources.get(relPath);
- }
-
- /**
- * Remembers {@link Dependency}s of the unit with given path.
- */
- public void putSource(String relPath, Source source) {
- sources.put(relPath, source);
- }
-
- /**
- * Update the library dependencies to reflect this unit's classes.
- */
- public void update(DartCompilerMainContext context, DartUnit unit) {
- Source source = new Source();
- DartSource unitSource = (DartSource) unit.getSourceInfo().getSource();
- String relPath = unitSource.getRelativePath();
- putSource(relPath, source);
- // Remember dependencies.
- LibraryDepsVisitor.exec(unit, source);
- // Fill Source with symbols.
- for (String name : unit.getDeclarationNames()) {
- source.addAllSymbol(name);
- }
- for (String name : unit.getTopDeclarationNames()) {
- source.addTopSymbol(name);
- }
- // Analyze errors and see if any of them should force recompilation.
- List<DartCompilationError> sourceErrors = context.getSourceErrors(unitSource);
- for (DartCompilationError error : sourceErrors) {
- if (error.getErrorCode().needsRecompilation()) {
- source.shouldRecompileOnAnyTopLevelChange = true;
- break;
- }
- }
- }
-
- public void write(Writer writer) throws IOException {
- // Write version.
- writer.write(VERSION);
- writer.write('\n');
- // Write entries.
- for (Entry<String, Source> entry : sources.entrySet()) {
- String relPath = entry.getKey();
- Source source = entry.getValue();
- // Unit name.
- writer.write(relPath);
- writer.write('\n');
- // Flags.
- writer.write(Boolean.toString(source.shouldRecompileOnAnyTopLevelChange));
- writer.write('\n');
- // Write top symbols.
- for (String symbol : source.topSymbols) {
- writer.write(symbol);
- writer.write(' ');
- }
- writer.write('\n');
- // Write all symbols.
- for (String symbol : source.allSymbols) {
- writer.write(symbol);
- writer.write(' ');
- }
- writer.write('\n');
- // Write holes.
- for (String hole : source.holes) {
- writer.write(hole);
- writer.write(' ');
- }
- writer.write('\n');
- // Write dependencies.
- for (Dependency dep : source.deps) {
- writer.write(dep.libUri.toString());
- writer.write(' ');
- writer.write(dep.unitName);
- writer.write(' ');
- writer.write(Long.toString(dep.lastModified));
- writer.write('\n');
- }
- // Empty line after each unit.
- writer.write('\n');
- }
- }
-}

Powered by Google App Engine
This is Rietveld 408576698