33// BSD-style license that can be found in the LICENSE file.
44
55import 'dart:collection' ;
6+
67import 'package:analyzer/dart/element/element.dart' ;
78import 'package:analyzer/src/dart/element/member.dart' show TypeParameterMember;
89import 'package:analyzer/dart/element/type.dart' ;
910
1011import '../analyzer/element_helpers.dart' ;
11- import '../compiler/js_names.dart' as JS ;
12- import '../js_ast/js_ast.dart' as JS ;
12+ import '../compiler/js_names.dart' as js_ast ;
13+ import '../js_ast/js_ast.dart' as js_ast ;
1314import '../js_ast/js_ast.dart' show js;
1415
1516Set <TypeParameterElement > freeTypeParameters (DartType t) {
@@ -54,11 +55,11 @@ class _CacheTable {
5455 // Use a LinkedHashMap to maintain key insertion order so the generated code
5556 // is stable under slight perturbation. (If this is not good enough we could
5657 // sort by name to canonicalize order.)
57- final _names = LinkedHashMap <DartType , JS .TemporaryId >(
58+ final _names = LinkedHashMap <DartType , js_ast .TemporaryId >(
5859 equals: typesAreEqual, hashCode: typeHashCode);
5960 Iterable <DartType > get keys => _names.keys.toList ();
6061
61- JS .Statement _dischargeType (DartType type) {
62+ js_ast .Statement _dischargeType (DartType type) {
6263 var name = _names.remove (type);
6364 if (name != null ) {
6465 return js.statement ('let #;' , [name]);
@@ -69,8 +70,8 @@ class _CacheTable {
6970 /// Emit a list of statements declaring the cache variables for
7071 /// types tracked by this table. If [typeFilter] is given,
7172 /// only emit the types listed in the filter.
72- List <JS .Statement > discharge ([Iterable <DartType > typeFilter]) {
73- var decls = < JS .Statement > [];
73+ List <js_ast .Statement > discharge ([Iterable <DartType > typeFilter]) {
74+ var decls = < js_ast .Statement > [];
7475 var types = typeFilter ?? keys;
7576 for (var t in types) {
7677 var stmt = _dischargeType (t);
@@ -119,26 +120,26 @@ class _CacheTable {
119120
120121 /// Heuristically choose a good name for the cache and generator
121122 /// variables.
122- JS .TemporaryId chooseTypeName (DartType type) {
123- return JS .TemporaryId (_typeString (type));
123+ js_ast .TemporaryId chooseTypeName (DartType type) {
124+ return js_ast .TemporaryId (_typeString (type));
124125 }
125126}
126127
127128/// _GeneratorTable tracks types which have been
128129/// named and hoisted.
129130class _GeneratorTable extends _CacheTable {
130- final _defs = LinkedHashMap <DartType , JS .Expression >(
131+ final _defs = LinkedHashMap <DartType , js_ast .Expression >(
131132 equals: typesAreEqual, hashCode: typeHashCode);
132133
133- final JS .Identifier _runtimeModule;
134+ final js_ast .Identifier _runtimeModule;
134135
135136 _GeneratorTable (this ._runtimeModule);
136137
137138 @override
138- JS .Statement _dischargeType (DartType t) {
139+ js_ast .Statement _dischargeType (DartType t) {
139140 var name = _names.remove (t);
140141 if (name != null ) {
141- JS .Expression init = _defs.remove (t);
142+ js_ast .Expression init = _defs.remove (t);
142143 assert (init != null );
143144 return js.statement ('let # = () => ((# = #.constFn(#))());' ,
144145 [name, name, _runtimeModule, init]);
@@ -149,7 +150,7 @@ class _GeneratorTable extends _CacheTable {
149150 /// If [type] does not already have a generator name chosen for it,
150151 /// assign it one, using [typeRep] as the initializer for it.
151152 /// Emit the generator name.
152- JS .TemporaryId _nameType (DartType type, JS .Expression typeRep) {
153+ js_ast .TemporaryId _nameType (DartType type, js_ast .Expression typeRep) {
153154 var temp = _names[type];
154155 if (temp == null ) {
155156 _names[type] = temp = chooseTypeName (type);
@@ -169,12 +170,12 @@ class TypeTable {
169170 /// parameter.
170171 final _scopeDependencies = < TypeParameterElement , List <DartType >> {};
171172
172- TypeTable (JS .Identifier runtime) : _generators = _GeneratorTable (runtime);
173+ TypeTable (js_ast .Identifier runtime) : _generators = _GeneratorTable (runtime);
173174
174175 /// Emit a list of statements declaring the cache variables and generator
175176 /// definitions tracked by the table. If [formals] is present, only
176177 /// emit the definitions which depend on the formals.
177- List <JS .Statement > discharge ([List <TypeParameterElement > formals]) {
178+ List <js_ast .Statement > discharge ([List <TypeParameterElement > formals]) {
178179 var filter = formals? .expand ((p) => _scopeDependencies[p] ?? < DartType > []);
179180 var stmts = [_generators].expand ((c) => c.discharge (filter)).toList ();
180181 formals? .forEach (_scopeDependencies.remove);
@@ -205,7 +206,8 @@ class TypeTable {
205206 /// Given a type [type] , and a JS expression [typeRep] which implements it,
206207 /// add the type and its representation to the table, returning an
207208 /// expression which implements the type (but which caches the value).
208- JS .Expression nameType (ParameterizedType type, JS .Expression typeRep) {
209+ js_ast.Expression nameType (
210+ ParameterizedType type, js_ast.Expression typeRep) {
209211 if (! _generators.isNamed (type) && recordScopeDependencies (type)) {
210212 return typeRep;
211213 }
@@ -223,10 +225,11 @@ class TypeTable {
223225 /// should be a function that is invoked to compute the type, rather than the
224226 /// type itself. This allows better integration with `lazyFn` , avoiding an
225227 /// extra level of indirection.
226- JS .Expression nameFunctionType (FunctionType type, JS .Expression typeRep,
228+ js_ast.Expression nameFunctionType (
229+ FunctionType type, js_ast.Expression typeRep,
227230 {bool lazy = false }) {
228231 if (! _generators.isNamed (type) && recordScopeDependencies (type)) {
229- return lazy ? JS .ArrowFun ([], typeRep) : typeRep;
232+ return lazy ? js_ast .ArrowFun ([], typeRep) : typeRep;
230233 }
231234
232235 var name = _generators._nameType (type, typeRep);
0 commit comments