From 51d5ada5c93a890da920b5c6bc10ed2be3e802ef Mon Sep 17 00:00:00 2001 From: Simon Binder Date: Mon, 12 Apr 2021 12:01:15 +0200 Subject: [PATCH] Fix moor files importing the original Dart source --- .../lib/src/analyzer/runner/steps.dart | 7 --- .../analyzer/runner/steps/analyze_dart.dart | 2 +- .../analyzer/moor/regression_1138_test.dart | 54 +++++++++++++++++++ 3 files changed, 55 insertions(+), 8 deletions(-) create mode 100644 moor_generator/test/analyzer/moor/regression_1138_test.dart diff --git a/moor_generator/lib/src/analyzer/runner/steps.dart b/moor_generator/lib/src/analyzer/runner/steps.dart index f175d07a..77d3800d 100644 --- a/moor_generator/lib/src/analyzer/runner/steps.dart +++ b/moor_generator/lib/src/analyzer/runner/steps.dart @@ -50,13 +50,6 @@ abstract class AnalyzingStep extends Step { @override final bool isParsing = false; - List _transitiveImports(Iterable directImports) { - return task - .crawlImports(directImports) - .where((import) => import != file) - .toList(); - } - Iterable _availableEntities(List imports) { return imports.expand((file) => file.currentResult?.declaredEntities ?? const Iterable.empty()); diff --git a/moor_generator/lib/src/analyzer/runner/steps/analyze_dart.dart b/moor_generator/lib/src/analyzer/runner/steps/analyze_dart.dart index 0e327bcd..ee5ee31e 100644 --- a/moor_generator/lib/src/analyzer/runner/steps/analyze_dart.dart +++ b/moor_generator/lib/src/analyzer/runner/steps/analyze_dart.dart @@ -9,7 +9,7 @@ class AnalyzeDartStep extends AnalyzingStep { final parseResult = file.currentResult as ParsedDartFile; for (final accessor in parseResult.dbAccessors) { - final transitiveImports = _transitiveImports(accessor.imports); + final transitiveImports = task.crawlImports(accessor.imports).toList(); final unsortedEntities = _availableEntities(transitiveImports).toSet(); diff --git a/moor_generator/test/analyzer/moor/regression_1138_test.dart b/moor_generator/test/analyzer/moor/regression_1138_test.dart new file mode 100644 index 00000000..ba0f1a51 --- /dev/null +++ b/moor_generator/test/analyzer/moor/regression_1138_test.dart @@ -0,0 +1,54 @@ +// @dart=2.9 +import 'package:moor_generator/src/analyzer/runner/results.dart'; +import 'package:test/test.dart'; + +import '../utils.dart'; + +void main() { + test('moor files can import original dart source', () async { + final state = TestState.withContent({ + 'a|lib/base.dart': r''' +import 'package:moor/moor.dart'; + +part 'base.g.dart'; + +class Events extends Table { + IntColumn get id => integer().autoIncrement()(); + + RealColumn get sumVal => real().withDefault(Constant(0))(); +} + +class Records extends Table { + IntColumn get id => integer().autoIncrement()(); + + IntColumn get eventId => integer()(); + + RealColumn get value => real().nullable()(); +} + +class Units extends Table { + IntColumn get id => integer().autoIncrement()(); +} + +@UseMoor(include: {'customizedSQL.moor'}) +class AppDatabase extends _$AppDatabase { + AppDatabase() + : super(FlutterQueryExecutor.inDatabaseFolder( + path: "db.sqlite", logStatements: true)); +} + ''', + 'a|lib/customizedSQL.moor': ''' +import 'base.dart'; + +create trigger addVal after insert on records when id = NEW.event_id BEGIN update events set sum_val = sum_val + NEW.value; END; + ''', + }); + addTearDown(state.close); + + final file = await state.analyze('package:a/base.dart'); + final result = file.currentResult as ParsedDartFile; + final db = result.declaredDatabases.single; + + expect(db.tables, hasLength(3)); + }); +}