Warn when using RETURNING for now

This commit is contained in:
Simon Binder 2021-03-18 16:35:51 +01:00
parent bdf7d22776
commit ddbb3a2d67
No known key found for this signature in database
GPG Key ID: 7891917E4147B8C0
2 changed files with 49 additions and 0 deletions

View File

@ -30,6 +30,17 @@ class _LintingVisitor extends RecursiveVisitor<void, void> {
_LintingVisitor(this.linter);
void _checkNoReturning(StatementReturningColumns stmt) {
if (stmt.returning != null) {
linter.lints.add(AnalysisError(
type: AnalysisErrorType.other,
message: 'RETURNING is not supported in this version of moor. '
'Follow https://github.com/simolus3/moor/issues/1096 for updates.',
relevantNode: stmt.returning,
));
}
}
@override
void visitBinaryExpression(BinaryExpression e, void arg) {
const numericOps = {
@ -151,8 +162,15 @@ class _LintingVisitor extends RecursiveVisitor<void, void> {
}
}
@override
void visitDeleteStatement(DeleteStatement e, void arg) {
_checkNoReturning(e);
visitChildren(e, arg);
}
@override
void visitInsertStatement(InsertStatement e, void arg) {
_checkNoReturning(e);
final targeted = e.resolvedTargetColumns;
if (targeted == null) return;
@ -221,4 +239,10 @@ class _LintingVisitor extends RecursiveVisitor<void, void> {
}
}
}
@override
void visitUpdateStatement(UpdateStatement e, void arg) {
_checkNoReturning(e);
visitChildren(e, arg);
}
}

View File

@ -58,4 +58,29 @@ void main() {
final file = await state.analyze('package:a/main.moor');
expect(file.errors.errors, isEmpty);
});
test('warns when using RETURNING', () async {
final state = TestState.withContent(
const {
'a|lib/main.moor': '''
CREATE TABLE foo (id INTEGER NOT NULL);
query: DELETE FROM foo RETURNING *;
''',
},
enableAnalyzer: false,
options: const MoorOptions.defaults(
sqliteAnalysisOptions: SqliteAnalysisOptions(
version: SqliteVersion.v3_35,
),
),
);
final file = await state.analyze('package:a/main.moor');
expect(file.errors.errors, hasLength(1));
expect(
file.errors.errors.single,
isA<MoorError>().having((e) => e.message, 'message',
contains('RETURNING is not supported in this version of moor')));
});
}