Index: dart/compiler/java/com/google/dart/compiler/SystemLibrariesReader.java |
diff --git a/dart/compiler/java/com/google/dart/compiler/SystemLibrariesReader.java b/dart/compiler/java/com/google/dart/compiler/SystemLibrariesReader.java |
deleted file mode 100644 |
index 56d3bbf950ce73ae24b313357034c05842c2ad2e..0000000000000000000000000000000000000000 |
--- a/dart/compiler/java/com/google/dart/compiler/SystemLibrariesReader.java |
+++ /dev/null |
@@ -1,264 +0,0 @@ |
-/* |
- * Copyright (c) 2012, 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.compiler; |
- |
-import com.google.common.annotations.VisibleForTesting; |
-import com.google.common.io.CharStreams; |
-import com.google.common.io.Closeables; |
-import com.google.dart.compiler.CompilerConfiguration.ErrorFormat; |
-import com.google.dart.compiler.ast.ASTVisitor; |
-import com.google.dart.compiler.ast.DartBooleanLiteral; |
-import com.google.dart.compiler.ast.DartExpression; |
-import com.google.dart.compiler.ast.DartFieldDefinition; |
-import com.google.dart.compiler.ast.DartIdentifier; |
-import com.google.dart.compiler.ast.DartMapLiteralEntry; |
-import com.google.dart.compiler.ast.DartNamedExpression; |
-import com.google.dart.compiler.ast.DartNewExpression; |
-import com.google.dart.compiler.ast.DartNode; |
-import com.google.dart.compiler.ast.DartStringLiteral; |
-import com.google.dart.compiler.ast.DartUnit; |
-import com.google.dart.compiler.metrics.CompilerMetrics; |
-import com.google.dart.compiler.parser.DartParser; |
-import com.google.dart.compiler.util.DartSourceString; |
- |
-import java.io.File; |
-import java.io.FileInputStream; |
-import java.io.IOException; |
-import java.io.InputStreamReader; |
-import java.io.Reader; |
-import java.net.URI; |
-import java.nio.charset.Charset; |
-import java.util.ArrayList; |
-import java.util.HashMap; |
-import java.util.HashSet; |
-import java.util.List; |
-import java.util.Map; |
- |
-/** |
- * A reader that parses and reads the libraries dart-sdk/lib/_internal/libraries.dart file for |
- * system library information library information is in the format final Map<String, LibraryInfo> |
- * LIBRARIES = const <LibraryInfo> { // Used by VM applications "builtin": const LibraryInfo( |
- * "builtin/builtin_runtime.dart", category: "Server", platforms: VM_PLATFORM), "compiler": const |
- * LibraryInfo( "compiler/compiler.dart", category: "Tools", platforms: 0), }; |
- */ |
-public class SystemLibrariesReader { |
- |
- @VisibleForTesting |
- public class DartLibrary { |
- |
- private String shortName = null; |
- private String path = null; |
- private String category = "Shared"; |
- private boolean documented = true; |
- private boolean implementation = false; |
- private int platforms = 0; |
- |
- DartLibrary(String name) { |
- this.shortName = name; |
- } |
- |
- public String getShortName() { |
- return shortName; |
- } |
- |
- public String getPath() { |
- return path; |
- } |
- |
- public void setPath(String path) { |
- this.path = path; |
- } |
- |
- public String getCategory() { |
- return category; |
- } |
- |
- public void setCategory(String category) { |
- this.category = category; |
- } |
- |
- public boolean isDocumented() { |
- return documented; |
- } |
- |
- public void setDocumented(boolean documented) { |
- this.documented = documented; |
- } |
- |
- public boolean isImplementation() { |
- return implementation; |
- } |
- |
- public void setImplementation(boolean implementation) { |
- this.implementation = implementation; |
- } |
- |
- public boolean isDart2JsLibrary() { |
- return (platforms & DART2JS_PLATFORM) != 0; |
- } |
- |
- public boolean isVmLibrary() { |
- return (platforms & VM_PLATFORM) != 0; |
- } |
- |
- public void setPlatforms(int platforms) { |
- this.platforms = platforms; |
- } |
- } |
- |
- class LibrariesFileAstVistor extends ASTVisitor<Void> { |
- |
- @Override |
- public Void visitMapLiteralEntry(DartMapLiteralEntry node) { |
- |
- String keyString = null; |
- DartExpression key = node.getKey(); |
- if (key instanceof DartStringLiteral) { |
- keyString = "dart:" + ((DartStringLiteral) key).getValue(); |
- } |
- DartExpression value = node.getValue(); |
- if (value instanceof DartNewExpression) { |
- DartLibrary library = new DartLibrary(keyString); |
- List<DartExpression> args = ((DartNewExpression) value).getArguments(); |
- for (DartExpression arg : args) { |
- if (arg instanceof DartStringLiteral) { |
- library.setPath(((DartStringLiteral) arg).getValue()); |
- } |
- if (arg instanceof DartNamedExpression) { |
- String name = ((DartNamedExpression) arg).getName().getName(); |
- DartExpression expression = ((DartNamedExpression) arg).getExpression(); |
- if (name.equals(CATEGORY)) { |
- library.setCategory(((DartStringLiteral) expression).getValue()); |
- } else if (name.equals(IMPLEMENTATION)) { |
- library.setImplementation(((DartBooleanLiteral) expression).getValue()); |
- } else if (name.equals(DOCUMENTED)) { |
- library.setDocumented(((DartBooleanLiteral) expression).getValue()); |
- } else if (name.equals(PATCH_PATH)) { |
- String path = ((DartStringLiteral) expression).getValue(); |
- URI uri = sdkLibPath.resolve(URI.create(path)); |
- patchPaths.add(uri); |
- } else if (name.equals(PLATFORMS)) { |
- if (expression instanceof DartIdentifier) { |
- String identifier = ((DartIdentifier) expression).getName(); |
- if (identifier.equals("VM_PLATFORM")) { |
- library.setPlatforms(VM_PLATFORM); |
- } else { |
- library.setPlatforms(DART2JS_PLATFORM); |
- } |
- } |
- } |
- } |
- } |
- librariesMap.put(keyString, library); |
- } |
- return null; |
- } |
- |
- } |
- |
- public static final String LIBRARIES_FILE = "libraries.dart"; |
- public static final String INTERNAL_DIR = "_internal"; |
- |
- private static final String IMPLEMENTATION = "implementation"; |
- private static final String DOCUMENTED = "documented"; |
- private static final String CATEGORY = "category"; |
- private static final String PATCH_PATH = "dart2jsPatchPath"; |
- private static final String PLATFORMS = "platforms"; |
- |
- private static final int DART2JS_PLATFORM = 1; |
- private static final int VM_PLATFORM = 2; |
- |
- private final URI sdkLibPath; |
- private final Map<String, DartLibrary> librariesMap = new HashMap<String, DartLibrary>(); |
- private final List<URI> patchPaths = new ArrayList<URI>(); |
- |
- public SystemLibrariesReader(URI sdkLibPath, Reader sdkFileReader) { |
- this.sdkLibPath = sdkLibPath; |
- loadLibraryInfo(sdkFileReader); |
- } |
- |
- public SystemLibrariesReader(File sdkLibPath) throws IOException { |
- this(sdkLibPath.getAbsoluteFile().toURI(), new InputStreamReader(new FileInputStream( |
- getLibrariesFile(sdkLibPath)), Charset.forName("UTF8"))); |
- } |
- |
- public Map<String, DartLibrary> getLibrariesMap() { |
- return librariesMap; |
- } |
- |
- public List<URI> getPatchPaths() { |
- return patchPaths; |
- } |
- |
- private void loadLibraryInfo(Reader sdkFileReader) { |
- |
- DartUnit unit = getDartUnit(sdkFileReader); |
- |
- List<DartNode> nodes = unit.getTopLevelNodes(); |
- for (DartNode node : nodes) { |
- if (node instanceof DartFieldDefinition) { |
- node.accept(new LibrariesFileAstVistor()); |
- } |
- } |
- } |
- |
- /** |
- * Parse the given dart file and return the AST |
- * |
- * @param fileReader the dart file reader |
- * @return the parsed AST |
- */ |
- private DartUnit getDartUnit(Reader fileReader) { |
- |
- String srcCode = getSource(fileReader); |
- DartSourceString dartSource = new DartSourceString(LIBRARIES_FILE, srcCode); |
- DefaultDartCompilerListener listener = new DefaultDartCompilerListener(ErrorFormat.NORMAL); |
- DartParser parser = new DartParser( |
- dartSource, |
- srcCode, |
- false, |
- new HashSet<String>(), |
- listener, |
- new CompilerMetrics()); |
- return parser.parseUnit(); |
- } |
- |
- private String getSource(Reader reader) { |
- String srcCode = null; |
- boolean failed = true; |
- try { |
- srcCode = CharStreams.toString(reader); |
- failed = false; |
- } catch (IOException e) { |
- e.printStackTrace(); |
- } finally { |
- try { |
- Closeables.close(reader, failed); |
- } catch (IOException e) { |
- e.printStackTrace(); |
- } |
- } |
- return srcCode; |
- } |
- |
- private static File getLibrariesFile(File sdkLibDir) { |
- File file = new File(new File(sdkLibDir, INTERNAL_DIR), LIBRARIES_FILE); |
- if (!file.exists()) { |
- throw new InternalCompilerException("Failed to find " + file.toString() |
- + ". Is dart-sdk path correct?"); |
- } |
- return file; |
- } |
- |
-} |