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

Side by Side Diff: pkg/analysis_server/lib/src/domains/analysis/occurrences_dart.dart

Issue 3007493002: Remove most of the remaining references to AnalysisContext (Closed)
Patch Set: Created 3 years, 4 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) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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 'package:analysis_server/plugin/analysis/occurrences/occurrences_core.dar t'; 5 import 'package:analysis_server/plugin/analysis/occurrences/occurrences_core.dar t';
6 import 'package:analysis_server/src/protocol_server.dart' as protocol; 6 import 'package:analysis_server/src/protocol_server.dart' as protocol;
7 import 'package:analyzer/dart/ast/ast.dart'; 7 import 'package:analyzer/dart/ast/ast.dart';
8 import 'package:analyzer/dart/ast/visitor.dart'; 8 import 'package:analyzer/dart/ast/visitor.dart';
9 import 'package:analyzer/dart/element/element.dart'; 9 import 'package:analyzer/dart/element/element.dart';
10 import 'package:analyzer/src/dart/element/element.dart'; 10 import 'package:analyzer/src/dart/element/element.dart';
11 import 'package:analyzer/src/dart/element/member.dart'; 11 import 'package:analyzer/src/dart/element/member.dart';
12 import 'package:analyzer/src/generated/engine.dart';
13 import 'package:analyzer/src/generated/source.dart';
14 12
15 void addDartOccurrences(OccurrencesCollector collector, CompilationUnit unit) { 13 void addDartOccurrences(OccurrencesCollector collector, CompilationUnit unit) {
16 _DartUnitOccurrencesComputerVisitor visitor = 14 _DartUnitOccurrencesComputerVisitor visitor =
17 new _DartUnitOccurrencesComputerVisitor(); 15 new _DartUnitOccurrencesComputerVisitor();
18 unit.accept(visitor); 16 unit.accept(visitor);
19 visitor.elementsOffsets.forEach((engineElement, offsets) { 17 visitor.elementsOffsets.forEach((engineElement, offsets) {
20 int length = engineElement.nameLength; 18 int length = engineElement.nameLength;
21 protocol.Element serverElement = protocol.convertElement(engineElement); 19 protocol.Element serverElement = protocol.convertElement(engineElement);
22 protocol.Occurrences occurrences = 20 protocol.Occurrences occurrences =
23 new protocol.Occurrences(serverElement, offsets, length); 21 new protocol.Occurrences(serverElement, offsets, length);
24 collector.addOccurrences(occurrences); 22 collector.addOccurrences(occurrences);
25 }); 23 });
26 } 24 }
27 25
28 /**
29 * A computer for occurrences in a Dart [CompilationUnit].
30 */
31 class DartOccurrencesComputer implements OccurrencesContributor {
32 @override
33 void computeOccurrences(
34 OccurrencesCollector collector, AnalysisContext context, Source source) {
35 List<Source> libraries = context.getLibrariesContaining(source);
36 if (libraries.isNotEmpty) {
37 CompilationUnit unit =
38 context.getResolvedCompilationUnit2(source, libraries.first);
39 if (unit != null) {
40 addDartOccurrences(collector, unit);
41 }
42 }
43 }
44 }
45
46 class _DartUnitOccurrencesComputerVisitor extends RecursiveAstVisitor { 26 class _DartUnitOccurrencesComputerVisitor extends RecursiveAstVisitor {
47 final Map<Element, List<int>> elementsOffsets = <Element, List<int>>{}; 27 final Map<Element, List<int>> elementsOffsets = <Element, List<int>>{};
48 28
49 @override 29 @override
50 visitSimpleIdentifier(SimpleIdentifier node) { 30 visitSimpleIdentifier(SimpleIdentifier node) {
51 Element element = node.bestElement; 31 Element element = node.bestElement;
52 if (element != null) { 32 if (element != null) {
53 _addOccurrence(element, node.offset); 33 _addOccurrence(element, node.offset);
54 } 34 }
55 return super.visitSimpleIdentifier(node); 35 return super.visitSimpleIdentifier(node);
(...skipping 18 matching lines...) Expand all
74 } 54 }
75 if (element is PropertyAccessorElement) { 55 if (element is PropertyAccessorElement) {
76 element = (element as PropertyAccessorElement).variable; 56 element = (element as PropertyAccessorElement).variable;
77 } 57 }
78 if (element is Member) { 58 if (element is Member) {
79 element = (element as Member).baseElement; 59 element = (element as Member).baseElement;
80 } 60 }
81 return element; 61 return element;
82 } 62 }
83 } 63 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698