From 0f4df509c296388acbbff8fc2b339b2d3f55d937 Mon Sep 17 00:00:00 2001 From: Wenbin Liu Date: Tue, 22 Dec 2020 21:46:38 +0800 Subject: [PATCH] use "invariantf" for performance --- executor.go | 6 ++---- schema.go | 41 ++++++++++++++++++----------------------- 2 files changed, 20 insertions(+), 27 deletions(-) diff --git a/executor.go b/executor.go index 3c8441d2..7440ae21 100644 --- a/executor.go +++ b/executor.go @@ -800,10 +800,8 @@ func completeAbstractValue(eCtx *executionContext, returnType Abstract, fieldAST runtimeType = defaultResolveTypeFn(resolveTypeParams, returnType) } - err := invariant(runtimeType != nil, - fmt.Sprintf(`Abstract type %v must resolve to an Object type at runtime `+ - `for field %v.%v with value "%v", received "%v".`, - returnType, info.ParentType, info.FieldName, result, runtimeType), + err := invariantf(runtimeType != nil, `Abstract type %v must resolve to an Object type at runtime `+ + `for field %v.%v with value "%v", received "%v".`, returnType, info.ParentType, info.FieldName, result, runtimeType, ) if err != nil { panic(err) diff --git a/schema.go b/schema.go index 53971645..35519ac4 100644 --- a/schema.go +++ b/schema.go @@ -1,9 +1,5 @@ package graphql -import ( - "fmt" -) - type SchemaConfig struct { Query *Object Mutation *Object @@ -403,12 +399,12 @@ func assertObjectImplementsInterface(schema *Schema, object *Object, iface *Inte // Assert interface field type is satisfied by object field type, by being // a valid subtype. (covariant) - err = invariant( + err = invariantf( isTypeSubTypeOf(schema, objectField.Type, ifaceField.Type), - fmt.Sprintf(`%v.%v expects type "%v" but `+ + `%v.%v expects type "%v" but `+ `%v.%v provides type "%v".`, - iface, fieldName, ifaceField.Type, - object, fieldName, objectField.Type), + iface, fieldName, ifaceField.Type, + object, fieldName, objectField.Type, ) if err != nil { return err @@ -425,12 +421,12 @@ func assertObjectImplementsInterface(schema *Schema, object *Object, iface *Inte } } // Assert interface field arg exists on object field. - err = invariant( + err = invariantf( objectArg != nil, - fmt.Sprintf(`%v.%v expects argument "%v" but `+ + `%v.%v expects argument "%v" but `+ `%v.%v does not provide it.`, - iface, fieldName, argName, - object, fieldName), + iface, fieldName, argName, + object, fieldName, ) if err != nil { return err @@ -438,14 +434,13 @@ func assertObjectImplementsInterface(schema *Schema, object *Object, iface *Inte // Assert interface field arg type matches object field arg type. // (invariant) - err = invariant( + err = invariantf( isEqualType(ifaceArg.Type, objectArg.Type), - fmt.Sprintf( - `%v.%v(%v:) expects type "%v" `+ - `but %v.%v(%v:) provides `+ - `type "%v".`, - iface, fieldName, argName, ifaceArg.Type, - object, fieldName, argName, objectArg.Type), + `%v.%v(%v:) expects type "%v" `+ + `but %v.%v(%v:) provides `+ + `type "%v".`, + iface, fieldName, argName, ifaceArg.Type, + object, fieldName, argName, objectArg.Type, ) if err != nil { return err @@ -464,12 +459,12 @@ func assertObjectImplementsInterface(schema *Schema, object *Object, iface *Inte if ifaceArg == nil { _, ok := objectArg.Type.(*NonNull) - err = invariant( + err = invariantf( !ok, - fmt.Sprintf(`%v.%v(%v:) is of required type `+ + `%v.%v(%v:) is of required type `+ `"%v" but is not also provided by the interface %v.%v.`, - object, fieldName, argName, - objectArg.Type, iface, fieldName), + object, fieldName, argName, + objectArg.Type, iface, fieldName, ) if err != nil { return err