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

Side by Side Diff: pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart

Issue 2969833002: Convert DartChangeBuilder to use AnalysisSession (Closed)
Patch Set: Created 3 years, 5 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';
8 import 'package:analyzer/dart/analysis/session.dart';
7 import 'package:analyzer/dart/ast/ast.dart'; 9 import 'package:analyzer/dart/ast/ast.dart';
8 import 'package:analyzer/dart/ast/token.dart'; 10 import 'package:analyzer/dart/ast/token.dart';
9 import 'package:analyzer/dart/element/element.dart'; 11 import 'package:analyzer/dart/element/element.dart';
10 import 'package:analyzer/dart/element/type.dart'; 12 import 'package:analyzer/dart/element/type.dart';
11 import 'package:analyzer/src/dart/analysis/driver.dart'; 13 import 'package:analyzer/exception/exception.dart';
12 import 'package:analyzer/src/dart/ast/utilities.dart'; 14 import 'package:analyzer/src/dart/ast/utilities.dart';
13 import 'package:analyzer/src/dart/element/type.dart'; 15 import 'package:analyzer/src/dart/element/type.dart';
14 import 'package:analyzer/src/generated/resolver.dart'; 16 import 'package:analyzer/src/generated/resolver.dart';
15 import 'package:analyzer/src/generated/source.dart'; 17 import 'package:analyzer/src/generated/source.dart';
16 import 'package:analyzer/src/generated/utilities_dart.dart'; 18 import 'package:analyzer/src/generated/utilities_dart.dart';
17 import 'package:analyzer_plugin/protocol/protocol_common.dart' 19 import 'package:analyzer_plugin/protocol/protocol_common.dart'
18 hide Element, ElementKind; 20 hide Element, ElementKind;
19 import 'package:analyzer_plugin/src/utilities/change_builder/change_builder_core .dart'; 21 import 'package:analyzer_plugin/src/utilities/change_builder/change_builder_core .dart';
20 import 'package:analyzer_plugin/src/utilities/string_utilities.dart'; 22 import 'package:analyzer_plugin/src/utilities/string_utilities.dart';
21 import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dar t'; 23 import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dar t';
22 import 'package:analyzer_plugin/utilities/change_builder/change_builder_dart.dar t'; 24 import 'package:analyzer_plugin/utilities/change_builder/change_builder_dart.dar t';
23 import 'package:analyzer_plugin/utilities/range_factory.dart'; 25 import 'package:analyzer_plugin/utilities/range_factory.dart';
24 import 'package:charcode/ascii.dart'; 26 import 'package:charcode/ascii.dart';
25 import 'package:path/path.dart' as path; 27 import 'package:path/path.dart' as path;
26 28
27 /** 29 /**
28 * A [ChangeBuilder] used to build changes in Dart files. 30 * A [ChangeBuilder] used to build changes in Dart files.
29 */ 31 */
30 class DartChangeBuilderImpl extends ChangeBuilderImpl 32 class DartChangeBuilderImpl extends ChangeBuilderImpl
31 implements DartChangeBuilder { 33 implements DartChangeBuilder {
32 /** 34 /**
33 * The analysis driver in which the files being edited were analyzed. 35 * The analysis driver in which the files being edited were analyzed.
scheglov 2017/07/02 16:59:44 driver -> session?
Brian Wilkerson 2017/07/03 15:41:22 Done
34 */ 36 */
35 final AnalysisDriver driver; 37 final AnalysisSession session;
36 38
37 /** 39 /**
38 * Initialize a newly created change builder. 40 * Initialize a newly created change builder.
39 */ 41 */
40 DartChangeBuilderImpl(this.driver); 42 DartChangeBuilderImpl(this.session);
41 43
42 @override 44 @override
43 Future<Null> addFileEdit( 45 Future<Null> addFileEdit(
44 String path, void buildFileEdit(DartFileEditBuilder builder)) => 46 String path, void buildFileEdit(DartFileEditBuilder builder)) =>
45 super.addFileEdit(path, buildFileEdit); 47 super.addFileEdit(path, buildFileEdit);
46 48
47 @override 49 @override
48 Future<DartFileEditBuilderImpl> createFileEditBuilder(String path) async { 50 Future<DartFileEditBuilderImpl> createFileEditBuilder(String path) async {
49 AnalysisResult result = await driver.getResult(path); 51 ResolveResult result = await session.getResolvedAst(path);
50 int timeStamp = driver.fsState.getFileForPath(path).exists ? 0 : -1; 52 ResultState state = result.state;
53 if (state == ResultState.INVALID_FILE_TYPE) {
54 throw new AnalysisException('Cannot analyze "$path"');
55 }
56 int timeStamp = state == ResultState.VALID ? 0 : -1;
51 return new DartFileEditBuilderImpl(this, path, timeStamp, result.unit); 57 return new DartFileEditBuilderImpl(this, path, timeStamp, result.unit);
52 } 58 }
53 } 59 }
54 60
55 /** 61 /**
56 * An [EditBuilder] used to build edits in Dart files. 62 * An [EditBuilder] used to build edits in Dart files.
57 */ 63 */
58 class DartEditBuilderImpl extends EditBuilderImpl implements DartEditBuilder { 64 class DartEditBuilderImpl extends EditBuilderImpl implements DartEditBuilder {
59 List<String> _KNOWN_METHOD_NAME_PREFIXES = ['get', 'is', 'to']; 65 List<String> _KNOWN_METHOD_NAME_PREFIXES = ['get', 'is', 'to'];
60 66
(...skipping 1326 matching lines...) Expand 10 before | Expand all | Expand 10 after
1387 } 1393 }
1388 } 1394 }
1389 1395
1390 class _InsertionDescription { 1396 class _InsertionDescription {
1391 final int offset; 1397 final int offset;
1392 final bool insertEmptyLineBefore; 1398 final bool insertEmptyLineBefore;
1393 final bool insertEmptyLineAfter; 1399 final bool insertEmptyLineAfter;
1394 _InsertionDescription( 1400 _InsertionDescription(
1395 this.offset, this.insertEmptyLineBefore, this.insertEmptyLineAfter); 1401 this.offset, this.insertEmptyLineBefore, this.insertEmptyLineAfter);
1396 } 1402 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698