Prepare to publish analyzer 0.40.4 and _fe_analyzer_shared 11.0.0.

Change-Id: I19d92bf9f107a82826c2d6d41f18315f25afc411
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/165040
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/_fe_analyzer_shared/pubspec.yaml b/pkg/_fe_analyzer_shared/pubspec.yaml
index 944063b..7d75dfd 100644
--- a/pkg/_fe_analyzer_shared/pubspec.yaml
+++ b/pkg/_fe_analyzer_shared/pubspec.yaml
@@ -1,5 +1,5 @@
 name: _fe_analyzer_shared
-version: 10.0.0
+version: 11.0.0
 description: Logic that is shared between the front_end and analyzer packages.
 homepage: https://github.com/dart-lang/sdk/tree/master/pkg/_fe_analyzer_shared
 
diff --git a/pkg/analyzer/CHANGELOG.md b/pkg/analyzer/CHANGELOG.md
index 50be3ba..2a979a6 100644
--- a/pkg/analyzer/CHANGELOG.md
+++ b/pkg/analyzer/CHANGELOG.md
@@ -1,6 +1,8 @@
-## 0.40.4-dev
+## 0.40.4
 * Deprecated `IndexExpression.auxiliaryElements` and
   `SimpleIdentifier.auxiliaryElements`. Use `CompoundAssignmentExpression`.
+* Removed internal `getReadType`, use `CompoundAssignmentExpression`.
+* Bug fixes: 34699, 43524, 42990.
 
 ## 0.40.3
 * Updated the current language version to `2.11`.
diff --git a/pkg/analyzer/lib/src/task/strong/checker.dart b/pkg/analyzer/lib/src/task/strong/checker.dart
index e3049ad..a744bab4 100644
--- a/pkg/analyzer/lib/src/task/strong/checker.dart
+++ b/pkg/analyzer/lib/src/task/strong/checker.dart
@@ -22,50 +22,6 @@
 import 'package:analyzer/src/summary/idl.dart';
 import 'package:meta/meta.dart';
 
-@Deprecated('Use CompoundAssignmentExpression.readType')
-DartType getReadType(Expression expression) {
-  if (expression is IndexExpression) {
-    var aux = expression.auxiliaryElements;
-    if (aux != null) {
-      var staticElement = aux.staticElement;
-      return staticElement == null
-          ? DynamicTypeImpl.instance
-          : staticElement.returnType;
-    }
-    return expression.staticType;
-  }
-  {
-    Element setter;
-    if (expression is PrefixedIdentifier) {
-      setter = expression.staticElement;
-    } else if (expression is PropertyAccess) {
-      setter = expression.propertyName.staticElement;
-    } else if (expression is SimpleIdentifier) {
-      setter = expression.staticElement;
-    }
-    if (setter is PropertyAccessorElement && setter.isSetter) {
-      var getter = setter.variable.getter;
-      if (getter != null) {
-        var type = getter.returnType;
-        // The return type might be `null` when we perform top-level inference.
-        // The first stage collects references to build the dependency graph.
-        // TODO(scheglov) Maybe preliminary set types to `dynamic`?
-        return type ?? DynamicTypeImpl.instance;
-      }
-    }
-  }
-  if (expression is SimpleIdentifier) {
-    var aux = expression.auxiliaryElements;
-    if (aux != null) {
-      var staticElement = aux.staticElement;
-      return staticElement == null
-          ? DynamicTypeImpl.instance
-          : staticElement.returnType;
-    }
-  }
-  return expression.staticType;
-}
-
 DartType _elementType(Element e) {
   if (e == null) {
     // Malformed code - just return dynamic.
diff --git a/pkg/analyzer/pubspec.yaml b/pkg/analyzer/pubspec.yaml
index 9eea80c..6cb8815 100644
--- a/pkg/analyzer/pubspec.yaml
+++ b/pkg/analyzer/pubspec.yaml
@@ -1,5 +1,5 @@
 name: analyzer
-version: 0.40.4-dev
+version: 0.40.4
 description: This package provides a library that performs static analysis of Dart code.
 homepage: https://github.com/dart-lang/sdk/tree/master/pkg/analyzer
 
@@ -7,7 +7,7 @@
   sdk: '>=2.7.0 <3.0.0'
 
 dependencies:
-  _fe_analyzer_shared: ^10.0.0
+  _fe_analyzer_shared: ^11.0.0
   args: ^1.0.0
   charcode: ^1.1.2
   cli_util: '>=0.1.4 <0.3.0'