Pārlūkot izejas kodu

Fixes bug that prevents the use of a pointer reciever when implementing the Marshaler interface

James Maloney 11 gadi atpakaļ
vecāks
revīzija
9b768c47fa
2 mainītis faili ar 5 papildinājumiem un 3 dzēšanām
  1. 1 0
      AUTHORS
  2. 4 3
      marshal.go

+ 1 - 0
AUTHORS

@@ -39,3 +39,4 @@ Dean Elbaz <elbaz.dean@gmail.com>
 Mike Berman <evencode@gmail.com>
 Dmitriy Fedorenko <c0va23@gmail.com>
 Zach Marcantel <zmarcantel@gmail.com>
+James Maloney <jamessagan@gmail.com>

+ 4 - 3
marshal.go

@@ -40,6 +40,10 @@ func Marshal(info *TypeInfo, value interface{}) ([]byte, error) {
 		return nil, nil
 	}
 
+	if v, ok := value.(Marshaler); ok {
+		return v.MarshalCQL(info)
+	}
+
 	if valueRef := reflect.ValueOf(value); valueRef.Kind() == reflect.Ptr {
 		if valueRef.IsNil() {
 			return nil, nil
@@ -48,9 +52,6 @@ func Marshal(info *TypeInfo, value interface{}) ([]byte, error) {
 		}
 	}
 
-	if v, ok := value.(Marshaler); ok {
-		return v.MarshalCQL(info)
-	}
 	switch info.Type {
 	case TypeVarchar, TypeAscii, TypeBlob:
 		return marshalVarchar(info, value)