From d9f5cf0e69a0c44d907c960082023ea1a5b048ee Mon Sep 17 00:00:00 2001 From: Simon Binder Date: Sat, 29 Jun 2019 18:02:44 +0200 Subject: [PATCH] Resolve types for case expressions --- sqlparser/lib/src/analysis/types/resolver.dart | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sqlparser/lib/src/analysis/types/resolver.dart b/sqlparser/lib/src/analysis/types/resolver.dart index d8a13898..c072778d 100644 --- a/sqlparser/lib/src/analysis/types/resolver.dart +++ b/sqlparser/lib/src/analysis/types/resolver.dart @@ -91,6 +91,8 @@ class TypeResolver { } } else if (expr is BetweenExpression) { return const ResolveResult(ResolvedType.bool()); + } else if (expr is CaseExpression) { + return resolveExpression(expr.whens.first.then); } else if (expr is SubQuery) { // todo } @@ -247,7 +249,8 @@ class TypeResolver { ResolveResult _argumentType(Expression parent, Expression argument) { if (parent is IsExpression || parent is BinaryExpression || - parent is BetweenExpression) { + parent is BetweenExpression || + parent is CaseExpression) { final relevant = parent.childNodes .lastWhere((node) => node is Expression && node != argument); return resolveExpression(relevant as Expression);