예제 #1
0
        public static FilterScope <T> AddScope <T>(
            this IFilterVisitorContext <T> context)
        {
            FilterScope <T>?closure = context.CreateScope();

            context.Scopes.Push(closure);
            return(closure);
        }
예제 #2
0
        public static IError CreateNonNullError <T>(
            IFilterField field,
            IValueNode value,
            IFilterVisitorContext <T> context)
        {
            IFilterInputType filterType = context.Types.OfType <IFilterInputType>().First();

            return(ErrorBuilder.New()
                   .SetMessage(
                       DataResources.ErrorHelper_CreateNonNullError,
                       context.Operations.Peek().Name,
                       filterType.Visualize())
                   .AddLocation(value)
                   .SetExtension("expectedType", new NonNullType(field.Type).Visualize())
                   .SetExtension("filterType", filterType.Visualize())
                   .Build());
        }
예제 #3
0
        public static IError CreateNonNullError <T>(
            IFilterField field,
            IValueNode value,
            IFilterVisitorContext <T> context)
        {
            IFilterInputType filterType = context.Types.OfType <IFilterInputType>().First();

            return(ErrorBuilder.New()
                   .SetMessage(
                       "The provided value for filter `{0}` of type {1} is invalid. " +
                       "Null values are not supported.",
                       context.Operations.Peek().Name,
                       filterType.Visualize())
                   .AddLocation(value)
                   .SetExtension("expectedType", new NonNullType(field.Type).Visualize())
                   .SetExtension("filterType", filterType.Visualize())
                   .Build());
        }
예제 #4
0
 public static void ReportError <T>
     (this IFilterVisitorContext <T> context,
     IError error) =>
 context.Errors.Add(error);
예제 #5
0
 public static FilterScope <T> PopScope <T>(
     this IFilterVisitorContext <T> context) =>
 context.Scopes.Pop();
예제 #6
0
 public static Queue <T> PopLevel <T>(this IFilterVisitorContext <T> context) =>
 context.Scopes.Peek().Level.Pop();
예제 #7
0
 public static T PopInstance <T>(this IFilterVisitorContext <T> context) =>
 context.Scopes.Peek().Instance.Pop();
예제 #8
0
 public static void PushLevel <T>(
     this IFilterVisitorContext <T> context, Queue <T> nextLevel) =>
 context.Scopes.Peek().Level.Push(nextLevel);
예제 #9
0
 public static void PushInstance <T>(
     this IFilterVisitorContext <T> context, T nextExpression) =>
 context.Scopes.Peek().Instance.Push(nextExpression);
예제 #10
0
 public static FilterScope <T> GetScope <T>(
     this IFilterVisitorContext <T> context) =>
 context.Scopes.Peek();