Resolve types for between expression

This commit is contained in:
Simon Binder 2019-06-29 17:36:33 +02:00
parent 7ef904d053
commit 5e1ec15caa
No known key found for this signature in database
GPG Key ID: 7891917E4147B8C0
2 changed files with 7 additions and 1 deletions

View File

@ -89,6 +89,8 @@ class TypeResolver {
[BasicType.int, BasicType.real, BasicType.text, BasicType.blob]);
return ResolveResult(type);
}
} else if (expr is BetweenExpression) {
return const ResolveResult(ResolvedType.bool());
} else if (expr is SubQuery) {
// todo
}
@ -243,7 +245,9 @@ class TypeResolver {
}
ResolveResult _argumentType(Expression parent, Expression argument) {
if (parent is IsExpression || parent is BinaryExpression) {
if (parent is IsExpression ||
parent is BinaryExpression ||
parent is BetweenExpression) {
final relevant = parent.childNodes
.lastWhere((node) => node is Expression && node != argument);
return resolveExpression(relevant as Expression);

View File

@ -12,6 +12,8 @@ Map<String, ResolveResult> _types = {
const ResolveResult(ResolvedType(type: BasicType.int)),
'SELECT 1 FROM demo GROUP BY id HAVING COUNT(*) = ?':
const ResolveResult(ResolvedType(type: BasicType.int)),
'SELECT 1 FROM demo WHERE id BETWEEN 3 AND ?':
const ResolveResult(ResolvedType(type: BasicType.int)),
};
void main() {