diff --git a/moor_generator/lib/src/backends/backend.dart b/moor_generator/lib/src/backends/backend.dart index 036831f3..0afefff8 100644 --- a/moor_generator/lib/src/backends/backend.dart +++ b/moor_generator/lib/src/backends/backend.dart @@ -1,3 +1,4 @@ +import 'package:analyzer/dart/analysis/results.dart'; import 'package:analyzer/dart/ast/ast.dart'; import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/dart/element/type.dart'; @@ -37,10 +38,12 @@ abstract class BackendTask { final library = element.library; if (library == null) return null; - final resolvedLibrary = - await library.session.getResolvedLibraryByElement(library); - - return resolvedLibrary.getElementDeclaration(element)?.node; + final info = await library.session.getResolvedLibraryByElement2(library); + if (info is ResolvedLibraryResult) { + return info.getElementDeclaration(element)?.node; + } else { + return null; + } } /// Checks whether a file at [uri] exists. diff --git a/moor_generator/lib/src/backends/build/serialized_types.dart b/moor_generator/lib/src/backends/build/serialized_types.dart index 967626a2..d445db3b 100644 --- a/moor_generator/lib/src/backends/build/serialized_types.dart +++ b/moor_generator/lib/src/backends/build/serialized_types.dart @@ -1,11 +1,13 @@ //@dart=2.9 import 'dart:async'; +import 'package:analyzer/dart/analysis/results.dart'; import 'package:analyzer/dart/analysis/session.dart'; import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/dart/element/nullability_suffix.dart'; import 'package:analyzer/dart/element/type.dart'; import 'package:build/build.dart'; +import 'package:moor_generator/src/backends/backend.dart'; import 'package:source_gen/source_gen.dart'; /// A serialized version of a [DartType]. @@ -121,7 +123,12 @@ class TypeDeserializer { // ignore: literal_only_boolean_expressions while (true) { try { - return session.getLibraryByUri(uri.toString()); + final info = await session.getLibraryByUri2(uri.toString()); + if (info is LibraryElementResult) { + return info.element; + } else { + throw NotALibraryException(uri); + } } on InconsistentAnalysisException { _lastSession = null; // Invalidate session, then try again session = await _obtainSession(); diff --git a/moor_generator/lib/src/backends/common/driver.dart b/moor_generator/lib/src/backends/common/driver.dart index 45701a8d..cec05190 100644 --- a/moor_generator/lib/src/backends/common/driver.dart +++ b/moor_generator/lib/src/backends/common/driver.dart @@ -2,14 +2,15 @@ // ignore_for_file: implementation_imports import 'dart:async'; +import 'package:analyzer/dart/analysis/results.dart'; import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/file_system/file_system.dart'; import 'package:analyzer/src/dart/analysis/driver.dart'; -import 'package:analyzer/src/generated/source.dart' show SourceKind; import 'package:logging/logging.dart'; import 'package:moor_generator/src/analyzer/options.dart'; import 'package:moor_generator/src/analyzer/runner/file_graph.dart'; import 'package:moor_generator/src/analyzer/session.dart'; +import 'package:moor_generator/src/backends/backend.dart'; import 'package:moor_generator/src/services/ide/moor_ide.dart'; import 'package:moor_generator/src/utils/options_reader.dart' as options; @@ -131,12 +132,20 @@ class MoorDriver implements AnalysisDriverGeneric { } Future resolveDart(String path) async { - final result = await dartDriver.currentSession.getResolvedLibrary(path); - return result.element; + final result = await dartDriver.currentSession.getResolvedLibrary2(path); + if (result is ResolvedLibraryResult) { + return result.element; + } + + throw NotALibraryException(Uri.parse(path)); } Future isDartLibrary(String path) async { - return await dartDriver.getSourceKind(path) == SourceKind.LIBRARY; + final info = dartDriver.getFileSync2(path); + if (info is FileResult) { + return !info.isPart; + } + return false; } bool doesFileExist(String path) { diff --git a/moor_generator/pubspec.yaml b/moor_generator/pubspec.yaml index 5acc4d53..95d8a2d2 100644 --- a/moor_generator/pubspec.yaml +++ b/moor_generator/pubspec.yaml @@ -28,7 +28,7 @@ dependencies: sqlparser: ^0.15.0 # Dart analysis - analyzer: "^1.1.0" + analyzer: "^1.5.0" analyzer_plugin_fork: "^0.5.0" source_span: ^1.5.5