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

Side by Side Diff: pkg/analyzer/lib/src/dart/analysis/search.dart

Issue 2539263002: Fix for constructor search. (Closed)
Patch Set: Created 4 years 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) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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/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/dart/element/visitor.dart'; 10 import 'package:analyzer/dart/element/visitor.dart';
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 Map<IndexRelationKind, SearchResultKind> relationToResultKind) async { 77 Map<IndexRelationKind, SearchResultKind> relationToResultKind) async {
78 String path = element.source.fullName; 78 String path = element.source.fullName;
79 79
80 // If the file with the element is not known, then the element is not used. 80 // If the file with the element is not known, then the element is not used.
81 if (!_driver.knownFiles.contains(path)) { 81 if (!_driver.knownFiles.contains(path)) {
82 return; 82 return;
83 } 83 }
84 84
85 // TODO(scheglov) optimize for private elements 85 // TODO(scheglov) optimize for private elements
86 String name = element.displayName; 86 String name = element.displayName;
87 if (element is ConstructorElement) {
88 name = element.enclosingElement.displayName;
89 }
87 90
88 // Prepare the list of files that reference the element name. 91 // Prepare the list of files that reference the element name.
89 List<String> files = await _driver.getFilesReferencingName(name); 92 List<String> files = await _driver.getFilesReferencingName(name);
90 if (!files.contains(path) && _driver.addedFiles.contains(path)) { 93 if (!files.contains(path) && _driver.addedFiles.contains(path)) {
91 files.add(path); 94 files.add(path);
92 } 95 }
93 96
94 // Check the index of every file that references the element name. 97 // Check the index of every file that references the element name.
95 for (String file in files) { 98 for (String file in files) {
96 IndexResult result = await _driver.getIndex(file); 99 IndexResult result = await _driver.getIndex(file);
(...skipping 531 matching lines...) Expand 10 before | Expand all | Expand 10 after
628 } 631 }
629 632
630 void _addResult(AstNode node, SearchResultKind kind) { 633 void _addResult(AstNode node, SearchResultKind kind) {
631 bool isQualified = node.parent is Label; 634 bool isQualified = node.parent is Label;
632 Element enclosingElement = 635 Element enclosingElement =
633 _getEnclosingElement(enclosingUnitElement, node.offset); 636 _getEnclosingElement(enclosingUnitElement, node.offset);
634 results.add(new SearchResult._(element, enclosingElement, kind, node.offset, 637 results.add(new SearchResult._(element, enclosingElement, kind, node.offset,
635 node.length, true, isQualified)); 638 node.length, true, isQualified));
636 } 639 }
637 } 640 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698