diff --git a/lib/src/element_type.dart b/lib/src/element_type.dart index fc0d5ef3f4..3e9e618f8a 100644 --- a/lib/src/element_type.dart +++ b/lib/src/element_type.dart @@ -10,6 +10,7 @@ import 'dart:collection'; import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/dart/element/nullability_suffix.dart'; import 'package:analyzer/dart/element/type.dart'; +import 'package:analyzer/src/generated/type_system.dart'; import 'package:dartdoc/src/model/model.dart'; import 'package:dartdoc/src/render/element_type_renderer.dart'; @@ -278,8 +279,8 @@ abstract class DefinedElementType extends ElementType { DartType get instantiatedType { if (_instantiatedType == null) { if (!interfaceType.typeArguments.every((t) => t is InterfaceType)) { - _instantiatedType = - packageGraph.typeSystem.instantiateToBounds(interfaceType); + var typeSystem = library.element.typeSystem as TypeSystemImpl; + _instantiatedType = typeSystem.instantiateToBounds(interfaceType); } else { _instantiatedType = interfaceType; } diff --git a/lib/src/model/extension.dart b/lib/src/model/extension.dart index 6755a7066c..018bcae95d 100644 --- a/lib/src/model/extension.dart +++ b/lib/src/model/extension.dart @@ -36,7 +36,7 @@ class Extension extends Container /// The instantiated to bounds [extendedType] of this extension is a subtype of /// [t]. - bool isSubtypeOf(DefinedElementType t) => packageGraph.typeSystem + bool isSubtypeOf(DefinedElementType t) => library.typeSystem .isSubtypeOf(extendedType.instantiatedType, t.instantiatedType); bool isBoundSupertypeTo(DefinedElementType t) => @@ -52,7 +52,7 @@ class Extension extends Container visited.add(superType); if (superClass == extendedType.type.element && (superType == extendedType.instantiatedType || - packageGraph.typeSystem + library.typeSystem .isSubtypeOf(superType, extendedType.instantiatedType))) { return true; } diff --git a/lib/src/model/library.dart b/lib/src/model/library.dart index aa54ce07e6..7b511ca685 100644 --- a/lib/src/model/library.dart +++ b/lib/src/model/library.dart @@ -5,6 +5,7 @@ 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_system.dart'; import 'package:analyzer/dart/element/visitor.dart'; import 'package:analyzer/source/line_info.dart'; import 'package:analyzer/src/dart/analysis/driver.dart'; @@ -77,11 +78,11 @@ class Library extends ModelElement with Categorization, TopLevelContainer { // Initialize the list of elements defined in this library and // exported via its export directives. Set exportedAndLocalElements = - _libraryElement.exportNamespace.definedNames.values.toSet(); + element.exportNamespace.definedNames.values.toSet(); // TODO(jcollins-g): Consider switch to [_libraryElement.topLevelElements]. exportedAndLocalElements - .addAll(getDefinedElements(_libraryElement.definingCompilationUnit)); - for (CompilationUnitElement cu in _libraryElement.parts) { + .addAll(getDefinedElements(element.definingCompilationUnit)); + for (CompilationUnitElement cu in element.parts) { exportedAndLocalElements.addAll(getDefinedElements(cu)); } _exportedAndLocalElements = exportedAndLocalElements.toList(); @@ -105,7 +106,7 @@ class Library extends ModelElement with Categorization, TopLevelContainer { List _allOriginalModelElementNames; - bool get isInSdk => _libraryElement.isInSdk; + bool get isInSdk => element.isInSdk; final Package _package; @@ -160,11 +161,14 @@ class Library extends ModelElement with Categorization, TopLevelContainer { @override CompilationUnitElement get compilationUnitElement => - (element as LibraryElement).definingCompilationUnit; + element.definingCompilationUnit; @override Iterable get classes => allClasses.where((c) => !c.isErrorOrException); + @override + LibraryElement get element => super.element; + List _extensions; @override @@ -240,10 +244,8 @@ class Library extends ModelElement with Categorization, TopLevelContainer { if (_importedExportedLibraries == null) { _importedExportedLibraries = Set(); Set importedExportedLibraryElements = Set(); - importedExportedLibraryElements - .addAll((element as LibraryElement).importedLibraries); - importedExportedLibraryElements - .addAll((element as LibraryElement).exportedLibraries); + importedExportedLibraryElements.addAll(element.importedLibraries); + importedExportedLibraryElements.addAll(element.exportedLibraries); for (LibraryElement l in importedExportedLibraryElements) { Library lib = ModelElement.from(l, library, packageGraph); _importedExportedLibraries.add(lib); @@ -260,7 +262,7 @@ class Library extends ModelElement with Categorization, TopLevelContainer { if (_prefixToLibrary == null) { _prefixToLibrary = {}; // It is possible to have overlapping prefixes. - for (ImportElement i in (element as LibraryElement).imports) { + for (ImportElement i in element.imports) { // Ignore invalid imports. if (i.prefix?.name != null && i.importedLibrary != null) { _prefixToLibrary.putIfAbsent(i.prefix?.name, () => Set()); @@ -401,8 +403,7 @@ class Library extends ModelElement with Categorization, TopLevelContainer { InheritanceManager3 get inheritanceManager { if (_inheritanceManager == null) { - var typeSystem = element.context.typeSystem; - _inheritanceManager = InheritanceManager3(typeSystem); + _inheritanceManager = InheritanceManager3(); } return _inheritanceManager; } @@ -479,6 +480,8 @@ class Library extends ModelElement with Categorization, TopLevelContainer { return _typedefs; } + TypeSystem get typeSystem => element.typeSystem; + List _classes; List get allClasses { @@ -493,8 +496,6 @@ class Library extends ModelElement with Categorization, TopLevelContainer { return _classes; } - LibraryElement get _libraryElement => (element as LibraryElement); - Class getClassByName(String name) { return allClasses.firstWhere((it) => it.name == name, orElse: () => null); } diff --git a/lib/src/model/model_element.dart b/lib/src/model/model_element.dart index 8d33b8614f..b1b4a59457 100644 --- a/lib/src/model/model_element.dart +++ b/lib/src/model/model_element.dart @@ -666,9 +666,8 @@ abstract class ModelElement extends Canonicalization if (candidateLibraries != null) { candidateLibraries = candidateLibraries.where((l) { - Element lookup = (l.element as LibraryElement) - .exportNamespace - .definedNames[topLevelElement?.name]; + Element lookup = + l.element.exportNamespace.definedNames[topLevelElement?.name]; if (lookup is PropertyAccessorElement) { lookup = (lookup as PropertyAccessorElement).variable; } diff --git a/lib/src/model/package_builder.dart b/lib/src/model/package_builder.dart index 6e0982d562..572faedaad 100644 --- a/lib/src/model/package_builder.dart +++ b/lib/src/model/package_builder.dart @@ -46,12 +46,7 @@ class PackageBuilder { RendererFactory rendererFactory = HtmlRenderFactory(); PackageGraph newGraph = PackageGraph.UninitializedPackageGraph( - config, - driver, - await driver.currentSession.typeSystem, - sdk, - hasEmbedderSdkFiles, - rendererFactory); + config, driver, sdk, hasEmbedderSdkFiles, rendererFactory); await getLibraries(newGraph); await newGraph.initializePackageGraph(); return newGraph; diff --git a/lib/src/model/package_graph.dart b/lib/src/model/package_graph.dart index 30d680818a..5fd36408d3 100644 --- a/lib/src/model/package_graph.dart +++ b/lib/src/model/package_graph.dart @@ -13,7 +13,6 @@ import 'package:analyzer/src/dart/element/member.dart'; import 'package:analyzer/src/generated/sdk.dart'; import 'package:analyzer/src/generated/source.dart'; import 'package:analyzer/src/generated/source_io.dart'; -import 'package:analyzer/src/generated/type_system.dart' show Dart2TypeSystem; import 'package:collection/collection.dart'; import 'package:dartdoc/src/dartdoc_options.dart'; import 'package:dartdoc/src/model/model.dart'; @@ -25,8 +24,8 @@ import 'package:dartdoc/src/tuple.dart'; import 'package:dartdoc/src/warnings.dart'; class PackageGraph { - PackageGraph.UninitializedPackageGraph(this.config, this.driver, - this.typeSystem, this.sdk, this.hasEmbedderSdk, this.rendererFactory) + PackageGraph.UninitializedPackageGraph(this.config, this.driver, this.sdk, + this.hasEmbedderSdk, this.rendererFactory) : packageMeta = config.topLevelPackageMeta, session = driver.currentSession { _packageWarningCounter = PackageWarningCounter(this); @@ -232,7 +231,6 @@ class PackageGraph { /// TODO(brianwilkerson) Replace the driver with the session. final AnalysisDriver driver; final AnalysisSession session; - final Dart2TypeSystem typeSystem; final DartSdk sdk; Map _sdkLibrarySources; @@ -678,7 +676,7 @@ class PackageGraph { static Element getBasestElement(Element possibleMember) { Element element = possibleMember; while (element is Member) { - element = (element as Member).baseElement; + element = (element as Member).declaration; } return element; } diff --git a/pubspec.yaml b/pubspec.yaml index e6a69a3ca5..c5e3100b47 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -7,7 +7,7 @@ environment: sdk: '>=2.6.0 <3.0.0' dependencies: - analyzer: ^0.39.1 + analyzer: ^0.39.2+1 args: '>=1.5.0 <2.0.0' collection: ^1.2.0 crypto: ^2.0.6