[element model] migrate `avoid_positional_boolean_parameters`

Bug: https://github.com/dart-lang/linter/issues/5099
Change-Id: I8cd6c94e8ca053378117fd59ba44cd54587645d9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/390540
Commit-Queue: Phil Quitslund <pquitslund@google.com>
Auto-Submit: Phil Quitslund <pquitslund@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/linter/lib/src/rules/avoid_positional_boolean_parameters.dart b/pkg/linter/lib/src/rules/avoid_positional_boolean_parameters.dart
index 594c219..74e2afc 100644
--- a/pkg/linter/lib/src/rules/avoid_positional_boolean_parameters.dart
+++ b/pkg/linter/lib/src/rules/avoid_positional_boolean_parameters.dart
@@ -4,7 +4,7 @@
 
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/ast/visitor.dart';
-import 'package:analyzer/dart/element/element.dart';
+import 'package:analyzer/dart/element/element2.dart';
 import 'package:analyzer/dart/element/type.dart';
 import 'package:collection/collection.dart';
 
@@ -52,7 +52,7 @@
     // Don't lint augmentations.
     if (node.isAugmentation) return;
 
-    var declaredElement = node.declaredElement;
+    var declaredElement = node.declaredFragment?.element;
     if (declaredElement != null && !declaredElement.isPrivate) {
       checkParams(node.parameters.parameters);
     }
@@ -63,8 +63,8 @@
     // Don't lint augmentations.
     if (node.isAugmentation) return;
 
-    var declaredElement = node.declaredElement;
-    if (declaredElement != null && !declaredElement.isPrivate) {
+    var element = node.element;
+    if (element != null && !element.isPrivate) {
       checkParams(node.functionExpression.parameters?.parameters);
     }
   }
@@ -79,7 +79,7 @@
     // Don't lint augmentations.
     if (node.isAugmentation) return;
 
-    var declaredElement = node.declaredElement;
+    var declaredElement = node.declaredFragment?.element;
     if (declaredElement != null &&
         !node.isSetter &&
         !declaredElement.isPrivate &&
@@ -90,21 +90,28 @@
     }
   }
 
-  bool _isOverridingMember(Element member) {
-    var classElement = member.thisOrAncestorOfType<ClassElement>();
+  bool _isOverridingMember(Element2 member) {
+    var classElement = member.thisOrAncestorOfType2<ClassElement2>();
     if (classElement == null) return false;
 
-    var name = member.name;
+    var name = member.name3;
     if (name == null) return false;
 
-    var libraryUri = classElement.library.source.uri;
+    var libraryUri = classElement.library2.firstFragment.source.uri;
     return context.inheritanceManager
-            .getInherited(classElement.thisType, Name(libraryUri, name)) !=
+            .getInherited3(classElement.thisType, Name(libraryUri, name)) !=
         null;
   }
 
   static bool _isBoolean(FormalParameter node) {
-    var type = node.declaredElement?.type;
+    var type = node.declaredFragment?.element.type;
     return !node.isNamed && type is InterfaceType && type.isDartCoreBool;
   }
 }
+
+// TODO(pq): consider moving to `extensions.dart`
+extension on FunctionDeclaration {
+  ExecutableElement2? get element =>
+      // Check for a local function first.
+      declaredElement2 ?? declaredFragment?.element;
+}