From e0c764f91c5dc3eaebc5efc2f62c19fa283229e0 Mon Sep 17 00:00:00 2001 From: "cshapiro@google.com" Date: Wed, 22 Feb 2012 06:07:39 +0000 Subject: [PATCH] Added special case code for translating null element to work around a frog bug. Review URL: https://chromiumcodereview.appspot.com//9372094 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@4424 260f80e4-7a28-3924-810f-c04153c831b5 --- corelib/src/implementation/collections.dart | 2 +- tests/corelib/src/CollectionToStringTest.dart | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/corelib/src/implementation/collections.dart b/corelib/src/implementation/collections.dart index 2bed4aa7dae..162f6422b19 100644 --- a/corelib/src/implementation/collections.dart +++ b/corelib/src/implementation/collections.dart @@ -133,7 +133,7 @@ class Collections { Maps._emitMap(o, result, visiting); } } else { // o is neither a collection nor a map - result.add(o); + result.add(o == null ? 'null' : o); // TODO(jjb): remove the null check } } diff --git a/tests/corelib/src/CollectionToStringTest.dart b/tests/corelib/src/CollectionToStringTest.dart index fae9c50779d..ef36a0aa283 100644 --- a/tests/corelib/src/CollectionToStringTest.dart +++ b/tests/corelib/src/CollectionToStringTest.dart @@ -26,6 +26,7 @@ void smokeTest() { Expect.equals([].toString(), '[]'); Expect.equals([1].toString(), '[1]'); Expect.equals(['Elvis'].toString(), '[Elvis]'); + Expect.equals([null].toString(), '[null]'); Expect.equals([1, 2].toString(), '[1, 2]'); Expect.equals(['I', 'II'].toString(), '[I, II]'); Expect.equals([[1, 2], [3, 4], [5, 6]].toString(), '[[1, 2], [3, 4], [5, 6]]'); @@ -34,6 +35,7 @@ void smokeTest() { Expect.equals((const[]).toString(), '[]'); Expect.equals((const[1]).toString(), '[1]'); Expect.equals((const['Elvis']).toString(), '[Elvis]'); + Expect.equals((const[null]).toString(), '[null]'); Expect.equals((const[1, 2]).toString(), '[1, 2]'); Expect.equals((const['I', 'II']).toString(), '[I, II]'); Expect.equals((const[const[1, 2], const[3, 4], const[5, 6]]).toString(), @@ -42,6 +44,7 @@ void smokeTest() { // Non-const maps - Note that all keys are strings; the spec currently demands this Expect.equals({}.toString(), '{}'); Expect.equals({'Elvis': 'King'}.toString(), '{Elvis: King}'); + Expect.equals({'Elvis': null}.toString(), '{Elvis: null}'); Expect.equals({'I': 1, 'II': 2}.toString(), '{I: 1, II: 2}'); Expect.equals({'X':{'I':1, 'II':2}, 'Y':{'III':3, 'IV':4}, 'Z':{'V':5, 'VI':6}}.toString(), '{X: {I: 1, II: 2}, Y: {III: 3, IV: 4}, Z: {V: 5, VI: 6}}'); @@ -49,6 +52,7 @@ void smokeTest() { // Const maps Expect.equals(const{}.toString(), '{}'); Expect.equals(const{'Elvis': 'King'}.toString(), '{Elvis: King}'); + Expect.equals({'Elvis': null}.toString(), '{Elvis: null}'); Expect.equals(const{'I': 1, 'II': 2}.toString(), '{I: 1, II: 2}'); Expect.equals(const{'X': const{'I': 1, 'II': 2}, 'Y': const{'III': 3, 'IV': 4}, 'Z': const{'V': 5, 'VI': 6}}.toString(),