| Index: pkg/analyzer/lib/src/generated/resolver.dart | 
| diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart | 
| index f286a87e59a93eec254f02988dc21557154a9cd5..15c41d6218239ff744561fdab9bb3775ba2e2c5d 100644 | 
| --- a/pkg/analyzer/lib/src/generated/resolver.dart | 
| +++ b/pkg/analyzer/lib/src/generated/resolver.dart | 
| @@ -4857,7 +4857,7 @@ class InferenceContext { | 
| * Place an info node into the error stream indicating that a | 
| * [type] has been inferred as the type of [node]. | 
| */ | 
| -  void recordInference(AstNode node, DartType type) { | 
| +  void recordInference(Expression node, DartType type) { | 
| if (!_inferenceHints) { | 
| return; | 
| } | 
| @@ -5653,11 +5653,6 @@ class ResolverVisitor extends ScopedVisitor { | 
| bool resolveOnlyCommentInFunctionBody = false; | 
|  | 
| /** | 
| -   * True if we're analyzing in strong mode. | 
| -   */ | 
| -  bool _strongMode; | 
| - | 
| -  /** | 
| * Body of the function currently being analyzed, if any. | 
| */ | 
| FunctionBody _currentFunctionBody; | 
| @@ -5688,7 +5683,6 @@ class ResolverVisitor extends ScopedVisitor { | 
| this.typeSystem = definingLibrary.context.typeSystem; | 
| bool strongModeHints = false; | 
| AnalysisOptions options = definingLibrary.context.analysisOptions; | 
| -    _strongMode = options.strongMode; | 
| if (options is AnalysisOptionsImpl) { | 
| strongModeHints = options.strongModeHints; | 
| } | 
| @@ -6379,24 +6373,13 @@ class ResolverVisitor extends ScopedVisitor { | 
|  | 
| @override | 
| Object visitDefaultFormalParameter(DefaultFormalParameter node) { | 
| -    ParameterElement element = node.element; | 
| -    InferenceContext.setType(node.defaultValue, element.type); | 
| +    InferenceContext.setType(node.defaultValue, node.parameter.element?.type); | 
| super.visitDefaultFormalParameter(node); | 
| +    ParameterElement element = node.element; | 
| if (element.initializer != null && node.defaultValue != null) { | 
| (element.initializer as FunctionElementImpl).returnType = | 
| node.defaultValue.staticType; | 
| } | 
| -    if (_strongMode && | 
| -        node.defaultValue != null && | 
| -        element.hasImplicitType && | 
| -        element is! FieldFormalParameterElement) { | 
| - | 
| -      DartType type = node.defaultValue.staticType; | 
| -      if (!type.isBottom && !type.isDynamic) { | 
| -        (element as ParameterElementImpl).type = type; | 
| -        inferenceContext.recordInference(node, type); | 
| -      } | 
| -    } | 
| // Clone the ASTs for default formal parameters, so that we can use them | 
| // during constant evaluation. | 
| if (!LibraryElementImpl.hasResolutionCapability( | 
|  |