| Index: pkg/analyzer/lib/src/lint/linter.dart | 
| diff --git a/pkg/analyzer/lib/src/lint/linter.dart b/pkg/analyzer/lib/src/lint/linter.dart | 
| index 67bae7e38efa0ce096212db326f7a1bab7077791..09c62c65d01cdbcb9e0483f113cc4d4cd2c2f75e 100644 | 
| --- a/pkg/analyzer/lib/src/lint/linter.dart | 
| +++ b/pkg/analyzer/lib/src/lint/linter.dart | 
| @@ -2,10 +2,12 @@ | 
| // 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. | 
|  | 
| +import 'dart:async'; | 
| import 'dart:io'; | 
|  | 
| import 'package:analyzer/analyzer.dart'; | 
| import 'package:analyzer/dart/ast/token.dart'; | 
| +import 'package:analyzer/file_system/file_system.dart' as file_system; | 
| import 'package:analyzer/src/generated/engine.dart' | 
| show AnalysisErrorInfo, AnalysisErrorInfoImpl, Logger; | 
| import 'package:analyzer/src/generated/java_engine.dart' show CaughtException; | 
| @@ -60,11 +62,11 @@ class DartLinter implements AnalysisErrorListener { | 
| /// Creates a new linter. | 
| DartLinter(this.options, {this.reporter: const PrintingReporter()}); | 
|  | 
| -  Iterable<AnalysisErrorInfo> lintFiles(List<File> files) { | 
| +  Future<Iterable<AnalysisErrorInfo>> lintFiles(List<File> files) async { | 
| List<AnalysisErrorInfo> errors = []; | 
| -    var analysisDriver = new LintDriver(options); | 
| -    errors.addAll(analysisDriver.analyze(files.where((f) => isDartFile(f)))); | 
| -    numSourcesAnalyzed = analysisDriver.numSourcesAnalyzed; | 
| +    final lintDriver = new LintDriver(options); | 
| +    errors.addAll(await lintDriver.analyze(files.where((f) => isDartFile(f)))); | 
| +    numSourcesAnalyzed = lintDriver.numSourcesAnalyzed; | 
| files.where((f) => isPubspecFile(f)).forEach((p) { | 
| numSourcesAnalyzed++; | 
| return errors.addAll(_lintPubspecFile(p)); | 
| @@ -193,6 +195,7 @@ class LinterException implements Exception { | 
| class LinterOptions extends DriverOptions { | 
| Iterable<LintRule> enabledLints; | 
| LintFilter filter; | 
| +  file_system.ResourceProvider resourceProvider; | 
| LinterOptions([this.enabledLints]) { | 
| enabledLints ??= Registry.ruleRegistry; | 
| } | 
| @@ -361,11 +364,11 @@ class SourceLinter implements DartLinter, AnalysisErrorListener { | 
| SourceLinter(this.options, {this.reporter: const PrintingReporter()}); | 
|  | 
| @override | 
| -  Iterable<AnalysisErrorInfo> lintFiles(List<File> files) { | 
| +  Future<Iterable<AnalysisErrorInfo>> lintFiles(List<File> files) async { | 
| List<AnalysisErrorInfo> errors = []; | 
| -    var analysisDriver = new LintDriver(options); | 
| -    errors.addAll(analysisDriver.analyze(files.where((f) => isDartFile(f)))); | 
| -    numSourcesAnalyzed = analysisDriver.numSourcesAnalyzed; | 
| +    final lintDriver = new LintDriver(options); | 
| +    errors.addAll(await lintDriver.analyze(files.where((f) => isDartFile(f)))); | 
| +    numSourcesAnalyzed = lintDriver.numSourcesAnalyzed; | 
| files.where((f) => isPubspecFile(f)).forEach((p) { | 
| numSourcesAnalyzed++; | 
| return errors.addAll(_lintPubspecFile(p)); | 
|  |