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 import 'dart:collection' show HashSet, HashMap, SplayTreeSet; | 5 import 'dart:collection' show HashSet, HashMap, SplayTreeSet; |
6 | 6 |
7 import 'package:analyzer/analyzer.dart' hide ConstantEvaluator; | 7 import 'package:analyzer/analyzer.dart' hide ConstantEvaluator; |
8 import 'package:analyzer/src/generated/ast.dart' hide ConstantEvaluator; | 8 import 'package:analyzer/src/generated/ast.dart' hide ConstantEvaluator; |
9 import 'package:analyzer/src/generated/constant.dart'; | 9 import 'package:analyzer/src/generated/constant.dart'; |
10 import 'package:analyzer/src/generated/element.dart'; | 10 import 'package:analyzer/src/generated/element.dart'; |
(...skipping 3545 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3556 var rules = new StrongTypeSystemImpl(); | 3556 var rules = new StrongTypeSystemImpl(); |
3557 var codegen = | 3557 var codegen = |
3558 new JSCodegenVisitor(compiler, rules, library, _extensionTypes, fields); | 3558 new JSCodegenVisitor(compiler, rules, library, _extensionTypes, fields); |
3559 var module = codegen.emitLibrary(unit); | 3559 var module = codegen.emitLibrary(unit); |
3560 var out = compiler.getOutputPath(library.source.uri); | 3560 var out = compiler.getOutputPath(library.source.uri); |
3561 var flags = compiler.options; | 3561 var flags = compiler.options; |
3562 var serverUri = flags.serverMode | 3562 var serverUri = flags.serverMode |
3563 ? Uri.parse('http://${flags.host}:${flags.port}/') | 3563 ? Uri.parse('http://${flags.host}:${flags.port}/') |
3564 : null; | 3564 : null; |
3565 return writeJsLibrary(module, out, compiler.inputBaseDir, serverUri, | 3565 return writeJsLibrary(module, out, compiler.inputBaseDir, serverUri, |
3566 emitSourceMaps: options.emitSourceMaps, | 3566 emitSourceMaps: options.emitSourceMaps); |
3567 arrowFnBindThisWorkaround: options.arrowFnBindThisWorkaround); | |
3568 } | 3567 } |
3569 } | 3568 } |
3570 | 3569 |
3571 /// Choose a canonical name from the library element. | 3570 /// Choose a canonical name from the library element. |
3572 /// This never uses the library's name (the identifier in the `library` | 3571 /// This never uses the library's name (the identifier in the `library` |
3573 /// declaration) as it doesn't have any meaningful rules enforced. | 3572 /// declaration) as it doesn't have any meaningful rules enforced. |
3574 String jsLibraryName(LibraryElement library) => canonicalLibraryName(library); | 3573 String jsLibraryName(LibraryElement library) => canonicalLibraryName(library); |
3575 | 3574 |
3576 /// Shorthand for identifier-like property names. | 3575 /// Shorthand for identifier-like property names. |
3577 /// For now, we emit them as strings and the printer restores them to | 3576 /// For now, we emit them as strings and the printer restores them to |
3578 /// identifiers if it can. | 3577 /// identifiers if it can. |
3579 // TODO(jmesserly): avoid the round tripping through quoted form. | 3578 // TODO(jmesserly): avoid the round tripping through quoted form. |
3580 JS.LiteralString _propertyName(String name) => js.string(name, "'"); | 3579 JS.LiteralString _propertyName(String name) => js.string(name, "'"); |
3581 | 3580 |
3582 // TODO(jacobr): we would like to do something like the following | 3581 // TODO(jacobr): we would like to do something like the following |
3583 // but we don't have summary support yet. | 3582 // but we don't have summary support yet. |
3584 // bool _supportJsExtensionMethod(AnnotatedNode node) => | 3583 // bool _supportJsExtensionMethod(AnnotatedNode node) => |
3585 // _getAnnotation(node, "SupportJsExtensionMethod") != null; | 3584 // _getAnnotation(node, "SupportJsExtensionMethod") != null; |
3586 | 3585 |
3587 /// A special kind of element created by the compiler, signifying a temporary | 3586 /// A special kind of element created by the compiler, signifying a temporary |
3588 /// variable. These objects use instance equality, and should be shared | 3587 /// variable. These objects use instance equality, and should be shared |
3589 /// everywhere in the tree where they are treated as the same variable. | 3588 /// everywhere in the tree where they are treated as the same variable. |
3590 class TemporaryVariableElement extends LocalVariableElementImpl { | 3589 class TemporaryVariableElement extends LocalVariableElementImpl { |
3591 TemporaryVariableElement.forNode(Identifier name) : super.forNode(name); | 3590 TemporaryVariableElement.forNode(Identifier name) : super.forNode(name); |
3592 | 3591 |
3593 int get hashCode => identityHashCode(this); | 3592 int get hashCode => identityHashCode(this); |
3594 bool operator ==(Object other) => identical(this, other); | 3593 bool operator ==(Object other) => identical(this, other); |
3595 } | 3594 } |
OLD | NEW |