Handle toString not returning a string in IO.print and IO.write.

Fix #67.
This commit is contained in:
Bob Nystrom
2015-01-08 07:53:37 -08:00
parent 92fcfc1b00
commit 15b0d8777c
4 changed files with 35 additions and 6 deletions
+12 -3
View File
@@ -13,7 +13,7 @@ static const char* libSource =
" }\n"
"\n"
" static print(obj) {\n"
" IO.writeString_(obj.toString)\n"
" IO.writeObject_(obj)\n"
" IO.writeString_(\"\n\")\n"
" return obj\n"
" }\n"
@@ -79,14 +79,23 @@ static const char* libSource =
" }\n"
"\n"
" static printList_(objects) {\n"
" for (object in objects) IO.writeString_(object.toString)\n"
" for (object in objects) IO.writeObject_(object)\n"
" IO.writeString_(\"\n\")\n"
" }\n"
"\n"
" static write(obj) {\n"
" IO.writeString_(obj.toString)\n"
" IO.writeObject_(obj)\n"
" return obj\n"
" }\n"
"\n"
" static writeObject_(obj) {\n"
" var string = obj.toString\n"
" if (string is String) {\n"
" IO.writeString_(string)\n"
" } else {\n"
" IO.writeString_(\"[invalid toString]\")\n"
" }\n"
" }\n"
"}\n";
static void ioWriteString(WrenVM* vm)