فهرست منبع

Merge branch 'master' into es6

Dmitry Panov 5 سال پیش
والد
کامیت
01ead28552
2فایلهای تغییر یافته به همراه17 افزوده شده و 1 حذف شده
  1. 4 1
      object_goreflect.go
  2. 13 0
      object_goreflect_test.go

+ 4 - 1
object_goreflect.go

@@ -309,10 +309,13 @@ func (o *objectGoReflect) _toString() Value {
 			return stringFalse
 		}
 	}
-	switch v := o.value.Interface().(type) {
+	switch v := o.origValue.Interface().(type) {
 	case fmt.Stringer:
 		return newStringValue(v.String())
+	case error:
+		return newStringValue(v.Error())
 	}
+
 	return stringObjectObject
 }
 

+ 13 - 0
object_goreflect_test.go

@@ -1,6 +1,7 @@
 package goja
 
 import (
+	"errors"
 	"fmt"
 	"reflect"
 	"strings"
@@ -989,6 +990,18 @@ func TestPrimitivePtr(t *testing.T) {
 	}
 }
 
+func TestStringer(t *testing.T) {
+	vm := New()
+	vm.Set("e", errors.New("test"))
+	res, err := vm.RunString("e.toString()")
+	if err != nil {
+		t.Fatal(err)
+	}
+	if v := res.Export(); v != "test" {
+		t.Fatalf("v: %v", v)
+	}
+}
+
 func ExampleTagFieldNameMapper() {
 	vm := New()
 	vm.SetFieldNameMapper(TagFieldNameMapper("json", true))