Jelajahi Sumber

Map toString brackets (#9260)

* Map toString brackets

* azure, please

* Fix macro

* Revert "azure, please"

This reverts commit 3e1d9a0db5c81d1fd1569494d6bc2dc9a140d840.

* Run tests on custom hxcpp branch

* Revert "Run tests on custom hxcpp branch"

This reverts commit faa9fe892b7835aef77aff4e32cb3e28feb1073a.

---------

Co-authored-by: Simon Krajewski <[email protected]>
RblSb 2 tahun lalu
induk
melakukan
21d8f980b8
37 mengubah file dengan 86 tambahan dan 78 penghapusan
  1. 4 4
      src/macro/eval/evalStdLib.ml
  2. 2 2
      std/cs/_std/haxe/ds/IntMap.hx
  3. 2 2
      std/cs/_std/haxe/ds/ObjectMap.hx
  4. 2 2
      std/cs/_std/haxe/ds/StringMap.hx
  5. 2 2
      std/cs/internal/HxObject.hx
  6. 2 2
      std/flash/_std/haxe/ds/IntMap.hx
  7. 2 2
      std/flash/_std/haxe/ds/ObjectMap.hx
  8. 2 2
      std/flash/_std/haxe/ds/StringMap.hx
  9. 2 2
      std/flash/_std/haxe/ds/UnsafeStringMap.hx
  10. 2 2
      std/flash/_std/haxe/ds/WeakMap.hx
  11. 2 2
      std/haxe/ds/BalancedTree.hx
  12. 2 2
      std/hl/_std/haxe/ds/IntMap.hx
  13. 2 2
      std/hl/_std/haxe/ds/ObjectMap.hx
  14. 2 2
      std/hl/_std/haxe/ds/StringMap.hx
  15. 2 2
      std/java/_std/haxe/ds/IntMap.hx
  16. 2 2
      std/java/_std/haxe/ds/ObjectMap.hx
  17. 2 2
      std/java/_std/haxe/ds/StringMap.hx
  18. 2 2
      std/java/_std/haxe/ds/WeakMap.hx
  19. 2 2
      std/java/internal/HxObject.hx
  20. 2 2
      std/js/_std/haxe/ds/IntMap.hx
  21. 2 2
      std/js/_std/haxe/ds/ObjectMap.hx
  22. 4 4
      std/js/_std/haxe/ds/StringMap.hx
  23. 2 2
      std/jvm/_std/haxe/ds/StringMap.hx
  24. 2 2
      std/lua/_std/haxe/ds/IntMap.hx
  25. 2 2
      std/lua/_std/haxe/ds/ObjectMap.hx
  26. 2 2
      std/lua/_std/haxe/ds/StringMap.hx
  27. 2 2
      std/neko/_std/haxe/ds/IntMap.hx
  28. 2 2
      std/neko/_std/haxe/ds/ObjectMap.hx
  29. 2 2
      std/neko/_std/haxe/ds/StringMap.hx
  30. 1 1
      std/php/_std/haxe/ds/IntMap.hx
  31. 2 2
      std/php/_std/haxe/ds/ObjectMap.hx
  32. 1 1
      std/php/_std/haxe/ds/StringMap.hx
  33. 2 2
      std/python/_std/haxe/ds/IntMap.hx
  34. 2 2
      std/python/_std/haxe/ds/ObjectMap.hx
  35. 2 2
      std/python/_std/haxe/ds/StringMap.hx
  36. 12 0
      tests/unit/src/unit/TestBasetypes.hx
  37. 2 6
      tests/unit/src/unit/issues/Issue6457.hx

+ 4 - 4
src/macro/eval/evalStdLib.ml

@@ -1543,7 +1543,7 @@ module StdIntMap = struct
 		let l = IntHashtbl.fold (fun key vvalue acc ->
 			(join empty_string [create_ascii (string_of_int key); create_ascii " => "; s_value 0 vvalue]) :: acc) this [] in
 		let s = join rcomma l in
-		let s = join empty_string [rbropen;s;rbrclose] in
+		let s = join empty_string [rbkopen;s;rbkclose] in
 		vstring s
 	)
 
@@ -1602,7 +1602,7 @@ module StdStringMap = struct
 		let l = StringHashtbl.fold (fun _ (key,vvalue) acc ->
 			(join empty_string [key; create_ascii " => "; s_value 0 vvalue]) :: acc) this [] in
 		let s = join rcomma l in
-		let s = join empty_string [rbropen;s;rbrclose] in
+		let s = join empty_string [rbkopen;s;rbkclose] in
 		vstring s
 	)
 
@@ -1660,7 +1660,7 @@ module StdObjectMap = struct
 		let l = ValueHashtbl.fold (fun key vvalue acc ->
 			(join empty_string [s_value 0 key; create_ascii " => "; s_value 0 vvalue]) :: acc) this [] in
 		let s = join rcomma l in
-		let s = join empty_string [rbropen;s;rbrclose] in
+		let s = join empty_string [rbkopen;s;rbkclose] in
 		vstring s
 	)
 
@@ -3840,4 +3840,4 @@ let init_standard_library builtins =
 	init_fields builtins (["eval";"luv";"_Prepare"], "Prepare_Impl_") EvalLuv.prepare_fields [];
 	init_fields builtins (["eval";"luv";"_Check"], "Check_Impl_") EvalLuv.check_fields [];
 	init_fields builtins (["eval";"luv"], "Version") EvalLuv.version_fields [];
-	EvalSsl.init_fields init_fields builtins
+	EvalSsl.init_fields init_fields builtins

+ 2 - 2
std/cs/_std/haxe/ds/IntMap.hx

@@ -364,7 +364,7 @@ import cs.NativeArray;
 
 	public function toString():String {
 		var s = new StringBuf();
-		s.add("{");
+		s.add("[");
 		var it = keys();
 		for (i in it) {
 			s.add(i);
@@ -373,7 +373,7 @@ import cs.NativeArray;
 			if (it.hasNext())
 				s.add(", ");
 		}
-		s.add("}");
+		s.add("]");
 		return s.toString();
 	}
 

+ 2 - 2
std/cs/_std/haxe/ds/ObjectMap.hx

@@ -378,7 +378,7 @@ import cs.NativeArray;
 
 	public function toString():String {
 		var s = new StringBuf();
-		s.add("{");
+		s.add("[");
 		var it = keys();
 		for (i in it) {
 			s.add(Std.string(i));
@@ -387,7 +387,7 @@ import cs.NativeArray;
 			if (it.hasNext())
 				s.add(", ");
 		}
-		s.add("}");
+		s.add("]");
 		return s.toString();
 	}
 

+ 2 - 2
std/cs/_std/haxe/ds/StringMap.hx

@@ -377,7 +377,7 @@ import cs.NativeArray;
 
 	public function toString():String {
 		var s = new StringBuf();
-		s.add("{");
+		s.add("[");
 		var it = keys();
 		for (i in it) {
 			s.add(i);
@@ -386,7 +386,7 @@ import cs.NativeArray;
 			if (it.hasNext())
 				s.add(", ");
 		}
-		s.add("}");
+		s.add("]");
 		return s.toString();
 	}
 

+ 2 - 2
std/cs/internal/HxObject.hx

@@ -230,7 +230,7 @@ class DynamicObject extends HxObject {
 		if (ts != null)
 			return ts();
 		var ret = new StringBuf();
-		ret.add("{");
+		ret.add("[");
 		var first = true;
 		for (f in Reflect.fields(this)) {
 			if (first)
@@ -244,7 +244,7 @@ class DynamicObject extends HxObject {
 		}
 		if (!first)
 			ret.add(" ");
-		ret.add("}");
+		ret.add("]");
 		return ret.toString();
 	}
 }

+ 2 - 2
std/flash/_std/haxe/ds/IntMap.hx

@@ -69,7 +69,7 @@ package haxe.ds;
 
 	public function toString():String {
 		var s = new StringBuf();
-		s.add("{");
+		s.add("[");
 		var it = keys();
 		for (i in it) {
 			s.add(i);
@@ -78,7 +78,7 @@ package haxe.ds;
 			if (it.hasNext())
 				s.add(", ");
 		}
-		s.add("}");
+		s.add("]");
 		return s.toString();
 	}
 

+ 2 - 2
std/flash/_std/haxe/ds/ObjectMap.hx

@@ -66,14 +66,14 @@ class ObjectMap<K:{}, V> extends flash.utils.Dictionary implements haxe.Constrai
 	}
 
 	public function toString():String {
-		var s = "";
+		var s = "[";
 		var it = keys();
 		for (i in it) {
 			s += (s == "" ? "" : ",") + Std.string(i);
 			s += " => ";
 			s += Std.string(get(i));
 		}
-		return s + "}";
+		return s + "]";
 	}
 
 	public function clear():Void {

+ 2 - 2
std/flash/_std/haxe/ds/StringMap.hx

@@ -107,7 +107,7 @@ package haxe.ds;
 
 	public function toString():String {
 		var s = new StringBuf();
-		s.add("{");
+		s.add("[");
 		var it = keys();
 		for (i in it) {
 			s.add(i);
@@ -116,7 +116,7 @@ package haxe.ds;
 			if (it.hasNext())
 				s.add(", ");
 		}
-		s.add("}");
+		s.add("]");
 		return s.toString();
 	}
 

+ 2 - 2
std/flash/_std/haxe/ds/UnsafeStringMap.hx

@@ -74,7 +74,7 @@ class UnsafeStringMap<T> implements haxe.Constraints.IMap<String, T> {
 
 	public function toString():String {
 		var s = new StringBuf();
-		s.add("{");
+		s.add("[");
 		var it = keys();
 		for (i in it) {
 			s.add(i);
@@ -83,7 +83,7 @@ class UnsafeStringMap<T> implements haxe.Constraints.IMap<String, T> {
 			if (it.hasNext())
 				s.add(", ");
 		}
-		s.add("}");
+		s.add("]");
 		return s.toString();
 	}
 

+ 2 - 2
std/flash/_std/haxe/ds/WeakMap.hx

@@ -66,14 +66,14 @@ class WeakMap<K:{}, V> extends flash.utils.Dictionary implements haxe.Constraint
 	}
 
 	public function toString():String {
-		var s = "";
+		var s = "[";
 		var it = keys();
 		for (i in it) {
 			s += (s == "" ? "" : ",") + Std.string(i);
 			s += " => ";
 			s += Std.string(get(i));
 		}
-		return s + "}";
+		return s + "]";
 	}
 
 	public function clear():Void {

+ 2 - 2
std/haxe/ds/BalancedTree.hx

@@ -227,7 +227,7 @@ class BalancedTree<K, V> implements haxe.Constraints.IMap<K, V> {
 	}
 
 	public function toString() {
-		return root == null ? '{}' : '{${root.toString()}}';
+		return root == null ? "[]" : '[${root.toString()}]';
 	}
 
 	/**
@@ -264,6 +264,6 @@ class TreeNode<K, V> {
 		return this == null ? 0 : _height;
 
 	public function toString() {
-		return (left == null ? "" : left.toString() + ", ") + '$key=$value' + (right == null ? "" : ", " + right.toString());
+		return (left == null ? "" : left.toString() + ", ") + '$key => $value' + (right == null ? "" : ", " + right.toString());
 	}
 }

+ 2 - 2
std/hl/_std/haxe/ds/IntMap.hx

@@ -69,7 +69,7 @@ class IntMap<T> implements haxe.Constraints.IMap<Int, T> {
 		var s = new StringBuf();
 		var keys = h.keysArray();
 		var values = h.valuesArray();
-		s.addChar('{'.code);
+		s.addChar("[".code);
 		for (i in 0...keys.length) {
 			if (i > 0)
 				s.add(", ");
@@ -77,7 +77,7 @@ class IntMap<T> implements haxe.Constraints.IMap<Int, T> {
 			s.add(" => ");
 			s.add(values[i]);
 		}
-		s.addChar('}'.code);
+		s.addChar("]".code);
 		return s.toString();
 	}
 

+ 2 - 2
std/hl/_std/haxe/ds/ObjectMap.hx

@@ -69,7 +69,7 @@ class ObjectMap<K:{}, T> implements haxe.Constraints.IMap<K, T> {
 		var s = new StringBuf();
 		var keys = h.keysArray();
 		var values = h.valuesArray();
-		s.addChar('{'.code);
+		s.addChar("[".code);
 		for (i in 0...keys.length) {
 			if (i > 0)
 				s.add(", ");
@@ -77,7 +77,7 @@ class ObjectMap<K:{}, T> implements haxe.Constraints.IMap<K, T> {
 			s.add(" => ");
 			s.add(values[i]);
 		}
-		s.addChar('}'.code);
+		s.addChar("]".code);
 		return s.toString();
 	}
 

+ 2 - 2
std/hl/_std/haxe/ds/StringMap.hx

@@ -96,7 +96,7 @@ class StringMap<T> implements haxe.Constraints.IMap<String, T> {
 		var s = new StringBuf();
 		var keys = h.keysArray();
 		var values = h.valuesArray();
-		s.addChar('{'.code);
+		s.addChar("[".code);
 		for (i in 0...keys.length) {
 			if (i > 0)
 				s.add(", ");
@@ -105,7 +105,7 @@ class StringMap<T> implements haxe.Constraints.IMap<String, T> {
 			s.add(" => ");
 			s.add(values[i]);
 		}
-		s.addChar('}'.code);
+		s.addChar("]".code);
 		return s.toString();
 	}
 

+ 2 - 2
std/java/_std/haxe/ds/IntMap.hx

@@ -364,7 +364,7 @@ import java.NativeArray;
 
 	public function toString():String {
 		var s = new StringBuf();
-		s.add("{");
+		s.add("[");
 		var it = keys();
 		for (i in it) {
 			s.add(i);
@@ -373,7 +373,7 @@ import java.NativeArray;
 			if (it.hasNext())
 				s.add(", ");
 		}
-		s.add("}");
+		s.add("]");
 		return s.toString();
 	}
 

+ 2 - 2
std/java/_std/haxe/ds/ObjectMap.hx

@@ -378,7 +378,7 @@ import java.NativeArray;
 
 	public function toString():String {
 		var s = new StringBuf();
-		s.add("{");
+		s.add("[");
 		var it = keys();
 		for (i in it) {
 			s.add(Std.string(i));
@@ -387,7 +387,7 @@ import java.NativeArray;
 			if (it.hasNext())
 				s.add(", ");
 		}
-		s.add("}");
+		s.add("]");
 		return s.toString();
 	}
 

+ 2 - 2
std/java/_std/haxe/ds/StringMap.hx

@@ -377,7 +377,7 @@ import java.NativeArray;
 
 	public function toString():String {
 		var s = new StringBuf();
-		s.add("{");
+		s.add("[");
 		var it = keys();
 		for (i in it) {
 			s.add(i);
@@ -386,7 +386,7 @@ import java.NativeArray;
 			if (it.hasNext())
 				s.add(", ");
 		}
-		s.add("}");
+		s.add("]");
 		return s.toString();
 	}
 

+ 2 - 2
std/java/_std/haxe/ds/WeakMap.hx

@@ -404,7 +404,7 @@ import java.lang.ref.ReferenceQueue;
 
 	public function toString():String {
 		var s = new StringBuf();
-		s.add("{");
+		s.add("[");
 		var it = keys();
 		for (i in it) {
 			s.add(Std.string(i));
@@ -413,7 +413,7 @@ import java.lang.ref.ReferenceQueue;
 			if (it.hasNext())
 				s.add(", ");
 		}
-		s.add("}");
+		s.add("]");
 		return s.toString();
 	}
 

+ 2 - 2
std/java/internal/HxObject.hx

@@ -193,7 +193,7 @@ class DynamicObject extends HxObject {
 		if (ts != null)
 			return ts();
 		var ret = new StringBuf();
-		ret.add("{");
+		ret.add("[");
 		var first = true;
 		for (f in Reflect.fields(this)) {
 			if (first)
@@ -207,7 +207,7 @@ class DynamicObject extends HxObject {
 		}
 		if (!first)
 			ret.add(" ");
-		ret.add("}");
+		ret.add("]");
 		return ret.toString();
 	}
 }

+ 2 - 2
std/js/_std/haxe/ds/IntMap.hx

@@ -81,7 +81,7 @@ package haxe.ds;
 
 	public function toString():String {
 		var s = new StringBuf();
-		s.add("{");
+		s.add("[");
 		var it = keys();
 		for (i in it) {
 			s.add(i);
@@ -90,7 +90,7 @@ package haxe.ds;
 			if (it.hasNext())
 				s.add(", ");
 		}
-		s.add("}");
+		s.add("]");
 		return s.toString();
 	}
 

+ 2 - 2
std/js/_std/haxe/ds/ObjectMap.hx

@@ -106,7 +106,7 @@ class ObjectMap<K:{}, V> implements haxe.Constraints.IMap<K, V> {
 
 	public function toString():String {
 		var s = new StringBuf();
-		s.add("{");
+		s.add("[");
 		var it = keys();
 		for (i in it) {
 			s.add(Std.string(i));
@@ -115,7 +115,7 @@ class ObjectMap<K:{}, V> implements haxe.Constraints.IMap<K, V> {
 			if (it.hasNext())
 				s.add(", ");
 		}
-		s.add("}");
+		s.add("]");
 		return s.toString();
 	}
 

+ 4 - 4
std/js/_std/haxe/ds/StringMap.hx

@@ -87,12 +87,12 @@ import haxe.DynamicAccess;
 
 	@:analyzer(no_optimize)
 	static function stringify(h:Dynamic):String {
-		var s = "{", first = true;
+		var s = "[", first = true;
 		js.Syntax.code("for (var key in {0}) {", h);
 		js.Syntax.code("\tif ({0}) {0} = false; else {1} += ',';", first, s);
 		js.Syntax.code("\t{0} += key + ' => ' + {1}({2}[key]);", s, Std.string, h);
 		js.Syntax.code("}");
-		return s + "}";
+		return s + "]";
 	}
 }
 
@@ -286,7 +286,7 @@ private class StringMapIterator<T> {
 
 	public function toString():String {
 		var s = new StringBuf();
-		s.add("{");
+		s.add("[");
 		var keys = arrayKeys();
 		for (i in 0...keys.length) {
 			var k = keys[i];
@@ -296,7 +296,7 @@ private class StringMapIterator<T> {
 			if (i < keys.length - 1)
 				s.add(", ");
 		}
-		s.add("}");
+		s.add("]");
 		return s.toString();
 	}
 

+ 2 - 2
std/jvm/_std/haxe/ds/StringMap.hx

@@ -72,7 +72,7 @@ class StringMap<T> implements haxe.Constraints.IMap<String, T> {
 
 	public function toString():String {
 		var s = new StringBuf();
-		s.add("{");
+		s.add("[");
 		var it = keys();
 		for (i in it) {
 			s.add(i);
@@ -81,7 +81,7 @@ class StringMap<T> implements haxe.Constraints.IMap<String, T> {
 			if (it.hasNext())
 				s.add(", ");
 		}
-		s.add("}");
+		s.add("]");
 		return s.toString();
 	}
 

+ 2 - 2
std/lua/_std/haxe/ds/IntMap.hx

@@ -96,7 +96,7 @@ class IntMap<T> implements haxe.Constraints.IMap<Int, T> {
 
 	public function toString():String {
 		var s = new StringBuf();
-		s.add("{");
+		s.add("[");
 		var it = keys();
 		for (i in it) {
 			s.add(i);
@@ -105,7 +105,7 @@ class IntMap<T> implements haxe.Constraints.IMap<Int, T> {
 			if (it.hasNext())
 				s.add(", ");
 		}
-		s.add("}");
+		s.add("]");
 		return s.toString();
 	}
 

+ 2 - 2
std/lua/_std/haxe/ds/ObjectMap.hx

@@ -100,7 +100,7 @@ class ObjectMap<A, B> implements haxe.Constraints.IMap<A, B> {
 
 	public function toString():String {
 		var s = new StringBuf();
-		s.add("{");
+		s.add("[");
 		var it = keys();
 		for (i in it) {
 			s.add(i);
@@ -109,7 +109,7 @@ class ObjectMap<A, B> implements haxe.Constraints.IMap<A, B> {
 			if (it.hasNext())
 				s.add(", ");
 		}
-		s.add("}");
+		s.add("]");
 		return s.toString();
 	}
 

+ 2 - 2
std/lua/_std/haxe/ds/StringMap.hx

@@ -100,7 +100,7 @@ class StringMap<T> implements haxe.Constraints.IMap<String, T> {
 
 	public function toString():String {
 		var s = new StringBuf();
-		s.add("{");
+		s.add("[");
 		var it = keys();
 		for (i in it) {
 			s.add(i);
@@ -109,7 +109,7 @@ class StringMap<T> implements haxe.Constraints.IMap<String, T> {
 			if (it.hasNext())
 				s.add(", ");
 		}
-		s.add("}");
+		s.add("]");
 		return s.toString();
 	}
 

+ 2 - 2
std/neko/_std/haxe/ds/IntMap.hx

@@ -74,7 +74,7 @@ package haxe.ds;
 
 	public function toString():String {
 		var s = new StringBuf();
-		s.add("{");
+		s.add("[");
 		var it = keys();
 		for (i in it) {
 			s.add(i);
@@ -83,7 +83,7 @@ package haxe.ds;
 			if (it.hasNext())
 				s.add(", ");
 		}
-		s.add("}");
+		s.add("]");
 		return s.toString();
 	}
 

+ 2 - 2
std/neko/_std/haxe/ds/ObjectMap.hx

@@ -94,7 +94,7 @@ class ObjectMap<K:{}, V> implements haxe.Constraints.IMap<K, V> {
 
 	public function toString():String {
 		var s = new StringBuf();
-		s.add("{");
+		s.add("[");
 		var it = keys();
 		for (i in it) {
 			s.add(Std.string(i));
@@ -103,7 +103,7 @@ class ObjectMap<K:{}, V> implements haxe.Constraints.IMap<K, V> {
 			if (it.hasNext())
 				s.add(", ");
 		}
-		s.add("}");
+		s.add("]");
 		return s.toString();
 	}
 

+ 2 - 2
std/neko/_std/haxe/ds/StringMap.hx

@@ -74,7 +74,7 @@ package haxe.ds;
 
 	public function toString():String {
 		var s = new StringBuf();
-		s.add("{");
+		s.add("[");
 		var it = keys();
 		for (i in it) {
 			s.add(i);
@@ -83,7 +83,7 @@ package haxe.ds;
 			if (it.hasNext())
 				s.add(", ");
 		}
-		s.add("}");
+		s.add("]");
 		return s.toString();
 	}
 

+ 1 - 1
std/php/_std/haxe/ds/IntMap.hx

@@ -79,7 +79,7 @@ import php.NativeIndexedArray;
 			Global.array_push(parts, '$key => ' + Std.string(value));
 		});
 
-		return '{' + Global.implode(', ', parts) + '}';
+		return "[" + Global.implode(", ", parts) + "]";
 	}
 
 	public inline function clear():Void {

+ 2 - 2
std/php/_std/haxe/ds/ObjectMap.hx

@@ -78,7 +78,7 @@ class ObjectMap<K:{}, V> implements haxe.Constraints.IMap<K, V> {
 	}
 
 	public function toString():String {
-		var s = "{";
+		var s = "[";
 		var it = keys();
 		for (i in it) {
 			s += Std.string(i);
@@ -87,7 +87,7 @@ class ObjectMap<K:{}, V> implements haxe.Constraints.IMap<K, V> {
 			if (it.hasNext())
 				s += ", ";
 		}
-		return s + "}";
+		return s + "]";
 	}
 
 	public inline function clear():Void {

+ 1 - 1
std/php/_std/haxe/ds/StringMap.hx

@@ -80,7 +80,7 @@ import haxe.Constraints;
 			Global.array_push(parts, '$key => ' + Std.string(value));
 		});
 
-		return '{' + Global.implode(', ', parts) + '}';
+		return "[" + Global.implode(", ", parts) + "]";
 	}
 
 	public inline function clear():Void {

+ 2 - 2
std/python/_std/haxe/ds/IntMap.hx

@@ -72,7 +72,7 @@ class IntMap<T> implements haxe.Constraints.IMap<Int, T> {
 
 	public function toString():String {
 		var s = new StringBuf();
-		s.add("{");
+		s.add("[");
 		var it = keys();
 		for (i in it) {
 			s.add(i);
@@ -81,7 +81,7 @@ class IntMap<T> implements haxe.Constraints.IMap<Int, T> {
 			if (it.hasNext())
 				s.add(", ");
 		}
-		s.add("}");
+		s.add("]");
 		return s.toString();
 	}
 

+ 2 - 2
std/python/_std/haxe/ds/ObjectMap.hx

@@ -71,7 +71,7 @@ class ObjectMap<K:{}, V> implements haxe.Constraints.IMap<K, V> {
 
 	public function toString():String {
 		var s = new StringBuf();
-		s.add("{");
+		s.add("[");
 		var it = keys();
 		for (i in it) {
 			s.add(Std.string(i));
@@ -80,7 +80,7 @@ class ObjectMap<K:{}, V> implements haxe.Constraints.IMap<K, V> {
 			if (it.hasNext())
 				s.add(", ");
 		}
-		s.add("}");
+		s.add("]");
 		return s.toString();
 	}
 

+ 2 - 2
std/python/_std/haxe/ds/StringMap.hx

@@ -73,7 +73,7 @@ class StringMap<T> implements haxe.Constraints.IMap<String, T> {
 	public function toString():String {
 		var s = new StringBuf();
 
-		s.add("{");
+		s.add("[");
 		var it = keys();
 		for (i in it) {
 			s.add(i);
@@ -82,7 +82,7 @@ class StringMap<T> implements haxe.Constraints.IMap<String, T> {
 			if (it.hasNext())
 				s.add(", ");
 		}
-		s.add("}");
+		s.add("]");
 		return s.toString();
 	}
 

+ 12 - 0
tests/unit/src/unit/TestBasetypes.hx

@@ -274,6 +274,18 @@ class TestBasetypes extends Test {
 		i[x++] += 4;
 		eq(x, 2);
 		eq(i[1], 4);
+
+		eq(new Map<Int, Int>().toString(), "[]");
+		eq(new Map<String, Int>().toString(), "[]");
+		eq(new Map<MyEnum, Int>().toString(), "[]");
+		eq(new Map<{}, Int>().toString(), "[]");
+
+		eq([1 => 1].toString(), "[1 => 1]");
+		eq(["foo" => 1].toString(), "[foo => 1]");
+		eq([MyEnum.C(0, "foo") => 1].toString(), "[C(0,foo) => 1]");
+		final objMapString = [{foo: 1} => 1].toString();
+		eq(objMapString.charCodeAt(0), "[".code);
+		eq(objMapString.charCodeAt(objMapString.length - 1), "]".code);
 	}
 
 	function testObjectKeyword() {

+ 2 - 6
tests/unit/src/unit/issues/Issue6457.hx

@@ -12,9 +12,7 @@ class Issue6457 extends Test {
     var vals = [ for (k in m) k];
     eq(vals.length, 1);
     eq(vals[0], 10);
-#if !cpp
-    eq(m.toString(), '{0 => 10}');
-#end
+    eq(m.toString(), '[0 => 10]');
 
     var m = new Map();
     m.set("c", 1);
@@ -27,8 +25,6 @@ class Issue6457 extends Test {
     var vals = [ for (k in m) k];
     eq(vals.length, 1);
     eq(vals[0], 10);
-#if !cpp
-    eq(m.toString(), '{z => 10}');
-#end
+    eq(m.toString(), '[z => 10]');
   }
 }