Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 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 | 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 dev_compiler.src.codegen.js_codegen; | 5 library dev_compiler.src.codegen.js_codegen; |
| 6 | 6 |
| 7 import 'dart:collection' show HashSet, HashMap; | 7 import 'dart:collection' show HashSet, HashMap; |
| 8 import 'dart:io' show Directory, File; | 8 import 'dart:io' show Directory, File; |
| 9 | 9 |
| 10 import 'package:analyzer/analyzer.dart' hide ConstantEvaluator; | 10 import 'package:analyzer/analyzer.dart' hide ConstantEvaluator; |
| (...skipping 1848 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1859 return _emitGet(node.prefix, node.identifier); | 1859 return _emitGet(node.prefix, node.identifier); |
| 1860 } | 1860 } |
| 1861 } | 1861 } |
| 1862 | 1862 |
| 1863 @override | 1863 @override |
| 1864 visitPropertyAccess(PropertyAccess node) => | 1864 visitPropertyAccess(PropertyAccess node) => |
| 1865 _emitGet(_getTarget(node), node.propertyName); | 1865 _emitGet(_getTarget(node), node.propertyName); |
| 1866 | 1866 |
| 1867 /// Shared code for [PrefixedIdentifier] and [PropertyAccess]. | 1867 /// Shared code for [PrefixedIdentifier] and [PropertyAccess]. |
| 1868 _emitGet(Expression target, SimpleIdentifier name) { | 1868 _emitGet(Expression target, SimpleIdentifier name) { |
| 1869 if (rules.isDynamicTarget(target)) { | 1869 if (rules.isDynamicGet(target, name)) { |
|
Jennifer Messerly
2015/04/07 19:05:49
ideally we'd only need to check one of these. Or a
vsm
2015/04/07 19:48:46
This particular one doesn't bother me. A get is a
Jennifer Messerly
2015/04/07 21:49:23
yeah, that's a good point. I just would expect tha
vsm
2015/04/07 22:40:41
I went ahead and did this and did some correspondi
| |
| 1870 return js.call( | 1870 return js.call( |
| 1871 'dart.dload(#, #)', [_visit(target), js.string(name.name, "'")]); | 1871 'dart.dload(#, #)', [_visit(target), js.string(name.name, "'")]); |
| 1872 } else { | 1872 } else { |
| 1873 var e = name.staticElement; | 1873 var e = name.staticElement; |
| 1874 var ret = js.call('#.#', [ | 1874 var ret = js.call('#.#', [ |
| 1875 _visit(target), | 1875 _visit(target), |
| 1876 _emitMemberName(name.name, | 1876 _emitMemberName(name.name, |
| 1877 isStatic: e is ExecutableElement && e.isStatic, target: target) | 1877 isStatic: e is ExecutableElement && e.isStatic, target: target) |
| 1878 ]); | 1878 ]); |
| 1879 return ret; | 1879 return ret; |
| (...skipping 625 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2505 | 2505 |
| 2506 // TODO(jmesserly): in many cases marking the end will be unncessary. | 2506 // TODO(jmesserly): in many cases marking the end will be unncessary. |
| 2507 printer.mark(_location(node.end)); | 2507 printer.mark(_location(node.end)); |
| 2508 } | 2508 } |
| 2509 | 2509 |
| 2510 String _getIdentifier(AstNode node) { | 2510 String _getIdentifier(AstNode node) { |
| 2511 if (node is SimpleIdentifier) return node.name; | 2511 if (node is SimpleIdentifier) return node.name; |
| 2512 return null; | 2512 return null; |
| 2513 } | 2513 } |
| 2514 } | 2514 } |
| OLD | NEW |