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 /// Analysis to determine how to generate code for `LookupMap`s. | 5 /// Analysis to determine how to generate code for `LookupMap`s. |
6 library compiler.src.js_backend.lookup_map_analysis; | 6 library compiler.src.js_backend.lookup_map_analysis; |
7 | 7 |
8 import '../common.dart'; | 8 import '../common.dart'; |
9 import '../common/registry.dart' show Registry; | 9 import '../common/registry.dart' show Registry; |
10 import '../compiler.dart' show Compiler; | 10 import '../compiler.dart' show Compiler; |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
61 /// | 61 /// |
62 /// * Include all generic-type arguments, if the program uses type | 62 /// * Include all generic-type arguments, if the program uses type |
63 /// variables in expressions such as `class A<T> { Type get extract => T }`. | 63 /// variables in expressions such as `class A<T> { Type get extract => T }`. |
64 /// | 64 /// |
65 // TODO(sigmund): add support for const expressions, currently this | 65 // TODO(sigmund): add support for const expressions, currently this |
66 // implementation only supports Type literals. To support const expressions we | 66 // implementation only supports Type literals. To support const expressions we |
67 // need to change some of the invariants below (e.g. we can no longer use the | 67 // need to change some of the invariants below (e.g. we can no longer use the |
68 // ClassElement of a type to refer to keys we need to discover). | 68 // ClassElement of a type to refer to keys we need to discover). |
69 // TODO(sigmund): detect uses of mirrors | 69 // TODO(sigmund): detect uses of mirrors |
70 class LookupMapAnalysis { | 70 class LookupMapAnalysis { |
| 71 static final Uri PACKAGE_LOOKUP_MAP = |
| 72 new Uri(scheme: 'package', path: 'lookup_map/lookup_map.dart'); |
| 73 |
71 /// Reference to [JavaScriptBackend] to be able to enqueue work when we | 74 /// Reference to [JavaScriptBackend] to be able to enqueue work when we |
72 /// discover that a key in a map is potentially used. | 75 /// discover that a key in a map is potentially used. |
73 final JavaScriptBackend backend; | 76 final JavaScriptBackend backend; |
74 | 77 |
75 /// Reference the diagnostic reporting system for logging and reporting issues | 78 /// Reference the diagnostic reporting system for logging and reporting issues |
76 /// to the end-user. | 79 /// to the end-user. |
77 final DiagnosticReporter reporter; | 80 final DiagnosticReporter reporter; |
78 | 81 |
79 /// The resolved [VariableElement] associated with the top-level `_version`. | 82 /// The resolved [VariableElement] associated with the top-level `_version`. |
80 VariableElement lookupMapVersionVariable; | 83 VariableElement lookupMapVersionVariable; |
(...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
432 } | 435 } |
433 } else { | 436 } else { |
434 original.fields[analysis.entriesField] = | 437 original.fields[analysis.entriesField] = |
435 new ListConstantValue(listType, keyValuePairs); | 438 new ListConstantValue(listType, keyValuePairs); |
436 } | 439 } |
437 } | 440 } |
438 } | 441 } |
439 | 442 |
440 final _validLookupMapVersionConstraint = | 443 final _validLookupMapVersionConstraint = |
441 new VersionConstraint.parse('^0.0.1'); | 444 new VersionConstraint.parse('^0.0.1'); |
OLD | NEW |