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

Side by Side Diff: pkg/dev_compiler/lib/src/compiler/element_helpers.dart

Issue 2757753002: Migrate DDC to the new analysis driver.
Patch Set: Rebase Created 3 years, 6 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) 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:collection'; 5 import 'dart:collection';
6 6
7 /// Helpers for Analyzer's Element model and corelib model. 7 /// Helpers for Analyzer's Element model and corelib model.
8 8
9 import 'package:analyzer/dart/ast/ast.dart' 9 import 'package:analyzer/dart/ast/ast.dart'
10 show 10 show
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 /// @js.JS('HTMLFontElement') 51 /// @js.JS('HTMLFontElement')
52 /// @deprecated 52 /// @deprecated
53 /// class FontElement { ... } 53 /// class FontElement { ... }
54 /// 54 ///
55 /// We could match `@deprecated` with a test function like: 55 /// We could match `@deprecated` with a test function like:
56 /// 56 ///
57 /// (v) => v.type.name == 'Deprecated' && v.type.element.library.isDartCore 57 /// (v) => v.type.name == 'Deprecated' && v.type.element.library.isDartCore
58 /// 58 ///
59 DartObject findAnnotation(Element element, bool test(DartObjectImpl value)) { 59 DartObject findAnnotation(Element element, bool test(DartObjectImpl value)) {
60 for (var metadata in element.metadata) { 60 for (var metadata in element.metadata) {
61 var value = metadata.computeConstantValue(); 61 var value = metadata.constantValue;
62 if (value != null && test(value)) return value; 62 if (value != null && test(value)) return value;
63 } 63 }
64 return null; 64 return null;
65 } 65 }
66 66
67 /// Searches all supertype, in order of most derived members, to see if any 67 /// Searches all supertype, in order of most derived members, to see if any
68 /// [match] a condition. If so, returns the first match, otherwise returns null. 68 /// [match] a condition. If so, returns the first match, otherwise returns null.
69 InterfaceType findSupertype(InterfaceType type, bool match(InterfaceType t)) { 69 InterfaceType findSupertype(InterfaceType type, bool match(InterfaceType t)) {
70 for (var m in type.mixins.reversed) { 70 for (var m in type.mixins.reversed) {
71 if (match(m)) return m; 71 if (match(m)) return m;
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 /// Specification (section 10.4). 166 /// Specification (section 10.4).
167 // TODO(jmesserly): this was taken from error_verifier.dart 167 // TODO(jmesserly): this was taken from error_verifier.dart
168 bool hasNoSuchMethod(ClassElement classElement) { 168 bool hasNoSuchMethod(ClassElement classElement) {
169 // TODO(jmesserly): this is slow in Analyzer. It's a linear scan through all 169 // TODO(jmesserly): this is slow in Analyzer. It's a linear scan through all
170 // methods, up through the class hierarchy. 170 // methods, up through the class hierarchy.
171 var method = classElement.lookUpMethod( 171 var method = classElement.lookUpMethod(
172 FunctionElement.NO_SUCH_METHOD_METHOD_NAME, classElement.library); 172 FunctionElement.NO_SUCH_METHOD_METHOD_NAME, classElement.library);
173 var definingClass = method?.enclosingElement; 173 var definingClass = method?.enclosingElement;
174 return definingClass != null && !definingClass.type.isObject; 174 return definingClass != null && !definingClass.type.isObject;
175 } 175 }
OLDNEW
« no previous file with comments | « pkg/dev_compiler/lib/src/compiler/compiler.dart ('k') | pkg/dev_compiler/lib/src/compiler/error_helpers.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698