Linter Demo Errors: 1Warnings: 3File: /home/fstrocco/Dart/dart/benchmark/analyzer/lib/file_system/physical_file_system.dart // Copyright (c) 2014, 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. library physical_file_system; import 'dart:async'; import 'dart:io' as io; import 'package:analyzer/src/generated/java_io.dart'; import 'package:analyzer/src/generated/source_io.dart'; import 'package:path/path.dart'; import 'package:watcher/watcher.dart'; import 'file_system.dart'; /** * A `dart:io` based implementation of [ResourceProvider]. */ class PhysicalResourceProvider implements ResourceProvider { static final NORMALIZE_EOL_ALWAYS = (String string) => string.replaceAll(new RegExp('\r\n?'), '\n'); static final PhysicalResourceProvider INSTANCE = new PhysicalResourceProvider(null); /** * The name of the directory containing plugin specific subfolders used to * store data across sessions. */ static final String SERVER_DIR = ".dartServer"; PhysicalResourceProvider(String fileReadMode(String s)) { if (fileReadMode != null) { FileBasedSource.fileReadMode = fileReadMode; } } @override Context get pathContext => io.Platform.isWindows ? windows : posix; @override Resource getResource(String path) { if (io.FileSystemEntity.isDirectorySync(path)) { io.Directory directory = new io.Directory(path); return new _PhysicalFolder(directory); } else { io.File file = new io.File(path); return new _PhysicalFile(file); } } @override Folder getStateLocation(String pluginId) { String home; if (io.Platform.isWindows) { home = io.Platform.environment['LOCALAPPDATA']; } else { home = io.Platform.environment['HOME']; } if (home != null && io.FileSystemEntity.isDirectorySync(home)) { io.Directory directory = new io.Directory(join(home, SERVER_DIR, pluginId)); directory.createSync(recursive: true); return new _PhysicalFolder(directory); } return null; } } /** * A `dart:io` based implementation of [File]. */ class _PhysicalFile extends _PhysicalResource implements File { _PhysicalFile(io.File file) : super(file); @override int get modificationStamp { try { io.File file = _entry as io.File; return file.lastModifiedSync().millisecondsSinceEpoch; } on io.FileSystemException catch (exception) { throw new FileSystemException(exception.path, exception.message); } } @override Source createSource([Uri uri]) { io.File file = _entry as io.File; JavaFile javaFile = new JavaFile(file.absolute.path); if (uri == null) { uri = javaFile.toURI(); } return new FileBasedSource.con2(uri, javaFile); } @override bool isOrContains(String path) { return path == this.path; } @override String readAsStringSync() { try { io.File file = _entry as io.File; return file.readAsStringSync(); } on io.FileSystemException catch (exception) { throw new FileSystemException(exception.path, exception.message); } } } /** * A `dart:io` based implementation of [Folder]. */ class _PhysicalFolder extends _PhysicalResource implements Folder { _PhysicalFolder(io.Directory directory) : super(directory); @override Stream get changes => new DirectoryWatcher(_entry.path).events; @override String canonicalizePath(String relPath) { return normalize(join(_entry.absolute.path, relPath)); } @override bool contains(String path) { return isWithin(this.path, path); } @override Resource getChild(String relPath) { String canonicalPath = canonicalizePath(relPath); return PhysicalResourceProvider.INSTANCE.getResource(canonicalPath); } @override _PhysicalFolder getChildAssumingFolder(String relPath) { String canonicalPath = canonicalizePath(relPath); io.Directory directory = new io.Directory(canonicalPath); return new _PhysicalFolder(directory); } @override List getChildren() { try { List children = []; io.Directory directory = _entry as io.Directory; List entries = directory.listSync(recursive: false); int numEntries = entries.length; for (int i = 0; i < numEntries; i++) { io.FileSystemEntity entity = entries[i]; if (entity is io.Directory) { children.add(new _PhysicalFolder(entity)); } else if (entity is io.File) { children.add(new _PhysicalFile(entity)); } } return children; } on io.FileSystemException catch (exception) { throw new FileSystemException(exception.path, exception.message); } } @override bool isOrContains(String path) { if (path == this.path) { return true; } return contains(path); } } /** * A `dart:io` based implementation of [Resource]. */ abstract class _PhysicalResource implements Resource { final io.FileSystemEntity _entry; _PhysicalResource(this._entry); @override bool get exists => _entry.existsSync(); @override get hashCode => path.hashCode; @override Folder get parent { String parentPath = dirname(path); if (parentPath == path) { return null; } return new _PhysicalFolder(new io.Directory(parentPath)); } @override String get path => _entry.absolute.path; @override String get shortName => basename(path); @override bool operator ==(other) { if (runtimeType != other.runtimeType) { return false; } return path == other.path; } @override String toString() => path; }