Skip to content
This repository was archived by the owner on Feb 22, 2018. It is now read-only.

Commit 881a304

Browse files
committed
Reify type params on map literals
Fixes #621 R=jmesserly@google.com, leafp@google.com Review URL: https://codereview.chromium.org/2211293002 .
1 parent 057a9c8 commit 881a304

File tree

82 files changed

+363
-303
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

82 files changed

+363
-303
lines changed

lib/runtime/dart_sdk.js

Lines changed: 25 additions & 24 deletions
Large diffs are not rendered by default.

lib/src/compiler/code_generator.dart

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4944,8 +4944,10 @@ class CodeGenerator extends GeneralizingAstVisitor
49444944
JS.Expression emitMap() {
49454945
var entries = node.entries;
49464946
var mapArguments = null;
4947-
var typeArgs = node.typeArguments;
4948-
if (entries.isEmpty && typeArgs == null) {
4947+
var type = node.staticType as InterfaceType;
4948+
var typeArgs = type.typeArguments;
4949+
var reifyTypeArgs = typeArgs.any((t) => !t.isDynamic);
4950+
if (entries.isEmpty && !reifyTypeArgs) {
49494951
mapArguments = [];
49504952
} else if (entries.every((e) => e.key is StringLiteral)) {
49514953
// Use JS object literal notation if possible, otherwise use an array.
@@ -4965,8 +4967,8 @@ class CodeGenerator extends GeneralizingAstVisitor
49654967
mapArguments = new JS.ArrayInitializer(values);
49664968
}
49674969
var types = <JS.Expression>[];
4968-
if (typeArgs != null) {
4969-
types.addAll(typeArgs.arguments.map((e) => _emitType(e.type)));
4970+
if (reifyTypeArgs) {
4971+
types.addAll(typeArgs.map((e) => _emitType(e)));
49704972
}
49714973
return js.call('dart.map(#, #)', [mapArguments, types]);
49724974
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
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
3+
// BSD-style license that can be found in the LICENSE file.
4+
5+
// Test the use type arguments on constant maps.
6+
7+
library map_literal11_test;
8+
9+
import "package:expect/expect.dart";
10+
11+
void foo(Map m) {
12+
Expect.throws(() { m[23] = 23; }, (e) => e is TypeError);
13+
}
14+
15+
void main() {
16+
Map<String, dynamic> map = {};
17+
foo(map);
18+
}

test/codegen_expected/corelib/apply2_test.js

Lines changed: 35 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -104,61 +104,61 @@ dart_library.library('corelib/apply2_test', null, /* Imports */[
104104
}, dynamicAnddynamic__ToString());
105105
expect$.Expect.equals('c1', apply2_test.apply(c1, null, null));
106106
expect$.Expect.equals('c1', apply2_test.apply(c1, [], null));
107-
expect$.Expect.equals('c1', apply2_test.apply(c1, [], dart.map()));
108-
expect$.Expect.equals('c1', apply2_test.apply(c1, null, dart.map()));
107+
expect$.Expect.equals('c1', apply2_test.apply(c1, [], dart.map({}, core.Symbol, dart.dynamic)));
108+
expect$.Expect.equals('c1', apply2_test.apply(c1, null, dart.map({}, core.Symbol, dart.dynamic)));
109109
apply2_test.throwsNSME(c1, JSArrayOfint().of([1]), null);
110-
apply2_test.throwsNSME(c1, JSArrayOfint().of([1]), dart.map([const$ || (const$ = dart.const(core.Symbol.new('a'))), 2]));
111-
apply2_test.throwsNSME(c1, null, dart.map([const$0 || (const$0 = dart.const(core.Symbol.new('a'))), 2]));
110+
apply2_test.throwsNSME(c1, JSArrayOfint().of([1]), dart.map([const$ || (const$ = dart.const(core.Symbol.new('a'))), 2], core.Symbol, core.int));
111+
apply2_test.throwsNSME(c1, null, dart.map([const$0 || (const$0 = dart.const(core.Symbol.new('a'))), 2], core.Symbol, core.int));
112112
expect$.Expect.equals('c2 1', apply2_test.apply(c2, JSArrayOfint().of([1]), null));
113-
expect$.Expect.equals('c2 1', apply2_test.apply(c2, JSArrayOfint().of([1]), dart.map()));
113+
expect$.Expect.equals('c2 1', apply2_test.apply(c2, JSArrayOfint().of([1]), dart.map({}, core.Symbol, dart.dynamic)));
114114
apply2_test.throwsNSME(c2, null, null);
115115
apply2_test.throwsNSME(c2, [], null);
116116
apply2_test.throwsNSME(c2, null, dart.map());
117-
apply2_test.throwsNSME(c2, null, dart.map([const$1 || (const$1 = dart.const(core.Symbol.new('a'))), 1]));
118-
apply2_test.throwsNSME(c2, JSArrayOfint().of([2]), dart.map([const$2 || (const$2 = dart.const(core.Symbol.new('a'))), 1]));
117+
apply2_test.throwsNSME(c2, null, dart.map([const$1 || (const$1 = dart.const(core.Symbol.new('a'))), 1], core.Symbol, core.int));
118+
apply2_test.throwsNSME(c2, JSArrayOfint().of([2]), dart.map([const$2 || (const$2 = dart.const(core.Symbol.new('a'))), 1], core.Symbol, core.int));
119119
expect$.Expect.equals('c3 1', apply2_test.apply(c3, null, null));
120120
expect$.Expect.equals('c3 1', apply2_test.apply(c3, [], null));
121-
expect$.Expect.equals('c3 2', apply2_test.apply(c3, JSArrayOfint().of([2]), dart.map()));
121+
expect$.Expect.equals('c3 2', apply2_test.apply(c3, JSArrayOfint().of([2]), dart.map({}, core.Symbol, dart.dynamic)));
122122
apply2_test.throwsNSME(c3, JSArrayOfint().of([1, 2]), null);
123-
apply2_test.throwsNSME(c3, null, dart.map([const$3 || (const$3 = dart.const(core.Symbol.new('a'))), 1]));
123+
apply2_test.throwsNSME(c3, null, dart.map([const$3 || (const$3 = dart.const(core.Symbol.new('a'))), 1], core.Symbol, core.int));
124124
expect$.Expect.equals('c4 1', apply2_test.apply(c4, [], null));
125-
expect$.Expect.equals('c4 2', apply2_test.apply(c4, [], dart.map([const$4 || (const$4 = dart.const(core.Symbol.new('a'))), 2])));
125+
expect$.Expect.equals('c4 2', apply2_test.apply(c4, [], dart.map([const$4 || (const$4 = dart.const(core.Symbol.new('a'))), 2], core.Symbol, dart.dynamic)));
126126
expect$.Expect.equals('c4 1', apply2_test.apply(c4, null, null));
127-
expect$.Expect.equals('c4 1', apply2_test.apply(c4, [], dart.map()));
128-
apply2_test.throwsNSME(c4, JSArrayOfint().of([1]), dart.map([const$5 || (const$5 = dart.const(core.Symbol.new('a'))), 1]));
127+
expect$.Expect.equals('c4 1', apply2_test.apply(c4, [], dart.map({}, core.Symbol, dart.dynamic)));
128+
apply2_test.throwsNSME(c4, JSArrayOfint().of([1]), dart.map([const$5 || (const$5 = dart.const(core.Symbol.new('a'))), 1], core.Symbol, core.int));
129129
apply2_test.throwsNSME(c4, JSArrayOfint().of([1]), dart.map());
130-
apply2_test.throwsNSME(c4, [], dart.map([const$6 || (const$6 = dart.const(core.Symbol.new('a'))), 1, const$7 || (const$7 = dart.const(core.Symbol.new('b'))), 2]));
130+
apply2_test.throwsNSME(c4, [], dart.map([const$6 || (const$6 = dart.const(core.Symbol.new('a'))), 1, const$7 || (const$7 = dart.const(core.Symbol.new('b'))), 2], core.Symbol, core.int));
131131
expect$.Expect.equals('c5 1 2', apply2_test.apply(c5, [], null));
132-
expect$.Expect.equals('c5 3 2', apply2_test.apply(c5, [], dart.map([const$8 || (const$8 = dart.const(core.Symbol.new('a'))), 3])));
132+
expect$.Expect.equals('c5 3 2', apply2_test.apply(c5, [], dart.map([const$8 || (const$8 = dart.const(core.Symbol.new('a'))), 3], core.Symbol, dart.dynamic)));
133133
expect$.Expect.equals('c5 1 2', apply2_test.apply(c5, null, null));
134-
expect$.Expect.equals('c5 1 2', apply2_test.apply(c5, [], dart.map()));
135-
expect$.Expect.equals('c5 3 4', apply2_test.apply(c5, [], dart.map([const$9 || (const$9 = dart.const(core.Symbol.new('a'))), 3, const$10 || (const$10 = dart.const(core.Symbol.new('b'))), 4])));
136-
expect$.Expect.equals('c5 4 3', apply2_test.apply(c5, [], dart.map([const$11 || (const$11 = dart.const(core.Symbol.new('b'))), 3, const$12 || (const$12 = dart.const(core.Symbol.new('a'))), 4])));
137-
expect$.Expect.equals('c5 1 3', apply2_test.apply(c5, [], dart.map([const$13 || (const$13 = dart.const(core.Symbol.new('b'))), 3])));
138-
apply2_test.throwsNSME(c5, JSArrayOfint().of([1]), dart.map([const$14 || (const$14 = dart.const(core.Symbol.new('a'))), 1]));
134+
expect$.Expect.equals('c5 1 2', apply2_test.apply(c5, [], dart.map({}, core.Symbol, dart.dynamic)));
135+
expect$.Expect.equals('c5 3 4', apply2_test.apply(c5, [], dart.map([const$9 || (const$9 = dart.const(core.Symbol.new('a'))), 3, const$10 || (const$10 = dart.const(core.Symbol.new('b'))), 4], core.Symbol, dart.dynamic)));
136+
expect$.Expect.equals('c5 4 3', apply2_test.apply(c5, [], dart.map([const$11 || (const$11 = dart.const(core.Symbol.new('b'))), 3, const$12 || (const$12 = dart.const(core.Symbol.new('a'))), 4], core.Symbol, dart.dynamic)));
137+
expect$.Expect.equals('c5 1 3', apply2_test.apply(c5, [], dart.map([const$13 || (const$13 = dart.const(core.Symbol.new('b'))), 3], core.Symbol, dart.dynamic)));
138+
apply2_test.throwsNSME(c5, JSArrayOfint().of([1]), dart.map([const$14 || (const$14 = dart.const(core.Symbol.new('a'))), 1], core.Symbol, core.int));
139139
apply2_test.throwsNSME(c5, JSArrayOfint().of([1]), dart.map());
140-
apply2_test.throwsNSME(c5, [], dart.map([const$15 || (const$15 = dart.const(core.Symbol.new('a'))), 1, const$16 || (const$16 = dart.const(core.Symbol.new('b'))), 2, const$17 || (const$17 = dart.const(core.Symbol.new('c'))), 3]));
140+
apply2_test.throwsNSME(c5, [], dart.map([const$15 || (const$15 = dart.const(core.Symbol.new('a'))), 1, const$16 || (const$16 = dart.const(core.Symbol.new('b'))), 2, const$17 || (const$17 = dart.const(core.Symbol.new('c'))), 3], core.Symbol, core.int));
141141
expect$.Expect.equals('c6 2 1', apply2_test.apply(c6, [], null));
142-
expect$.Expect.equals('c6 3 1', apply2_test.apply(c6, [], dart.map([const$18 || (const$18 = dart.const(core.Symbol.new('a'))), 3])));
142+
expect$.Expect.equals('c6 3 1', apply2_test.apply(c6, [], dart.map([const$18 || (const$18 = dart.const(core.Symbol.new('a'))), 3], core.Symbol, dart.dynamic)));
143143
expect$.Expect.equals('c6 2 1', apply2_test.apply(c6, null, null));
144-
expect$.Expect.equals('c6 2 1', apply2_test.apply(c6, [], dart.map()));
145-
expect$.Expect.equals('c6 3 4', apply2_test.apply(c6, [], dart.map([const$19 || (const$19 = dart.const(core.Symbol.new('a'))), 3, const$20 || (const$20 = dart.const(core.Symbol.new('b'))), 4])));
146-
expect$.Expect.equals('c6 4 3', apply2_test.apply(c6, [], dart.map([const$21 || (const$21 = dart.const(core.Symbol.new('b'))), 3, const$22 || (const$22 = dart.const(core.Symbol.new('a'))), 4])));
147-
expect$.Expect.equals('c6 2 3', apply2_test.apply(c6, [], dart.map([const$23 || (const$23 = dart.const(core.Symbol.new('b'))), 3])));
148-
apply2_test.throwsNSME(c6, JSArrayOfint().of([1]), dart.map([const$24 || (const$24 = dart.const(core.Symbol.new('a'))), 1]));
144+
expect$.Expect.equals('c6 2 1', apply2_test.apply(c6, [], dart.map({}, core.Symbol, dart.dynamic)));
145+
expect$.Expect.equals('c6 3 4', apply2_test.apply(c6, [], dart.map([const$19 || (const$19 = dart.const(core.Symbol.new('a'))), 3, const$20 || (const$20 = dart.const(core.Symbol.new('b'))), 4], core.Symbol, dart.dynamic)));
146+
expect$.Expect.equals('c6 4 3', apply2_test.apply(c6, [], dart.map([const$21 || (const$21 = dart.const(core.Symbol.new('b'))), 3, const$22 || (const$22 = dart.const(core.Symbol.new('a'))), 4], core.Symbol, dart.dynamic)));
147+
expect$.Expect.equals('c6 2 3', apply2_test.apply(c6, [], dart.map([const$23 || (const$23 = dart.const(core.Symbol.new('b'))), 3], core.Symbol, dart.dynamic)));
148+
apply2_test.throwsNSME(c6, JSArrayOfint().of([1]), dart.map([const$24 || (const$24 = dart.const(core.Symbol.new('a'))), 1], core.Symbol, core.int));
149149
apply2_test.throwsNSME(c6, JSArrayOfint().of([1]), dart.map());
150-
apply2_test.throwsNSME(c6, [], dart.map([const$25 || (const$25 = dart.const(core.Symbol.new('a'))), 1, const$26 || (const$26 = dart.const(core.Symbol.new('b'))), 2, const$27 || (const$27 = dart.const(core.Symbol.new('c'))), 3]));
150+
apply2_test.throwsNSME(c6, [], dart.map([const$25 || (const$25 = dart.const(core.Symbol.new('a'))), 1, const$26 || (const$26 = dart.const(core.Symbol.new('b'))), 2, const$27 || (const$27 = dart.const(core.Symbol.new('c'))), 3], core.Symbol, core.int));
151151
expect$.Expect.equals('c7 7 2 1', apply2_test.apply(c7, JSArrayOfint().of([7]), null));
152-
expect$.Expect.equals('c7 7 3 1', apply2_test.apply(c7, JSArrayOfint().of([7]), dart.map([const$28 || (const$28 = dart.const(core.Symbol.new('a'))), 3])));
153-
expect$.Expect.equals('c7 7 2 1', apply2_test.apply(c7, JSArrayOfint().of([7]), dart.map()));
154-
expect$.Expect.equals('c7 7 3 4', apply2_test.apply(c7, JSArrayOfint().of([7]), dart.map([const$29 || (const$29 = dart.const(core.Symbol.new('a'))), 3, const$30 || (const$30 = dart.const(core.Symbol.new('b'))), 4])));
155-
expect$.Expect.equals('c7 7 4 3', apply2_test.apply(c7, JSArrayOfint().of([7]), dart.map([const$31 || (const$31 = dart.const(core.Symbol.new('b'))), 3, const$32 || (const$32 = dart.const(core.Symbol.new('a'))), 4])));
156-
expect$.Expect.equals('c7 7 2 3', apply2_test.apply(c7, JSArrayOfint().of([7]), dart.map([const$33 || (const$33 = dart.const(core.Symbol.new('b'))), 3])));
157-
apply2_test.throwsNSME(c7, [], dart.map([const$34 || (const$34 = dart.const(core.Symbol.new('a'))), 1]));
152+
expect$.Expect.equals('c7 7 3 1', apply2_test.apply(c7, JSArrayOfint().of([7]), dart.map([const$28 || (const$28 = dart.const(core.Symbol.new('a'))), 3], core.Symbol, dart.dynamic)));
153+
expect$.Expect.equals('c7 7 2 1', apply2_test.apply(c7, JSArrayOfint().of([7]), dart.map({}, core.Symbol, dart.dynamic)));
154+
expect$.Expect.equals('c7 7 3 4', apply2_test.apply(c7, JSArrayOfint().of([7]), dart.map([const$29 || (const$29 = dart.const(core.Symbol.new('a'))), 3, const$30 || (const$30 = dart.const(core.Symbol.new('b'))), 4], core.Symbol, dart.dynamic)));
155+
expect$.Expect.equals('c7 7 4 3', apply2_test.apply(c7, JSArrayOfint().of([7]), dart.map([const$31 || (const$31 = dart.const(core.Symbol.new('b'))), 3, const$32 || (const$32 = dart.const(core.Symbol.new('a'))), 4], core.Symbol, dart.dynamic)));
156+
expect$.Expect.equals('c7 7 2 3', apply2_test.apply(c7, JSArrayOfint().of([7]), dart.map([const$33 || (const$33 = dart.const(core.Symbol.new('b'))), 3], core.Symbol, dart.dynamic)));
157+
apply2_test.throwsNSME(c7, [], dart.map([const$34 || (const$34 = dart.const(core.Symbol.new('a'))), 1], core.Symbol, core.int));
158158
apply2_test.throwsNSME(c7, [], dart.map());
159-
apply2_test.throwsNSME(c7, JSArrayOfint().of([7]), dart.map([const$35 || (const$35 = dart.const(core.Symbol.new('a'))), 1, const$36 || (const$36 = dart.const(core.Symbol.new('b'))), 2, const$37 || (const$37 = dart.const(core.Symbol.new('c'))), 3]));
159+
apply2_test.throwsNSME(c7, JSArrayOfint().of([7]), dart.map([const$35 || (const$35 = dart.const(core.Symbol.new('a'))), 1, const$36 || (const$36 = dart.const(core.Symbol.new('b'))), 2, const$37 || (const$37 = dart.const(core.Symbol.new('c'))), 3], core.Symbol, core.int));
160160
expect$.Expect.equals('c8 7 8 2 3', apply2_test.apply(c8, JSArrayOfint().of([7, 8]), null));
161-
expect$.Expect.equals('c8 7 8 2 3', apply2_test.apply(c8, JSArrayOfint().of([7, 8]), dart.map()));
161+
expect$.Expect.equals('c8 7 8 2 3', apply2_test.apply(c8, JSArrayOfint().of([7, 8]), dart.map({}, core.Symbol, dart.dynamic)));
162162
expect$.Expect.equals('c8 7 8 3 3', apply2_test.apply(c8, JSArrayOfint().of([7, 8, 3]), null));
163163
expect$.Expect.equals('c8 7 8 3 4', apply2_test.apply(c8, JSArrayOfint().of([7, 8, 3, 4]), null));
164164
apply2_test.throwsNSME(c8, [], null);

test/codegen_expected/corelib/apply_test.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,11 +103,11 @@ dart_library.library('corelib/apply_test', null, /* Imports */[
103103
dart.fn(test, dynamicAnddynamicAnddynamic__Todynamic());
104104
testList(42, apply_test.test0, null);
105105
testList(42, apply_test.test0, []);
106-
testMap(42, apply_test.test0a, dart.map({a: 5}));
106+
testMap(42, apply_test.test0a, dart.map({a: 5}, core.String, core.int));
107107
testList(42, apply_test.test1, JSArrayOfint().of([41]));
108-
test(42, apply_test.test1a, JSArrayOfint().of([20]), dart.map({a: 22}));
108+
test(42, apply_test.test1a, JSArrayOfint().of([20]), dart.map({a: 22}, core.String, core.int));
109109
testList(42, apply_test.test2, JSArrayOfint().of([20, 22]));
110-
test(42, apply_test.test2a, JSArrayOfint().of([10, 15]), dart.map({a: 17}));
110+
test(42, apply_test.test2a, JSArrayOfint().of([10, 15]), dart.map({a: 17}, core.String, core.int));
111111
let cfoo = dart.bind(new apply_test.C(), 'foo');
112112
testList(42, cfoo, JSArrayOfint().of([32]));
113113
let app = apply_test.confuse(core.Function.apply);

test/codegen_expected/corelib/collection_to_string_test.js

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ dart_library.library('corelib/collection_to_string_test', null, /* Imports */[
1515
let JSArrayOfString = () => (JSArrayOfString = dart.constFn(_interceptors.JSArray$(core.String)))();
1616
let ListOfint = () => (ListOfint = dart.constFn(core.List$(core.int)))();
1717
let JSArrayOfListOfint = () => (JSArrayOfListOfint = dart.constFn(_interceptors.JSArray$(ListOfint())))();
18+
let MapOfString$int = () => (MapOfString$int = dart.constFn(core.Map$(core.String, core.int)))();
1819
let VoidTodynamic = () => (VoidTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [])))();
1920
let VoidTovoid = () => (VoidTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [])))();
2021
let intAndStringBuffer__ToObject = () => (intAndStringBuffer__ToObject = dart.constFn(dart.definiteFunctionType(core.Object, [core.int, core.StringBuffer], {exact: core.bool})))();
@@ -73,15 +74,15 @@ dart_library.library('corelib/collection_to_string_test', null, /* Imports */[
7374
expect$.Expect.equals(dart.toString(const$4 || (const$4 = dart.constList(['I', 'II'], core.String))), '[I, II]');
7475
expect$.Expect.equals(dart.toString(const$8 || (const$8 = dart.constList([const$5 || (const$5 = dart.constList([1, 2], core.int)), const$6 || (const$6 = dart.constList([3, 4], core.int)), const$7 || (const$7 = dart.constList([5, 6], core.int))], ListOfint()))), '[[1, 2], [3, 4], [5, 6]]');
7576
expect$.Expect.equals(dart.toString(dart.map()), '{}');
76-
expect$.Expect.equals(dart.toString(dart.map({Elvis: 'King'})), '{Elvis: King}');
77-
expect$.Expect.equals(dart.toString(dart.map({Elvis: null})), '{Elvis: null}');
78-
expect$.Expect.equals(dart.toString(dart.map({I: 1, II: 2})), '{I: 1, II: 2}');
79-
expect$.Expect.equals(dart.toString(dart.map({X: dart.map({I: 1, II: 2}), Y: dart.map({III: 3, IV: 4}), Z: dart.map({V: 5, VI: 6})})), '{X: {I: 1, II: 2}, Y: {III: 3, IV: 4}, Z: {V: 5, VI: 6}}');
77+
expect$.Expect.equals(dart.toString(dart.map({Elvis: 'King'}, core.String, core.String)), '{Elvis: King}');
78+
expect$.Expect.equals(dart.toString(dart.map({Elvis: null}, core.String, dart.dynamic)), '{Elvis: null}');
79+
expect$.Expect.equals(dart.toString(dart.map({I: 1, II: 2}, core.String, core.int)), '{I: 1, II: 2}');
80+
expect$.Expect.equals(dart.toString(dart.map({X: dart.map({I: 1, II: 2}, core.String, core.int), Y: dart.map({III: 3, IV: 4}, core.String, core.int), Z: dart.map({V: 5, VI: 6}, core.String, core.int)}, core.String, MapOfString$int())), '{X: {I: 1, II: 2}, Y: {III: 3, IV: 4}, Z: {V: 5, VI: 6}}');
8081
expect$.Expect.equals(dart.toString(const$9 || (const$9 = dart.const(dart.map()))), '{}');
81-
expect$.Expect.equals(dart.toString(const$10 || (const$10 = dart.const(dart.map({Elvis: 'King'})))), '{Elvis: King}');
82-
expect$.Expect.equals(dart.toString(dart.map({Elvis: null})), '{Elvis: null}');
83-
expect$.Expect.equals(dart.toString(const$11 || (const$11 = dart.const(dart.map({I: 1, II: 2})))), '{I: 1, II: 2}');
84-
expect$.Expect.equals(dart.toString(const$15 || (const$15 = dart.const(dart.map({X: const$12 || (const$12 = dart.const(dart.map({I: 1, II: 2}))), Y: const$13 || (const$13 = dart.const(dart.map({III: 3, IV: 4}))), Z: const$14 || (const$14 = dart.const(dart.map({V: 5, VI: 6})))})))), '{X: {I: 1, II: 2}, Y: {III: 3, IV: 4}, Z: {V: 5, VI: 6}}');
82+
expect$.Expect.equals(dart.toString(const$10 || (const$10 = dart.const(dart.map({Elvis: 'King'}, core.String, core.String)))), '{Elvis: King}');
83+
expect$.Expect.equals(dart.toString(dart.map({Elvis: null}, core.String, dart.dynamic)), '{Elvis: null}');
84+
expect$.Expect.equals(dart.toString(const$11 || (const$11 = dart.const(dart.map({I: 1, II: 2}, core.String, core.int)))), '{I: 1, II: 2}');
85+
expect$.Expect.equals(dart.toString(const$15 || (const$15 = dart.const(dart.map({X: const$12 || (const$12 = dart.const(dart.map({I: 1, II: 2}, core.String, core.int))), Y: const$13 || (const$13 = dart.const(dart.map({III: 3, IV: 4}, core.String, core.int))), Z: const$14 || (const$14 = dart.const(dart.map({V: 5, VI: 6}, core.String, core.int)))}, core.String, MapOfString$int())))), '{X: {I: 1, II: 2}, Y: {III: 3, IV: 4}, Z: {V: 5, VI: 6}}');
8586
};
8687
dart.fn(collection_to_string_test.smokeTest, VoidTovoid());
8788
collection_to_string_test.exactTest = function() {
132 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)