diff --git a/CHANGELOG.md b/CHANGELOG.md index 062c63a68a..e6564ce7a8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ * Remove the deprecated `nodoc` option. * Remove the deprecated `include-external` option. * Refactor 404 error page to use div instead of p for search form. +* Require analyzer 8.1.1 APIs. +* Many internal migrations for analyzer APIs. ## 8.3.4 * The URL for category pages now uses _category name_ instead of diff --git a/lib/src/dartdoc_options.dart b/lib/src/dartdoc_options.dart index b4b23270c1..ad112bc92b 100644 --- a/lib/src/dartdoc_options.dart +++ b/lib/src/dartdoc_options.dart @@ -14,7 +14,7 @@ library; import 'dart:io' show exitCode, stderr, stdout; -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/file_system/file_system.dart'; import 'package:args/args.dart'; import 'package:dartdoc/src/dartdoc.dart' show dartdocVersion, programName; @@ -1128,7 +1128,7 @@ class DartdocOptionContext extends DartdocOptionContextBase /// Build a DartdocOptionContext from an analyzer element (using its source /// location). factory DartdocOptionContext.fromElement(DartdocOptionSet optionSet, - LibraryElement2 libraryElement, ResourceProvider resourceProvider) { + LibraryElement libraryElement, ResourceProvider resourceProvider) { return DartdocOptionContext( optionSet, resourceProvider.getFile(libraryElement.firstFragment.source.fullName), @@ -1136,10 +1136,10 @@ class DartdocOptionContext extends DartdocOptionContextBase } /// Build a DartdocOptionContext from an existing [DartdocOptionContext] and a - /// new analyzer [Element2]. + /// new analyzer [Element]. factory DartdocOptionContext.fromContextElement( DartdocOptionContext optionContext, - LibraryElement2 libraryElement, + LibraryElement libraryElement, ResourceProvider resourceProvider) { return DartdocOptionContext.fromElement( optionContext.optionSet, libraryElement, resourceProvider); diff --git a/lib/src/element_type.dart b/lib/src/element_type.dart index df8185b334..810ca3d652 100644 --- a/lib/src/element_type.dart +++ b/lib/src/element_type.dart @@ -7,7 +7,7 @@ /// The only entrypoint for constructing these classes is [ElementType.for_]. library; -import 'package:analyzer/dart/element/element2.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:dartdoc/src/model/comment_referable.dart'; @@ -67,7 +67,7 @@ abstract class ElementType with CommentReferable, Nameable { String toString() => '$type'; } -/// An [ElementType] that isn't pinned to an [Element2] (or one that is, but +/// An [ElementType] that isn't pinned to an [Element] (or one that is, but /// whose element is irrelevant). class UndefinedElementType extends ElementType { UndefinedElementType._(super.type, super.library, super.packageGraph) @@ -102,9 +102,9 @@ class UndefinedElementType extends ElementType { // We can not simply throw here because not all SDK libraries resolve // all types. if (type is InvalidType) return 'dynamic'; - assert(const {'Never'}.contains(type.documentableElement2?.name3), + assert(const {'Never'}.contains(type.documentableElement2?.name), 'Unrecognized type for UndefinedElementType: $type'); - return type.documentableElement2!.name3!; + return type.documentableElement2!.name!; } @override @@ -129,7 +129,7 @@ class UndefinedElementType extends ElementType { Iterable? get referenceGrandparentOverrides => null; } -/// A [FunctionType] that does not have an underpinning [Element2]. +/// A [FunctionType] that does not have an underpinning [Element]. class FunctionTypeElementType extends UndefinedElementType with Rendered, Callable { FunctionTypeElementType._( @@ -205,10 +205,10 @@ class ParameterizedElementType extends DefinedElementType with Rendered { /// An [ElementType] whose underlying type was referred to by a type alias. mixin Aliased implements ElementType { - Element2 get typeAliasElement2 => type.alias!.element2; + Element get typeAliasElement2 => type.alias!.element; @override - String get name => typeAliasElement2.name3!; + String get name => typeAliasElement2.name!; @override bool get isTypedef => true; @@ -253,7 +253,7 @@ class TypeParameterElementType extends DefinedElementType { String get nameWithGenericsPlain => '$name$nullabilitySuffix'; } -/// An [ElementType] associated with an [Element2]. +/// An [ElementType] associated with an [Element]. abstract class DefinedElementType extends ElementType { final ModelElement modelElement; @@ -263,7 +263,7 @@ abstract class DefinedElementType extends ElementType { factory DefinedElementType._from(DartType type, ModelElement modelElement, Library library, PackageGraph packageGraph) { - if (type is! TypeAliasElement2 && type.alias != null) { + if (type is! TypeAliasElement && type.alias != null) { // Here, `alias.element` signals that this is a type referring to an // alias. (`TypeAliasElement.alias.element` has different implications. // In that case it is an actual type alias of some kind (generic or @@ -288,7 +288,7 @@ abstract class DefinedElementType extends ElementType { } @override - String get name => type.documentableElement2!.name3!; + String get name => type.documentableElement2!.name!; @override String get fullyQualifiedName => modelElement.fullyQualifiedName; diff --git a/lib/src/generator/templates.runtime_renderers.dart b/lib/src/generator/templates.runtime_renderers.dart index 03d0ada28e..55cd858b0d 100644 --- a/lib/src/generator/templates.runtime_renderers.dart +++ b/lib/src/generator/templates.runtime_renderers.dart @@ -218,7 +218,7 @@ class _Renderer_Accessor extends RendererBase { self.renderSimpleVariable( c, remainingNames, - 'PropertyAccessorElement2', + 'PropertyAccessorElement', ), isNullValue: (CT_ c) => false, @@ -236,7 +236,7 @@ class _Renderer_Accessor extends RendererBase { r.template, sink, parent: r, - getters: _invisibleGetters['PropertyAccessorElement2']!, + getters: _invisibleGetters['PropertyAccessorElement']!, ); }, ), @@ -484,7 +484,7 @@ class _Renderer_Accessor extends RendererBase { self.renderSimpleVariable( c, remainingNames, - 'ExecutableMember', + 'ExecutableElement', ), isNullValue: (CT_ c) => c.originalMember == null, @@ -502,7 +502,7 @@ class _Renderer_Accessor extends RendererBase { r.template, sink, parent: r, - getters: _invisibleGetters['ExecutableMember']!, + getters: _invisibleGetters['ExecutableElement']!, ); }, ), @@ -1652,11 +1652,7 @@ class _Renderer_Category extends RendererBase { getValue: (CT_ c) => c.element, renderVariable: (CT_ c, Property self, List remainingNames) => - self.renderSimpleVariable( - c, - remainingNames, - 'Element2', - ), + self.renderSimpleVariable(c, remainingNames, 'Element'), isNullValue: (CT_ c) => c.element == null, @@ -1673,7 +1669,7 @@ class _Renderer_Category extends RendererBase { r.template, sink, parent: r, - getters: _invisibleGetters['Element2']!, + getters: _invisibleGetters['Element']!, ); }, ), @@ -2366,7 +2362,7 @@ class _Renderer_Category extends RendererBase { } } -String renderCategoryRedirect(CategoryTemplateData context, Template template) { +String renderCategory(CategoryTemplateData context, Template template) { var buffer = StringBuffer(); _render_CategoryTemplateData(context, template.ast, template, buffer); return buffer.toString(); @@ -2616,7 +2612,7 @@ class _Renderer_CategoryTemplateData } } -String renderCategory(CategoryTemplateData context, Template template) { +String renderCategoryRedirect(CategoryTemplateData context, Template template) { var buffer = StringBuffer(); _render_CategoryTemplateData(context, template.ast, template, buffer); return buffer.toString(); @@ -2677,7 +2673,7 @@ class _Renderer_Class extends RendererBase { self.renderSimpleVariable( c, remainingNames, - 'ClassElement2', + 'ClassElement', ), isNullValue: (CT_ c) => false, @@ -2695,7 +2691,7 @@ class _Renderer_Class extends RendererBase { r.template, sink, parent: r, - getters: _invisibleGetters['ClassElement2']!, + getters: _invisibleGetters['ClassElement']!, ); }, ), @@ -3441,7 +3437,7 @@ class _Renderer_Constructor extends RendererBase { self.renderSimpleVariable( c, remainingNames, - 'ConstructorElement2', + 'ConstructorElement', ), isNullValue: (CT_ c) => false, @@ -3459,7 +3455,7 @@ class _Renderer_Constructor extends RendererBase { r.template, sink, parent: r, - getters: _invisibleGetters['ConstructorElement2']!, + getters: _invisibleGetters['ConstructorElement']!, ); }, ), @@ -4612,11 +4608,7 @@ class _Renderer_Container extends RendererBase { getValue: (CT_ c) => c.element, renderVariable: (CT_ c, Property self, List remainingNames) => - self.renderSimpleVariable( - c, - remainingNames, - 'Element2', - ), + self.renderSimpleVariable(c, remainingNames, 'Element'), isNullValue: (CT_ c) => false, @@ -4633,7 +4625,7 @@ class _Renderer_Container extends RendererBase { r.template, sink, parent: r, - getters: _invisibleGetters['Element2']!, + getters: _invisibleGetters['Element']!, ); }, ), @@ -6511,11 +6503,7 @@ class _Renderer_DocumentationComment getValue: (CT_ c) => c.element, renderVariable: (CT_ c, Property self, List remainingNames) => - self.renderSimpleVariable( - c, - remainingNames, - 'Element2', - ), + self.renderSimpleVariable(c, remainingNames, 'Element'), isNullValue: (CT_ c) => false, @@ -6532,7 +6520,7 @@ class _Renderer_DocumentationComment r.template, sink, parent: r, - getters: _invisibleGetters['Element2']!, + getters: _invisibleGetters['Element']!, ); }, ), @@ -7128,7 +7116,7 @@ class _Renderer_Enum extends RendererBase { self.renderSimpleVariable( c, remainingNames, - 'EnumElement2', + 'EnumElement', ), isNullValue: (CT_ c) => false, @@ -7146,7 +7134,7 @@ class _Renderer_Enum extends RendererBase { r.template, sink, parent: r, - getters: _invisibleGetters['EnumElement2']!, + getters: _invisibleGetters['EnumElement']!, ); }, ), @@ -7654,7 +7642,7 @@ class _Renderer_Extension extends RendererBase { self.renderSimpleVariable( c, remainingNames, - 'ExtensionElement2', + 'ExtensionElement', ), isNullValue: (CT_ c) => false, @@ -7672,7 +7660,7 @@ class _Renderer_Extension extends RendererBase { r.template, sink, parent: r, - getters: _invisibleGetters['ExtensionElement2']!, + getters: _invisibleGetters['ExtensionElement']!, ); }, ), @@ -8371,7 +8359,7 @@ class _Renderer_ExtensionType extends RendererBase { self.renderSimpleVariable( c, remainingNames, - 'ExtensionTypeElement2', + 'ExtensionTypeElement', ), isNullValue: (CT_ c) => false, @@ -8389,7 +8377,7 @@ class _Renderer_ExtensionType extends RendererBase { r.template, sink, parent: r, - getters: _invisibleGetters['ExtensionTypeElement2']!, + getters: _invisibleGetters['ExtensionTypeElement']!, ); }, ), @@ -9423,7 +9411,7 @@ class _Renderer_Field extends RendererBase { self.renderSimpleVariable( c, remainingNames, - 'FieldElement2', + 'FieldElement', ), isNullValue: (CT_ c) => false, @@ -9441,7 +9429,7 @@ class _Renderer_Field extends RendererBase { r.template, sink, parent: r, - getters: _invisibleGetters['FieldElement2']!, + getters: _invisibleGetters['FieldElement']!, ); }, ), @@ -11678,7 +11666,7 @@ class _Renderer_InheritingContainer extends RendererBase { self.renderSimpleVariable( c, remainingNames, - 'InterfaceElement2', + 'InterfaceElement', ), isNullValue: (CT_ c) => false, @@ -11696,7 +11684,7 @@ class _Renderer_InheritingContainer extends RendererBase { r.template, sink, parent: r, - getters: _invisibleGetters['InterfaceElement2']!, + getters: _invisibleGetters['InterfaceElement']!, ); }, ), @@ -13095,7 +13083,7 @@ class _Renderer_Library extends RendererBase { self.renderSimpleVariable( c, remainingNames, - 'LibraryElement2', + 'LibraryElement', ), isNullValue: (CT_ c) => false, @@ -13113,7 +13101,7 @@ class _Renderer_Library extends RendererBase { r.template, sink, parent: r, - getters: _invisibleGetters['LibraryElement2']!, + getters: _invisibleGetters['LibraryElement']!, ); }, ), @@ -14879,7 +14867,7 @@ class _Renderer_Method extends RendererBase { self.renderSimpleVariable( c, remainingNames, - 'MethodElement2', + 'MethodElement', ), isNullValue: (CT_ c) => false, @@ -14897,7 +14885,7 @@ class _Renderer_Method extends RendererBase { r.template, sink, parent: r, - getters: _invisibleGetters['MethodElement2']!, + getters: _invisibleGetters['MethodElement']!, ); }, ), @@ -15142,7 +15130,7 @@ class _Renderer_Method extends RendererBase { self.renderSimpleVariable( c, remainingNames, - 'ExecutableMember', + 'ExecutableElement', ), isNullValue: (CT_ c) => c.originalMember == null, @@ -15160,7 +15148,7 @@ class _Renderer_Method extends RendererBase { r.template, sink, parent: r, - getters: _invisibleGetters['ExecutableMember']!, + getters: _invisibleGetters['ExecutableElement']!, ); }, ), @@ -15737,7 +15725,7 @@ class _Renderer_Mixin extends RendererBase { self.renderSimpleVariable( c, remainingNames, - 'MixinElement2', + 'MixinElement', ), isNullValue: (CT_ c) => false, @@ -15755,7 +15743,7 @@ class _Renderer_Mixin extends RendererBase { r.template, sink, parent: r, - getters: _invisibleGetters['MixinElement2']!, + getters: _invisibleGetters['MixinElement']!, ); }, ), @@ -16486,11 +16474,7 @@ class _Renderer_ModelElement extends RendererBase { getValue: (CT_ c) => c.element, renderVariable: (CT_ c, Property self, List remainingNames) => - self.renderSimpleVariable( - c, - remainingNames, - 'Element2', - ), + self.renderSimpleVariable(c, remainingNames, 'Element'), isNullValue: (CT_ c) => false, @@ -16507,7 +16491,7 @@ class _Renderer_ModelElement extends RendererBase { r.template, sink, parent: r, - getters: _invisibleGetters['Element2']!, + getters: _invisibleGetters['Element']!, ); }, ), @@ -17210,7 +17194,7 @@ class _Renderer_ModelElement extends RendererBase { getValue: (CT_ c) => c.originalMember, renderVariable: (CT_ c, Property self, List remainingNames) => - self.renderSimpleVariable(c, remainingNames, 'Member'), + self.renderSimpleVariable(c, remainingNames, 'Element'), isNullValue: (CT_ c) => c.originalMember == null, @@ -17227,7 +17211,7 @@ class _Renderer_ModelElement extends RendererBase { r.template, sink, parent: r, - getters: _invisibleGetters['Member']!, + getters: _invisibleGetters['Element']!, ); }, ), @@ -17749,7 +17733,7 @@ class _Renderer_ModelFunctionTyped extends RendererBase { self.renderSimpleVariable( c, remainingNames, - 'FunctionTypedElement2', + 'FunctionTypedElement', ), isNullValue: (CT_ c) => false, @@ -17767,7 +17751,7 @@ class _Renderer_ModelFunctionTyped extends RendererBase { r.template, sink, parent: r, - getters: _invisibleGetters['FunctionTypedElement2']!, + getters: _invisibleGetters['FunctionTypedElement']!, ); }, ), @@ -19041,11 +19025,7 @@ class _Renderer_Package extends RendererBase { getValue: (CT_ c) => c.element, renderVariable: (CT_ c, Property self, List remainingNames) => - self.renderSimpleVariable( - c, - remainingNames, - 'Element2', - ), + self.renderSimpleVariable(c, remainingNames, 'Element'), isNullValue: (CT_ c) => c.element == null, @@ -19062,7 +19042,7 @@ class _Renderer_Package extends RendererBase { r.template, sink, parent: r, - getters: _invisibleGetters['Element2']!, + getters: _invisibleGetters['Element']!, ); }, ), @@ -20157,13 +20137,13 @@ class _Renderer_PackageTemplateData extends RendererBase { } } -String renderSearchPage(PackageTemplateData context, Template template) { +String renderError(PackageTemplateData context, Template template) { var buffer = StringBuffer(); _render_PackageTemplateData(context, template.ast, template, buffer); return buffer.toString(); } -String renderError(PackageTemplateData context, Template template) { +String renderSearchPage(PackageTemplateData context, Template template) { var buffer = StringBuffer(); _render_PackageTemplateData(context, template.ast, template, buffer); return buffer.toString(); @@ -20491,7 +20471,7 @@ class _Renderer_Parameter extends RendererBase { self.renderSimpleVariable( c, remainingNames, - 'ParameterMember', + 'FormalParameterElement', ), isNullValue: (CT_ c) => c.originalMember == null, @@ -20509,7 +20489,7 @@ class _Renderer_Parameter extends RendererBase { r.template, sink, parent: r, - getters: _invisibleGetters['ParameterMember']!, + getters: _invisibleGetters['FormalParameterElement']!, ); }, ), @@ -23602,7 +23582,7 @@ class _Renderer_TopLevelVariable extends RendererBase { self.renderSimpleVariable( c, remainingNames, - 'TopLevelVariableElement2', + 'TopLevelVariableElement', ), isNullValue: (CT_ c) => false, @@ -23620,7 +23600,7 @@ class _Renderer_TopLevelVariable extends RendererBase { r.template, sink, parent: r, - getters: _invisibleGetters['TopLevelVariableElement2']!, + getters: _invisibleGetters['TopLevelVariableElement']!, ); }, ), @@ -24033,7 +24013,7 @@ class _Renderer_TypeParameter extends RendererBase { self.renderSimpleVariable( c, remainingNames, - 'TypeParameterElement2', + 'TypeParameterElement', ), isNullValue: (CT_ c) => false, @@ -24051,7 +24031,7 @@ class _Renderer_TypeParameter extends RendererBase { r.template, sink, parent: r, - getters: _invisibleGetters['TypeParameterElement2']!, + getters: _invisibleGetters['TypeParameterElement']!, ); }, ), @@ -24694,7 +24674,7 @@ class _Renderer_Typedef extends RendererBase { self.renderSimpleVariable( c, remainingNames, - 'TypeAliasElement2', + 'TypeAliasElement', ), isNullValue: (CT_ c) => false, @@ -24712,7 +24692,7 @@ class _Renderer_Typedef extends RendererBase { r.template, sink, parent: r, - getters: _invisibleGetters['TypeAliasElement2']!, + getters: _invisibleGetters['TypeAliasElement']!, ); }, ), @@ -25378,11 +25358,7 @@ class _Renderer_Warnable extends RendererBase { getValue: (CT_ c) => c.element, renderVariable: (CT_ c, Property self, List remainingNames) => - self.renderSimpleVariable( - c, - remainingNames, - 'Element2', - ), + self.renderSimpleVariable(c, remainingNames, 'Element'), isNullValue: (CT_ c) => c.element == null, @@ -25399,7 +25375,7 @@ class _Renderer_Warnable extends RendererBase { r.template, sink, parent: r, - getters: _invisibleGetters['Element2']!, + getters: _invisibleGetters['Element']!, ); }, ), @@ -25440,7 +25416,7 @@ const _invisibleGetters = { 'lineNumber', 'runtimeType', }, - 'ClassElement2': { + 'ClassElement': { 'firstFragment', 'fragments', 'hasNonFinalField', @@ -25451,8 +25427,11 @@ const _invisibleGetters = { 'isDartCoreEnum', 'isDartCoreObject', 'isExhaustive', + 'isExtendableOutside', 'isFinal', + 'isImplementableOutside', 'isInterface', + 'isMixableOutside', 'isMixinApplication', 'isMixinClass', 'isSealed', @@ -25475,8 +25454,9 @@ const _invisibleGetters = { 'hasPublicConstructors', 'publicConstructorsSorted', }, - 'ConstructorElement2': { + 'ConstructorElement': { 'baseElement', + 'enclosingElement', 'enclosingElement2', 'firstFragment', 'fragments', @@ -25485,10 +25465,13 @@ const _invisibleGetters = { 'isDefaultConstructor', 'isFactory', 'isGenerative', + 'name', 'name3', + 'redirectedConstructor', 'redirectedConstructor2', 'returnType', 'runtimeType', + 'superConstructor', 'superConstructor2', }, 'ContainerModifier': { @@ -25582,10 +25565,13 @@ const _invisibleGetters = { 'qualifiedName', 'sourceFileName', }, - 'Element2': { + 'Element': { 'baseElement', + 'children', 'children2', 'displayName', + 'documentationComment', + 'enclosingElement', 'enclosingElement2', 'firstFragment', 'fragments', @@ -25595,116 +25581,59 @@ const _invisibleGetters = { 'isPublic', 'isSynthetic', 'kind', + 'library', 'library2', 'lookupName', + 'metadata', + 'name', 'name3', + 'nonSynthetic', 'nonSynthetic2', 'runtimeType', 'session', 'sinceSdkVersion', }, - 'EnumElement2': { + 'EnumElement': { + 'constants', 'constants2', 'firstFragment', 'fragments', 'hashCode', 'runtimeType', }, - 'ExecutableMember': { + 'ExecutableElement': { 'baseElement', - 'children', - 'children2', - 'context', - 'declaration', - 'displayName', - 'documentationComment', - 'enclosingElement2', - 'enclosingElement3', - 'formalParameters', + 'firstFragment', 'fragments', - 'hasAlwaysThrows', - 'hasDeprecated', - 'hasDoNotStore', - 'hasDoNotSubmit', - 'hasFactory', - 'hasImmutable', 'hasImplicitReturnType', - 'hasInternal', - 'hasIsTest', - 'hasIsTestGroup', - 'hasJS', - 'hasLiteral', - 'hasMustBeConst', - 'hasMustBeOverridden', - 'hasMustCallSuper', - 'hasNonVirtual', - 'hasOptionalTypeArgs', - 'hasOverride', - 'hasProtected', - 'hasRedeclare', - 'hasReopen', - 'hasRequired', - 'hasSealed', - 'hasUseResult', - 'hasVisibleForOverriding', - 'hasVisibleForTemplate', - 'hasVisibleForTesting', - 'hasVisibleOutsideTemplate', 'hashCode', - 'id', 'isAbstract', - 'isAsynchronous', - 'isAugmentation', 'isExtensionTypeMember', 'isExternal', - 'isGenerator', - 'isOperator', - 'isPrivate', - 'isPublic', - 'isSimplyBounded', 'isStatic', - 'isSynchronous', - 'isSynthetic', - 'kind', - 'library', - 'library2', - 'librarySource', - 'location', - 'metadata', - 'metadata2', - 'name', - 'nameLength', - 'nameOffset', - 'nonSynthetic', - 'nonSynthetic2', - 'parameters', - 'returnType', 'runtimeType', - 'session', - 'sinceSdkVersion', - 'substitution', - 'type', - 'typeParameters', - 'typeParameters2', }, - 'ExtensionElement2': { + 'ExtensionElement': { 'extendedType', 'firstFragment', 'fragments', 'hashCode', 'runtimeType', }, - 'ExtensionTypeElement2': { + 'ExtensionTypeElement': { 'firstFragment', 'fragments', 'hashCode', + 'primaryConstructor', 'primaryConstructor2', + 'representation', 'representation2', 'runtimeType', 'typeErasure', }, - 'FieldElement2': { + 'FieldElement': { 'baseElement', + 'enclosingElement', 'enclosingElement2', 'firstFragment', 'fragments', @@ -25737,25 +25666,22 @@ const _invisibleGetters = { 'isRequiredPositional', 'isSuperFormal', 'runtimeType', + 'typeParameters', 'typeParameters2', }, 'FunctionType': { 'element', + 'element3', 'formalParameters', 'hashCode', 'namedParameterTypes', 'normalParameterTypes', 'optionalParameterTypes', - 'parameters', - 'positionalParameterTypes', - 'requiredPositionalParameterCount', 'returnType', 'runtimeType', - 'sortedNamedParameters', - 'typeFormals', 'typeParameters', }, - 'FunctionTypedElement2': { + 'FunctionTypedElement': { 'firstFragment', 'formalParameters', 'fragments', @@ -25815,8 +25741,9 @@ const _invisibleGetters = { 'overriddenDepth', 'overriddenElement', }, - 'InterfaceElement2': { + 'InterfaceElement': { 'allSupertypes', + 'constructors', 'constructors2', 'firstFragment', 'fragments', @@ -25829,6 +25756,7 @@ const _invisibleGetters = { 'runtimeType', 'supertype', 'thisType', + 'unnamedConstructor', 'unnamedConstructor2', }, 'Iterable': { @@ -25843,11 +25771,13 @@ const _invisibleGetters = { 'single', }, 'Kind': {'hashCode', 'index', 'runtimeType'}, - 'LibraryElement2': { + 'LibraryElement': { 'classes', + 'entryPoint', 'entryPoint2', 'enums', 'exportNamespace', + 'exportedLibraries', 'exportedLibraries2', 'extensionTypes', 'extensions', @@ -25861,7 +25791,9 @@ const _invisibleGetters = { 'isDartCore', 'isInSdk', 'languageVersion', + 'library', 'library2', + 'loadLibraryFunction', 'loadLibraryFunction2', 'mixins', 'publicNamespace', @@ -25876,20 +25808,30 @@ const _invisibleGetters = { 'uri', }, 'LibraryFragment': { + 'accessibleExtensions', 'accessibleExtensions2', + 'classes', 'classes2', 'element', 'enclosingFragment', + 'enums', 'enums2', + 'extensionTypes', 'extensionTypes2', + 'extensions', 'extensions2', + 'functions', 'functions2', 'getters', 'hashCode', + 'importedLibraries', 'importedLibraries2', + 'libraryExports', 'libraryExports2', + 'libraryImports', 'libraryImports2', 'lineInfo', + 'mixins', 'mixins2', 'nextFragment', 'offset', @@ -25900,7 +25842,9 @@ const _invisibleGetters = { 'scope', 'setters', 'source', + 'topLevelVariables', 'topLevelVariables2', + 'typeAliases', 'typeAliases2', }, 'List': {'hashCode', 'length', 'reversed', 'runtimeType'}, @@ -25922,62 +25866,7 @@ const _invisibleGetters = { 'runtimeType', 'values', }, - 'Member': { - 'baseElement', - 'children', - 'context', - 'declaration', - 'displayName', - 'documentationComment', - 'enclosingElement3', - 'hasAlwaysThrows', - 'hasDeprecated', - 'hasDoNotStore', - 'hasDoNotSubmit', - 'hasFactory', - 'hasImmutable', - 'hasInternal', - 'hasIsTest', - 'hasIsTestGroup', - 'hasJS', - 'hasLiteral', - 'hasMustBeConst', - 'hasMustBeOverridden', - 'hasMustCallSuper', - 'hasNonVirtual', - 'hasOptionalTypeArgs', - 'hasOverride', - 'hasProtected', - 'hasRedeclare', - 'hasReopen', - 'hasRequired', - 'hasSealed', - 'hasUseResult', - 'hasVisibleForOverriding', - 'hasVisibleForTemplate', - 'hasVisibleForTesting', - 'hasVisibleOutsideTemplate', - 'hashCode', - 'id', - 'isPrivate', - 'isPublic', - 'isSynthetic', - 'kind', - 'library', - 'librarySource', - 'location', - 'metadata', - 'metadata2', - 'name', - 'nameLength', - 'nameOffset', - 'nonSynthetic', - 'runtimeType', - 'session', - 'sinceSdkVersion', - 'substitution', - }, - 'MethodElement2': { + 'MethodElement': { 'baseElement', 'firstFragment', 'fragments', @@ -25985,11 +25874,12 @@ const _invisibleGetters = { 'isOperator', 'runtimeType', }, - 'MixinElement2': { + 'MixinElement': { 'firstFragment', 'fragments', 'hashCode', 'isBase', + 'isImplementableOutside', 'runtimeType', 'superclassConstraints', }, @@ -26049,100 +25939,16 @@ const _invisibleGetters = { 'runtimeType', 'version', }, - 'ParameterMember': { - 'baseElement', - 'children', - 'children2', - 'constantInitializer', - 'constantInitializer2', - 'context', - 'declaration', - 'defaultValueCode', - 'displayName', - 'documentationComment', - 'element', - 'enclosingElement2', - 'enclosingElement3', - 'firstFragment', - 'formalParameters', - 'fragments', - 'hasAlwaysThrows', - 'hasDefaultValue', - 'hasDeprecated', - 'hasDoNotStore', - 'hasDoNotSubmit', - 'hasFactory', - 'hasImmutable', - 'hasImplicitType', - 'hasInternal', - 'hasIsTest', - 'hasIsTestGroup', - 'hasJS', - 'hasLiteral', - 'hasMustBeConst', - 'hasMustBeOverridden', - 'hasMustCallSuper', - 'hasNonVirtual', - 'hasOptionalTypeArgs', - 'hasOverride', - 'hasProtected', - 'hasRedeclare', - 'hasReopen', - 'hasRequired', - 'hasSealed', - 'hasUseResult', - 'hasVisibleForOverriding', - 'hasVisibleForTemplate', - 'hasVisibleForTesting', - 'hasVisibleOutsideTemplate', - 'hashCode', - 'id', - 'isConst', - 'isConstantEvaluated', - 'isCovariant', - 'isFinal', - 'isInitializingFormal', - 'isLate', - 'isPrivate', - 'isPublic', - 'isStatic', - 'isSuperFormal', - 'isSynthetic', - 'kind', - 'library', - 'library2', - 'librarySource', - 'location', - 'lookupName', - 'metadata', - 'metadata2', - 'name', - 'name3', - 'nameLength', - 'nameOffset', - 'nameShared', - 'nonSynthetic', - 'nonSynthetic2', - 'parameterKind', - 'parameters', - 'runtimeType', - 'session', - 'sinceSdkVersion', - 'source', - 'substitution', - 'type', - 'typeParameters', - 'typeParameters2', - 'typeShared', - }, 'ParameterizedType': {'hashCode', 'runtimeType', 'typeArguments'}, - 'PropertyAccessorElement2': { + 'PropertyAccessorElement': { 'baseElement', + 'enclosingElement', 'enclosingElement2', 'firstFragment', 'fragments', 'hashCode', 'runtimeType', + 'variable', 'variable3', }, 'Scope': {'hashCode', 'runtimeType'}, @@ -26165,7 +25971,7 @@ const _invisibleGetters = { 'isEntryPoint', 'runtimeType', }, - 'TopLevelVariableElement2': { + 'TopLevelVariableElement': { 'baseElement', 'firstFragment', 'fragments', @@ -26173,16 +25979,18 @@ const _invisibleGetters = { 'isExternal', 'runtimeType', }, - 'TypeAliasElement2': { + 'TypeAliasElement': { + 'aliasedElement', 'aliasedElement2', 'aliasedType', + 'enclosingElement', 'enclosingElement2', 'firstFragment', 'fragments', 'hashCode', 'runtimeType', }, - 'TypeParameterElement2': { + 'TypeParameterElement': { 'baseElement', 'bound', 'firstFragment', diff --git a/lib/src/model/accessor.dart b/lib/src/model/accessor.dart index 4bc5a76b83..b821f80a40 100644 --- a/lib/src/model/accessor.dart +++ b/lib/src/model/accessor.dart @@ -4,10 +4,8 @@ import 'dart:convert'; -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/source/line_info.dart'; -// ignore: implementation_imports -import 'package:analyzer/src/dart/element/member.dart' show ExecutableMember; import 'package:collection/collection.dart' show IterableExtension; import 'package:dartdoc/src/element_type.dart'; import 'package:dartdoc/src/model/comment_referable.dart'; @@ -20,7 +18,7 @@ import 'package:dartdoc/src/warnings.dart'; class Accessor extends ModelElement { @override - final PropertyAccessorElement2 element; + final PropertyAccessorElement element; /// The combo ([Field] or [TopLevelVariable]) containing this accessor. /// @@ -31,7 +29,7 @@ class Accessor extends ModelElement { late final GetterSetterCombo enclosingCombo; Accessor(this.element, super.library, super.packageGraph, - {ExecutableMember? super.originalMember}); + {ExecutableElement? super.originalElement}); @override CharacterLocation? get characterLocation => element.isSynthetic @@ -39,8 +37,8 @@ class Accessor extends ModelElement { : super.characterLocation; @override - ExecutableMember? get originalMember => - super.originalMember as ExecutableMember?; + ExecutableElement? get originalMember => + super.originalMember as ExecutableElement?; late final Callable modelType = getTypeFor((originalMember ?? element).type, library) as Callable; @@ -49,7 +47,7 @@ class Accessor extends ModelElement { /// The [enclosingCombo] where this element was defined. late final GetterSetterCombo definingCombo = - getModelForElement(element.variable3!) as GetterSetterCombo; + getModelForElement(element.variable) as GetterSetterCombo; String get _sourceCode { if (!isSynthetic) { @@ -117,10 +115,10 @@ class Accessor extends ModelElement { } @override - ModelElement get enclosingElement => switch (element.enclosingElement2) { + ModelElement get enclosingElement => switch (element.enclosingElement) { LibraryFragment enclosingCompilationUnit => getModelForElement(enclosingCompilationUnit.element), - _ => getModelFor(element.enclosingElement2, library) + _ => getModelFor(element.enclosingElement, library) }; @override @@ -182,7 +180,7 @@ class ContainerAccessor extends Accessor with ContainerMember, Inheritable { ContainerAccessor.inherited( super.element, super.library, super.packageGraph, this._enclosingElement, - {super.originalMember}) + {super.originalElement}) : isInherited = true; /// The index and values fields are never declared, and must be special cased. @@ -207,8 +205,8 @@ class ContainerAccessor extends Accessor with ContainerMember, Inheritable { @override ContainerAccessor? get overriddenElement { assert(packageGraph.allLibrariesAdded); - final parent = element.enclosingElement2; - if (parent is! InterfaceElement2) { + final parent = element.enclosingElement; + if (parent is! InterfaceElement) { return null; } for (final supertype in parent.allSupertypes) { @@ -223,12 +221,12 @@ class ContainerAccessor extends Accessor with ContainerMember, Inheritable { continue; } final parentContainer = - getModelForElement(supertype.element3) as InheritingContainer; + getModelForElement(supertype.element) as InheritingContainer; final possibleFields = parentContainer.declaredFields.where((f) => !f.isStatic); final fieldName = accessor.lookupName?.replaceFirst('=', ''); final foundField = - possibleFields.firstWhereOrNull((f) => f.element.name3 == fieldName); + possibleFields.firstWhereOrNull((f) => f.element.name == fieldName); if (foundField == null) { continue; } diff --git a/lib/src/model/annotation.dart b/lib/src/model/annotation.dart index 0897184f80..63576d3ce2 100644 --- a/lib/src/model/annotation.dart +++ b/lib/src/model/annotation.dart @@ -4,7 +4,7 @@ import 'dart:convert'; -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:dartdoc/src/element_type.dart'; import 'package:dartdoc/src/model/attribute.dart'; import 'package:dartdoc/src/model/class.dart'; @@ -22,7 +22,7 @@ final class Annotation extends Attribute { final PackageGraph _packageGraph; Annotation(this._annotation, this._library, this._packageGraph) - : super(_annotation.element2!.name3!); + : super(_annotation.element!.name!); @override String get linkedNameWithParameters { @@ -40,19 +40,19 @@ final class Annotation extends Attribute { } @override - String get linkedName => _annotation.element2 is PropertyAccessorElement2 - ? _packageGraph.getModelForElement(_annotation.element2!).linkedName + String get linkedName => _annotation.element is PropertyAccessorElement + ? _packageGraph.getModelForElement(_annotation.element!).linkedName // TODO(jcollins-g): consider linking to constructor instead of type? : _modelType.linkedName; - late final ElementType _modelType = switch (_annotation.element2) { - ConstructorElement2(:var returnType) => + late final ElementType _modelType = switch (_annotation.element) { + ConstructorElement(:var returnType) => _packageGraph.getTypeFor(returnType, _library), - PropertyAccessorElement2(:var variable3?) => - (_packageGraph.getModelForElement(variable3) as GetterSetterCombo) + PropertyAccessorElement(:var variable) => + (_packageGraph.getModelForElement(variable) as GetterSetterCombo) .modelType, _ => throw StateError( - 'non-callable element used as annotation?: ${_annotation.element2}') + 'non-callable element used as annotation?: ${_annotation.element}') }; bool get isPublic { diff --git a/lib/src/model/canonicalization.dart b/lib/src/model/canonicalization.dart index 0556a02aa4..d222c65d62 100644 --- a/lib/src/model/canonicalization.dart +++ b/lib/src/model/canonicalization.dart @@ -2,7 +2,7 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:dartdoc/src/model/model.dart'; import 'package:dartdoc/src/warnings.dart'; @@ -19,11 +19,11 @@ Library? canonicalLibraryCandidate(ModelElement modelElement) { // Since we're looking for a library, go up in the tree until we find it. var topLevelElement = modelElement.element; - while (topLevelElement.enclosingElement2 is! LibraryElement2 && - topLevelElement.enclosingElement2 != null) { - topLevelElement = topLevelElement.enclosingElement2!; + while (topLevelElement.enclosingElement is! LibraryElement && + topLevelElement.enclosingElement != null) { + topLevelElement = topLevelElement.enclosingElement!; } - var topLevelElementName = topLevelElement.name3; + var topLevelElementName = topLevelElement.name; if (topLevelElementName == null) { // Any member of an unnamed extension is not public, and has no // canonical library. @@ -36,7 +36,7 @@ Library? canonicalLibraryCandidate(ModelElement modelElement) { if (modelElement is Library) return true; var lookup = l.element.exportNamespace.definedNames2[topLevelElementName]; return topLevelElement == - (lookup is PropertyAccessorElement2 ? lookup.variable3 : lookup); + (lookup is PropertyAccessorElement ? lookup.variable : lookup); }).toList(growable: true); if (candidateLibraries.isEmpty) { @@ -84,16 +84,16 @@ final class _Canonicalization { } } - String _getElementLocation(Element2 element) { + String _getElementLocation(Element element) { var components = []; - Element2? ancestor = element; + Element? ancestor = element; while (ancestor != null) { - if (ancestor is LibraryElement2) { + if (ancestor is LibraryElement) { components.insert(0, ancestor.uri.toString()); } else { - components.insert(0, ancestor.name3!); + components.insert(0, ancestor.name!); } - ancestor = ancestor.enclosingElement2; + ancestor = ancestor.enclosingElement; } var buffer = StringBuffer(); var length = components.length; diff --git a/lib/src/model/category.dart b/lib/src/model/category.dart index e128e8552b..3c4caf34f8 100644 --- a/lib/src/model/category.dart +++ b/lib/src/model/category.dart @@ -2,7 +2,7 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/file_system/file_system.dart'; import 'package:dartdoc/src/dartdoc_options.dart'; import 'package:dartdoc/src/model/comment_referable.dart'; @@ -78,7 +78,7 @@ class Category } @override - Element2? get element => null; + Element? get element => null; @override String get name => _categoryDefinition.displayName; diff --git a/lib/src/model/class.dart b/lib/src/model/class.dart index 8c206d77bb..3db1afbb6a 100644 --- a/lib/src/model/class.dart +++ b/lib/src/model/class.dart @@ -2,7 +2,7 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:dartdoc/src/model/kind.dart'; import 'package:dartdoc/src/model/model.dart'; @@ -15,7 +15,7 @@ import 'package:dartdoc/src/model/model.dart'; /// **inherited**: Filtered getters giving only inherited children. class Class extends InheritingContainer with Constructable, MixedInTypes { @override - final ClassElement2 element; + final ClassElement element; @override late final List allModelElements = [ @@ -29,8 +29,8 @@ class Class extends InheritingContainer with Constructable, MixedInTypes { Class(this.element, Library library, PackageGraph packageGraph) : super(library, packageGraph) { - if (element.name3 == 'Object' && - library.element.name3 == 'dart.core' && + if (element.name == 'Object' && + library.element.name == 'dart.core' && package.name == 'Dart') { packageGraph.objectClass = this; } @@ -46,11 +46,11 @@ class Class extends InheritingContainer with Constructable, MixedInTypes { bool get isBase => element.isBase && !element.isSealed; bool get isErrorOrException { - bool isError(InterfaceElement2 e) => - e.library2.isDartCore && (e.name3 == 'Exception' || e.name3 == 'Error'); + bool isError(InterfaceElement e) => + e.library.isDartCore && (e.name == 'Exception' || e.name == 'Error'); if (isError(element)) return true; - return element.allSupertypes.map((t) => t.element3).any(isError); + return element.allSupertypes.map((t) => t.element).any(isError); } @override diff --git a/lib/src/model/comment_referable.dart b/lib/src/model/comment_referable.dart index 1816dbe1b6..893f6e3d96 100644 --- a/lib/src/model/comment_referable.dart +++ b/lib/src/model/comment_referable.dart @@ -8,7 +8,7 @@ library; import 'dart:core'; import 'package:analyzer/dart/analysis/features.dart'; -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/dart/element/scope.dart'; import 'package:collection/collection.dart'; import 'package:dartdoc/src/model/library.dart'; @@ -105,7 +105,7 @@ mixin CommentReferable implements Nameable { _ReferenceChildrenLookup referenceLookup, { required bool Function(CommentReferable?) filter, }) { - Element2? resultElement; + Element? resultElement; final scope = this.scope; if (scope != null) { resultElement = scope.lookupPreferGetter(referenceLookup.lookup); @@ -126,8 +126,8 @@ mixin CommentReferable implements Nameable { } ModelElement result; - if (resultElement is PropertyAccessorElement2) { - final variable = resultElement.variable3!; + if (resultElement is PropertyAccessorElement) { + final variable = resultElement.variable; if (variable.isSynthetic) { // First, cache the synthetic variable, so that the // PropertyAccessorElement getter and/or setter are set (see @@ -207,16 +207,16 @@ mixin CommentReferable implements Nameable { Library? get library => null; /// For testing / comparison only, get the comment referable from where this - /// `ElementType` was defined. Override where an [Element2] is available. + /// `ElementType` was defined. Override where an [Elemen2] is available. @internal CommentReferable get definingCommentReferable => this; } extension on Scope { /// Prefer the getter for a bundled lookup if both exist. - Element2? lookupPreferGetter(String id) { + Element? lookupPreferGetter(String id) { var result = lookup(id); - return result.getter2 ?? result.setter2; + return result.getter ?? result.setter; } } diff --git a/lib/src/model/constructor.dart b/lib/src/model/constructor.dart index 7e4c75de90..0503b76978 100644 --- a/lib/src/model/constructor.dart +++ b/lib/src/model/constructor.dart @@ -2,7 +2,7 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/source/line_info.dart'; import 'package:dartdoc/src/element_type.dart'; import 'package:dartdoc/src/model/comment_referable.dart'; @@ -12,7 +12,7 @@ import 'package:dartdoc/src/model_utils.dart'; class Constructor extends ModelElement with ContainerMember, TypeParameters { @override - final ConstructorElement2 element; + final ConstructorElement element; Constructor(this.element, super.library, super.packageGraph); @@ -25,7 +25,7 @@ class Constructor extends ModelElement with ContainerMember, TypeParameters { return enclosingElement.characterLocation; } final lineInfo = unitElement.lineInfo; - var offset = element.firstFragment.nameOffset2 ?? + var offset = element.firstFragment.nameOffset ?? element.firstFragment.typeNameOffset; if (offset != null && offset >= 0) { return lineInfo.getLocation(offset); @@ -37,10 +37,10 @@ class Constructor extends ModelElement with ContainerMember, TypeParameters { bool get isPublic { if (!super.isPublic) return false; if (element.hasPrivateName) return false; - var class_ = element.enclosingElement2; + var class_ = element.enclosingElement; // Enums cannot be explicitly constructed or extended. - if (class_ is EnumElement2) return false; - if (class_ is ClassElement2) { + if (class_ is EnumElement) return false; + if (class_ is ClassElement) { if (element.isFactory) return true; if (class_.isSealed || (class_.isAbstract && class_.isFinal) || @@ -60,7 +60,7 @@ class Constructor extends ModelElement with ContainerMember, TypeParameters { @override Container get enclosingElement => - getModelFor(element.enclosingElement2, library) as Container; + getModelFor(element.enclosingElement, library) as Container; @override String get fileName => @@ -85,7 +85,7 @@ class Constructor extends ModelElement with ContainerMember, TypeParameters { @override bool get isConst => element.isConst; - bool get isUnnamedConstructor => element.name3 == 'new'; + bool get isUnnamedConstructor => element.name == 'new'; bool get isFactory => element.isFactory; @@ -100,11 +100,11 @@ class Constructor extends ModelElement with ContainerMember, TypeParameters { // TODO(jcollins-g): After the old lookup code is retired, rationalize // [name] around the conventions used in referenceChildren and replace // code there and elsewhere with simple references to the name. - '${enclosingElement.name}.${element.name3}'; + '${enclosingElement.name}.${element.name}'; @override String get nameWithGenerics { - var constructorName = element.name3!; + var constructorName = element.name!; if (constructorName == 'new') { return '${enclosingElement.name}$genericParameters'; } @@ -113,7 +113,7 @@ class Constructor extends ModelElement with ContainerMember, TypeParameters { String? get shortName { if (name.contains('.')) { - return name.substring(element.enclosingElement2.name3!.length + 1); + return name.substring(element.enclosingElement.name!.length + 1); } else { return name; } @@ -122,11 +122,11 @@ class Constructor extends ModelElement with ContainerMember, TypeParameters { @override late final Map referenceChildren = () { // Find the element that [parameter] is _really_ referring to. - Element2? dereferenceParameter(FormalParameterElement? parameter) => + Element? dereferenceParameter(FormalParameterElement? parameter) => switch (parameter) { - FieldFormalParameterElement2() => parameter.field2, - SuperFormalParameterElement2() => - dereferenceParameter(parameter.superConstructorParameter2), + FieldFormalParameterElement() => parameter.field, + SuperFormalParameterElement() => + dereferenceParameter(parameter.superConstructorParameter), _ => parameter }; @@ -142,5 +142,5 @@ class Constructor extends ModelElement with ContainerMember, TypeParameters { @override String get referenceName => - isUnnamedConstructor ? enclosingElement.name : element.name3!; + isUnnamedConstructor ? enclosingElement.name : element.name!; } diff --git a/lib/src/model/container.dart b/lib/src/model/container.dart index e74e6d2a64..2c139f3c97 100644 --- a/lib/src/model/container.dart +++ b/lib/src/model/container.dart @@ -2,7 +2,7 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/dart/element/scope.dart'; import 'package:dartdoc/src/model/comment_referable.dart'; import 'package:dartdoc/src/model/model.dart'; @@ -32,7 +32,7 @@ abstract class Container extends ModelElement Container(super.library, super.packageGraph); @override - Element2 get element; + Element get element; // TODO(jcollins-g): Implement a ContainerScope that flattens supertypes? @override @@ -41,20 +41,20 @@ abstract class Container extends ModelElement @override bool get hasParameters => false; - bool get isExtension => element is ExtensionElement2; + bool get isExtension => element is ExtensionElement; /// Whether this is an enum. - bool get isEnum => element is EnumElement2; + bool get isEnum => element is EnumElement; /// Whether this is an interface (e.g. class, enum, mixin, or extension type). - bool get isInterface => element is InterfaceElement2; + bool get isInterface => element is InterfaceElement; /// Whether this is a mixin. - bool get isMixin => element is MixinElement2; + bool get isMixin => element is MixinElement; /// Whether this container represents the Object class from 'dart:core'. bool get isDartCoreObject => - element.name3 == 'Object' && element.library2?.name3 == 'dart.core'; + element.name == 'Object' && element.library?.name == 'dart.core'; /// The model elements of all of the members of this container, including /// declared and inherited ones. @@ -158,9 +158,9 @@ abstract class Container extends ModelElement /// This container might be canonical for elements it does not contain. /// See [Inheritable.canonicalEnclosingContainer]. - bool containsElement(Element2? element) => _allElements.contains(element); + bool containsElement(Element? element) => _allElements.contains(element); - late final Set _allElements = + late final Set _allElements = allModelElements.map((e) => e.element).toSet(); bool get hasPublicStaticFields => staticFields.any((e) => e.isPublic); diff --git a/lib/src/model/container_member.dart b/lib/src/model/container_member.dart index c5f9c01f6b..8480ed5f5a 100644 --- a/lib/src/model/container_member.dart +++ b/lib/src/model/container_member.dart @@ -29,7 +29,7 @@ mixin ContainerMember on ModelElement { @protected @visibleForTesting late final Container definingEnclosingContainer = - getModelForElement(element.enclosingElement2!) as Container; + getModelForElement(element.enclosingElement!) as Container; @override Set get attributes => { diff --git a/lib/src/model/documentation_comment.dart b/lib/src/model/documentation_comment.dart index 6aff687706..2385e74c59 100644 --- a/lib/src/model/documentation_comment.dart +++ b/lib/src/model/documentation_comment.dart @@ -5,7 +5,7 @@ /// @docImport 'package:dartdoc/src/model/package_graph.dart'; library; -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:args/args.dart'; import 'package:crypto/crypto.dart' as crypto; import 'package:dartdoc/src/model/documentable.dart'; @@ -41,7 +41,7 @@ final _htmlInjectRegExp = RegExp(r'([a-f0-9]+)'); mixin DocumentationComment implements Documentable, Warnable, Locatable, SourceCode { @override - Element2 get element; + Element get element; List? _documentationFrom; @@ -70,15 +70,11 @@ mixin DocumentationComment /// The rawest form of the documentation comment, including comment delimiters /// like `///`, `//`, `/*`, `*/`. - String get documentationComment => (element is Annotatable) - ? (element as Annotatable).documentationComment ?? '' - : ''; + String get documentationComment => element.documentationComment ?? ''; /// Whether `this` has a synthetic/inherited or local documentation comment, /// and false otherwise. - bool get hasDocumentationComment => - element is Annotatable && - (element as Annotatable).documentationComment != null; + bool get hasDocumentationComment => element.documentationComment != null; /// Whether the raw documentation comment is considered to be 'nodoc', an /// attribute indicating that any documentation should not be included in diff --git a/lib/src/model/dynamic.dart b/lib/src/model/dynamic.dart index 03f498099d..b56df501b2 100644 --- a/lib/src/model/dynamic.dart +++ b/lib/src/model/dynamic.dart @@ -2,7 +2,7 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:dartdoc/src/element_type.dart'; import 'package:dartdoc/src/model/comment_referable.dart'; import 'package:dartdoc/src/model/kind.dart'; @@ -11,7 +11,7 @@ import 'package:dartdoc/src/model/model.dart'; class Dynamic extends ModelElement with HasNoPage { @override - final Element2 element; + final Element element; Dynamic(this.element, PackageGraph packageGraph) : super(Library.sentinel, packageGraph); diff --git a/lib/src/model/enum.dart b/lib/src/model/enum.dart index 9ec869294f..a7154ac9ce 100644 --- a/lib/src/model/enum.dart +++ b/lib/src/model/enum.dart @@ -3,14 +3,14 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/dart/analysis/features.dart'; -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:dartdoc/src/model/kind.dart'; import 'package:dartdoc/src/model/model.dart'; import 'package:meta/meta.dart'; class Enum extends InheritingContainer with Constructable, MixedInTypes { @override - final EnumElement2 element; + final EnumElement element; Enum(this.element, super.library, super.packageGraph); @@ -40,9 +40,9 @@ class Enum extends InheritingContainer with Constructable, MixedInTypes { @override late final List publicEnumValues = [ - for (var value in element.constants2) + for (var value in element.constants) getModelForPropertyInducingElement(value, library, - getter: getModelFor(value.getter2!, library) as ContainerAccessor, + getter: getModelFor(value.getter!, library) as ContainerAccessor, setter: null) as Field ]; @@ -69,7 +69,7 @@ class Enum extends InheritingContainer with Constructable, MixedInTypes { class EnumField extends Field { final int index; - EnumField.forConstant(this.index, FieldElement2 element, Library library, + EnumField.forConstant(this.index, FieldElement element, Library library, PackageGraph packageGraph, Accessor? getter) : super( element, library, packageGraph, getter as ContainerAccessor?, null); @@ -79,9 +79,9 @@ class EnumField extends Field { @override bool get hasConstantValueForDisplay { - final enum_ = element.enclosingElement2 as EnumElement2; + final enum_ = element.enclosingElement as EnumElement; final enumHasDefaultConstructor = - enum_.constructors2.any((c) => c.isDefaultConstructor); + enum_.constructors.any((c) => c.isDefaultConstructor); // If this enum does not have any explicit constructors (and so only has a // default constructor), then there is no meaningful constant initializer to // display. @@ -90,7 +90,7 @@ class EnumField extends Field { @override String get constantValueBase => - element.library2.featureSet.isEnabled(Feature.enhanced_enums) + element.library.featureSet.isEnabled(Feature.enhanced_enums) ? super.constantValueBase : renderedName; diff --git a/lib/src/model/extension.dart b/lib/src/model/extension.dart index df3207af5b..51897c674e 100644 --- a/lib/src/model/extension.dart +++ b/lib/src/model/extension.dart @@ -2,7 +2,7 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'package:analyzer/dart/element/element2.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:dartdoc/src/element_type.dart'; @@ -16,7 +16,7 @@ import 'package:meta/meta.dart'; /// setters, operators). class Extension extends Container { @override - final ExtensionElement2 element; + final ExtensionElement element; late final ElementType extendedElement = getTypeFor(element.extendedType, library); @@ -35,7 +35,7 @@ class Extension extends Container { /// Whether this extension could apply to [container]. /// /// This makes some assumptions in its calculations. For example, all - /// [InheritingContainer]s represent [InterfaceElement2]s, so no care is taken + /// [InheritingContainer]s represent [InterfaceElement]s, so no care is taken /// to consider function types or record types. bool couldApplyTo(InheritingContainer container) { var extendedType = extendedElement.type; @@ -48,13 +48,13 @@ class Extension extends Container { extendedType = library.element.typeSystem.promoteToNonNull(extendedType); var otherType = container.modelType.type; if (otherType is InterfaceType) { - otherType = library.element.typeSystem.instantiateInterfaceToBounds2( - element: otherType.element3, + otherType = library.element.typeSystem.instantiateInterfaceToBounds( + element: otherType.element, nullabilitySuffix: NullabilitySuffix.none, ); for (var superType in [otherType, ...otherType.allSupertypes]) { - var isSameBaseType = superType.element3 == extendedType.element3; + var isSameBaseType = superType.element == extendedType.element; if (isSameBaseType && library.element.typeSystem.isSubtypeOf(extendedType, superType)) { return true; @@ -76,7 +76,7 @@ class Extension extends Container { instanceFields.wherePublic.toList(growable: false)..sort(byName); @override - late final List declaredMethods = element.methods2 + late final List declaredMethods = element.methods .map((e) => getModelFor(e, library, enclosingContainer: this) as Method) .toList(growable: false); @@ -95,17 +95,17 @@ class Extension extends Container { ]..sort(); @override - String get name => element.name3 == null ? '' : super.name; + String get name => element.name == null ? '' : super.name; @override - late final List declaredFields = element.fields2.map((field) { + late final List declaredFields = element.fields.map((field) { ContainerAccessor? getter, setter; - final fieldGetter = field.getter2; + final fieldGetter = field.getter; if (fieldGetter != null) { getter = ModelElement.for_(fieldGetter, library, packageGraph, enclosingContainer: this) as ContainerAccessor; } - final fieldSetter = field.setter2; + final fieldSetter = field.setter; if (fieldSetter != null) { setter = ModelElement.for_(fieldSetter, library, packageGraph, enclosingContainer: this) as ContainerAccessor; @@ -115,10 +115,10 @@ class Extension extends Container { }).toList(growable: false); @override - late final List typeParameters = element.typeParameters2 + late final List typeParameters = element.typeParameters .map((typeParameter) => getModelFor( typeParameter, - getModelForElement(typeParameter.enclosingElement2!.library2!) + getModelForElement(typeParameter.enclosingElement!.library!) as Library) as TypeParameter) .toList(growable: false); diff --git a/lib/src/model/extension_type.dart b/lib/src/model/extension_type.dart index c0771ce517..2cc15cae8e 100644 --- a/lib/src/model/extension_type.dart +++ b/lib/src/model/extension_type.dart @@ -2,7 +2,7 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:dartdoc/src/element_type.dart'; import 'package:dartdoc/src/model/comment_referable.dart'; import 'package:dartdoc/src/model/kind.dart'; @@ -11,10 +11,10 @@ import 'package:meta/meta.dart'; class ExtensionType extends InheritingContainer with Constructable { @override - final ExtensionTypeElement2 element; + final ExtensionTypeElement element; late final ElementType representationType = - getTypeFor(element.representation2.type, library); + getTypeFor(element.representation.type, library); ExtensionType(this.element, super.library, super.packageGraph); @@ -40,13 +40,13 @@ class ExtensionType extends InheritingContainer with Constructable { bool get isSealed => false; @override - late final List declaredFields = element.fields2.map((field) { + late final List declaredFields = element.fields.map((field) { ContainerAccessor? getter, setter; - final fieldGetter = field.getter2; + final fieldGetter = field.getter; if (fieldGetter != null) { getter = ContainerAccessor(fieldGetter, library, packageGraph, this); } - final fieldSetter = field.setter2; + final fieldSetter = field.setter; if (fieldSetter != null) { setter = ContainerAccessor(fieldSetter, library, packageGraph, this); } diff --git a/lib/src/model/field.dart b/lib/src/model/field.dart index e9474c9f22..06d3fa7cd1 100644 --- a/lib/src/model/field.dart +++ b/lib/src/model/field.dart @@ -4,7 +4,7 @@ import 'dart:convert'; -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:dartdoc/src/model/attribute.dart'; import 'package:dartdoc/src/model/kind.dart'; import 'package:dartdoc/src/model/model.dart'; @@ -13,7 +13,7 @@ class Field extends ModelElement with GetterSetterCombo, ContainerMember, Inheritable { @override - final FieldElement2 element; + final FieldElement element; @override final ContainerAccessor? getter; @@ -36,7 +36,7 @@ class Field extends ModelElement ) : isInherited = false, enclosingElement = - ModelElement.for_(element.enclosingElement2, library, packageGraph) + ModelElement.for_(element.enclosingElement, library, packageGraph) as Container, assert(getter != null || setter != null) { getter?.enclosingCombo = this; @@ -104,7 +104,7 @@ class Field extends ModelElement @override bool get isConst => element.isConst; - /// Whether the [FieldElement2] is covariant, or the first parameter for the + /// Whether the [FieldElement] is covariant, or the first parameter for the /// setter is covariant. @override bool get isCovariant => setter?.isCovariant == true || element.isCovariant; @@ -131,7 +131,7 @@ class Field extends ModelElement element.isAbstract ? 'abstract $kind' : kind.toString(); bool get isProvidedByExtension => - element.enclosingElement2 is ExtensionElement2; + element.enclosingElement is ExtensionElement; /// The [enclosingElement], which is expected to be an [Extension]. Extension get enclosingExtension => enclosingElement as Extension; diff --git a/lib/src/model/getter_setter_combo.dart b/lib/src/model/getter_setter_combo.dart index d3d3a84592..7e0fb85780 100644 --- a/lib/src/model/getter_setter_combo.dart +++ b/lib/src/model/getter_setter_combo.dart @@ -6,11 +6,10 @@ import 'dart:convert'; import 'package:analyzer/dart/ast/ast.dart' show Expression, InstanceCreationExpression; -import 'package:analyzer/dart/element/element2.dart' show Annotatable; import 'package:analyzer/source/line_info.dart'; // ignore: implementation_imports import 'package:analyzer/src/dart/element/element.dart' - show ConstVariableElement; + show VariableFragmentImpl; import 'package:dartdoc/src/element_type.dart'; import 'package:dartdoc/src/model/accessor.dart'; import 'package:dartdoc/src/model/annotation.dart'; @@ -78,7 +77,7 @@ mixin GetterSetterCombo on ModelElement { bool get hasConstantValueForDisplay => false; late final Expression? _constantInitializer = - (element.firstFragment as ConstVariableElement).constantInitializer; + (element.firstFragment as VariableFragmentImpl).constantInitializer; String linkifyConstantValue(String original) { if (_constantInitializer is! InstanceCreationExpression) return original; @@ -213,13 +212,13 @@ mixin GetterSetterCombo on ModelElement { @override late final String documentationComment = _getterSetterDocumentationComment.isEmpty - ? (element as Annotatable).documentationComment ?? '' + ? element.documentationComment ?? '' : _getterSetterDocumentationComment; @override bool get hasDocumentationComment => _getterSetterDocumentationComment.isNotEmpty || - (element as Annotatable).documentationComment != null; + element.documentationComment != null; /// Derives a documentation comment for the combo by copying documentation /// from the [getter] and/or [setter]. diff --git a/lib/src/model/inheritable.dart b/lib/src/model/inheritable.dart index 17c72012b6..54937f6263 100644 --- a/lib/src/model/inheritable.dart +++ b/lib/src/model/inheritable.dart @@ -2,7 +2,7 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:collection/collection.dart' show IterableExtension; import 'package:dartdoc/src/model/attribute.dart'; import 'package:dartdoc/src/model/model.dart'; @@ -48,7 +48,7 @@ mixin Inheritable on ContainerMember { ?.allCanonicalModelElements .firstWhereOrNull((m) => m.name == name && - m is PropertyAccessorElement2 == this is PropertyAccessorElement2); + m is PropertyAccessorElement == this is PropertyAccessorElement); @override Container? computeCanonicalEnclosingContainer() { @@ -96,8 +96,8 @@ mixin Inheritable on ContainerMember { /// implementation. bool _isHiddenInterface(Container? c) => c != null && - c.element.name3 == 'Interceptor' && - c.element.library2?.name3 == '_interceptors'; + c.element.name == 'Interceptor' && + c.element.library?.name == '_interceptors'; /// All of the various supertypes of [enclosingElement], in a specific order. /// diff --git a/lib/src/model/inheriting_container.dart b/lib/src/model/inheriting_container.dart index 5457a5e2c0..ffc9bb727f 100644 --- a/lib/src/model/inheriting_container.dart +++ b/lib/src/model/inheriting_container.dart @@ -2,7 +2,7 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/dart/element/type.dart'; import 'package:collection/collection.dart' show IterableExtension; import 'package:dartdoc/src/element_type.dart'; @@ -19,7 +19,7 @@ import 'package:meta/meta.dart'; /// Note that [Constructor]s are not considered to be modifiers so a /// [hasModifiers] override is not necessary for this mixin. mixin Constructable implements InheritingContainer { - late final List constructors = element.constructors2 + late final List constructors = element.constructors .map((e) => getModelFor(e, library) as Constructor) .toList(growable: false); @@ -100,11 +100,11 @@ abstract class InheritingContainer extends Container { @visibleForTesting Iterable get inheritedMethods { - var methodNames = declaredMethods.map((m) => m.element.name3).toSet(); + var methodNames = declaredMethods.map((m) => m.element.name).toSet(); var inheritedMethodElements = element.inheritedMembers.values - .whereType() + .whereType() .where((e) => !e.isOperator) - .where((e) => !methodNames.contains(e.name3)); + .where((e) => !methodNames.contains(e.name)); return [ for (var e in inheritedMethodElements) @@ -117,9 +117,9 @@ abstract class InheritingContainer extends Container { var operatorNames = declaredOperators.map((o) => o.element.lookupName).toSet(); var inheritedOperatorElements = element.inheritedMembers.values - .whereType() + .whereType() .where((e) => e.isOperator) - .where((e) => !operatorNames.contains(e.name3)); + .where((e) => !operatorNames.contains(e.name)); return [ for (var e in inheritedOperatorElements) @@ -133,7 +133,7 @@ abstract class InheritingContainer extends Container { /// All fields defined on this container, _including inherited fields_. late final List _allFields = () { var inheritedAccessorElements = { - ...element.inheritedMembers.values.whereType() + ...element.inheritedMembers.values.whereType() }; // This structure keeps track of inherited accessors, allowing lookup @@ -143,11 +143,11 @@ abstract class InheritingContainer extends Container { // `.firstWhereOrNull((e) => e.isGetter)` and // `.firstWhereOrNull((e) => e.isSetter)` calls, which would be much simpler // if we used some sort of "pair" class instead. - var accessorMap = >{}; + var accessorMap = >{}; for (var accessorElement in inheritedAccessorElements) { accessorMap .putIfAbsent( - accessorElement.name3?.replaceFirst('=', '') ?? '', () => []) + accessorElement.name?.replaceFirst('=', '') ?? '', () => []) .add(accessorElement); } @@ -156,20 +156,20 @@ abstract class InheritingContainer extends Container { // For half-inherited fields, the analyzer only links the non-inherited // to the [FieldElement]. Compose our [Field] class by hand by looking up // inherited accessors that may be related. - for (var field in element.fields2) { - var getterElement = field.getter2; - if (getterElement == null && accessorMap.containsKey(field.name3)) { - getterElement = accessorMap[field.name3]! + for (var field in element.fields) { + var getterElement = field.getter; + if (getterElement == null && accessorMap.containsKey(field.name)) { + getterElement = accessorMap[field.name]! .firstWhereOrNull((e) => e is GetterElement) as GetterElement?; } - var setterElement = field.setter2; - if (setterElement == null && accessorMap.containsKey(field.name3)) { - setterElement = accessorMap[field.name3]! + var setterElement = field.setter; + if (setterElement == null && accessorMap.containsKey(field.name)) { + setterElement = accessorMap[field.name]! .firstWhereOrNull((e) => e is SetterElement) as SetterElement?; } fields.add(_createSingleField( getterElement, setterElement, inheritedAccessorElements, field)); - accessorMap.remove(field.name3); + accessorMap.remove(field.name); } // Now we only have inherited accessors who aren't associated with @@ -179,6 +179,17 @@ abstract class InheritingContainer extends Container { elements.firstWhereOrNull((e) => e is GetterElement); final setterElement = elements.firstWhereOrNull((e) => e is SetterElement); + + final isNullOrTopMergeGetter = getterElement == null || + getterElement.enclosingElement == element && + !element.getters.contains(getterElement); + final isNullOrTopMergeSetter = setterElement == null || + setterElement.enclosingElement == element && + !element.setters.contains(setterElement); + if (isNullOrTopMergeGetter && isNullOrTopMergeSetter) { + return; + } + fields.add(_createSingleField( getterElement, setterElement, inheritedAccessorElements)); }); @@ -187,15 +198,15 @@ abstract class InheritingContainer extends Container { }(); @override - late final List declaredMethods = element.methods2 + late final List declaredMethods = element.methods .map((e) => getModelFor(e, library) as Method) .toList(growable: false); @override - late final List typeParameters = element.typeParameters2 + late final List typeParameters = element.typeParameters .map((typeParameter) => getModelFor( typeParameter, - getModelForElement(typeParameter.enclosingElement2!.library2!) + getModelForElement(typeParameter.enclosingElement!.library!) as Library) as TypeParameter) .toList(growable: false); @@ -229,7 +240,7 @@ abstract class InheritingContainer extends Container { getModelFor(element, library) as InheritingContainer; @override - InterfaceElement2 get element; + InterfaceElement get element; @override Library get enclosingElement => library; @@ -411,7 +422,7 @@ abstract class InheritingContainer extends Container { /// and so unlike other `public*` methods, is not a strict subset of /// [directInterfaces] (the direct interfaces). List get publicInterfaces { - var interfaceElements = {}; + var interfaceElements = {}; var interfaces = []; // Only interfaces with unique elements should be returned. Elements can @@ -421,7 +432,7 @@ abstract class InheritingContainer extends Container { // but there is no chance of type arguments differing, as that is illegal. void addInterfaceIfUnique(DefinedElementType type) { var firstPublicSuperElement = type.modelElement.element; - if (firstPublicSuperElement is InterfaceElement2) { + if (firstPublicSuperElement is InterfaceElement) { if (interfaceElements.add(firstPublicSuperElement)) { interfaces.add(type); } @@ -511,18 +522,18 @@ abstract class InheritingContainer extends Container { /// Creates a single Field. /// - /// If [field] is not specified, picks the [FieldElement2] from the - /// [PropertyAccessorElement2] whose enclosing class inherits from the other + /// If [field] is not specified, picks the [FieldElement] from the + /// [PropertyAccessorElement] whose enclosing class inherits from the other /// (defaulting to the getter) and constructs a [Field] using that. Field _createSingleField( - PropertyAccessorElement2? getterElement, - PropertyAccessorElement2? setterElement, - Set inheritedAccessors, - [FieldElement2? field]) { + PropertyAccessorElement? getterElement, + PropertyAccessorElement? setterElement, + Set inheritedAccessors, + [FieldElement? field]) { // Return a [ContainerAccessor] with `isInherited = true` if [element] is // in [inheritedAccessors]. ContainerAccessor? containerAccessorFrom( - PropertyAccessorElement2? element) { + PropertyAccessorElement? element) { if (element == null) return null; final enclosingContainer = inheritedAccessors.contains(element) ? this : null; @@ -541,9 +552,9 @@ abstract class InheritingContainer extends Container { // Pick an appropriate [FieldElement] to represent this element. // Only hard when dealing with a synthetic [Field]. if (getter != null && setter == null) { - field = getterElement!.variable3 as FieldElement2; + field = getterElement!.variable as FieldElement; } else if (getter == null && setter != null) { - field = setterElement!.variable3 as FieldElement2; + field = setterElement!.variable as FieldElement; } else { // In this case: `getter != null && setter != null`. getter!; @@ -556,9 +567,9 @@ abstract class InheritingContainer extends Container { if (setterEnclosingElement is Class && setterEnclosingElement._isInheritingFrom( getter.enclosingElement as InheritingContainer)) { - field = setterElement!.variable3 as FieldElement2; + field = setterElement!.variable as FieldElement; } else { - field = getterElement!.variable3 as FieldElement2; + field = getterElement!.variable as FieldElement; } } } diff --git a/lib/src/model/library.dart b/lib/src/model/library.dart index 6185e9f3fb..af62dbd1d5 100644 --- a/lib/src/model/library.dart +++ b/lib/src/model/library.dart @@ -3,7 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/dart/analysis/features.dart'; -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/dart/element/scope.dart'; import 'package:analyzer/source/line_info.dart'; // ignore: implementation_imports @@ -22,14 +22,14 @@ class _LibrarySentinel implements Library { class Library extends ModelElement with Categorization, TopLevelContainer, CanonicalFor { @override - final LibraryElement2 element; + final LibraryElement element; - /// The set of [Element2]s declared directly in this library. - final Set _localElements; + /// The set of [Element]s declared directly in this library. + final Set _localElements; - /// The set of [Element2]s exported by this library but not directly declared + /// The set of [Element]s exported by this library but not directly declared /// in this library. - final Set _exportedElements; + final Set _exportedElements; final String _restoredUri; @@ -58,17 +58,17 @@ class Library extends ModelElement var libraryElement = resolvedLibrary.element; - var localElements = { + var localElements = { ...libraryElement.firstFragment.getters.map((g) => g.element), ...libraryElement.firstFragment.setters.map((s) => s.element), - ...libraryElement.firstFragment.classes2.map((c) => c.element), - ...libraryElement.firstFragment.enums2.map((e) => e.element), - ...libraryElement.firstFragment.extensions2.map((e) => e.element), - ...libraryElement.firstFragment.extensionTypes2.map((e) => e.element), - ...libraryElement.firstFragment.functions2.map((f) => f.element), - ...libraryElement.firstFragment.mixins2.map((m) => m.element), - ...libraryElement.firstFragment.topLevelVariables2.map((v) => v.element), - ...libraryElement.firstFragment.typeAliases2.map((a) => a.element), + ...libraryElement.firstFragment.classes.map((c) => c.element), + ...libraryElement.firstFragment.enums.map((e) => e.element), + ...libraryElement.firstFragment.extensions.map((e) => e.element), + ...libraryElement.firstFragment.extensionTypes.map((e) => e.element), + ...libraryElement.firstFragment.functions.map((f) => f.element), + ...libraryElement.firstFragment.mixins.map((m) => m.element), + ...libraryElement.firstFragment.topLevelVariables.map((v) => v.element), + ...libraryElement.firstFragment.typeAliases.map((a) => a.element), }; var exportedElements = { ...libraryElement.exportNamespace.definedNames2.values @@ -94,14 +94,14 @@ class Library extends ModelElement @override CharacterLocation? get characterLocation { - if (element.firstFragment.nameOffset2 == null) { + if (element.firstFragment.nameOffset == null) { return CharacterLocation(1, 1); } return super.characterLocation; } @override - LibraryFragment get unitElement => element.library2.firstFragment; + LibraryFragment get unitElement => element.library.firstFragment; @override @@ -133,11 +133,11 @@ class Library extends ModelElement Map> get _prefixToLibrary { var prefixToLibrary = >{}; // It is possible to have overlapping prefixes. - for (var i in element.firstFragment.libraryImports2) { - var prefixName = i.prefix2?.element.name3; + for (var i in element.firstFragment.libraryImports) { + var prefixName = i.prefix?.element.name; if (prefixName == null) continue; // Ignore invalid imports. - var importedLibrary = i.importedLibrary2; + var importedLibrary = i.importedLibrary; if (importedLibrary != null) { prefixToLibrary .putIfAbsent(prefixName, () => {}) @@ -223,7 +223,7 @@ class Library extends ModelElement /// Whether a libary is anonymous, either because it has no library directive /// or it has a library directive without a name. - bool get isAnonymous => element.name3 == null || element.name3!.isEmpty; + bool get isAnonymous => element.name == null || element.name!.isEmpty; @override Kind get kind => Kind.library; @@ -238,14 +238,14 @@ class Library extends ModelElement // There are inconsistencies in library naming + URIs for the Dart // SDK libraries; we rationalize them here. if (source.uri.toString().contains('/')) { - return element.name3!.replaceFirst('dart.', 'dart:'); + return element.name!.replaceFirst('dart.', 'dart:'); } return source.uri.toString(); - } else if (element.name3!.isNotEmpty) { + } else if (element.name!.isNotEmpty) { // An empty name indicates that the library is "implicitly named" with the // empty string. That is, it either has no `library` directive, or it has // a `library` directive with no name. - return element.name3!; + return element.name!; } var baseName = pathContext.basename(source.fullName); if (baseName.endsWith('.dart')) { @@ -298,8 +298,8 @@ class Library extends ModelElement packageGraph.packageMetaProvider.fromElement(element, config.sdkDir); late final List classesAndExceptions = [ - ..._localElementsOfType(), - ..._exportedElementsOfType(), + ..._localElementsOfType(), + ..._exportedElementsOfType(), ]; @override @@ -314,8 +314,8 @@ class Library extends ModelElement @override late final List enums = [ - ..._localElementsOfType(), - ..._exportedElementsOfType(), + ..._localElementsOfType(), + ..._exportedElementsOfType(), ]; @override @@ -325,14 +325,14 @@ class Library extends ModelElement @override late final List extensions = [ - ..._localElementsOfType(), - ..._exportedElementsOfType(), + ..._localElementsOfType(), + ..._exportedElementsOfType(), ]; @override late final List extensionTypes = [ - ..._localElementsOfType(), - ..._exportedElementsOfType(), + ..._localElementsOfType(), + ..._exportedElementsOfType(), ]; @override @@ -343,8 +343,8 @@ class Library extends ModelElement @override late final List mixins = [ - ..._localElementsOfType(), - ..._exportedElementsOfType(), + ..._localElementsOfType(), + ..._exportedElementsOfType(), ]; @override @@ -355,20 +355,20 @@ class Library extends ModelElement @override late final List typedefs = [ - ..._localElementsOfType(), - ..._exportedElementsOfType(), + ..._localElementsOfType(), + ..._exportedElementsOfType(), ]; Iterable - _localElementsOfType() => + _localElementsOfType() => _localElements .whereType() .map((e) => packageGraph.getModelFor(e, this) as U); Iterable - _exportedElementsOfType() => + _exportedElementsOfType() => _exportedElements.whereType().map((e) { - var library = e.library2; + var library = e.library; if (library == null) { throw StateError("The library of '$e' is null!"); } @@ -380,31 +380,31 @@ class Library extends ModelElement Iterable get _localVariables { return { - ..._localElements.whereType(), + ..._localElements.whereType(), ..._localElements - .whereType() - .map((a) => a.variable3! as TopLevelVariableElement2), + .whereType() + .map((a) => a.variable as TopLevelVariableElement), }.map(_topLevelVariableFor); } Iterable get _exportedVariables { return { - ..._exportedElements.whereType(), + ..._exportedElements.whereType(), ..._exportedElements - .whereType() - .map((a) => a.variable3! as TopLevelVariableElement2), + .whereType() + .map((a) => a.variable as TopLevelVariableElement), }.map(_topLevelVariableFor); } TopLevelVariable _topLevelVariableFor( - TopLevelVariableElement2 topLevelVariableElement) { + TopLevelVariableElement topLevelVariableElement) { Accessor? getter; - var elementGetter = topLevelVariableElement.getter2; + var elementGetter = topLevelVariableElement.getter; if (elementGetter != null) { getter = packageGraph.getModelFor(elementGetter, this) as Accessor; } Accessor? setter; - var elementSetter = topLevelVariableElement.setter2; + var elementSetter = topLevelVariableElement.setter; if (elementSetter != null) { setter = packageGraph.getModelFor(elementSetter, this) as Accessor; } @@ -513,8 +513,8 @@ class Library extends ModelElement _ => null, }; return getModelForPropertyInducingElement( - member.element as TopLevelVariableElement2, - getModelForElement(member.element.library2!) as Library, + member.element as TopLevelVariableElement, + getModelForElement(member.element.library!) as Library, getter: getter, setter: setter, ).fullyQualifiedName; diff --git a/lib/src/model/method.dart b/lib/src/model/method.dart index 7a3186a6cf..662d938450 100644 --- a/lib/src/model/method.dart +++ b/lib/src/model/method.dart @@ -2,10 +2,8 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/source/line_info.dart'; -// ignore: implementation_imports -import 'package:analyzer/src/dart/element/member.dart' show ExecutableMember; import 'package:dartdoc/src/element_type.dart'; import 'package:dartdoc/src/model/attribute.dart'; import 'package:dartdoc/src/model/comment_referable.dart'; @@ -16,7 +14,7 @@ class Method extends ModelElement with ContainerMember, Inheritable, TypeParameters { @override - final MethodElement2 element; + final MethodElement element; Container? _enclosingContainer; @@ -32,7 +30,7 @@ class Method extends ModelElement Method.inherited(this.element, this._enclosingContainer, super.library, super.packageGraph, - {ExecutableMember? super.originalMember}) + {ExecutableElement? super.originalElement}) : _isInherited = true { _calcTypeParameters(); } @@ -42,13 +40,13 @@ class Method extends ModelElement this._enclosingContainer, super.library, super.packageGraph, { - ExecutableMember? super.originalMember, + ExecutableElement? super.originalElement, }) : _isInherited = false { _calcTypeParameters(); } void _calcTypeParameters() { - typeParameters = element.typeParameters2.map((f) { + typeParameters = element.typeParameters.map((f) { return getModelFor(f, library) as TypeParameter; }).toList(growable: false); } @@ -68,7 +66,7 @@ class Method extends ModelElement @override Container get enclosingElement => _enclosingContainer ??= - getModelFor(element.enclosingElement2!, library) as Container; + getModelFor(element.enclosingElement!, library) as Container; @override String get aboveSidebarPath => enclosingElement.sidebarPath; @@ -96,7 +94,7 @@ class Method extends ModelElement bool get isOperator => false; bool get isProvidedByExtension => - element.enclosingElement2 is ExtensionElement2; + element.enclosingElement is ExtensionElement; /// The [enclosingElement], which is expected to be an [Extension]. Extension get enclosingExtension => enclosingElement as Extension; @@ -113,8 +111,8 @@ class Method extends ModelElement Kind get kind => Kind.method; @override - ExecutableMember? get originalMember => - super.originalMember as ExecutableMember?; + ExecutableElement? get originalMember => + super.originalMember as ExecutableElement?; late final Callable modelType = getTypeFor((originalMember ?? element).type, library) as Callable; @@ -122,17 +120,17 @@ class Method extends ModelElement @override Method? get overriddenElement { if (_enclosingContainer is Extension || - element.enclosingElement2 is ExtensionElement2) { + element.enclosingElement is ExtensionElement) { return null; } - var parent = element.enclosingElement2 as InterfaceElement2; + var parent = element.enclosingElement as InterfaceElement; for (var t in parent.allSupertypes) { - Element2? e = t.getMethod2(element.name3 ?? ''); + Element? e = t.getMethod(element.name ?? ''); if (e != null) { assert( - e.enclosingElement2 is InterfaceElement2, - 'Expected "${e.enclosingElement2?.name3}" to be a InterfaceElement, ' - 'but was ${e.enclosingElement2.runtimeType}', + e.enclosingElement is InterfaceElement, + 'Expected "${e.enclosingElement?.name}" to be a InterfaceElement, ' + 'but was ${e.enclosingElement.runtimeType}', ); return getModelForElement(e) as Method?; } diff --git a/lib/src/model/mixin.dart b/lib/src/model/mixin.dart index 2d9227ebec..afca0d3a87 100644 --- a/lib/src/model/mixin.dart +++ b/lib/src/model/mixin.dart @@ -2,7 +2,7 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/dart/element/type.dart'; import 'package:dartdoc/src/element_type.dart'; import 'package:dartdoc/src/model/comment_referable.dart'; @@ -13,7 +13,7 @@ import 'package:meta/meta.dart'; class Mixin extends InheritingContainer { @override - final MixinElement2 element; + final MixinElement element; late final List superclassConstraints = [ ...element.superclassConstraints.where((e) => !e.isDartCoreObject).map( diff --git a/lib/src/model/model_element.dart b/lib/src/model/model_element.dart index 485ef28ece..5693cd6999 100644 --- a/lib/src/model/model_element.dart +++ b/lib/src/model/model_element.dart @@ -8,12 +8,9 @@ library; import 'dart:collection'; import 'dart:convert'; -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/dart/element/type.dart' show FunctionType; import 'package:analyzer/source/line_info.dart'; -// ignore: implementation_imports -import 'package:analyzer/src/dart/element/member.dart' - show ExecutableMember, FieldMember, Member, ParameterMember; import 'package:dartdoc/src/dartdoc_options.dart'; import 'package:dartdoc/src/model/annotation.dart'; import 'package:dartdoc/src/model/attribute.dart'; @@ -70,33 +67,33 @@ abstract class ModelElement DocumentationComment implements Comparable, Documentable { // TODO(jcollins-g): This really wants a "member that has a type" class. - final Member? _originalMember; + final Element? _originalMember; final Library _library; final PackageGraph _packageGraph; - ModelElement(this._library, this._packageGraph, {Member? originalMember}) - : _originalMember = originalMember; + ModelElement(this._library, this._packageGraph, {Element? originalElement}) + : _originalMember = originalElement; - /// Returns a [ModelElement] for an [Element2], which can be a + /// Returns a [ModelElement] for an [Element], which can be a /// property-inducing element or not. /// /// This constructor is used when the caller does not know the element's /// library, or whether it is property-inducing. - factory ModelElement.forElement(Element2 e, PackageGraph p) { - if (e is MultiplyDefinedElement2) { + factory ModelElement.forElement(Element e, PackageGraph p) { + if (e is MultiplyDefinedElement) { // The code-to-document has static errors. We can pick the first // conflicting element and move on. - e = e.conflictingElements2.first; + e = e.conflictingElements.first; } var library = p.findButDoNotCreateLibraryFor(e) ?? Library.sentinel; - if (e is PropertyInducingElement2) { - var elementGetter = e.getter2; + if (e is PropertyInducingElement) { + var elementGetter = e.getter; var getter = elementGetter != null ? ModelElement.for_(elementGetter, library, p) as Accessor : null; - var elementSetter = e.setter2; + var elementSetter = e.setter; var setter = elementSetter != null ? ModelElement.for_(elementSetter, library, p) as Accessor : null; @@ -113,7 +110,7 @@ abstract class ModelElement /// [ModelElement.for_]. Specify [enclosingContainer] if and only if this is /// to be an inherited or extended object. factory ModelElement.forPropertyInducingElement( - PropertyInducingElement2 e, + PropertyInducingElement e, Library library, PackageGraph packageGraph, { required Accessor? getter, @@ -122,9 +119,7 @@ abstract class ModelElement }) { // TODO(jcollins-g): Refactor object model to instantiate 'ModelMembers' // for members? - if (e is Member) { - e = e.baseElement as PropertyInducingElement2; - } + e = e.baseElement as PropertyInducingElement; // Return the cached ModelElement if it exists. var cachedModelElement = packageGraph.allConstructedModelElements[ @@ -134,11 +129,11 @@ abstract class ModelElement } ModelElement newModelElement; - if (e is TopLevelVariableElement2) { + if (e is TopLevelVariableElement) { assert(getter != null || setter != null); newModelElement = TopLevelVariable(e, library, packageGraph, getter, setter); - } else if (e is FieldElement2) { + } else if (e is FieldElement) { if (enclosingContainer is Extension) { newModelElement = Field(e, library, packageGraph, getter as ContainerAccessor?, setter as ContainerAccessor?); @@ -157,7 +152,7 @@ abstract class ModelElement var index = constantIndex.toIntValue()!; newModelElement = EnumField.forConstant(index, e, library, packageGraph, getter); - } else if (e.enclosingElement2 is ExtensionElement2) { + } else if (e.enclosingElement is ExtensionElement) { newModelElement = Field(e, library, packageGraph, getter as ContainerAccessor?, setter as ContainerAccessor?); } else { @@ -167,7 +162,7 @@ abstract class ModelElement } else { // Enum fields and extension getters can't be inherited, so this case is // simpler. - if (e.enclosingElement2 is ExtensionElement2) { + if (e.enclosingElement is ExtensionElement) { newModelElement = Field.providedByExtension( e, enclosingContainer, @@ -208,22 +203,22 @@ abstract class ModelElement // TODO(jcollins-g): Enforce construction restraint. // TODO(jcollins-g): Allow e to be null and drop extraneous null checks. factory ModelElement.for_( - Element2 e, Library library, PackageGraph packageGraph, + Element e, Library library, PackageGraph packageGraph, {Container? enclosingContainer}) { assert(library != Library.sentinel || e is FormalParameterElement || - e is TypeParameterElement2 || - e is GenericFunctionTypeElement2 || + e is TypeParameterElement || + e is GenericFunctionTypeElement || e.kind == ElementKind.DYNAMIC || e.kind == ElementKind.NEVER); - Member? originalMember; + Element? originalMember; // TODO(jcollins-g): Refactor object model to instantiate 'ModelMembers' // for members? - if (e is ExecutableMember) { + if (e is ExecutableElement) { originalMember = e; e = e.baseElement; - } else if (e is FieldMember) { + } else if (e is ExecutableElement) { originalMember = e; e = e.baseElement; } @@ -261,7 +256,7 @@ abstract class ModelElement /// Caches a newly-created [ModelElement] from [ModelElement.for_] or /// [ModelElement.forPropertyInducingElement]. static void _cacheNewModelElement( - Element2 e, ModelElement newModelElement, Library library, + Element e, ModelElement newModelElement, Library library, {Container? enclosingContainer}) { // TODO(jcollins-g): Reenable Parameter caching when dart-lang/sdk#30146 // is fixed? @@ -280,80 +275,80 @@ abstract class ModelElement } static ModelElement _constructFromElementDeclaration( - Element2 e, + Element e, Library library, PackageGraph packageGraph, { Container? enclosingContainer, - Member? originalMember, + Element? originalMember, }) { return switch (e) { - LibraryElement2() => packageGraph.findButDoNotCreateLibraryFor(e)!, - PrefixElement2() => Prefix(e, library, packageGraph), - EnumElement2() => Enum(e, library, packageGraph), - MixinElement2() => Mixin(e, library, packageGraph), - ClassElement2() => Class(e, library, packageGraph), - ExtensionElement2() => Extension(e, library, packageGraph), - ExtensionTypeElement2() => ExtensionType(e, library, packageGraph), + LibraryElement() => packageGraph.findButDoNotCreateLibraryFor(e)!, + PrefixElement() => Prefix(e, library, packageGraph), + EnumElement() => Enum(e, library, packageGraph), + MixinElement() => Mixin(e, library, packageGraph), + ClassElement() => Class(e, library, packageGraph), + ExtensionElement() => Extension(e, library, packageGraph), + ExtensionTypeElement() => ExtensionType(e, library, packageGraph), TopLevelFunctionElement() => ModelFunction(e, library, packageGraph), - ConstructorElement2() => Constructor(e, library, packageGraph), - GenericFunctionTypeElement2() => - ModelFunctionTypedef(e as FunctionTypedElement2, library, packageGraph), - TypeAliasElement2(aliasedType: FunctionType()) => + ConstructorElement() => Constructor(e, library, packageGraph), + GenericFunctionTypeElement() => + ModelFunctionTypedef(e as FunctionTypedElement, library, packageGraph), + TypeAliasElement(aliasedType: FunctionType()) => FunctionTypedef(e, library, packageGraph), - TypeAliasElement2() - when e.aliasedType.documentableElement2 is InterfaceElement2 => + TypeAliasElement() + when e.aliasedType.documentableElement2 is InterfaceElement => ClassTypedef(e, library, packageGraph), - TypeAliasElement2() => GeneralizedTypedef(e, library, packageGraph), - MethodElement2(isOperator: true) when enclosingContainer == null => + TypeAliasElement() => GeneralizedTypedef(e, library, packageGraph), + MethodElement(isOperator: true) when enclosingContainer == null => Operator(e, library, packageGraph), - MethodElement2(isOperator: true) - when e.enclosingElement2 is ExtensionElement2 => + MethodElement(isOperator: true) + when e.enclosingElement is ExtensionElement => Operator.providedByExtension( e, enclosingContainer, library, packageGraph), - MethodElement2(isOperator: true) => Operator.inherited( + MethodElement(isOperator: true) => Operator.inherited( e, enclosingContainer, library, packageGraph, originalMember: originalMember), - MethodElement2(isOperator: false) when enclosingContainer == null => + MethodElement(isOperator: false) when enclosingContainer == null => Method(e, library, packageGraph), - MethodElement2(isOperator: false) - when e.enclosingElement2 is ExtensionElement2 => + MethodElement(isOperator: false) + when e.enclosingElement is ExtensionElement => Method.providedByExtension( e, enclosingContainer, library, packageGraph), - MethodElement2(isOperator: false) => Method.inherited( + MethodElement(isOperator: false) => Method.inherited( e, enclosingContainer, library, packageGraph, - originalMember: originalMember as ExecutableMember?), + originalElement: originalMember as ExecutableElement?), FormalParameterElement() => Parameter(e, library, packageGraph, - originalMember: originalMember as ParameterMember?), - PropertyAccessorElement2() => _constructFromPropertyAccessor( + originalElement: originalMember as FormalParameterElement?), + PropertyAccessorElement() => _constructFromPropertyAccessor( e, library, packageGraph, enclosingContainer: enclosingContainer, originalMember: originalMember, ), - TypeParameterElement2() => TypeParameter(e, library, packageGraph), + TypeParameterElement() => TypeParameter(e, library, packageGraph), _ => throw UnimplementedError('Unknown type ${e.runtimeType}'), }; } - /// Constructs a [ModelElement] from a [PropertyAccessorElement2]. + /// Constructs a [ModelElement] from a [PropertyAccessorElement]. static ModelElement _constructFromPropertyAccessor( - PropertyAccessorElement2 e, + PropertyAccessorElement e, Library library, PackageGraph packageGraph, { required Container? enclosingContainer, - required Member? originalMember, + required Element? originalMember, }) { // Accessors can be part of a [Container], or a part of a [Library]. - if (e.enclosingElement2 is ExtensionElement2 || - e.enclosingElement2 is InterfaceElement2) { + if (e.enclosingElement is ExtensionElement || + e.enclosingElement is InterfaceElement) { if (enclosingContainer == null || enclosingContainer is Extension) { return ContainerAccessor(e, library, packageGraph, enclosingContainer); } return ContainerAccessor.inherited( e, library, packageGraph, enclosingContainer, - originalMember: originalMember as ExecutableMember?); + originalElement: originalMember as ExecutableElement?); } return Accessor(e, library, packageGraph); @@ -412,7 +407,7 @@ abstract class ModelElement return false; } - if (element case LibraryElement2(:var uri, :var firstFragment)) { + if (element case LibraryElement(:var uri, :var firstFragment)) { final url = uri.toString(); // Private Dart SDK libraries are not public. if (url.startsWith('dart:_') || @@ -428,12 +423,9 @@ abstract class ModelElement } } - if (element.nonSynthetic2 case Annotatable(:var metadata2)) { - if (metadata2.hasInternal) { - return false; - } + if (element.nonSynthetic.metadata.hasInternal) { + return false; } - return !element.hasPrivateName && !hasNodoc; }(); @@ -468,9 +460,9 @@ abstract class ModelElement /// Whether this is a function, or if it is an type alias to a function. bool get isCallable => - element is FunctionTypedElement2 || - (element is TypeAliasElement2 && - (element as TypeAliasElement2).aliasedType is FunctionType); + element is FunctionTypedElement || + (element is TypeAliasElement && + (element as TypeAliasElement).aliasedType is FunctionType); /// The canonical ModelElement for this ModelElement, or null if there isn't /// one. @@ -552,7 +544,7 @@ abstract class ModelElement documentationFrom.map((e) => e.documentationLocal).join('

')); @override - Element2 get element; + Element get element; @override String get location { @@ -590,13 +582,13 @@ abstract class ModelElement }(); @override - String get sourceFileName => element.library2!.firstFragment.source.fullName; + String get sourceFileName => element.library!.firstFragment.source.fullName; @override late final CharacterLocation? characterLocation = () { final lineInfo = unitElement.lineInfo; - final nameOffset = element.firstFragment.nameOffset2; + final nameOffset = element.firstFragment.nameOffset; assert(nameOffset != null && nameOffset >= 0, 'Invalid location data, $nameOffset, for element: $fullyQualifiedName'); if (nameOffset != null && nameOffset >= 0) { @@ -639,13 +631,13 @@ abstract class ModelElement bool get isDeprecated { // If element.metadata is empty, it might be because this is a property // where the metadata belongs to the individual getter/setter - if (element.annotations.isEmpty && element is PropertyInducingElement2) { - var pie = element as PropertyInducingElement2; + if (element.annotations.isEmpty && element is PropertyInducingElement) { + var pie = element as PropertyInducingElement; // The getter or the setter might be null – so the stored value may be // `true`, `false`, or `null` - var getterDeprecated = pie.getter2?.metadata2.hasDeprecated; - var setterDeprecated = pie.setter2?.metadata2.hasDeprecated; + var getterDeprecated = pie.getter?.metadata.hasDeprecated; + var setterDeprecated = pie.setter?.metadata.hasDeprecated; var deprecatedValues = [getterDeprecated, setterDeprecated].nonNulls; @@ -657,11 +649,7 @@ abstract class ModelElement return deprecatedValues.every((d) => d); } - if (element case Annotatable element) { - return element.metadata2.hasDeprecated; - } - - return false; + return element.metadata.hasDeprecated; } @override @@ -740,7 +728,7 @@ abstract class ModelElement @override String get oneLineDoc => elementDocumentation.asOneLiner; - Member? get originalMember => _originalMember; + Element? get originalMember => _originalMember; @override PackageGraph get packageGraph => _packageGraph; @@ -762,23 +750,23 @@ abstract class ModelElement } final List params; - if (e is TypeAliasElement2) { + if (e is TypeAliasElement) { final aliasedType = e.aliasedType; if (aliasedType is FunctionType) { params = aliasedType.formalParameters; } else { return const []; } - } else if (e is ExecutableElement2) { + } else if (e is ExecutableElement) { if (_originalMember != null) { - assert(_originalMember is ExecutableMember); - params = (_originalMember as ExecutableMember).formalParameters; + assert(_originalMember is ExecutableElement); + params = (_originalMember as ExecutableElement).formalParameters; } else { params = e.formalParameters; } - } else if (e is FunctionTypedElement2) { + } else if (e is FunctionTypedElement) { if (_originalMember != null) { - params = (_originalMember as FunctionTypedElement2).formalParameters; + params = (_originalMember as FunctionTypedElement).formalParameters; } else { params = e.formalParameters; } @@ -822,23 +810,19 @@ extension on ElementAnnotation { /// /// At the moment, `pragma` is the only invisible annotation. bool get isVisibleAnnotation { - if (element2 == null) return false; + if (element == null) return false; - if (element2 case ConstructorElement2(:var enclosingElement2)) { - return !(enclosingElement2.name3 == 'pragma' && - enclosingElement2.library2.name3 == 'dart.core'); + if (element case ConstructorElement(:var enclosingElement)) { + return !(enclosingElement.name == 'pragma' && + enclosingElement.library.name == 'dart.core'); } return true; } } -extension on Element2 { +extension on Element { List get annotations { - if (this case Annotatable self) { - return self.metadata2.annotations; - } else { - return const []; - } + return metadata.annotations; } } diff --git a/lib/src/model/model_function.dart b/lib/src/model/model_function.dart index 9963a8f42b..d910700209 100644 --- a/lib/src/model/model_function.dart +++ b/lib/src/model/model_function.dart @@ -2,7 +2,7 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:dartdoc/src/element_type.dart'; import 'package:dartdoc/src/model/comment_referable.dart'; import 'package:dartdoc/src/model/kind.dart'; @@ -16,7 +16,7 @@ class ModelFunction extends ModelFunctionTyped with Categorization { bool get isStatic => element.isStatic; @override - String get name => element.name3 ?? ''; + String get name => element.name ?? ''; @override TopLevelFunctionElement get element => @@ -25,22 +25,22 @@ class ModelFunction extends ModelFunctionTyped with Categorization { bool get isAsynchronous => element.firstFragment.isAsynchronous; } -/// A [ModelElement] for a [FunctionTypedElement2] that is part of an +/// A [ModelElement] for a [FunctionTypedElement] that is part of an /// explicit typedef. class ModelFunctionTypedef extends ModelFunctionTyped { ModelFunctionTypedef(super.element, super.library, super.packageGraph); @override - String get name => element.enclosingElement2!.name3!; + String get name => element.enclosingElement!.name!; } class ModelFunctionTyped extends ModelElement with TypeParameters { @override - final FunctionTypedElement2 element; + final FunctionTypedElement element; @override late final List typeParameters = [ - for (var p in element.typeParameters2) + for (var p in element.typeParameters) getModelFor(p, library) as TypeParameter, ]; diff --git a/lib/src/model/model_node.dart b/lib/src/model/model_node.dart index 05796fde17..09c23def01 100644 --- a/lib/src/model/model_node.dart +++ b/lib/src/model/model_node.dart @@ -7,13 +7,13 @@ import 'dart:convert'; import 'package:analyzer/dart/analysis/analysis_context.dart'; import 'package:analyzer/dart/analysis/results.dart'; import 'package:analyzer/dart/ast/ast.dart'; -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:meta/meta.dart'; /// Stripped down information derived from [AstNode] containing only information /// needed to resurrect the source code of [_element]. class ModelNode { - final Element2 _element; + final Element _element; final AnalysisContext _analysisContext; final int _sourceEnd; final int _sourceOffset; @@ -23,7 +23,7 @@ class ModelNode { factory ModelNode( AstNode? sourceNode, - Element2 element, + Element element, AnalysisContext analysisContext, { CommentData? commentData, }) { @@ -115,7 +115,7 @@ class CommentDocImportData { /// Comment reference data is not available on the analyzer's Element model, so /// we store it in instances of this class after resolving libraries. class CommentReferenceData { - final Element2 element; + final Element element; final String name; final int offset; final int length; diff --git a/lib/src/model/nameable.dart b/lib/src/model/nameable.dart index b3fa84fe07..e28ca3a787 100644 --- a/lib/src/model/nameable.dart +++ b/lib/src/model/nameable.dart @@ -2,7 +2,7 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/dart/element/type.dart' show DartType; import 'package:collection/collection.dart'; import 'package:dartdoc/src/element_type.dart'; @@ -54,7 +54,7 @@ mixin Nameable { /// /// A convenience method for [ModelElement.for_], see its documentation. ModelElement getModelFor( - Element2 element, + Element element, Library library, { Container? enclosingContainer, }) => @@ -69,7 +69,7 @@ mixin Nameable { /// /// A convenience method for [ModelElement.forElement], see its /// documentation. - ModelElement getModelForElement(Element2 element) => + ModelElement getModelForElement(Element element) => ModelElement.forElement(element, packageGraph); /// Returns the [ModelElement] for [element], instantiating it if needed. @@ -80,7 +80,7 @@ mixin Nameable { // immediately before calling this method, and I imagine could instead just // call `getModelFor`. ModelElement getModelForPropertyInducingElement( - PropertyInducingElement2 element, + PropertyInducingElement element, Library library, { required Accessor? getter, required Accessor? setter, diff --git a/lib/src/model/never.dart b/lib/src/model/never.dart index bc71ef7f6d..25b6813a3a 100644 --- a/lib/src/model/never.dart +++ b/lib/src/model/never.dart @@ -2,7 +2,7 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:dartdoc/src/model/comment_referable.dart'; import 'package:dartdoc/src/model/kind.dart'; import 'package:dartdoc/src/model/model.dart'; @@ -10,7 +10,7 @@ import 'package:dartdoc/src/model/model.dart'; class NeverType extends ModelElement with HasNoPage { @override - final Element2 element; + final Element element; NeverType(this.element, PackageGraph packageGraph) : super(Library.sentinel, packageGraph); diff --git a/lib/src/model/operator.dart b/lib/src/model/operator.dart index 708a8cdc1f..e835b46faf 100644 --- a/lib/src/model/operator.dart +++ b/lib/src/model/operator.dart @@ -2,9 +2,7 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -// ignore: implementation_imports -import 'package:analyzer/src/dart/element/member.dart' - show ExecutableMember, Member; +import 'package:analyzer/dart/element/element.dart'; import 'package:dartdoc/src/comment_references/parser.dart'; import 'package:dartdoc/src/model/model.dart'; @@ -16,17 +14,17 @@ class Operator extends Method { super.enclosingContainer, super.library, super.packageGraph, { - Member? originalMember, + Element? originalMember, }) : super.providedByExtension( - originalMember: originalMember as ExecutableMember?); + originalElement: originalMember as ExecutableElement?); Operator.inherited( super.element, super.enclosingContainer, super.library, super.packageGraph, { - Member? originalMember, - }) : super.inherited(originalMember: originalMember as ExecutableMember?); + Element? originalMember, + }) : super.inherited(originalElement: originalMember as ExecutableElement?); @override String get fullyQualifiedName => diff --git a/lib/src/model/package.dart b/lib/src/model/package.dart index 980dcfdf85..f4dec4758e 100644 --- a/lib/src/model/package.dart +++ b/lib/src/model/package.dart @@ -2,7 +2,7 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:dartdoc/src/dartdoc_options.dart'; import 'package:dartdoc/src/io_utils.dart'; import 'package:dartdoc/src/model/comment_referable.dart'; @@ -374,7 +374,7 @@ class Package extends LibraryContainer final PackageMeta packageMeta; @override - Element2? get element => null; + Element? get element => null; @override List get containerOrder => config.packageOrder; diff --git a/lib/src/model/package_builder.dart b/lib/src/model/package_builder.dart index 7a1e9a5e13..19d193813a 100644 --- a/lib/src/model/package_builder.dart +++ b/lib/src/model/package_builder.dart @@ -7,7 +7,7 @@ import 'dart:async'; import 'package:analyzer/dart/analysis/analysis_context.dart'; import 'package:analyzer/dart/analysis/results.dart'; import 'package:analyzer/dart/ast/ast.dart'; -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/file_system/file_system.dart'; // ignore: implementation_imports import 'package:analyzer/src/context/builder.dart' show EmbedderYamlLocator; @@ -215,10 +215,10 @@ class PubPackageBuilder implements PackageBuilder { /// Discovers and resolves libraries, invoking [addLibrary] with each result. /// /// Uses [processedLibraries] to prevent calling [addLibrary] more than once - /// with the same [LibraryElement2]. Adds each [LibraryElement2] found to + /// with the same [LibraryElement]. Adds each [LibraryElement] found to /// [processedLibraries]. Future _discoverLibraries(PackageGraph uninitializedPackageGraph, - Set processedLibraries, Set files) async { + Set processedLibraries, Set files) async { files = {...files}; // Discover Dart libraries in a loop. In each iteration of the loop, we take // a set of files (starting with the ones passed into the function), resolve @@ -435,7 +435,7 @@ class PubPackageBuilder implements PackageBuilder { var files = await _getFilesToDocument(); logInfo('Discovering libraries...'); - var foundLibraries = {}; + var foundLibraries = {}; await _discoverLibraries( uninitializedPackageGraph, foundLibraries, @@ -447,9 +447,9 @@ class PubPackageBuilder implements PackageBuilder { /// Throws an exception if any configured-to-be-included files were not found /// while gathering libraries. - void _checkForMissingIncludedFiles(Set foundLibraries) { + void _checkForMissingIncludedFiles(Set foundLibraries) { if (_config.include.isNotEmpty) { - var knownLibraryNames = foundLibraries.map((l) => l.name3); + var knownLibraryNames = foundLibraries.map((l) => l.name); var notFound = _config.include .difference(Set.of(knownLibraryNames)) .difference(_config.exclude); @@ -482,11 +482,11 @@ class PubPackageBuilder implements PackageBuilder { /// Contains the [ResolvedLibraryResult] and any additional information about /// the library. class DartDocResolvedLibrary { - final LibraryElement2 element; + final LibraryElement element; final List units; DartDocResolvedLibrary(ResolvedLibraryResult result) - : element = result.element2, + : element = result.element, units = result.units.map((unit) => unit.unit).toList(); } @@ -494,8 +494,8 @@ extension on Set { /// Adds [element]'s path and all of its part files' paths to `this`, and /// recursively adds the paths of all imported and exported libraries. /// - /// [element] must be a [LibraryElement2]. - void addFilesReferencedBy(LibraryElement2? element) { + /// [element] must be a [LibraryElement]. + void addFilesReferencedBy(LibraryElement? element) { if (element == null) return; for (var fragment in element.fragments) { @@ -509,13 +509,13 @@ extension on Set { var path = fragment.source.fullName; if (add(path)) { - var libraryImports = fragment.libraryImports2; + var libraryImports = fragment.libraryImports; for (var import in libraryImports) { - addFilesReferencedBy(import.importedLibrary2); + addFilesReferencedBy(import.importedLibrary); } - var libraryExports = fragment.libraryExports2; + var libraryExports = fragment.libraryExports; for (var export in libraryExports) { - addFilesReferencedBy(export.exportedLibrary2); + addFilesReferencedBy(export.exportedLibrary); } } } diff --git a/lib/src/model/package_graph.dart b/lib/src/model/package_graph.dart index 4c0de5897a..a329614c73 100644 --- a/lib/src/model/package_graph.dart +++ b/lib/src/model/package_graph.dart @@ -5,7 +5,7 @@ import 'dart:collection'; import 'package:analyzer/dart/analysis/analysis_context.dart'; -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/file_system/file_system.dart'; import 'package:analyzer/source/source.dart'; // ignore: implementation_imports @@ -114,8 +114,8 @@ class PackageGraph with CommentReferable, Nameable { } /// Whether [libraryElement] should be included in the libraries-to-document. - bool _shouldIncludeLibrary(LibraryElement2 libraryElement) => - config.include.isEmpty || config.include.contains(libraryElement.name3); + bool _shouldIncludeLibrary(LibraryElement libraryElement) => + config.include.isEmpty || config.include.contains(libraryElement.name); /// Call after all libraries are added. Future initializePackageGraph() async { @@ -200,7 +200,7 @@ class PackageGraph with CommentReferable, Nameable { // Many ModelElements have the same ModelNode; don't build/cache this data // more than once for them. - final Map _modelNodes = {}; + final Map _modelNodes = {}; /// The Object class declared in the Dart SDK's 'dart:core' library. late InheritingContainer objectClass; @@ -303,7 +303,7 @@ class PackageGraph with CommentReferable, Nameable { addModelNode(declaration); } - ModelNode? getModelNodeFor(Element2 element2) => _modelNodes[element2]; + ModelNode? getModelNodeFor(Element element2) => _modelNodes[element2]; /// It is safe to cache values derived from the [_implementers] table if this /// is true. @@ -390,7 +390,7 @@ class PackageGraph with CommentReferable, Nameable { late final PackageWarningCounter packageWarningCounter = PackageWarningCounter(this); - final Set<(Element2? element, PackageWarning packageWarning, String? message)> + final Set<(Element? element, PackageWarning packageWarning, String? message)> _warnAlreadySeen = {}; void warnOnElement(Warnable? warnable, PackageWarning kind, @@ -505,8 +505,8 @@ class PackageGraph with CommentReferable, Nameable { Iterable get _documentedPackages => packages.where((p) => p.documentedWhere != DocumentLocation.missing); - /// A mapping from a [LibraryElement2] to all of the [Library]s that export it. - Map> _libraryExports = {}; + /// A mapping from a [LibraryElement] to all of the [Library]s that export it. + Map> _libraryExports = {}; /// Marks [publicLibrary] as a library that exports [libraryElement] and all /// libraries that [libraryElement] transitively exports. @@ -514,8 +514,8 @@ class PackageGraph with CommentReferable, Nameable { /// [alreadyTagged] is used internall to prevent visiting in cycles. void _tagExportsFor( final Library publicLibrary, - final LibraryElement2 libraryElement, { - Set<(Library, LibraryElement2)>? alreadyTagged, + final LibraryElement libraryElement, { + Set<(Library, LibraryElement)>? alreadyTagged, }) { alreadyTagged ??= {}; var key = (publicLibrary, libraryElement); @@ -526,8 +526,8 @@ class PackageGraph with CommentReferable, Nameable { // Mark that `publicLibrary` exports `libraryElement`. _libraryExports.putIfAbsent(libraryElement, () => {}).add(publicLibrary); for (var fragment in libraryElement.fragments) { - for (var exportedElement in fragment.libraryExports2) { - var exportedLibrary = exportedElement.exportedLibrary2; + for (var exportedElement in fragment.libraryExports) { + var exportedLibrary = exportedElement.exportedLibrary; if (exportedLibrary != null) { // Follow the exports down; as `publicLibrary` exports `libraryElement`, // it also exports each `exportedLibrary`. @@ -540,9 +540,9 @@ class PackageGraph with CommentReferable, Nameable { int _previousSizeOfAllLibraries = 0; - /// A mapping from a [LibraryElement2] to all of the [Library]s that export it, + /// A mapping from a [LibraryElement] to all of the [Library]s that export it, /// which is created if it is not yet populated. - Map> get libraryExports { + Map> get libraryExports { // The map must be reset if we're still in the middle of adding libraries // (though this shouldn't happen). if (_allLibraries.keys.length != _previousSizeOfAllLibraries) { @@ -559,9 +559,9 @@ class PackageGraph with CommentReferable, Nameable { return _libraryExports; } - /// A mapping from a [LibraryElement2] to all of the [Library]s that export it, + /// A mapping from a [LibraryElement] to all of the [Library]s that export it, /// which is created if it is not yet populated. - Map> get libraryExports2 { + Map> get libraryExports2 { // The map must be reset if we're still in the middle of adding libraries // (though this shouldn't happen). if (_allLibraries.keys.length != _previousSizeOfAllLibraries) { @@ -699,8 +699,8 @@ class PackageGraph with CommentReferable, Nameable { 'Object'; bool isAnnotationVisible(Class class_) => - class_.element.name3 == 'pragma' && - class_.element.library2.name3 == 'dart.core'; + class_.element.name == 'pragma' && + class_.element.library.name == 'dart.core'; @override String toString() { @@ -745,9 +745,9 @@ class PackageGraph with CommentReferable, Nameable { library = preferredClass.canonicalLibrary; } // For elements defined in extensions, they are canonical. - var enclosingElement = e.enclosingElement2; - if (enclosingElement is ExtensionElement2) { - library ??= getModelForElement(enclosingElement.library2) as Library?; + var enclosingElement = e.enclosingElement; + if (enclosingElement is ExtensionElement) { + library ??= getModelForElement(enclosingElement.library) as Library?; // TODO(keertip): Find a better way to exclude members of extensions // when libraries are specified using the "--include" flag. if (library != null && library.isDocumented) { @@ -758,10 +758,10 @@ class PackageGraph with CommentReferable, Nameable { // guesswork with member elements. var declaration = e.baseElement; ModelElement? canonicalModelElement; - if (e is ConstructorElement2 || - e is MethodElement2 || - e is FieldElement2 || - e is PropertyAccessorElement2) { + if (e is ConstructorElement || + e is MethodElement || + e is FieldElement || + e is PropertyAccessorElement) { var declarationModelElement = getModelForElement(declaration); e = declarationModelElement.element; canonicalModelElement = _findCanonicalModelElementForAmbiguous( @@ -769,13 +769,13 @@ class PackageGraph with CommentReferable, Nameable { preferredClass: preferredClass as InheritingContainer?); } else { if (library != null) { - if (e case PropertyInducingElement2(:var getter2, :var setter2)) { - var getterElement = getter2 == null + if (e case PropertyInducingElement(:var getter, :var setter)) { + var getterElement = getter == null ? null - : getModelFor(getter2, library) as Accessor; - var setterElement = setter2 == null + : getModelFor(getter, library) as Accessor; + var setterElement = setter == null ? null - : getModelFor(setter2, library) as Accessor; + : getModelFor(setter, library) as Accessor; canonicalModelElement = getModelForPropertyInducingElement(e, library, getter: getterElement, setter: setterElement); } else { @@ -788,7 +788,7 @@ class PackageGraph with CommentReferable, Nameable { } } // Prefer fields and top-level variables. - if (e is PropertyAccessorElement2 && canonicalModelElement is Accessor) { + if (e is PropertyAccessorElement && canonicalModelElement is Accessor) { canonicalModelElement = canonicalModelElement.enclosingCombo; } return canonicalModelElement; @@ -871,9 +871,9 @@ class PackageGraph with CommentReferable, Nameable { /// This is used when we might need a Library object that isn't actually /// a documentation entry point (for elements that have no Library within the /// set of canonical Libraries). - Library? findButDoNotCreateLibraryFor(Element2 e) { + Library? findButDoNotCreateLibraryFor(Element e) { // This is just a cache to avoid creating lots of libraries over and over. - return _allLibraries[e.library2?.firstFragment.source.fullName]; + return _allLibraries[e.library?.firstFragment.source.fullName]; } /// Gathers all of the model elements found in all of the libraries of all @@ -982,7 +982,7 @@ class PackageGraph with CommentReferable, Nameable { } class ConstructedModelElementsKey { - final Element2 element; + final Element element; final Container? enclosingElement; ConstructedModelElementsKey(this.element, this.enclosingElement); @@ -999,7 +999,7 @@ class ConstructedModelElementsKey { } class InheritableElementsKey { - final Element2 element; + final Element element; final Library library; InheritableElementsKey(this.element, this.library); @@ -1020,7 +1020,7 @@ extension on Comment { for (var reference in references) { var commentReferable = reference.expression; String name; - Element2? staticElement; + Element? staticElement; if (commentReferable case PropertyAccessImpl(:var propertyName)) { var target = commentReferable.target; if (target is! PrefixedIdentifierImpl) continue; diff --git a/lib/src/model/parameter.dart b/lib/src/model/parameter.dart index 7b4d573281..c52e72109f 100644 --- a/lib/src/model/parameter.dart +++ b/lib/src/model/parameter.dart @@ -2,28 +2,24 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'package:analyzer/dart/element/element2.dart'; -// ignore: implementation_imports -import 'package:analyzer/src/dart/element/member.dart' show ParameterMember; +import 'package:analyzer/dart/element/element.dart'; import 'package:dartdoc/src/element_type.dart'; import 'package:dartdoc/src/model/comment_referable.dart'; import 'package:dartdoc/src/model/kind.dart'; import 'package:dartdoc/src/model/model.dart'; class Parameter extends ModelElement with HasNoPage { - @override final FormalParameterElement element; Parameter(this.element, super.library, super.packageGraph, - {ParameterMember? super.originalMember}); + {FormalParameterElement? super.originalElement}); - String? get defaultValue => - hasDefaultValue ? element.defaultValueCode : null; + String? get defaultValue => hasDefaultValue ? element.defaultValueCode : null; @override ModelElement? get enclosingElement { - final enclosingElement = element.enclosingElement2; + final enclosingElement = element.enclosingElement; return enclosingElement == null ? null : getModelFor(enclosingElement, library); @@ -39,7 +35,7 @@ class Parameter extends ModelElement with HasNoPage { @override String get htmlId { - final enclosingElement = element.enclosingElement2; + final enclosingElement = element.enclosingElement; if (enclosingElement == null) { return 'param-$name'; } @@ -47,13 +43,13 @@ class Parameter extends ModelElement with HasNoPage { if (enclosingName == 'new') { enclosingName = ''; } - if (enclosingElement is GenericFunctionTypeElement2) { + if (enclosingElement is GenericFunctionTypeElement) { // TODO(jcollins-g): Drop when GenericFunctionTypeElement populates // name. Also, allowing null here is allowed as a workaround for // dart-lang/sdk#32005. - for (Element2 e = enclosingElement; - e.enclosingElement2 != null; - e = e.enclosingElement2!) { + for (Element e = enclosingElement; + e.enclosingElement != null; + e = e.enclosingElement!) { enclosingName = e.lookupName; if (enclosingName != null && enclosingName.isNotEmpty) break; } @@ -101,8 +97,8 @@ class Parameter extends ModelElement with HasNoPage { } @override - ParameterMember? get originalMember => - super.originalMember as ParameterMember?; + FormalParameterElement? get originalMember => + super.originalMember as FormalParameterElement?; late final ElementType modelType = getTypeFor((originalMember ?? element).type, library); diff --git a/lib/src/model/prefix.dart b/lib/src/model/prefix.dart index c2faaa404b..0d19e3d4b9 100644 --- a/lib/src/model/prefix.dart +++ b/lib/src/model/prefix.dart @@ -2,22 +2,22 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/dart/element/scope.dart'; import 'package:dartdoc/src/model/comment_referable.dart'; import 'package:dartdoc/src/model/kind.dart'; import 'package:dartdoc/src/model/model.dart'; -/// Represents a [PrefixElement2] for dartdoc. +/// Represents a [PrefixElement] for dartdoc. /// /// Like [Parameter], it doesn't have doc pages, but participates in lookups. /// Forwards to its referenced library if referred to directly. class Prefix extends ModelElement with HasNoPage { @override - final PrefixElement2 element; + final PrefixElement element; /// [library] is the library the prefix is defined in, not the [Library] - /// referred to by the [PrefixElement2]. + /// referred to by the [PrefixElement]. Prefix(this.element, super.library, super.packageGraph); @override @@ -28,13 +28,13 @@ class Prefix extends ModelElement with HasNoPage { late final Library associatedLibrary = getModelForElement(_importedLibraryElement) as Library; - LibraryElement2 get _importedLibraryElement { + LibraryElement get _importedLibraryElement { final importLists = - library.element.fragments.map((fragment) => fragment.libraryImports2); + library.element.fragments.map((fragment) => fragment.libraryImports); var libraryImport = importLists .expand((import) => import) - .firstWhere((i) => i.prefix2?.element == element); - var importedLibrary = libraryImport.importedLibrary2; + .firstWhere((i) => i.prefix?.element == element); + var importedLibrary = libraryImport.importedLibrary; if (importedLibrary == null) { var message = 'Unexpected null LibraryElement2 for imported library at ' '${library.element.firstFragment.source.uri}, at offset ' diff --git a/lib/src/model/top_level_variable.dart b/lib/src/model/top_level_variable.dart index 1863455c6f..60e69de4be 100644 --- a/lib/src/model/top_level_variable.dart +++ b/lib/src/model/top_level_variable.dart @@ -2,7 +2,7 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:dartdoc/src/model/attribute.dart'; import 'package:dartdoc/src/model/comment_referable.dart'; import 'package:dartdoc/src/model/kind.dart'; @@ -13,7 +13,7 @@ class TopLevelVariable extends ModelElement with GetterSetterCombo, Categorization { @override - final TopLevelVariableElement2 element; + final TopLevelVariableElement element; @override final Accessor? getter; diff --git a/lib/src/model/type_parameter.dart b/lib/src/model/type_parameter.dart index 91a6cc9618..e320850e2c 100644 --- a/lib/src/model/type_parameter.dart +++ b/lib/src/model/type_parameter.dart @@ -2,7 +2,7 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:dartdoc/src/element_type.dart'; import 'package:dartdoc/src/model/comment_referable.dart'; import 'package:dartdoc/src/model/kind.dart'; @@ -11,13 +11,13 @@ import 'package:dartdoc/src/model/model.dart'; class TypeParameter extends ModelElement with HasNoPage { @override - final TypeParameterElement2 element; + final TypeParameterElement element; TypeParameter(this.element, super.library, super.packageGraph); @override ModelElement get enclosingElement => - getModelFor(element.enclosingElement2!, library); + getModelFor(element.enclosingElement!, library); /// [TypeParameter]s don't have documentation pages, and don't link to the /// element on which they are declared. @@ -39,13 +39,13 @@ class TypeParameter extends ModelElement with HasNoPage { @override String get name => element.bound != null - ? '${element.name3} extends ${boundType!.nameWithGenerics}' - : element.name3!; + ? '${element.name} extends ${boundType!.nameWithGenerics}' + : element.name!; @override String get linkedName => element.bound != null - ? '${element.name3} extends ${boundType!.linkedName}' - : element.name3!; + ? '${element.name} extends ${boundType!.linkedName}' + : element.name!; @override late final Map referenceChildren = () { @@ -58,7 +58,7 @@ class TypeParameter extends ModelElement with HasNoPage { Iterable get referenceParents => [enclosingElement]; @override - String get referenceName => element.name3!; + String get referenceName => element.name!; } /// A mixin for [ModelElement]s which have type parameters. diff --git a/lib/src/model/typedef.dart b/lib/src/model/typedef.dart index b1395a0e77..6750547ed0 100644 --- a/lib/src/model/typedef.dart +++ b/lib/src/model/typedef.dart @@ -2,7 +2,7 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/dart/element/type.dart'; import 'package:dartdoc/src/element_type.dart'; import 'package:dartdoc/src/model/comment_referable.dart'; @@ -13,7 +13,7 @@ abstract class Typedef extends ModelElement with TypeParameters, Categorization { @override - final TypeAliasElement2 element; + final TypeAliasElement element; Typedef(this.element, super.library, super.packageGraph); @@ -62,7 +62,7 @@ abstract class Typedef extends ModelElement Kind get kind => Kind.typedef; @override - List get typeParameters => element.typeParameters2 + List get typeParameters => element.typeParameters .map((f) => getModelFor(f, library) as TypeParameter) .toList(growable: false); @@ -130,7 +130,7 @@ class FunctionTypedef extends Typedef { 'Expected callable but: ${element.runtimeType} is FunctionTypedElement ' '|| (${element.runtimeType} is TypeAliasElement && ' '${element.aliasedType.runtimeType} is FunctionType) is not true for ' - '"${element.name3}" in "${element.library2}"'); + '"${element.name}" in "${element.library}"'); } @override diff --git a/lib/src/model_utils.dart b/lib/src/model_utils.dart index b772064bc9..e770369b7f 100644 --- a/lib/src/model_utils.dart +++ b/lib/src/model_utils.dart @@ -4,7 +4,7 @@ import 'dart:io' show Platform; -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:dartdoc/src/failure.dart'; import 'package:dartdoc/src/model/model.dart'; import 'package:glob/glob.dart'; @@ -52,9 +52,9 @@ Iterable filterHasCanonical( return maybeHasCanonicalItems.where((me) => me.canonicalModelElement != null); } -extension ElementExtension on Element2 { +extension ElementExtension on Element { bool get hasPrivateName { - final name = name3; + final name = this.name; if (name == null) return false; if (name.startsWith('_')) { @@ -65,8 +65,8 @@ extension ElementExtension on Element2 { // GenericFunctionTypeElements have the name we care about in the enclosing // element. - if (self is GenericFunctionTypeElement2) { - var enclosingElementName = self.enclosingElement2?.name3; + if (self is GenericFunctionTypeElement) { + var enclosingElementName = self.enclosingElement?.name; if (enclosingElementName != null && enclosingElementName.startsWith('_')) { return true; diff --git a/lib/src/mustachio/annotations.dart b/lib/src/mustachio/annotations.dart index f2857a31e2..dc00aae5d2 100644 --- a/lib/src/mustachio/annotations.dart +++ b/lib/src/mustachio/annotations.dart @@ -5,7 +5,7 @@ // See the Mustachio README at tool/mustachio/README.md for high-level // documentation. -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/dart/element/type.dart'; import 'package:meta/meta.dart'; @@ -89,5 +89,5 @@ class RendererSpec { this.standardHtmlTemplate, ); - InterfaceElement2 get contextElement => contextType.element3; + InterfaceElement get contextElement => contextType.element; } diff --git a/lib/src/package_meta.dart b/lib/src/package_meta.dart index 220e1d363c..65721e8f97 100644 --- a/lib/src/package_meta.dart +++ b/lib/src/package_meta.dart @@ -4,9 +4,10 @@ import 'dart:io' show Platform; -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/file_system/file_system.dart'; import 'package:analyzer/file_system/physical_file_system.dart'; + // ignore: implementation_imports import 'package:analyzer/src/generated/sdk.dart' show DartSdk; import 'package:dartdoc/src/failure.dart'; @@ -49,13 +50,13 @@ final PackageMetaProvider pubPackageMetaProvider = PackageMetaProvider( /// Sets the supported way of constructing [PackageMeta] objects. /// /// These objects can be constructed from a filename, a directory -/// or a [LibraryElement2]. We allow different dartdoc implementations to +/// or a [LibraryElement]. We allow different dartdoc implementations to /// provide their own [PackageMeta] types. /// /// By using a different provider, these implementations can control how /// [PackageMeta] objects are built. class PackageMetaProvider { - final PackageMeta? Function(LibraryElement2, String, ResourceProvider) + final PackageMeta? Function(LibraryElement, String, ResourceProvider) _fromElement; final PackageMeta? Function(String, ResourceProvider) _fromFilename; final PackageMeta? Function(Folder, ResourceProvider) _fromDir; @@ -75,9 +76,11 @@ class PackageMetaProvider { this.defaultSdk, }); - PackageMeta? fromElement(LibraryElement2 library, String s) => + PackageMeta? fromElement(LibraryElement library, String s) => _fromElement(library, s, resourceProvider); + PackageMeta? fromFilename(String s) => _fromFilename(s, resourceProvider); + PackageMeta? fromDir(Folder dir) => _fromDir(dir, resourceProvider); } @@ -183,7 +186,7 @@ abstract class PubPackageMeta extends PackageMeta { } /// Use this instead of [fromDir] where possible. - static PackageMeta? fromElement(LibraryElement2 libraryElement, String sdkDir, + static PackageMeta? fromElement(LibraryElement libraryElement, String sdkDir, ResourceProvider resourceProvider) { if (libraryElement.isInSdk) { return PubPackageMeta.fromDir( diff --git a/lib/src/type_utils.dart b/lib/src/type_utils.dart index ae706b3e2b..3b3d158cb2 100644 --- a/lib/src/type_utils.dart +++ b/lib/src/type_utils.dart @@ -2,7 +2,7 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/dart/element/type.dart'; extension DartTypeExtension on DartType { @@ -11,12 +11,12 @@ extension DartTypeExtension on DartType { /// /// For example, the documentable element of [DynamicType] is `null`, as there /// is no documentation for `dynamic` which we can link to. - TypeDefiningElement2? get documentableElement2 { + TypeDefiningElement? get documentableElement2 { final self = this; return switch (self) { - InterfaceType() => self.element3, - NeverType() => self.element3 as TypeDefiningElement2, - TypeParameterType() => self.element3, + InterfaceType() => self.element, + NeverType() => self.element as TypeDefiningElement, + TypeParameterType() => self.element, _ => null }; } diff --git a/lib/src/warnings.dart b/lib/src/warnings.dart index 2a02f55eaf..662e1516d0 100644 --- a/lib/src/warnings.dart +++ b/lib/src/warnings.dart @@ -5,7 +5,7 @@ import 'dart:io'; import 'dart:math' as math; -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/file_system/file_system.dart'; import 'package:collection/collection.dart'; import 'package:dartdoc/src/dartdoc_options.dart'; @@ -95,7 +95,7 @@ List> createPackageWarningOptions( /// Something that package warnings can be reported on. Optionally associated /// with an analyzer [element]. mixin Warnable implements CommentReferable, Documentable, Locatable { - Element2? get element; + Element? get element; void warn( PackageWarning kind, { @@ -462,7 +462,7 @@ class PackageWarningOptions { } class PackageWarningCounter { - final Map>> _countedWarnings = {}; + final Map>> _countedWarnings = {}; final _items = []; final _displayedWarningCounts = {}; final PackageGraph packageGraph; @@ -479,7 +479,7 @@ class PackageWarningCounter { /// An unmodifiable map view of all counted warnings related by their element, /// warning type, and message. - UnmodifiableMapView>> + UnmodifiableMapView>> get countedWarnings => UnmodifiableMapView(_countedWarnings); PackageWarningCounter(this.packageGraph); diff --git a/pubspec.yaml b/pubspec.yaml index cfd5e1333d..de9f17383e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -7,7 +7,7 @@ environment: sdk: ^3.6.0 dependencies: - analyzer: ^7.4.4 + analyzer: ^8.1.1 args: ^2.4.1 collection: ^1.17.0 crypto: ^3.0.3 @@ -23,6 +23,7 @@ dependencies: yaml: ^3.1.2 dev_dependencies: + analyzer_testing: ^0.1.2 async: ^2.11.0 dart_style: ^3.0.0 lints: ">=5.0.0 <7.0.0" diff --git a/test/classes_test.dart b/test/classes_test.dart index e22977d6ca..b86bbed31b 100644 --- a/test/classes_test.dart +++ b/test/classes_test.dart @@ -224,7 +224,7 @@ abstract class E = C with _D; var indexAssign = library.classes.named('E').inheritedOperators.named('operator []='); - expect(indexAssign.element.enclosingElement2!.name3, '_D'); + expect(indexAssign.element.enclosingElement!.name, '_D'); expect(indexAssign.canonicalEnclosingContainer!.name, 'E'); expect(indexAssign.canonicalModelElement!.enclosingElement!.name, 'E'); } diff --git a/test/end2end/model_test.dart b/test/end2end/model_test.dart index 482ae95815..4f6fe4034f 100644 --- a/test/end2end/model_test.dart +++ b/test/end2end/model_test.dart @@ -4,7 +4,7 @@ // ignore_for_file: non_constant_identifier_names -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/dart/element/type.dart'; import 'package:analyzer/source/line_info.dart'; import 'package:async/async.dart'; @@ -179,9 +179,9 @@ void main() async { 'Verify annotations and their type arguments render on type parameters ' 'for typedefs', skip: 'dart-lang/sdk#46064', () { - expect((F.aliasedType as FunctionType).typeParameters.first.metadata2, + expect((F.aliasedType as FunctionType).typeParameters.first.metadata, isNotEmpty); - expect((F.aliasedType as FunctionType).typeParameters.first.metadata2, + expect((F.aliasedType as FunctionType).typeParameters.first.metadata, isNotEmpty); // TODO(jcollins-g): add rendering verification once we have data from // analyzer. @@ -232,7 +232,7 @@ void main() async { void expectTypedefs(Typedef t, String modelTypeToString, Iterable genericParameters) { expect(t.modelType.toString(), equals(modelTypeToString)); - expect(t.element.typeParameters2.map((p) => p.toString()), + expect(t.element.typeParameters.map((p) => p.toString()), orderedEquals(genericParameters)); } @@ -913,21 +913,21 @@ void main() async { test('can import other libraries with unusual URIs', () { final importLists = fakeLibrary.element.fragments - .map((fragment) => fragment.libraryImports2); + .map((fragment) => fragment.libraryImports); final exportLists = fakeLibrary.element.fragments - .map((fragment) => fragment.libraryExports2); + .map((fragment) => fragment.libraryExports); final fakeLibraryImportedExported = { - for (final l in { + for (final l in { ...importLists .expand((imports) => imports) .map((import) => import.uri) .whereType() - .map((uri) => uri.library2), + .map((uri) => uri.library), ...exportLists .expand((exports) => exports) .map((export) => export.uri) .whereType() - .map((uri) => uri.library2) + .map((uri) => uri.library) }) packageGraph.getModelForElement(l) as Library }; @@ -3450,7 +3450,7 @@ String? topLevelFunction(int param1, bool param2, Cool coolBeans, test('inheritance of docs from SDK works for getter/setter combos', () { expect( ExtraSpecialListLength - .getter!.documentationFrom.first.element.library2!.name3, + .getter!.documentationFrom.first.element.library!.name, equals('dart.core')); expect(ExtraSpecialListLength.oneLineDoc == '', isFalse); }); diff --git a/test/html_generator_test.dart b/test/html_generator_test.dart index a2ca5722b0..8983c99e0b 100644 --- a/test/html_generator_test.dart +++ b/test/html_generator_test.dart @@ -4,6 +4,7 @@ import 'package:analyzer/file_system/file_system.dart'; import 'package:analyzer/file_system/memory_file_system.dart'; +import 'package:analyzer_testing/utilities/extensions/resource_provider.dart'; import 'package:dartdoc/src/dartdoc.dart' show DartdocFileWriter; import 'package:dartdoc/src/dartdoc_options.dart'; import 'package:dartdoc/src/generator/generator.dart'; @@ -69,8 +70,8 @@ void main() { HtmlGeneratorBackend(options, templates, writer, resourceProvider)); }); - File getConvertedFile(String filePath) => - resourceProvider.getFile(resourceProvider.convertPath(filePath)); + File getConvertedFile(String filePath) => resourceProvider.getFile( + ResourceProviderExtension(resourceProvider).convertPath(filePath)); tearDown(clearPackageMetaCache); @@ -126,11 +127,14 @@ const Matcher doesExist = _DoesExist(); class _DoesExist extends Matcher { const _DoesExist(); + @override bool matches(Object? item, Map matchState) => (item as Resource).exists; + @override Description describe(Description description) => description.add('exists'); + @override Description describeMismatch(Object? item, Description mismatchDescription, Map matchState, bool verbose) { diff --git a/test/libraries_test.dart b/test/libraries_test.dart index 25be790583..1364d3d54a 100644 --- a/test/libraries_test.dart +++ b/test/libraries_test.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/file_system/memory_file_system.dart'; +import 'package:analyzer_testing/utilities/extensions/resource_provider.dart'; import 'package:dartdoc/src/model/model.dart'; import 'package:test/test.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; @@ -130,8 +131,10 @@ A doc comment. packageMetaProvider, packageConfigProvider, ); - final daName = resourceProvider.convertPath('d/a'); - final eaName = resourceProvider.convertPath('e/a'); + final daName = + ResourceProviderExtension(resourceProvider).convertPath('d/a'); + final eaName = + ResourceProviderExtension(resourceProvider).convertPath('e/a'); final daLibrary = packageGraph.libraries.displayNamed(daName); final eaLibrary = packageGraph.libraries.displayNamed(eaName); final bLibrary = packageGraph.libraries.displayNamed('b'); @@ -257,7 +260,7 @@ class LibrariesInAdditionalPackageTest extends DartdocTestBase { return bootPackageFromFiles( [ d.file('lib/lib1.dart', "import 'package:two/lib2.dart';"), - d.dir(resourceProvider.convertPath('vendor/two'), [ + d.dir(ResourceProviderExtension(resourceProvider).convertPath('vendor/two'), [ d.file('pubspec.yaml', ''' name: two version: 0.0.1 diff --git a/test/mustachio/aot_compiler_builder_test.dart b/test/mustachio/aot_compiler_builder_test.dart index 2925bafa4e..883e6df3bb 100644 --- a/test/mustachio/aot_compiler_builder_test.dart +++ b/test/mustachio/aot_compiler_builder_test.dart @@ -108,8 +108,8 @@ class Baz {} await resolveGeneratedLibrary2(aotRenderersForHtmlPath); var fooRenderFunction = renderersLibrary.getTopLevelFunction('renderFoo')!; - expect(fooRenderFunction.typeParameters2, hasLength(1)); - var fBound = fooRenderFunction.typeParameters2.single.bound!; + expect(fooRenderFunction.typeParameters, hasLength(1)); + var fBound = fooRenderFunction.typeParameters.single.bound!; expect(fBound.getDisplayString(), equals('num')); }); diff --git a/test/mustachio/builder_test_base.dart b/test/mustachio/builder_test_base.dart index e77b584ad1..fd94c5a8f1 100644 --- a/test/mustachio/builder_test_base.dart +++ b/test/mustachio/builder_test_base.dart @@ -3,7 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/dart/analysis/results.dart'; -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/file_system/physical_file_system.dart'; import 'package:analyzer/src/dart/analysis/analysis_context_collection.dart' show AnalysisContextCollectionImpl; @@ -79,7 +79,7 @@ $sourceLibraryContent root: path.join(d.sandbox, 'foo_package')); } -Future resolveGeneratedLibrary2(String libraryPath) async { +Future resolveGeneratedLibrary2(String libraryPath) async { var contextCollection = AnalysisContextCollectionImpl( includedPaths: [d.sandbox], // TODO(jcollins-g): should we pass excluded directories here instead of @@ -96,5 +96,5 @@ Future resolveGeneratedLibrary2(String libraryPath) async { '${libraryResult.runtimeType}'); } - return libraryResult.element2; + return libraryResult.element; } diff --git a/test/mustachio/runtime_renderer_builder_test.dart b/test/mustachio/runtime_renderer_builder_test.dart index 197d317b4d..88832b03e2 100644 --- a/test/mustachio/runtime_renderer_builder_test.dart +++ b/test/mustachio/runtime_renderer_builder_test.dart @@ -8,7 +8,7 @@ library; import 'dart:io'; -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:test/test.dart'; import 'package:test_descriptor/test_descriptor.dart' as d; @@ -16,7 +16,7 @@ import 'builder_test_base.dart'; void main() { group('builds a renderer class', () { - late final LibraryElement2 renderersLibrary; + late final LibraryElement renderersLibrary; late final String generatedContent; // Builders are fairly expensive (about 4 seconds per `testBuilder` call), @@ -61,23 +61,23 @@ class Baz {} test('for a class which is extended by a rendered class', () { // No render function is necessary. expect(renderersLibrary.getTopLevelFunction('_render_FooBase'), isNull); - expect(renderersLibrary.getClass2('_Renderer_FooBase'), isNotNull); + expect(renderersLibrary.getClass('_Renderer_FooBase'), isNotNull); }); test('for a class which is mixed into a rendered class', () { // No render function is necessary. expect(renderersLibrary.getTopLevelFunction('_render_Mix'), isNull); - expect(renderersLibrary.getClass2('_Renderer_Mix'), isNotNull); + expect(renderersLibrary.getClass('_Renderer_Mix'), isNotNull); }); test('for a type found in a getter', () { expect(renderersLibrary.getTopLevelFunction('_render_Bar'), isNotNull); - expect(renderersLibrary.getClass2('_Renderer_Bar'), isNotNull); + expect(renderersLibrary.getClass('_Renderer_Bar'), isNotNull); }); test('for a generic, bounded type found in a getter', () { expect(renderersLibrary.getTopLevelFunction('_render_Baz'), isNotNull); - expect(renderersLibrary.getClass2('_Renderer_Baz'), isNotNull); + expect(renderersLibrary.getClass('_Renderer_Baz'), isNotNull); }); test('with a property map', () { @@ -194,8 +194,8 @@ import 'annotations.dart'; expect(renderersLibrary.getTopLevelFunction('renderFoo'), isNotNull); expect(renderersLibrary.getTopLevelFunction('renderBar'), isNotNull); - expect(renderersLibrary.getClass2('_Renderer_Foo'), isNotNull); - expect(renderersLibrary.getClass2('_Renderer_Bar'), isNotNull); + expect(renderersLibrary.getClass('_Renderer_Foo'), isNotNull); + expect(renderersLibrary.getClass('_Renderer_Bar'), isNotNull); }); group('builds a renderer class for a generic type', () { @@ -270,18 +270,18 @@ class Baz {} var renderersLibrary = await resolveGeneratedLibrary2(runtimeRenderersPath); var fooRenderFunction = renderersLibrary.getTopLevelFunction('renderFoo')!; - expect(fooRenderFunction.typeParameters2, hasLength(1)); - var fBound = fooRenderFunction.typeParameters2.single.bound!; + expect(fooRenderFunction.typeParameters, hasLength(1)); + var fBound = fooRenderFunction.typeParameters.single.bound!; expect(fBound.getDisplayString(), equals('num')); - var fooRendererClass = renderersLibrary.getClass2('_Renderer_Foo')!; - expect(fooRendererClass.typeParameters2, hasLength(1)); - var cBound = fooRenderFunction.typeParameters2.single.bound!; + var fooRendererClass = renderersLibrary.getClass('_Renderer_Foo')!; + expect(fooRendererClass.typeParameters, hasLength(1)); + var cBound = fooRenderFunction.typeParameters.single.bound!; expect(cBound.getDisplayString(), equals('num')); }); group('does not generate a renderer', () { - late final LibraryElement2 renderersLibrary; + late final LibraryElement renderersLibrary; setUpAll(() async { await testMustachioBuilder(''' @@ -304,27 +304,27 @@ class Method {} test('found in a static getter', () { expect(renderersLibrary.getTopLevelFunction('_render_Static'), isNull); - expect(renderersLibrary.getClass2('_Renderer_Static'), isNull); + expect(renderersLibrary.getClass('_Renderer_Static'), isNull); }); test('found in a private getter', () { expect(renderersLibrary.getTopLevelFunction('_render_Private'), isNull); - expect(renderersLibrary.getClass2('_Renderer_Private'), isNull); + expect(renderersLibrary.getClass('_Renderer_Private'), isNull); }); test('found in a setter', () { expect(renderersLibrary.getTopLevelFunction('_render_Setter'), isNull); - expect(renderersLibrary.getClass2('_Renderer_Setter'), isNull); + expect(renderersLibrary.getClass('_Renderer_Setter'), isNull); }); test('found in a method', () { expect(renderersLibrary.getTopLevelFunction('_render_Method'), isNull); - expect(renderersLibrary.getClass2('_Renderer_Method'), isNull); + expect(renderersLibrary.getClass('_Renderer_Method'), isNull); }); test('for types not @visibleToMustache', () { expect(renderersLibrary.getTopLevelFunction('_render_String'), isNull); - expect(renderersLibrary.getClass2('_Renderer_String'), isNull); + expect(renderersLibrary.getClass('_Renderer_String'), isNull); }); }); } diff --git a/test/mustachio/runtime_renderer_render_test.dart b/test/mustachio/runtime_renderer_render_test.dart index 8f2db89f54..a70c8e758c 100644 --- a/test/mustachio/runtime_renderer_render_test.dart +++ b/test/mustachio/runtime_renderer_render_test.dart @@ -7,6 +7,7 @@ library; import 'package:analyzer/file_system/file_system.dart'; import 'package:analyzer/file_system/memory_file_system.dart'; +import 'package:analyzer_testing/utilities/extensions/resource_provider.dart'; import 'package:dartdoc/src/mustachio/renderer_base.dart'; import 'package:path/path.dart' as path show Context; import 'package:test/test.dart'; @@ -19,8 +20,9 @@ void main() { late path.Context pathContext; - File getFile(String path) => resourceProvider - .getFile(pathContext.canonicalize(resourceProvider.convertPath(path))); + File getFile(String path) => + resourceProvider.getFile(pathContext.canonicalize( + ResourceProviderExtension(resourceProvider).convertPath(path))); setUp(() { resourceProvider = MemoryResourceProvider(); diff --git a/test/src/test_descriptor_utils.dart b/test/src/test_descriptor_utils.dart index 0a71b65c6a..db17fbb64b 100644 --- a/test/src/test_descriptor_utils.dart +++ b/test/src/test_descriptor_utils.dart @@ -5,6 +5,7 @@ import 'dart:convert'; import 'package:analyzer/file_system/memory_file_system.dart'; +import 'package:analyzer_testing/utilities/extensions/resource_provider.dart'; import 'package:test_descriptor/test_descriptor.dart' as d; import 'package:yaml/yaml.dart' as yaml; @@ -109,28 +110,11 @@ Future createPackage( } } -extension DescriptorExtensions on d.Descriptor { - /// Creates this [d.Descriptor] in the [MemoryResourceProvider]. - /// - /// For a [d.DirectoryDescriptor], the subtree will be created. For a - /// [d.FileDescriptor], the file contents will be written. - Future createInMemory(MemoryResourceProvider resourceProvider, - [String? parent]) { - var self = this; - return switch (self) { - d.DirectoryDescriptor() => self.createInMemory(resourceProvider, parent), - d.FileDescriptor() => self.createInMemory(resourceProvider, parent!), - _ => throw StateError( - '$runtimeType is not a DirectoryDescriptor, nor a FileDescriptor!') - }; - } -} - extension on d.DirectoryDescriptor { Future createInMemory(MemoryResourceProvider resourceProvider, [String? parent]) async { - parent ??= resourceProvider.pathContext - .canonicalize(resourceProvider.convertPath('/temp')); + parent ??= resourceProvider.pathContext.canonicalize( + ResourceProviderExtension(resourceProvider).convertPath('/temp')); resourceProvider.newFolder(parent).create(); var fullPath = resourceProvider.pathContext.join(parent, name); resourceProvider.newFolder(fullPath).create(); @@ -145,9 +129,26 @@ extension on d.FileDescriptor { Future createInMemory( MemoryResourceProvider resourceProvider, String parent) async { var content = await readAsBytes().transform(utf8.decoder).join(''); - var fullPath = resourceProvider + var fullPath = ResourceProviderExtension(resourceProvider) .convertPath(resourceProvider.pathContext.join(parent, name)); resourceProvider.newFile(fullPath, content); return fullPath; } } + +extension DescriptorExtensions on d.Descriptor { + /// Creates this [d.Descriptor] in the [MemoryResourceProvider]. + /// + /// For a [d.DirectoryDescriptor], the subtree will be created. For a + /// [d.FileDescriptor], the file contents will be written. + Future createInMemory(MemoryResourceProvider resourceProvider, + [String? parent]) { + var self = this; + return switch (self) { + d.DirectoryDescriptor() => self.createInMemory(resourceProvider, parent), + d.FileDescriptor() => self.createInMemory(resourceProvider, parent!), + _ => throw StateError( + '$runtimeType is not a DirectoryDescriptor, nor a FileDescriptor!') + }; + } +} diff --git a/test/src/utils.dart b/test/src/utils.dart index cbac578590..36ece44dbf 100644 --- a/test/src/utils.dart +++ b/test/src/utils.dart @@ -9,6 +9,7 @@ import 'package:analyzer/file_system/memory_file_system.dart'; import 'package:analyzer/file_system/physical_file_system.dart'; import 'package:analyzer/src/dart/sdk/sdk.dart'; import 'package:analyzer/src/test_utilities/mock_sdk.dart'; +import 'package:analyzer_testing/utilities/extensions/resource_provider.dart'; import 'package:dartdoc/src/dartdoc_options.dart'; import 'package:dartdoc/src/failure.dart'; import 'package:dartdoc/src/generator/generator.dart'; @@ -136,8 +137,8 @@ FakePackageConfigProvider getTestPackageConfigProvider(String sdkPath) { PackageMetaProvider get testPackageMetaProvider { var resourceProvider = MemoryResourceProvider(); final sdkRoot = resourceProvider.getFolder( - resourceProvider.pathContext - .canonicalize(resourceProvider.convertPath('/sdk')), + resourceProvider.pathContext.canonicalize( + ResourceProviderExtension(resourceProvider).convertPath('/sdk')), ); createMockSdk( resourceProvider: resourceProvider, @@ -190,8 +191,8 @@ version: 0.0.1 homepage: https://github.com/dart-lang '''; var pathContext = resourceProvider.pathContext; - var projectsFolder = resourceProvider.getFolder( - pathContext.canonicalize(resourceProvider.convertPath('/projects'))); + var projectsFolder = resourceProvider.getFolder(pathContext.canonicalize( + ResourceProviderExtension(resourceProvider).convertPath('/projects'))); var projectFolder = projectsFolder.getChildAssumingFolder(packageName) ..create(); var projectRoot = projectFolder.path; diff --git a/tool/mustachio/builder.dart b/tool/mustachio/builder.dart index c11080e398..96c87eb0c3 100644 --- a/tool/mustachio/builder.dart +++ b/tool/mustachio/builder.dart @@ -46,12 +46,12 @@ Future build( '${libraryResult.runtimeType}'); } - var library = libraryResult.element2; + var library = libraryResult.element; var typeProvider = library.typeProvider; var typeSystem = library.typeSystem; var rendererSpecs = {}; - for (var renderer in library.metadata2.annotations - .where((e) => e.element2!.enclosingElement2!.name3 == 'Renderer')) { + for (var renderer in library.metadata.annotations + .where((e) => e.element!.enclosingElement!.name == 'Renderer')) { rendererSpecs.add(_buildRendererSpec(renderer)); } diff --git a/tool/mustachio/codegen_aot_compiler.dart b/tool/mustachio/codegen_aot_compiler.dart index ab141ea626..4a80d81cf1 100644 --- a/tool/mustachio/codegen_aot_compiler.dart +++ b/tool/mustachio/codegen_aot_compiler.dart @@ -4,7 +4,7 @@ import 'dart:io'; -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/dart/element/type.dart'; import 'package:analyzer/dart/element/type_provider.dart'; import 'package:analyzer/dart/element/type_system.dart'; @@ -213,22 +213,22 @@ Future _redirectingMethod( var buffer = StringBuffer()..write('String ${compiler._rendererName}'); buffer.writeTypeParameters(compiler._usedContextStack - .expand((c) => c.type.element3.typeParameters2)); + .expand((c) => c.type.element.typeParameters)); buffer.write('('); for (var context in compiler._usedContextStack) { - var contextElement = context.type.element3; + var contextElement = context.type.element; buffer.write(contextElement.displayName); - if (contextElement.typeParameters2.isNotEmpty) { + if (contextElement.typeParameters.isNotEmpty) { buffer.write('<'); } - for (var tp in contextElement.typeParameters2) { - buffer.write(tp.name3); - if (tp != contextElement.typeParameters2.last) { + for (var tp in contextElement.typeParameters) { + buffer.write(tp.name); + if (tp != contextElement.typeParameters.last) { buffer.write(', '); } } - if (contextElement.typeParameters2.isNotEmpty) { + if (contextElement.typeParameters.isNotEmpty) { buffer.write('>'); } buffer.write(' ${context.name}'); @@ -368,7 +368,7 @@ class _AotCompiler { // this should be perfectly possible. var referenceElements = buffer.writeTypeParameters( - _usedContexts.expand((c) => c.type.element3.typeParameters2), + _usedContexts.expand((c) => c.type.element.typeParameters), ); for (var element in referenceElements) { referenceUris.add(_elementUri(element)); @@ -376,19 +376,19 @@ class _AotCompiler { buffer.write('('); for (var context in _usedContexts) { - var contextElement = context.type.element3; + var contextElement = context.type.element; referenceUris.add(_elementUri(contextElement)); buffer.write(contextElement.displayName); - if (contextElement.typeParameters2.isNotEmpty) { + if (contextElement.typeParameters.isNotEmpty) { buffer.write('<'); } - for (var tp in contextElement.typeParameters2) { - buffer.write(tp.name3); - if (tp != contextElement.typeParameters2.last) { + for (var tp in contextElement.typeParameters) { + buffer.write(tp.name); + if (tp != contextElement.typeParameters.last) { buffer.write(', '); } } - if (contextElement.typeParameters2.isNotEmpty) { + if (contextElement.typeParameters.isNotEmpty) { buffer.write('>'); } buffer.write(' ${context.name}'); @@ -406,8 +406,8 @@ class _AotCompiler { } /// Returns the URI of [element] for use in generated import directives. - String _elementUri(Element2 element) { - var libraryElement = element.library2!; + String _elementUri(Element element) { + var libraryElement = element.library!; var libraryUri = libraryElement.firstFragment.source.uri; if (libraryUri.scheme == 'file') { return path.relative(libraryUri.path, @@ -577,8 +577,8 @@ class _BlockCompiler { // for [Iterable], and then use [DartType.asInstanceOf] to ultimately // determine that the inner type of the loop is, for example, // `Future`. - var iterableElement = typeProvider.iterableElement2; - var iterableType = variableLookup.type.asInstanceOf2(iterableElement)!; + var iterableElement = typeProvider.iterableElement; + var iterableType = variableLookup.type.asInstanceOf(iterableElement)!; var innerContextType = iterableType.typeArguments.first as InterfaceType; var innerContext = _VariableLookup(innerContextType, newContextName); _contextStack.push(innerContext); @@ -636,7 +636,7 @@ class _BlockCompiler { late _VariableLookup context; GetterElement? getter; for (var c in _contextStack) { - getter = c.type.lookUpGetter3(primaryName, contextType.element3.library2); + getter = c.type.lookUpGetter(primaryName, contextType.element.library); if (getter != null) { context = c; _usedContextTypes.add(c); @@ -661,7 +661,7 @@ class _BlockCompiler { : '${context.name}.$primaryName'; var remainingNames = [...key.skip(1)]; for (var secondaryKey in remainingNames) { - getter = type.lookUpGetter3(secondaryKey, type.element3.library2); + getter = type.lookUpGetter(secondaryKey, type.element.library); if (getter == null) { throw MustachioResolutionException(node.keySpan.message( "Failed to resolve '$secondaryKey' on ${context.type} while " @@ -919,9 +919,9 @@ extension on List { } extension on StringBuffer { - Set writeTypeParameters( - Iterable typeParameters) { - var referencedElements = {}; + Set writeTypeParameters( + Iterable typeParameters) { + var referencedElements = {}; var hasTypeParameters = false; for (var typeParameter in typeParameters) { if (!hasTypeParameters) { @@ -933,11 +933,11 @@ extension on StringBuffer { var bound = typeParameter.bound; if (bound == null) { - write(typeParameter.name3); + write(typeParameter.name); } else { var boundElement = bound.documentableElement2!; referencedElements.add(boundElement); - write('${typeParameter.name3} extends ${boundElement.name3!}'); + write('${typeParameter.name} extends ${boundElement.name!}'); } } if (hasTypeParameters) { diff --git a/tool/mustachio/codegen_runtime_renderer.dart b/tool/mustachio/codegen_runtime_renderer.dart index c54d3751a1..7f6b395e5c 100644 --- a/tool/mustachio/codegen_runtime_renderer.dart +++ b/tool/mustachio/codegen_runtime_renderer.dart @@ -7,7 +7,7 @@ library; import 'dart:collection'; -import 'package:analyzer/dart/element/element2.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:analyzer/dart/element/type_provider.dart'; @@ -48,18 +48,18 @@ class RuntimeRenderersBuilder { /// Maps a type to the name of the render function which can render that type /// as a context type. - final _typeToRenderFunctionName = {}; + final _typeToRenderFunctionName = {}; /// Maps a type to the name of the renderer class which can render that type /// as a context type. - final _typeToRendererClassName = {}; + final _typeToRendererClassName = {}; final Uri _sourceUri; final TypeProvider _typeProvider; final TypeSystem _typeSystem; - final Set _allVisibleElements; + final Set _allVisibleElements; /// Whether renderer classes are public. This should only be true for testing. final bool _rendererClassesArePublic; @@ -104,7 +104,7 @@ import '${path.basename(_sourceUri.path)}'; '''); specs.forEach(_addTypesForRendererSpec); - var builtRenderers = {}; + var builtRenderers = {}; var elementsToProcess = _typesToProcess.toList() ..sort((a, b) => a._typeName.compareTo(b._typeName)); @@ -135,21 +135,21 @@ import '${path.basename(_sourceUri.path)}'; spec.contextType.getters.forEach(_addPropertyToProcess); for (var mixin in spec.contextElement.mixins) { - _addTypeToProcess(mixin.element3, + _addTypeToProcess(mixin.element, isFullRenderer: true, includeRenderFunction: false); } var superclass = spec.contextElement.supertype; while (superclass != null) { // Any type specified with a renderer spec (`@Renderer`) is full. - _addTypeToProcess(superclass.element3, + _addTypeToProcess(superclass.element, isFullRenderer: true, includeRenderFunction: false); - for (var mixin in superclass.element3.mixins) { - _addTypeToProcess(mixin.element3, + for (var mixin in superclass.element.mixins) { + _addTypeToProcess(mixin.element, isFullRenderer: true, includeRenderFunction: false); } superclass.getters.forEach(_addPropertyToProcess); - superclass = superclass.element3.supertype; + superclass = superclass.element.supertype; } } @@ -165,8 +165,7 @@ import '${path.basename(_sourceUri.path)}'; var type = _relevantTypeFrom(property.type.returnType); if (type == null) return; - var types = - _typesToProcess.where((rs) => rs._contextClass == type.element3); + var types = _typesToProcess.where((rs) => rs._contextClass == type.element); if (types.isNotEmpty) { assert(types.length == 1); if (types.first.includeRenderFunction) { @@ -178,10 +177,10 @@ import '${path.basename(_sourceUri.path)}'; _addTypeHierarchyToProcess( type, - isFullRenderer: _isVisibleToMustache(type.element3), + isFullRenderer: _isVisibleToMustache(type.element), // If [type.element] is not visible to mustache, then [renderSimple] will // be used, not [type.element]'s render function. - includeRenderFunction: _isVisibleToMustache(type.element3), + includeRenderFunction: _isVisibleToMustache(type.element), ); } @@ -198,8 +197,8 @@ import '${path.basename(_sourceUri.path)}'; InterfaceType? _relevantTypeFrom(DartType type) { if (type is InterfaceType) { if (_typeSystem.isAssignableTo(type, _typeProvider.iterableDynamicType)) { - var iterableElement = _typeProvider.iterableElement2; - var iterableType = type.asInstanceOf2(iterableElement)!; + var iterableElement = _typeProvider.iterableElement; + var iterableType = type.asInstanceOf(iterableElement)!; var innerType = iterableType.typeArguments.first; return _relevantTypeFrom(innerType); @@ -237,7 +236,7 @@ import '${path.basename(_sourceUri.path)}'; }) { while (type != null) { _addTypeToProcess( - type.element3, + type.element, isFullRenderer: isFullRenderer, includeRenderFunction: includeRenderFunction, ); @@ -248,18 +247,18 @@ import '${path.basename(_sourceUri.path)}'; _addPropertyToProcess(getter); } } - for (var mixin in type.element3.mixins) { + for (var mixin in type.element.mixins) { _addTypeHierarchyToProcess( mixin, isFullRenderer: isFullRenderer, includeRenderFunction: false, ); } - final typeElement = type.element3; - if (typeElement is MixinElement2) { + final typeElement = type.element; + if (typeElement is MixinElement) { for (var constraint in typeElement.superclassConstraints) { _addTypeToProcess( - constraint.element3, + constraint.element, isFullRenderer: isFullRenderer, includeRenderFunction: false, ); @@ -275,7 +274,7 @@ import '${path.basename(_sourceUri.path)}'; /// Adds [element] to the [_typesToProcess] queue, if it is not already there. void _addTypeToProcess( - InterfaceElement2 element, { + InterfaceElement element, { required bool isFullRenderer, required bool includeRenderFunction, }) { @@ -320,7 +319,7 @@ import '${path.basename(_sourceUri.path)}'; /// Returns whether [element] or any of its supertypes are "visible" to /// Mustache. - bool _isVisibleToMustache(InterfaceElement2 element) { + bool _isVisibleToMustache(InterfaceElement element) { if (_allVisibleElements.contains(element)) { return true; } @@ -328,7 +327,7 @@ import '${path.basename(_sourceUri.path)}'; if (supertype == null) { return false; } - return _isVisibleToMustache(supertype.element3); + return _isVisibleToMustache(supertype.element); } /// Builds render functions and the renderer class for [renderer]. @@ -425,7 +424,7 @@ class ${renderer._rendererClassName}${renderer._typeParametersString} _propertyMapCache.putIfAbsent($_contextTypeVariable, () => {'''); var supertype = contextClass.supertype; if (supertype != null) { - var superclassRendererName = _typeToRendererClassName[supertype.element3]; + var superclassRendererName = _typeToRendererClassName[supertype.element]; if (superclassRendererName != null) { var superMapName = '$superclassRendererName.propertyMap'; var generics = asGenerics([ @@ -442,7 +441,7 @@ class ${renderer._rendererClassName}${renderer._typeParametersString} // E. Similarly, `{...a, ...b, ...c}` will feature elements from `c` which // override `b` and `a`. for (var mixin in contextClass.mixins) { - var mixinRendererName = _typeToRendererClassName[mixin.element3]; + var mixinRendererName = _typeToRendererClassName[mixin.element]; if (mixinRendererName != null) { var mixinMapName = '$mixinRendererName.propertyMap'; var generics = asGenerics([ @@ -452,8 +451,8 @@ class ${renderer._rendererClassName}${renderer._typeParametersString} _buffer.writeln(' ...$mixinMapName$generics(),'); } } - for (var property in [...contextClass.getters2] - ..sort((a, b) => a.name3!.compareTo(b.name3!))) { + for (var property in [...contextClass.getters] + ..sort((a, b) => a.name!.compareTo(b.name!))) { var returnType = property.type.returnType; if (returnType is InterfaceType) { _writeProperty(renderer, property, returnType); @@ -475,17 +474,17 @@ class ${renderer._rendererClassName}${renderer._typeParametersString} if (property.shouldBeOmitted) return; - _buffer.writeln("'${property.name3}': Property("); + _buffer.writeln("'${property.name}': Property("); _buffer - .writeln('getValue: ($_contextTypeVariable c) => c.${property.name3},'); + .writeln('getValue: ($_contextTypeVariable c) => c.${property.name},'); - var getterName = property.name3; + var getterName = property.name; var getterTypeString = _typeSystem.promoteToNonNull(getterType).getDisplayString(); // Only add a `getProperties` function, which returns the property map for // [getterType], if [getterType] is a renderable type. - if (_typeToRendererClassName.containsKey(getterType.element3)) { - var rendererClassName = _typeToRendererClassName[getterType.element3]; + if (_typeToRendererClassName.containsKey(getterType.element)) { + var rendererClassName = _typeToRendererClassName[getterType.element]; _buffer.writeln(''' renderVariable: ($_contextTypeVariable c, @@ -523,8 +522,8 @@ renderVariable: } } else if (_typeSystem.isAssignableTo( getterType, _typeProvider.iterableDynamicType)) { - var iterableElement = _typeProvider.iterableElement2; - var iterableType = getterType.asInstanceOf2(iterableElement); + var iterableElement = _typeProvider.iterableElement; + var iterableType = getterType.asInstanceOf(iterableElement); // Not sure why [iterableType] would be null... unresolved type? if (iterableType != null) { var innerType = iterableType.typeArguments.first; @@ -538,10 +537,10 @@ renderVariable: var renderFunctionName = _typeToRenderFunctionName[innerTypeElement]; String renderCall; if (renderFunctionName == null) { - var typeName = innerTypeElement!.name3!; + var typeName = innerTypeElement!.name!; if (innerType is InterfaceType) { _invisibleGetters.putIfAbsent( - typeName, () => innerType.element3.allAccessorNames); + typeName, () => innerType.element.allAccessorNames); } renderCall = 'renderSimple(e, ast, r.template, sink, parent: r, ' "getters: _invisibleGetters['$typeName']!)"; @@ -566,12 +565,12 @@ renderIterable: // TODO(srawlins): Find a solution for this. We can track all of the // concrete types substituted for `E` for example. if (getterName is! TypeParameterType) { - var renderFunctionName = _typeToRenderFunctionName[getterType.element3]; + var renderFunctionName = _typeToRenderFunctionName[getterType.element]; String renderCall; if (renderFunctionName == null) { - var typeName = getterType.element3.name3!; + var typeName = getterType.element.name!; _invisibleGetters.putIfAbsent( - typeName, () => getterType.element3.allAccessorNames); + typeName, () => getterType.element.allAccessorNames); renderCall = 'renderSimple(c.$getterName, ast, r.template, sink, parent: r, ' "getters: _invisibleGetters['$typeName']!)"; @@ -618,7 +617,7 @@ renderValue: /// functions and the renderer class), and also to refer from one renderer to /// another. class _RendererInfo { - final InterfaceElement2 _contextClass; + final InterfaceElement _contextClass; /// The name of the top level render function. /// @@ -642,13 +641,13 @@ class _RendererInfo { String? publicApiFunctionName; factory _RendererInfo( - InterfaceElement2 contextClass, { + InterfaceElement contextClass, { bool public = false, bool isFullRenderer = true, bool includeRenderFunction = true, String? publicApiFunctionName, }) { - var typeBaseName = contextClass.name3; + var typeBaseName = contextClass.name; var renderFunctionName = '_render_$typeBaseName'; var rendererClassName = public ? 'Renderer_$typeBaseName' : '_Renderer_$typeBaseName'; @@ -672,7 +671,7 @@ class _RendererInfo { this.publicApiFunctionName, }); - String get _typeName => _contextClass.name3!; + String get _typeName => _contextClass.name!; final String _rendererClassName; @@ -703,13 +702,13 @@ class _RendererInfo { } } -extension on InterfaceElement2 { - /// A set of the names of all accessors on this [ClassElement2], including +extension on InterfaceElement { + /// A set of the names of all accessors on this [ClassElement], including /// supertypes. Set get allAccessorNames { return { - ...?supertype?.element3.allAccessorNames, - ...getters2.where((e) => e.isPublic && !e.isStatic).map((e) => e.name3!), + ...?supertype?.element.allAccessorNames, + ...getters.where((e) => e.isPublic && !e.isStatic).map((e) => e.name!), }; } } @@ -717,17 +716,15 @@ extension on InterfaceElement2 { extension on GetterElement { // Whether this getter should be omitted from the runtime renderer code. bool get shouldBeOmitted { - var variable = variable3; return isPrivate || isStatic || - metadata2.hasInternal || - metadata2.hasProtected || - metadata2.hasVisibleForOverriding || - metadata2.hasVisibleForTesting || - variable == null || - variable.metadata2.hasInternal || - variable.metadata2.hasProtected || - variable.metadata2.hasVisibleForOverriding || - variable.metadata2.hasVisibleForTesting; + metadata.hasInternal || + metadata.hasProtected || + metadata.hasVisibleForOverriding || + metadata.hasVisibleForTesting || + variable.metadata.hasInternal || + variable.metadata.hasProtected || + variable.metadata.hasVisibleForOverriding || + variable.metadata.hasVisibleForTesting; } } diff --git a/tool/mustachio/utilities.dart b/tool/mustachio/utilities.dart index bf86a11a20..24e57a89f9 100644 --- a/tool/mustachio/utilities.dart +++ b/tool/mustachio/utilities.dart @@ -2,26 +2,26 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'package:analyzer/dart/element/element2.dart'; +import 'package:analyzer/dart/element/element.dart'; -extension InterfaceElementExtension on InterfaceElement2 { +extension InterfaceElementExtension on InterfaceElement { /// The type parameters, if any, as a String, including bounds and the angled /// brackets, otherwise a blank String. String get typeParametersString { - return asGenerics(typeParameters2.map((tp) => tp.displayString2())); + return asGenerics(typeParameters.map((tp) => tp.displayString())); } /// The type variables, if any, as a String, including the angled brackets, /// otherwise a blank String. String get typeVariablesString { - return asGenerics(typeParameters2.map((tp) => tp.name3!)); + return asGenerics(typeParameters.map((tp) => tp.name!)); } /// Returns the type parameters, and [extra], as they appear in a list of /// generics. String typeParametersStringWith(String extra) { return asGenerics([ - ...typeParameters2.map((tp) => tp.displayString2()), + ...typeParameters.map((tp) => tp.displayString()), extra, ]); }