| Index: pkg/analysis_server/lib/src/domain_analysis.dart | 
| diff --git a/pkg/analysis_server/lib/src/domain_analysis.dart b/pkg/analysis_server/lib/src/domain_analysis.dart | 
| index f1bdf14b840600492fd467ec30f3fed5f9b32f6d..bd9d6073a4e1fdbb47b08b8265047cec6c4721e8 100644 | 
| --- a/pkg/analysis_server/lib/src/domain_analysis.dart | 
| +++ b/pkg/analysis_server/lib/src/domain_analysis.dart | 
| @@ -175,8 +175,9 @@ class AnalysisDomainHandler implements RequestHandler { | 
| if (pair.context == null || pair.source == null) { | 
| return new Response.getReachableSourcesInvalidFile(request); | 
| } | 
| -    Map<String, List<String>> sources = new ReachableSourceCollector( | 
| -        pair.source, pair.context).collectSources(); | 
| +    Map<String, List<String>> sources = | 
| +        new ReachableSourceCollector(pair.source, pair.context) | 
| +            .collectSources(); | 
| return new AnalysisGetReachableSourcesResult(sources) | 
| .toResponse(request.id); | 
| } | 
| @@ -245,9 +246,22 @@ class AnalysisDomainHandler implements RequestHandler { | 
| */ | 
| Response setAnalysisRoots(Request request) { | 
| var params = new AnalysisSetAnalysisRootsParams.fromRequest(request); | 
| +    List<String> includedPathList = params.included; | 
| +    List<String> excludedPathList = params.excluded; | 
| +    // validate | 
| +    for (String path in includedPathList) { | 
| +      if (!server.isValidFilePath(path)) { | 
| +        return new Response.invalidFilePathFormat(request, path); | 
| +      } | 
| +    } | 
| +    for (String path in excludedPathList) { | 
| +      if (!server.isValidFilePath(path)) { | 
| +        return new Response.invalidFilePathFormat(request, path); | 
| +      } | 
| +    } | 
| // continue in server | 
| -    server.setAnalysisRoots(request.id, params.included, params.excluded, | 
| -        params.packageRoots == null ? {} : params.packageRoots); | 
| +    server.setAnalysisRoots(request.id, includedPathList, excludedPathList, | 
| +        params.packageRoots ?? <String, String>{}); | 
| return new AnalysisSetAnalysisRootsResult().toResponse(request.id); | 
| } | 
|  | 
| @@ -347,8 +361,8 @@ class AnalysisDomainHandler implements RequestHandler { | 
| class AnalysisDomainImpl implements AnalysisDomain { | 
| final AnalysisServer server; | 
|  | 
| -  final Map<ResultDescriptor, | 
| -          StreamController<engine.ComputedResult>> controllers = | 
| +  final Map<ResultDescriptor, StreamController<engine.ComputedResult>> | 
| +      controllers = | 
| <ResultDescriptor, StreamController<engine.ComputedResult>>{}; | 
|  | 
| AnalysisDomainImpl(this.server) { | 
|  |