From 7c6e36e4f4e7fca56d950467c63cade4e7604f82 Mon Sep 17 00:00:00 2001 From: Nikita Dauhashei Date: Sun, 21 Apr 2024 13:00:57 +0200 Subject: [PATCH] fix no backend error --- drift_dev/lib/src/analysis/backend.dart | 2 ++ drift_dev/lib/src/analysis/driver/driver.dart | 6 ++++-- drift_dev/lib/src/analysis/resolver/dart/helper.dart | 10 +++++++--- .../lib/src/backends/analyzer_context_backend.dart | 3 +++ drift_dev/lib/src/backends/build/backend.dart | 3 +++ drift_dev/lib/src/services/schema/sqlite_to_drift.dart | 3 +++ drift_dev/test/analysis/test_utils.dart | 3 +++ 7 files changed, 25 insertions(+), 5 deletions(-) diff --git a/drift_dev/lib/src/analysis/backend.dart b/drift_dev/lib/src/analysis/backend.dart index 72c9729c..ac37545b 100644 --- a/drift_dev/lib/src/analysis/backend.dart +++ b/drift_dev/lib/src/analysis/backend.dart @@ -19,6 +19,8 @@ abstract class DriftBackend { return element.source!.uri; } + bool get canReadDart; + /// Resolves a Dart library by its uri. /// /// This should also be able to resolve SDK libraries. diff --git a/drift_dev/lib/src/analysis/driver/driver.dart b/drift_dev/lib/src/analysis/driver/driver.dart index 4992a3b9..a52aaab4 100644 --- a/drift_dev/lib/src/analysis/driver/driver.dart +++ b/drift_dev/lib/src/analysis/driver/driver.dart @@ -63,13 +63,15 @@ class DriftAnalysisDriver { AnalysisResultCacheReader? cacheReader; - final KnownDriftTypes knownTypes; + final KnownDriftTypes? _knownTypes; + + KnownDriftTypes get knownTypes => _knownTypes!; @visibleForTesting DriftAnalysisDriver( this.backend, this.options, - this.knownTypes, { + this._knownTypes, { bool isTesting = false, }) : _isTesting = isTesting; diff --git a/drift_dev/lib/src/analysis/resolver/dart/helper.dart b/drift_dev/lib/src/analysis/resolver/dart/helper.dart index f73659ad..d329924b 100644 --- a/drift_dev/lib/src/analysis/resolver/dart/helper.dart +++ b/drift_dev/lib/src/analysis/resolver/dart/helper.dart @@ -102,10 +102,14 @@ class KnownDriftTypes { return type?.asInstanceOf(converter); } - static Future resolve(DriftBackend backend) async { - final library = await backend.readDart(uri); + static Future resolve(DriftBackend backend) async { + if (backend.canReadDart) { + final library = await backend.readDart(uri); - return KnownDriftTypes._fromLibrary(library); + return KnownDriftTypes._fromLibrary(library); + } + + return null; } static final Uri uri = Uri.parse('package:drift/src/drift_dev_helper.dart'); diff --git a/drift_dev/lib/src/backends/analyzer_context_backend.dart b/drift_dev/lib/src/backends/analyzer_context_backend.dart index 6a8c93b5..5369c04b 100644 --- a/drift_dev/lib/src/backends/analyzer_context_backend.dart +++ b/drift_dev/lib/src/backends/analyzer_context_backend.dart @@ -96,6 +96,9 @@ class AnalysisContextBackend extends DriftBackend { return Future.value(resourceProvider.getFile(path).readAsStringSync()); } + @override + bool get canReadDart => true; + @override Future readDart(Uri uri) async { final result = await context.currentSession.getLibraryByUri(uri.toString()); diff --git a/drift_dev/lib/src/backends/build/backend.dart b/drift_dev/lib/src/backends/build/backend.dart index bbcf802d..81c27730 100644 --- a/drift_dev/lib/src/backends/build/backend.dart +++ b/drift_dev/lib/src/backends/build/backend.dart @@ -38,6 +38,9 @@ class DriftBuildBackend extends DriftBackend { return id.uri; } + @override + bool get canReadDart => true; + @override Future readDart(Uri uri) async { if (uri.scheme == 'dart') { diff --git a/drift_dev/lib/src/services/schema/sqlite_to_drift.dart b/drift_dev/lib/src/services/schema/sqlite_to_drift.dart index 49bd9151..372b2261 100644 --- a/drift_dev/lib/src/services/schema/sqlite_to_drift.dart +++ b/drift_dev/lib/src/services/schema/sqlite_to_drift.dart @@ -91,6 +91,9 @@ class _SingleFileNoAnalyzerBackend extends DriftBackend { return Future.value(contents); } + @override + bool get canReadDart => false; + @override Future readDart(Uri uri) async { _noAnalyzer(); diff --git a/drift_dev/test/analysis/test_utils.dart b/drift_dev/test/analysis/test_utils.dart index a570eeee..04cfb78d 100644 --- a/drift_dev/test/analysis/test_utils.dart +++ b/drift_dev/test/analysis/test_utils.dart @@ -237,6 +237,9 @@ class TestBackend extends DriftBackend { return null; } + @override + bool get canReadDart => true; + @override Future readDart(Uri uri) async { await ensureHasDartAnalyzer();