OLD | NEW |
(Empty) | |
| 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 |
| 3 // BSD-style license that can be found in the LICENSE file. |
| 4 |
| 5 library dev_compiler.src.js_interop; |
| 6 |
| 7 import 'package:analyzer/src/generated/ast.dart'; |
| 8 import 'package:analyzer/src/generated/element.dart'; |
| 9 import 'package:analyzer/src/generated/constant.dart'; |
| 10 |
| 11 bool _isJsLibType(String expectedName, Element e) => |
| 12 e?.name == expectedName && _isJsLib(e.library); |
| 13 |
| 14 bool _isJsLib(LibraryElement e) { |
| 15 var libName = e?.name; |
| 16 return libName == 'js' || |
| 17 libName == 'js.varargs' || |
| 18 libName == 'dart._js_helper'; |
| 19 } |
| 20 |
| 21 bool isJsRestAnnotation(DartObjectImpl value) => |
| 22 _isJsLibType('_Rest', value.type.element); |
| 23 |
| 24 bool isJsSpreadInvocation(MethodInvocation i) => |
| 25 _isJsLibType('spread', i.methodName?.bestElement); |
| 26 |
| 27 // TODO(jmesserly): Move JsName, JsPeerInterface to package:js (see issue #135). |
| 28 bool isJsNameAnnotation(DartObjectImpl value) => value.type.name == 'JsName'; |
| 29 |
| 30 bool isJsPeerInterface(DartObjectImpl value) => |
| 31 value.type.name == 'JsPeerInterface'; |
OLD | NEW |