OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 library services.src.index.index_contributor; | 5 library services.src.index.index_contributor; |
6 | 6 |
7 import 'dart:collection' show Queue; | 7 import 'dart:collection' show Queue; |
8 | 8 |
9 import 'package:analysis_server/src/services/correction/namespace.dart'; | 9 import 'package:analysis_server/src/services/correction/namespace.dart'; |
10 import 'package:analysis_server/src/services/index/index.dart'; | 10 import 'package:analysis_server/src/services/index/index.dart'; |
11 import 'package:analysis_server/src/services/index/index_store.dart'; | 11 import 'package:analysis_server/src/services/index/index_store.dart'; |
12 import 'package:analyzer/src/generated/ast.dart'; | 12 import 'package:analyzer/src/generated/ast.dart'; |
13 import 'package:analyzer/src/generated/element.dart'; | 13 import 'package:analyzer/src/generated/element.dart'; |
14 import 'package:analyzer/src/generated/engine.dart'; | 14 import 'package:analyzer/src/generated/engine.dart'; |
15 import 'package:analyzer/src/generated/html.dart' as ht; | 15 import 'package:analyzer/src/generated/html.dart' as ht; |
16 import 'package:analyzer/src/generated/java_engine.dart'; | 16 import 'package:analyzer/src/generated/java_engine.dart'; |
17 import 'package:analyzer/src/generated/scanner.dart'; | 17 import 'package:analyzer/src/generated/scanner.dart'; |
18 import 'package:analyzer/src/generated/source.dart'; | 18 import 'package:analyzer/src/generated/source.dart'; |
19 | 19 |
20 /** | 20 /** |
21 * Adds data to [store] based on the resolved Dart [unit]. | 21 * Adds data to [store] based on the resolved Dart [unit]. |
22 */ | 22 */ |
23 void indexDartUnit( | 23 void indexDartUnit( |
24 IndexStore store, AnalysisContext context, CompilationUnit unit) { | 24 InternalIndexStore store, AnalysisContext context, CompilationUnit unit) { |
25 // check unit | 25 // check unit |
26 if (unit == null) { | 26 if (unit == null) { |
27 return; | 27 return; |
28 } | 28 } |
29 // prepare unit element | 29 // prepare unit element |
30 CompilationUnitElement unitElement = unit.element; | 30 CompilationUnitElement unitElement = unit.element; |
31 if (unitElement == null) { | 31 if (unitElement == null) { |
32 return; | 32 return; |
33 } | 33 } |
34 // about to index | 34 // about to index |
35 bool mayIndex = store.aboutToIndexDart(context, unitElement); | 35 bool mayIndex = store.aboutToIndexDart(context, unitElement); |
36 if (!mayIndex) { | 36 if (!mayIndex) { |
37 return; | 37 return; |
38 } | 38 } |
39 // do index | 39 // do index |
40 unit.accept(new _IndexContributor(store)); | 40 unit.accept(new _IndexContributor(store)); |
41 store.doneIndex(); | 41 store.doneIndex(); |
42 } | 42 } |
43 | 43 |
44 /** | 44 /** |
45 * Adds data to [store] based on the resolved HTML [unit]. | 45 * Adds data to [store] based on the resolved HTML [unit]. |
46 */ | 46 */ |
47 void indexHtmlUnit( | 47 void indexHtmlUnit( |
48 IndexStore store, AnalysisContext context, ht.HtmlUnit unit) { | 48 InternalIndexStore store, AnalysisContext context, ht.HtmlUnit unit) { |
49 // check unit | 49 // check unit |
50 if (unit == null) { | 50 if (unit == null) { |
51 return; | 51 return; |
52 } | 52 } |
53 // prepare unit element | 53 // prepare unit element |
54 HtmlElement unitElement = unit.element; | 54 HtmlElement unitElement = unit.element; |
55 if (unitElement == null) { | 55 if (unitElement == null) { |
56 return; | 56 return; |
57 } | 57 } |
58 // about to index | 58 // about to index |
59 bool mayIndex = store.aboutToIndexHtml(context, unitElement); | 59 bool mayIndex = store.aboutToIndexHtml(context, unitElement); |
60 if (!mayIndex) { | 60 if (!mayIndex) { |
61 return; | 61 return; |
62 } | 62 } |
63 // do index | 63 // do index |
64 store.doneIndex(); | 64 store.doneIndex(); |
65 } | 65 } |
66 | 66 |
67 /** | 67 /** |
68 * Visits a resolved AST and adds relationships into [IndexStore]. | 68 * Visits a resolved AST and adds relationships into [InternalIndexStore]. |
69 */ | 69 */ |
70 class _IndexContributor extends GeneralizingAstVisitor { | 70 class _IndexContributor extends GeneralizingAstVisitor { |
71 final IndexStore _store; | 71 final InternalIndexStore _store; |
72 | 72 |
73 LibraryElement _libraryElement; | 73 LibraryElement _libraryElement; |
74 | 74 |
75 Map<ImportElement, Set<Element>> _importElementsMap = {}; | 75 Map<ImportElement, Set<Element>> _importElementsMap = {}; |
76 | 76 |
77 /** | 77 /** |
78 * A stack whose top element (the element with the largest index) is an | 78 * A stack whose top element (the element with the largest index) is an |
79 * element representing the inner-most enclosing scope. | 79 * element representing the inner-most enclosing scope. |
80 */ | 80 */ |
81 Queue<Element> _elementStack = new Queue(); | 81 Queue<Element> _elementStack = new Queue(); |
(...skipping 700 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
782 } | 782 } |
783 | 783 |
784 /** | 784 /** |
785 * @return `true` if given "node" is part of [PrefixedIdentifier] "prefix.node
". | 785 * @return `true` if given "node" is part of [PrefixedIdentifier] "prefix.node
". |
786 */ | 786 */ |
787 static bool _isIdentifierInPrefixedIdentifier(SimpleIdentifier node) { | 787 static bool _isIdentifierInPrefixedIdentifier(SimpleIdentifier node) { |
788 AstNode parent = node.parent; | 788 AstNode parent = node.parent; |
789 return parent is PrefixedIdentifier && parent.identifier == node; | 789 return parent is PrefixedIdentifier && parent.identifier == node; |
790 } | 790 } |
791 } | 791 } |
OLD | NEW |