Commit de506699 authored by Brian Atkinson's avatar Brian Atkinson Committed by Dylan Trotter

Simplify closure in makeStructFieldDescriptor. (#131)

parent 4fad5745
...@@ -103,9 +103,7 @@ func makeStructFieldDescriptor(t *Type, fieldName, propertyName string) *Object ...@@ -103,9 +103,7 @@ func makeStructFieldDescriptor(t *Type, fieldName, propertyName string) *Object
if !ok { if !ok {
logFatal(fmt.Sprintf("no such field %q for basis %s", fieldName, nativeTypeName(t.basis))) logFatal(fmt.Sprintf("no such field %q for basis %s", fieldName, nativeTypeName(t.basis)))
} }
getterFunc := reflect.MakeFunc(reflect.TypeOf(Func(nil)), func(argValues []reflect.Value) []reflect.Value { getterFunc := func(f *Frame, args Args, _ KWArgs) (*Object, *BaseException) {
f := argValues[0].Interface().(*Frame)
args := argValues[1].Interface().(Args)
var ret *Object var ret *Object
var raised *BaseException var raised *BaseException
if raised = checkFunctionArgs(f, fieldName, args, ObjectType); raised == nil { if raised = checkFunctionArgs(f, fieldName, args, ObjectType); raised == nil {
...@@ -117,7 +115,7 @@ func makeStructFieldDescriptor(t *Type, fieldName, propertyName string) *Object ...@@ -117,7 +115,7 @@ func makeStructFieldDescriptor(t *Type, fieldName, propertyName string) *Object
ret, raised = WrapNative(f, t.slots.Basis.Fn(o).FieldByIndex(field.Index)) ret, raised = WrapNative(f, t.slots.Basis.Fn(o).FieldByIndex(field.Index))
} }
} }
return []reflect.Value{reflect.ValueOf(ret), reflect.ValueOf(raised)} return ret, raised
}).Interface().(Func) }
return newProperty(newBuiltinFunction("_get"+fieldName, getterFunc).ToObject(), None, None).ToObject() return newProperty(newBuiltinFunction("_get"+fieldName, getterFunc).ToObject(), None, None).ToObject()
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment