Index: dart/compiler/java/com/google/dart/compiler/DeltaAnalyzer.java |
diff --git a/dart/compiler/java/com/google/dart/compiler/DeltaAnalyzer.java b/dart/compiler/java/com/google/dart/compiler/DeltaAnalyzer.java |
deleted file mode 100644 |
index 2829cd95f202a3e14fe7aa7abfdbb840f7fd5d7b..0000000000000000000000000000000000000000 |
--- a/dart/compiler/java/com/google/dart/compiler/DeltaAnalyzer.java |
+++ /dev/null |
@@ -1,225 +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.common.collect.Sets; |
-import com.google.common.io.CharStreams; |
-import com.google.common.io.Closeables; |
-import com.google.dart.compiler.ast.DartNode; |
-import com.google.dart.compiler.ast.DartUnit; |
-import com.google.dart.compiler.ast.LibraryNode; |
-import com.google.dart.compiler.ast.LibraryUnit; |
-import com.google.dart.compiler.metrics.CompilerMetrics; |
-import com.google.dart.compiler.parser.DartParser; |
-import com.google.dart.compiler.resolver.CoreTypeProvider; |
-import com.google.dart.compiler.resolver.CoreTypeProviderImplementation; |
-import com.google.dart.compiler.resolver.Element; |
-import com.google.dart.compiler.resolver.ElementKind; |
-import com.google.dart.compiler.resolver.LibraryElement; |
-import com.google.dart.compiler.resolver.MemberBuilder; |
-import com.google.dart.compiler.resolver.Resolver; |
-import com.google.dart.compiler.resolver.Scope; |
-import com.google.dart.compiler.resolver.SupertypeResolver; |
-import com.google.dart.compiler.resolver.TopLevelElementBuilder; |
-import com.google.dart.compiler.type.TypeAnalyzer; |
- |
-import java.io.IOException; |
-import java.io.Reader; |
-import java.io.Writer; |
-import java.net.URI; |
- |
-class DeltaAnalyzer { |
- private final SourceDelta delta; |
- private final LibraryElement enclosingLibrary; |
- private final CompilerConfiguration config; |
- private final DartCompilerListener listener; |
- private final CoreTypeProvider typeProvider; |
- private final DartCompilerContext context; |
- |
- public DeltaAnalyzer(SourceDelta delta, |
- LibraryElement enclosingLibrary, |
- LibraryElement coreLibrary, |
- DartNode interestNode, |
- int interestStart, |
- int interestLength, |
- CompilerConfiguration config, |
- DartCompilerListener listener) { |
- this.delta = delta; |
- this.enclosingLibrary = enclosingLibrary; |
- this.config = config; |
- this.listener = listener; |
- typeProvider = new CoreTypeProviderImplementation(coreLibrary.getScope(), listener); |
- this.context = new Context(); |
- } |
- |
- public DartNode analyze() throws IOException { |
- Source originalSource = delta.getSourceBefore(); |
- DartUnit unit = delta.getUnitAfter(); |
- if (unit == null) { |
- DartSource source = delta.getSourceAfter(); |
- unit = getParser(source).parseUnit(); |
- } |
- Scope scope = deltaLibraryScope(originalSource, unit); |
- // We have to create supertypes and member elements for the entire unit. For example, if you're |
- // doing code-completion, you are only interested in the current expression, but you may be |
- // code-completing on a type that is defined outside the current class. |
- new SupertypeResolver().exec(unit, context, typeProvider); |
- new MemberBuilder().exec(unit, context, typeProvider); |
- |
- // The following two phases can be narrowed down to the interest area. We currently ignore the |
- // interest area, but long term, we will need to narrow down to the interest area to handle |
- // very large files. |
- new Resolver(context, scope, typeProvider).exec(unit); |
- new TypeAnalyzer().exec(unit, context, typeProvider); |
- return unit; |
- } |
- |
- private Scope deltaLibraryScope(Source originalSource, DartUnit unit) { |
- // Create a library unit which holds the new unit. |
- LibraryUnit libraryUnit = new LibraryUnit(makeLibrarySource("delta")); |
- // Copy all the imports |
- for (LibraryNode path : enclosingLibrary.getLibraryUnit().getImportPaths()) { |
- libraryUnit.addImportPath(path); |
- } |
- for (LibraryUnit importUnit : enclosingLibrary.getLibraryUnit().getImportedLibraries()) { |
- libraryUnit.addImport(importUnit, importUnit.getEntryNode()); |
- } |
- libraryUnit.putUnit(unit); |
- |
- // Create top-level elements for the new unit. |
- new TopLevelElementBuilder().exec(libraryUnit, context); |
- new TopLevelElementBuilder().fillInLibraryScope(libraryUnit, listener); |
- |
- // Copy all the elements from the old library, except the ones declared in the original source. |
- Scope scope = libraryUnit.getElement().getScope(); |
- for (Element member : enclosingLibrary.getMembers()) { |
- if (member.getSourceInfo().getSource() != originalSource) { |
- String name = member.getName(); |
- if (ElementKind.of(member) == ElementKind.LIBRARY) { |
- name = "__library_" + ((LibraryElement) member).getLibraryUnit().getName(); |
- } |
- scope.declareElement(name, member); |
- } |
- } |
- return scope; |
- } |
- |
- private LibrarySource makeLibrarySource(final String name) { |
- final URI uri = URI.create(name); |
- return new LibrarySource() { |
- @Override |
- public String getUniqueIdentifier() { |
- return uri.toString(); |
- } |
- |
- @Override |
- public URI getUri() { |
- return uri; |
- } |
- |
- @Override |
- public Reader getSourceReader() { |
- throw new AssertionError(); |
- } |
- |
- @Override |
- public String getName() { |
- return name; |
- } |
- |
- @Override |
- public long getLastModified() { |
- throw new AssertionError(); |
- } |
- |
- @Override |
- public boolean exists() { |
- throw new AssertionError(); |
- } |
- |
- @Override |
- public DartSource getSourceFor(String relPath) { |
- return null; |
- } |
- |
- @Override |
- public LibrarySource getImportFor(String relPath) { |
- return null; |
- } |
- }; |
- } |
- |
- private DartParser getParser(Source source) throws IOException { |
- Reader r = source.getSourceReader(); |
- String sourceString = CharStreams.toString(r); |
- Closeables.close(r, false); |
- return new DartParser(source, sourceString, false, Sets.<String>newHashSet(), listener, null); |
- } |
- |
- private class Context implements DartCompilerListener, DartCompilerContext { |
- @Override |
- public LibraryUnit getApplicationUnit() { |
- throw new AssertionError(); |
- } |
- |
- @Override |
- public LibraryUnit getAppLibraryUnit() { |
- throw new AssertionError(); |
- } |
- |
- @Override |
- public LibraryUnit getLibraryUnit(LibrarySource lib) { |
- throw new AssertionError(); |
- } |
- |
- @Override |
- public Reader getArtifactReader(Source source, String part, String extension) { |
- throw new AssertionError(); |
- } |
- |
- @Override |
- public URI getArtifactUri(DartSource source, String part, String extension) { |
- throw new AssertionError(); |
- } |
- |
- @Override |
- public Writer getArtifactWriter(Source source, String part, String extension) { |
- throw new AssertionError(); |
- } |
- |
- @Override |
- public boolean isOutOfDate(Source source, Source base, String extension) { |
- throw new AssertionError(); |
- } |
- |
- @Override |
- public CompilerMetrics getCompilerMetrics() { |
- return null; |
- } |
- |
- @Override |
- public CompilerConfiguration getCompilerConfiguration() { |
- return config; |
- } |
- |
- @Override |
- public LibrarySource getSystemLibraryFor(String importSpec) { |
- throw new AssertionError(); |
- } |
- |
- @Override |
- public void onError(DartCompilationError event) { |
- listener.onError(event); |
- } |
- |
- @Override |
- public void unitAboutToCompile(DartSource source, boolean diet) { |
- } |
- |
- @Override |
- public void unitCompiled(DartUnit unit) { |
- } |
- } |
-} |