Index: pkg/analyzer/lib/src/generated/sdk_io.dart |
diff --git a/pkg/analyzer/lib/src/generated/sdk_io.dart b/pkg/analyzer/lib/src/generated/sdk_io.dart |
index 91a189691b6f44a6e7248097e4d4fb465fcc8747..4e92f029ed65d5da1d7c9f693a2e46efd7eb4597 100644 |
--- a/pkg/analyzer/lib/src/generated/sdk_io.dart |
+++ b/pkg/analyzer/lib/src/generated/sdk_io.dart |
@@ -9,16 +9,16 @@ library engine.sdk.io; |
import 'package:analyzer/src/generated/java_engine.dart'; |
+import 'ast.dart'; |
+import 'engine.dart'; |
+import 'error.dart'; |
import 'java_core.dart'; |
-import 'java_io.dart'; |
import 'java_engine_io.dart'; |
-import 'source_io.dart'; |
-import 'error.dart'; |
-import 'scanner.dart'; |
-import 'ast.dart'; |
+import 'java_io.dart'; |
import 'parser.dart'; |
+import 'scanner.dart'; |
import 'sdk.dart'; |
-import 'engine.dart'; |
+import 'source_io.dart'; |
/** |
* Instances of the class `DirectoryBasedDartSdk` represent a Dart SDK installed in a |
@@ -40,51 +40,6 @@ import 'engine.dart'; |
*/ |
class DirectoryBasedDartSdk implements DartSdk { |
/** |
- * The [AnalysisContext] which is used for all of the sources in this [DartSdk]. |
- */ |
- InternalAnalysisContext _analysisContext; |
- |
- /** |
- * The directory containing the SDK. |
- */ |
- JavaFile _sdkDirectory; |
- |
- /** |
- * The revision number of this SDK, or `"0"` if the revision number cannot be discovered. |
- */ |
- String _sdkVersion; |
- |
- /** |
- * The file containing the dart2js executable. |
- */ |
- JavaFile _dart2jsExecutable; |
- |
- /** |
- * The file containing the dart formatter executable. |
- */ |
- JavaFile _dartFmtExecutable; |
- |
- /** |
- * The file containing the Dartium executable. |
- */ |
- JavaFile _dartiumExecutable; |
- |
- /** |
- * The file containing the pub executable. |
- */ |
- JavaFile _pubExecutable; |
- |
- /** |
- * The file containing the VM executable. |
- */ |
- JavaFile _vmExecutable; |
- |
- /** |
- * A mapping from Dart library URI's to the library represented by that URI. |
- */ |
- LibraryMap _libraryMap; |
- |
- /** |
* The default SDK, or `null` if the default SDK either has not yet been created or cannot |
* be created for some reason. |
*/ |
@@ -128,7 +83,8 @@ class DirectoryBasedDartSdk implements DartSdk { |
/** |
* The name of the file containing the Dartium executable on Macintosh. |
*/ |
- static String _DARTIUM_EXECUTABLE_NAME_MAC = "Chromium.app/Contents/MacOS/Chromium"; |
+ static String _DARTIUM_EXECUTABLE_NAME_MAC = |
+ "Chromium.app/Contents/MacOS/Chromium"; |
/** |
* The name of the file containing the Dartium executable on Windows. |
@@ -218,7 +174,8 @@ class DirectoryBasedDartSdk implements DartSdk { |
* @return the default directory for the Dart SDK |
*/ |
static JavaFile get defaultSdkDirectory { |
- String sdkProperty = JavaSystemIO.getProperty(_DEFAULT_DIRECTORY_PROPERTY_NAME); |
+ String sdkProperty = |
+ JavaSystemIO.getProperty(_DEFAULT_DIRECTORY_PROPERTY_NAME); |
if (sdkProperty == null) { |
return null; |
} |
@@ -230,6 +187,51 @@ class DirectoryBasedDartSdk implements DartSdk { |
} |
/** |
+ * The [AnalysisContext] which is used for all of the sources in this [DartSdk]. |
+ */ |
+ InternalAnalysisContext _analysisContext; |
+ |
+ /** |
+ * The directory containing the SDK. |
+ */ |
+ JavaFile _sdkDirectory; |
+ |
+ /** |
+ * The revision number of this SDK, or `"0"` if the revision number cannot be discovered. |
+ */ |
+ String _sdkVersion; |
+ |
+ /** |
+ * The file containing the dart2js executable. |
+ */ |
+ JavaFile _dart2jsExecutable; |
+ |
+ /** |
+ * The file containing the dart formatter executable. |
+ */ |
+ JavaFile _dartFmtExecutable; |
+ |
+ /** |
+ * The file containing the Dartium executable. |
+ */ |
+ JavaFile _dartiumExecutable; |
+ |
+ /** |
+ * The file containing the pub executable. |
+ */ |
+ JavaFile _pubExecutable; |
+ |
+ /** |
+ * The file containing the VM executable. |
+ */ |
+ JavaFile _vmExecutable; |
+ |
+ /** |
+ * A mapping from Dart library URI's to the library represented by that URI. |
+ */ |
+ LibraryMap _libraryMap; |
+ |
+ /** |
* Initialize a newly created SDK to represent the Dart SDK installed in the given directory. |
* |
* @param sdkDirectory the directory containing the SDK |
@@ -241,44 +243,6 @@ class DirectoryBasedDartSdk implements DartSdk { |
} |
@override |
- Source fromFileUri(Uri uri) { |
- JavaFile file = new JavaFile.fromUri(uri); |
- String filePath = file.getAbsolutePath(); |
- String libPath = libraryDirectory.getAbsolutePath(); |
- if (!filePath.startsWith("$libPath${JavaFile.separator}")) { |
- return null; |
- } |
- filePath = filePath.substring(libPath.length + 1); |
- for (SdkLibrary library in _libraryMap.sdkLibraries) { |
- String libraryPath = library.path; |
- if (filePath.replaceAll('\\', '/') == libraryPath) { |
- String path = library.shortName; |
- try { |
- return new FileBasedSource.con2(parseUriWithException(path), file); |
- } on URISyntaxException catch (exception, stackTrace) { |
- AnalysisEngine.instance.logger.logInformation( |
- "Failed to create URI: $path", |
- new CaughtException(exception, stackTrace)); |
- return null; |
- } |
- } |
- libraryPath = new JavaFile(libraryPath).getParent(); |
- if (filePath.startsWith("$libraryPath${JavaFile.separator}")) { |
- String path = "${library.shortName}/${filePath.substring(libraryPath.length + 1)}"; |
- try { |
- return new FileBasedSource.con2(parseUriWithException(path), file); |
- } on URISyntaxException catch (exception, stackTrace) { |
- AnalysisEngine.instance.logger.logInformation( |
- "Failed to create URI: $path", |
- new CaughtException(exception, stackTrace)); |
- return null; |
- } |
- } |
- } |
- return null; |
- } |
- |
- @override |
AnalysisContext get context { |
if (_analysisContext == null) { |
_analysisContext = new SdkAnalysisContext(); |
@@ -301,7 +265,12 @@ class DirectoryBasedDartSdk implements DartSdk { |
*/ |
JavaFile get dart2JsExecutable { |
if (_dart2jsExecutable == null) { |
- _dart2jsExecutable = _verifyExecutable(new JavaFile.relative(new JavaFile.relative(_sdkDirectory, _BIN_DIRECTORY_NAME), OSUtilities.isWindows() ? _DART2JS_EXECUTABLE_NAME_WIN : _DART2JS_EXECUTABLE_NAME)); |
+ _dart2jsExecutable = _verifyExecutable( |
+ new JavaFile.relative( |
+ new JavaFile.relative(_sdkDirectory, _BIN_DIRECTORY_NAME), |
+ OSUtilities.isWindows() ? |
+ _DART2JS_EXECUTABLE_NAME_WIN : |
+ _DART2JS_EXECUTABLE_NAME)); |
} |
return _dart2jsExecutable; |
} |
@@ -313,19 +282,40 @@ class DirectoryBasedDartSdk implements DartSdk { |
*/ |
JavaFile get dartFmtExecutable { |
if (_dartFmtExecutable == null) { |
- _dartFmtExecutable = _verifyExecutable(new JavaFile.relative(new JavaFile.relative(_sdkDirectory, _BIN_DIRECTORY_NAME), OSUtilities.isWindows() ? _DARTFMT_EXECUTABLE_NAME_WIN : _DARTFMT_EXECUTABLE_NAME)); |
+ _dartFmtExecutable = _verifyExecutable( |
+ new JavaFile.relative( |
+ new JavaFile.relative(_sdkDirectory, _BIN_DIRECTORY_NAME), |
+ OSUtilities.isWindows() ? |
+ _DARTFMT_EXECUTABLE_NAME_WIN : |
+ _DARTFMT_EXECUTABLE_NAME)); |
} |
return _dartFmtExecutable; |
} |
/** |
+ * Return the name of the file containing the Dartium executable. |
+ * |
+ * @return the name of the file containing the Dartium executable |
+ */ |
+ String get dartiumBinaryName { |
+ if (OSUtilities.isWindows()) { |
+ return _DARTIUM_EXECUTABLE_NAME_WIN; |
+ } else if (OSUtilities.isMac()) { |
+ return _DARTIUM_EXECUTABLE_NAME_MAC; |
+ } else { |
+ return _DARTIUM_EXECUTABLE_NAME_LINUX; |
+ } |
+ } |
+ |
+ /** |
* Return the file containing the Dartium executable, or `null` if it does not exist. |
* |
* @return the file containing the Dartium executable |
*/ |
JavaFile get dartiumExecutable { |
if (_dartiumExecutable == null) { |
- _dartiumExecutable = _verifyExecutable(new JavaFile.relative(dartiumWorkingDirectory, dartiumBinaryName)); |
+ _dartiumExecutable = _verifyExecutable( |
+ new JavaFile.relative(dartiumWorkingDirectory, dartiumBinaryName)); |
} |
return _dartiumExecutable; |
} |
@@ -336,16 +326,8 @@ class DirectoryBasedDartSdk implements DartSdk { |
* |
* @return the directory where dartium can be found |
*/ |
- JavaFile get dartiumWorkingDirectory => getDartiumWorkingDirectory(_sdkDirectory.getParentFile()); |
- |
- /** |
- * Return the directory where dartium can be found (the directory that will be the working |
- * directory is Dartium is invoked without changing the default). |
- * |
- * @param installDir the installation directory |
- * @return the directory where dartium can be found |
- */ |
- JavaFile getDartiumWorkingDirectory(JavaFile installDir) => new JavaFile.relative(installDir, _DARTIUM_DIRECTORY_NAME); |
+ JavaFile get dartiumWorkingDirectory => |
+ getDartiumWorkingDirectory(_sdkDirectory.getParentFile()); |
/** |
* Return the directory containing the SDK. |
@@ -359,35 +341,30 @@ class DirectoryBasedDartSdk implements DartSdk { |
* |
* @return the SDK's documentation directory |
*/ |
- JavaFile get docDirectory => new JavaFile.relative(_sdkDirectory, _DOCS_DIRECTORY_NAME); |
+ JavaFile get docDirectory => |
+ new JavaFile.relative(_sdkDirectory, _DOCS_DIRECTORY_NAME); |
/** |
- * Return the auxiliary documentation file for the given library, or `null` if no such file |
- * exists. |
+ * Return `true` if this SDK includes documentation. |
* |
- * @param libraryName the name of the library associated with the documentation file to be |
- * returned |
- * @return the auxiliary documentation file for the library |
+ * @return `true` if this installation of the SDK has documentation |
*/ |
- JavaFile getDocFileFor(String libraryName) { |
- JavaFile dir = docDirectory; |
- if (!dir.exists()) { |
- return null; |
- } |
- JavaFile libDir = new JavaFile.relative(dir, libraryName); |
- JavaFile docFile = new JavaFile.relative(libDir, "$libraryName$_DOC_FILE_SUFFIX"); |
- if (docFile.exists()) { |
- return docFile; |
- } |
- return null; |
- } |
+ bool get hasDocumentation => docDirectory.exists(); |
+ |
+ /** |
+ * Return `true` if the Dartium binary is available. |
+ * |
+ * @return `true` if the Dartium binary is available |
+ */ |
+ bool get isDartiumInstalled => dartiumExecutable != null; |
/** |
* Return the directory within the SDK directory that contains the libraries. |
* |
* @return the directory that contains the libraries |
*/ |
- JavaFile get libraryDirectory => new JavaFile.relative(_sdkDirectory, _LIB_DIRECTORY_NAME); |
+ JavaFile get libraryDirectory => |
+ new JavaFile.relative(_sdkDirectory, _LIB_DIRECTORY_NAME); |
/** |
* Return the file containing the Pub executable, or `null` if it does not exist. |
@@ -396,7 +373,10 @@ class DirectoryBasedDartSdk implements DartSdk { |
*/ |
JavaFile get pubExecutable { |
if (_pubExecutable == null) { |
- _pubExecutable = _verifyExecutable(new JavaFile.relative(new JavaFile.relative(_sdkDirectory, _BIN_DIRECTORY_NAME), OSUtilities.isWindows() ? _PUB_EXECUTABLE_NAME_WIN : _PUB_EXECUTABLE_NAME)); |
+ _pubExecutable = _verifyExecutable( |
+ new JavaFile.relative( |
+ new JavaFile.relative(_sdkDirectory, _BIN_DIRECTORY_NAME), |
+ OSUtilities.isWindows() ? _PUB_EXECUTABLE_NAME_WIN : _PUB_EXECUTABLE_NAME)); |
} |
return _pubExecutable; |
} |
@@ -404,9 +384,6 @@ class DirectoryBasedDartSdk implements DartSdk { |
@override |
List<SdkLibrary> get sdkLibraries => _libraryMap.sdkLibraries; |
- @override |
- SdkLibrary getSdkLibrary(String dartUri) => _libraryMap.getLibrary(dartUri); |
- |
/** |
* Return the revision number of this SDK, or `"0"` if the revision number cannot be |
* discovered. |
@@ -417,7 +394,8 @@ class DirectoryBasedDartSdk implements DartSdk { |
String get sdkVersion { |
if (_sdkVersion == null) { |
_sdkVersion = DartSdk.DEFAULT_VERSION; |
- JavaFile revisionFile = new JavaFile.relative(_sdkDirectory, _VERSION_FILE_NAME); |
+ JavaFile revisionFile = |
+ new JavaFile.relative(_sdkDirectory, _VERSION_FILE_NAME); |
try { |
String revision = revisionFile.readAsStringSync(); |
if (revision != null) { |
@@ -439,30 +417,128 @@ class DirectoryBasedDartSdk implements DartSdk { |
List<String> get uris => _libraryMap.uris; |
/** |
+ * Return the name of the file containing the VM executable. |
+ * |
+ * @return the name of the file containing the VM executable |
+ */ |
+ String get vmBinaryName { |
+ if (OSUtilities.isWindows()) { |
+ return _VM_EXECUTABLE_NAME_WIN; |
+ } else { |
+ return _VM_EXECUTABLE_NAME; |
+ } |
+ } |
+ |
+ /** |
* Return the file containing the VM executable, or `null` if it does not exist. |
* |
* @return the file containing the VM executable |
*/ |
JavaFile get vmExecutable { |
if (_vmExecutable == null) { |
- _vmExecutable = _verifyExecutable(new JavaFile.relative(new JavaFile.relative(_sdkDirectory, _BIN_DIRECTORY_NAME), vmBinaryName)); |
+ _vmExecutable = _verifyExecutable( |
+ new JavaFile.relative( |
+ new JavaFile.relative(_sdkDirectory, _BIN_DIRECTORY_NAME), |
+ vmBinaryName)); |
} |
return _vmExecutable; |
} |
+ @override |
+ Source fromFileUri(Uri uri) { |
+ JavaFile file = new JavaFile.fromUri(uri); |
+ String filePath = file.getAbsolutePath(); |
+ String libPath = libraryDirectory.getAbsolutePath(); |
+ if (!filePath.startsWith("$libPath${JavaFile.separator}")) { |
+ return null; |
+ } |
+ filePath = filePath.substring(libPath.length + 1); |
+ for (SdkLibrary library in _libraryMap.sdkLibraries) { |
+ String libraryPath = library.path; |
+ if (filePath.replaceAll('\\', '/') == libraryPath) { |
+ String path = library.shortName; |
+ try { |
+ return new FileBasedSource.con2(parseUriWithException(path), file); |
+ } on URISyntaxException catch (exception, stackTrace) { |
+ AnalysisEngine.instance.logger.logInformation( |
+ "Failed to create URI: $path", |
+ new CaughtException(exception, stackTrace)); |
+ return null; |
+ } |
+ } |
+ libraryPath = new JavaFile(libraryPath).getParent(); |
+ if (filePath.startsWith("$libraryPath${JavaFile.separator}")) { |
+ String path = |
+ "${library.shortName}/${filePath.substring(libraryPath.length + 1)}"; |
+ try { |
+ return new FileBasedSource.con2(parseUriWithException(path), file); |
+ } on URISyntaxException catch (exception, stackTrace) { |
+ AnalysisEngine.instance.logger.logInformation( |
+ "Failed to create URI: $path", |
+ new CaughtException(exception, stackTrace)); |
+ return null; |
+ } |
+ } |
+ } |
+ return null; |
+ } |
+ |
/** |
- * Return `true` if this SDK includes documentation. |
+ * Return the directory where dartium can be found (the directory that will be the working |
+ * directory is Dartium is invoked without changing the default). |
* |
- * @return `true` if this installation of the SDK has documentation |
+ * @param installDir the installation directory |
+ * @return the directory where dartium can be found |
*/ |
- bool get hasDocumentation => docDirectory.exists(); |
+ JavaFile getDartiumWorkingDirectory(JavaFile installDir) => |
+ new JavaFile.relative(installDir, _DARTIUM_DIRECTORY_NAME); |
/** |
- * Return `true` if the Dartium binary is available. |
+ * Return the auxiliary documentation file for the given library, or `null` if no such file |
+ * exists. |
* |
- * @return `true` if the Dartium binary is available |
+ * @param libraryName the name of the library associated with the documentation file to be |
+ * returned |
+ * @return the auxiliary documentation file for the library |
*/ |
- bool get isDartiumInstalled => dartiumExecutable != null; |
+ JavaFile getDocFileFor(String libraryName) { |
+ JavaFile dir = docDirectory; |
+ if (!dir.exists()) { |
+ return null; |
+ } |
+ JavaFile libDir = new JavaFile.relative(dir, libraryName); |
+ JavaFile docFile = |
+ new JavaFile.relative(libDir, "$libraryName$_DOC_FILE_SUFFIX"); |
+ if (docFile.exists()) { |
+ return docFile; |
+ } |
+ return null; |
+ } |
+ |
+ @override |
+ SdkLibrary getSdkLibrary(String dartUri) => _libraryMap.getLibrary(dartUri); |
+ |
+ /** |
+ * Read all of the configuration files to initialize the library maps. |
+ * |
+ * @param useDart2jsPaths `true` if the dart2js path should be used when it is available |
+ * @return the initialized library map |
+ */ |
+ LibraryMap initialLibraryMap(bool useDart2jsPaths) { |
+ JavaFile librariesFile = new JavaFile.relative( |
+ new JavaFile.relative(libraryDirectory, _INTERNAL_DIR), |
+ _LIBRARIES_FILE); |
+ try { |
+ String contents = librariesFile.readAsStringSync(); |
+ return new SdkLibrariesReader( |
+ useDart2jsPaths).readFromFile(librariesFile, contents); |
+ } catch (exception, stackTrace) { |
+ AnalysisEngine.instance.logger.logError( |
+ "Could not initialize the library map from ${librariesFile.getAbsolutePath()}", |
+ new CaughtException(exception, stackTrace)); |
+ return new LibraryMap(); |
+ } |
+ } |
@override |
Source mapDartUri(String dartUri) { |
@@ -493,59 +569,13 @@ class DirectoryBasedDartSdk implements DartSdk { |
} |
/** |
- * Read all of the configuration files to initialize the library maps. |
- * |
- * @param useDart2jsPaths `true` if the dart2js path should be used when it is available |
- * @return the initialized library map |
- */ |
- LibraryMap initialLibraryMap(bool useDart2jsPaths) { |
- JavaFile librariesFile = new JavaFile.relative(new JavaFile.relative(libraryDirectory, _INTERNAL_DIR), _LIBRARIES_FILE); |
- try { |
- String contents = librariesFile.readAsStringSync(); |
- return new SdkLibrariesReader(useDart2jsPaths).readFromFile(librariesFile, contents); |
- } catch (exception, stackTrace) { |
- AnalysisEngine.instance.logger.logError( |
- "Could not initialize the library map from ${librariesFile.getAbsolutePath()}", |
- new CaughtException(exception, stackTrace)); |
- return new LibraryMap(); |
- } |
- } |
- |
- /** |
- * Return the name of the file containing the Dartium executable. |
- * |
- * @return the name of the file containing the Dartium executable |
- */ |
- String get dartiumBinaryName { |
- if (OSUtilities.isWindows()) { |
- return _DARTIUM_EXECUTABLE_NAME_WIN; |
- } else if (OSUtilities.isMac()) { |
- return _DARTIUM_EXECUTABLE_NAME_MAC; |
- } else { |
- return _DARTIUM_EXECUTABLE_NAME_LINUX; |
- } |
- } |
- |
- /** |
- * Return the name of the file containing the VM executable. |
- * |
- * @return the name of the file containing the VM executable |
- */ |
- String get vmBinaryName { |
- if (OSUtilities.isWindows()) { |
- return _VM_EXECUTABLE_NAME_WIN; |
- } else { |
- return _VM_EXECUTABLE_NAME; |
- } |
- } |
- |
- /** |
* Verify that the given executable file exists and is executable. |
* |
* @param file the binary file |
* @return the file if it exists and is executable, else `null` |
*/ |
- JavaFile _verifyExecutable(JavaFile file) => file.isExecutable() ? file : null; |
+ JavaFile _verifyExecutable(JavaFile file) => |
+ file.isExecutable() ? file : null; |
} |
/** |
@@ -592,7 +622,8 @@ class SdkLibrariesReader { |
* @param libraryFileContents the contents from the library file |
* @return the library map read from the given source |
*/ |
- LibraryMap readFromFile(JavaFile file, String libraryFileContents) => readFromSource(new FileBasedSource.con1(file), libraryFileContents); |
+ LibraryMap readFromFile(JavaFile file, String libraryFileContents) => |
+ readFromSource(new FileBasedSource.con1(file), libraryFileContents); |
/** |
* Return the library map read from the given source. |
@@ -603,14 +634,19 @@ class SdkLibrariesReader { |
*/ |
LibraryMap readFromSource(Source source, String libraryFileContents) { |
BooleanErrorListener errorListener = new BooleanErrorListener(); |
- Scanner scanner = new Scanner(source, new CharSequenceReader(libraryFileContents), errorListener); |
+ Scanner scanner = new Scanner( |
+ source, |
+ new CharSequenceReader(libraryFileContents), |
+ errorListener); |
Parser parser = new Parser(source, errorListener); |
CompilationUnit unit = parser.parseCompilationUnit(scanner.tokenize()); |
- SdkLibrariesReader_LibraryBuilder libraryBuilder = new SdkLibrariesReader_LibraryBuilder(_useDart2jsPaths); |
- // If any syntactic errors were found then don't try to visit the AST structure. |
+ SdkLibrariesReader_LibraryBuilder libraryBuilder = |
+ new SdkLibrariesReader_LibraryBuilder(_useDart2jsPaths); |
+ // If any syntactic errors were found then don't try to visit the AST |
+ // structure. |
if (!errorListener.errorReported) { |
unit.accept(libraryBuilder); |
} |
return libraryBuilder.librariesMap; |
} |
-} |
+} |