Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(475)

Side by Side Diff: pkg/analyzer_plugin/lib/plugin/kythe_mixin.dart

Issue 3008433002: Unify lots of copied code in one utility method (Closed)
Patch Set: Created 3 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 import 'dart:async'; 5 import 'dart:async';
6 6
7 import 'package:analyzer/dart/analysis/results.dart'; 7 import 'package:analyzer/dart/analysis/results.dart';
8 import 'package:analyzer/src/dart/analysis/driver.dart'; 8 import 'package:analyzer/src/dart/analysis/driver.dart';
9 import 'package:analyzer_plugin/plugin/plugin.dart'; 9 import 'package:analyzer_plugin/plugin/plugin.dart';
10 import 'package:analyzer_plugin/protocol/protocol.dart'; 10 import 'package:analyzer_plugin/protocol/protocol.dart';
(...skipping 10 matching lines...) Expand all
21 * 21 *
22 * Clients may not extend or implement this class, but are allowed to use it as 22 * Clients may not extend or implement this class, but are allowed to use it as
23 * a mix-in when creating a subclass of [ServerPlugin] that also uses 23 * a mix-in when creating a subclass of [ServerPlugin] that also uses
24 * [KytheMixin] as a mix-in. 24 * [KytheMixin] as a mix-in.
25 */ 25 */
26 abstract class DartEntryMixin implements EntryMixin { 26 abstract class DartEntryMixin implements EntryMixin {
27 @override 27 @override
28 Future<EntryRequest> getEntryRequest( 28 Future<EntryRequest> getEntryRequest(
29 KytheGetKytheEntriesParams parameters) async { 29 KytheGetKytheEntriesParams parameters) async {
30 String path = parameters.file; 30 String path = parameters.file;
31 AnalysisDriver driver = driverForPath(path); 31 ResolveResult result = await getResolveResult(path);
32 if (driver == null) {
33 // Return an error from the request.
34 throw new RequestFailure(
35 RequestErrorFactory.pluginError('Failed to analyze $path', null));
36 }
37 ResolveResult result = await driver.getResult(path);
38 return new DartEntryRequestImpl(resourceProvider, result); 32 return new DartEntryRequestImpl(resourceProvider, result);
39 } 33 }
40 } 34 }
41 35
42 /** 36 /**
43 * A mixin that can be used when creating a subclass of [ServerPlugin] to 37 * A mixin that can be used when creating a subclass of [ServerPlugin] to
44 * provide most of the implementation for handling kythe.getEntries requests. 38 * provide most of the implementation for handling kythe.getEntries requests.
45 * 39 *
46 * Clients may not extend or implement this class, but are allowed to use it as 40 * Clients may not extend or implement this class, but are allowed to use it as
47 * a mix-in when creating a subclass of [ServerPlugin]. 41 * a mix-in when creating a subclass of [ServerPlugin].
48 */ 42 */
49 abstract class EntryMixin implements ServerPlugin { 43 abstract class EntryMixin implements ServerPlugin {
50 /** 44 /**
51 * Return a list containing the entry contributors that should be used to 45 * Return a list containing the entry contributors that should be used to
52 * create entries for the file with the given [path] 46 * create entries for the file with the given [path]
53 */ 47 */
54 List<EntryContributor> getEntryContributors(String path); 48 List<EntryContributor> getEntryContributors(String path);
55 49
56 /** 50 /**
57 * Return the entries request that should be passes to the contributors 51 * Return the entries request that should be passes to the contributors
58 * returned from [getEntryContributors]. 52 * returned from [getEntryContributors].
53 *
54 * Throw a [RequestFailure] if the request could not be created.
59 */ 55 */
60 Future<EntryRequest> getEntryRequest(KytheGetKytheEntriesParams parameters); 56 Future<EntryRequest> getEntryRequest(KytheGetKytheEntriesParams parameters);
61 57
62 @override 58 @override
63 Future<KytheGetKytheEntriesResult> handleKytheGetKytheEntries( 59 Future<KytheGetKytheEntriesResult> handleKytheGetKytheEntries(
64 KytheGetKytheEntriesParams parameters) async { 60 KytheGetKytheEntriesParams parameters) async {
65 String path = parameters.file; 61 String path = parameters.file;
66 EntryRequest request = await getEntryRequest(parameters); 62 EntryRequest request = await getEntryRequest(parameters);
67 EntryGenerator generator = new EntryGenerator(getEntryContributors(path)); 63 EntryGenerator generator = new EntryGenerator(getEntryContributors(path));
68 GeneratorResult result = 64 GeneratorResult result =
69 await generator.generateGetEntriesResponse(request); 65 await generator.generateGetEntriesResponse(request);
70 result.sendNotifications(channel); 66 result.sendNotifications(channel);
71 return result.result; 67 return result.result;
72 } 68 }
73 } 69 }
OLDNEW
« no previous file with comments | « pkg/analyzer_plugin/lib/plugin/fix_mixin.dart ('k') | pkg/analyzer_plugin/lib/plugin/navigation_mixin.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698