| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 dart2js.ir_builder_task; | 5 library dart2js.ir_builder_task; |
| 6 | 6 |
| 7 import 'package:js_runtime/shared/embedded_names.dart' | 7 import 'package:js_runtime/shared/embedded_names.dart' |
| 8 show JsBuiltin, JsGetName; | 8 show JsBuiltin, JsGetName; |
| 9 | 9 |
| 10 import '../closure.dart' as closure; | 10 import '../closure.dart' as closure; |
| (...skipping 3179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3190 ir.Primitive nameValue = visit(node); | 3190 ir.Primitive nameValue = visit(node); |
| 3191 if (nameValue is ir.Constant && nameValue.value.isString) { | 3191 if (nameValue is ir.Constant && nameValue.value.isString) { |
| 3192 StringConstantValue constantValue = nameValue.value; | 3192 StringConstantValue constantValue = nameValue.value; |
| 3193 return constantValue.primitiveValue.slowToString(); | 3193 return constantValue.primitiveValue.slowToString(); |
| 3194 } else { | 3194 } else { |
| 3195 return internalError(node, 'expected a literal string'); | 3195 return internalError(node, 'expected a literal string'); |
| 3196 } | 3196 } |
| 3197 } | 3197 } |
| 3198 | 3198 |
| 3199 Link<ast.Node> argumentNodes = argumentList.nodes; | 3199 Link<ast.Node> argumentNodes = argumentList.nodes; |
| 3200 NativeBehavior behavior = | 3200 NativeBehavior behavior = elements.getNativeData(node); |
| 3201 compiler.enqueuer.resolution.nativeEnqueuer.getNativeBehaviorOf(node); | |
| 3202 switch (function.name) { | 3201 switch (function.name) { |
| 3203 case 'JS': | 3202 case 'JS': |
| 3204 validateArgumentCount(minimum: 2); | 3203 validateArgumentCount(minimum: 2); |
| 3205 // The first two arguments are the type and the foreign code template, | 3204 // The first two arguments are the type and the foreign code template, |
| 3206 // which already have been analyzed by the resolver and can be retrieved | 3205 // which already have been analyzed by the resolver and can be retrieved |
| 3207 // using [NativeBehavior]. We can ignore these arguments in the backend. | 3206 // using [NativeBehavior]. We can ignore these arguments in the backend. |
| 3208 List<ir.Primitive> arguments = | 3207 List<ir.Primitive> arguments = |
| 3209 argumentNodes.skip(2).mapToList(visit, growable: false); | 3208 argumentNodes.skip(2).mapToList(visit, growable: false); |
| 3210 if (behavior.codeTemplate.positionalArgumentCount != arguments.length) { | 3209 if (behavior.codeTemplate.positionalArgumentCount != arguments.length) { |
| 3211 reporter.reportErrorMessage(node, MessageKind.GENERIC, { | 3210 reporter.reportErrorMessage(node, MessageKind.GENERIC, { |
| (...skipping 803 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4015 _backend.jsInteropAnalysis.hasAnonymousAnnotation(element.contextClass); | 4014 _backend.jsInteropAnalysis.hasAnonymousAnnotation(element.contextClass); |
| 4016 | 4015 |
| 4017 String getJsInteropTargetPath(FunctionElement element) { | 4016 String getJsInteropTargetPath(FunctionElement element) { |
| 4018 return '${_backend.namer.fixedBackendPath(element)}.' | 4017 return '${_backend.namer.fixedBackendPath(element)}.' |
| 4019 '${_backend.nativeData.getFixedBackendName(element)}'; | 4018 '${_backend.nativeData.getFixedBackendName(element)}'; |
| 4020 } | 4019 } |
| 4021 | 4020 |
| 4022 DartType get jsJavascriptObjectType => | 4021 DartType get jsJavascriptObjectType => |
| 4023 _backend.helpers.jsJavaScriptObjectClass.thisType; | 4022 _backend.helpers.jsJavaScriptObjectClass.thisType; |
| 4024 } | 4023 } |
| OLD | NEW |