File tree Expand file tree Collapse file tree 5 files changed +40
-5
lines changed
test/analysis/resolver/dart Expand file tree Collapse file tree 5 files changed +40
-5
lines changed Original file line number Diff line number Diff line change 1+ ## 2.25.3-dev
2+
3+ - Fix warning on Dart-defined views referencing the same table multiple times.
4+
15## 2.25.2
26
37- Fix ` generateInsertable: true ` on ` @UseRowClass ` not respecting inherited
Original file line number Diff line number Diff line change @@ -56,7 +56,7 @@ class DriftAnalysisDriver {
5656 final DriftBackend backend;
5757 final DriftAnalysisCache cache = DriftAnalysisCache ();
5858 final DriftOptions options;
59- final bool _isTesting ;
59+ final bool isTesting ;
6060
6161 Future <KnownDriftTypes ?>? _loadingTypes;
6262
@@ -65,8 +65,8 @@ class DriftAnalysisDriver {
6565 DriftAnalysisDriver (
6666 this .backend,
6767 this .options, {
68- bool isTesting = false ,
69- }) : _isTesting = isTesting ;
68+ this . isTesting = false ,
69+ });
7070
7171 SqlEngine newSqlEngine () {
7272 return SqlEngine (
@@ -272,7 +272,7 @@ class DriftAnalysisDriver {
272272 if (e is ! CouldNotResolveElementException ) {
273273 backend.log.warning ('Could not analyze $id ' , e, s);
274274
275- if (_isTesting ) rethrow ;
275+ if (isTesting ) rethrow ;
276276 }
277277
278278 return null ;
Original file line number Diff line number Diff line change @@ -49,6 +49,9 @@ class DriftResolver {
4949 }
5050 } on CouldNotDeserializeException catch (e, s) {
5151 driver.backend.log.warning ('Could not deserialize $element ' , e, s);
52+ if (driver.isTesting) {
53+ rethrow ;
54+ }
5255 }
5356
5457 // We can't resolve the element from cache, so we need to resolve it.
Original file line number Diff line number Diff line change @@ -667,7 +667,7 @@ class ElementDeserializer {
667667 } else if (sourceKind == 'dart' ) {
668668 TableReferenceInDartView readReference (Map json) {
669669 final id = DriftElementId .fromJson (json['table' ] as Map );
670- final reference = references.singleWhere ((e) => e.id == id);
670+ final reference = references.firstWhere ((e) => e.id == id);
671671 return TableReferenceInDartView (
672672 reference as DriftTable , json['name' ] as String );
673673 }
Original file line number Diff line number Diff line change @@ -188,4 +188,32 @@ abstract class CommonNames extends View {
188188''' ))
189189 }, result.dartOutputs, result.writer);
190190 });
191+
192+ test ('can use views referencing same table multiple times' , () async {
193+ await emulateDriftBuild (
194+ inputs: {
195+ 'a|lib/a.dart' : '''
196+ import 'package:drift/drift.dart';
197+
198+ class Users extends Table {
199+ IntColumn get id => integer().autoIncrement()();
200+ TextColumn get name => text()();
201+ }
202+
203+ class UsersView extends View {
204+ Users get a;
205+ Users get b;
206+
207+ @override
208+ Query as() => select([a.id, b.name])
209+ .from(a)
210+ .join([
211+ innerJoin(b, b.name.equalsExp(a.id))
212+ ]);
213+ }
214+ ''' ,
215+ },
216+ logger: loggerThat (neverEmits (anything)),
217+ );
218+ });
191219}
You can’t perform that action at this time.
0 commit comments