From a6a7595fb8c1b5c33cf06ed018c2bcbb034f3a3a Mon Sep 17 00:00:00 2001 From: Ivan Goncharov Date: Sat, 1 Apr 2023 14:53:31 +0300 Subject: [PATCH] ASTReducer: correctly type scalar values Context: only nodes are mapped in reducer and leafs inside nodes stays as is. --- src/language/printer.ts | 1 - src/language/visitor.ts | 8 ++++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/language/printer.ts b/src/language/printer.ts index e91c8c03f7..9363c6ec46 100644 --- a/src/language/printer.ts +++ b/src/language/printer.ts @@ -143,7 +143,6 @@ const printDocASTReducer: ASTReducer = { FloatValue: { leave: ({ value }) => value }, StringValue: { leave: ({ value, block: isBlockString }) => - // @ts-expect-error FIXME: it's a problem with ASTReducer, will be fixed in separate PR isBlockString === true ? printBlockString(value) : printString(value), }, BooleanValue: { leave: ({ value }) => (value ? 'true' : 'false') }, diff --git a/src/language/visitor.ts b/src/language/visitor.ts index e5a9aa89e8..65df78d099 100644 --- a/src/language/visitor.ts +++ b/src/language/visitor.ts @@ -71,11 +71,11 @@ type ASTReducerFn = ( ancestors: ReadonlyArray>, ) => R; -type ReducedField = T extends null | undefined - ? T - : T extends ReadonlyArray +type ReducedField = T extends ASTNode + ? R + : T extends ReadonlyArray ? ReadonlyArray - : R; + : T; /** * A KeyMap describes each the traversable properties of each kind of node.