Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(46)

Side by Side Diff: pkg/analyzer/lib/src/generated/resolver.dart

Issue 1531233002: Compute all default values of parameters. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library analyzer.src.generated.resolver; 5 library analyzer.src.generated.resolver;
6 6
7 import 'dart:collection'; 7 import 'dart:collection';
8 8
9 import 'package:analyzer/dart/element/element.dart'; 9 import 'package:analyzer/dart/element/element.dart';
10 import 'package:analyzer/dart/element/type.dart'; 10 import 'package:analyzer/dart/element/type.dart';
(...skipping 8660 matching lines...) Expand 10 before | Expand all | Expand 10 after
8671 8671
8672 @override 8672 @override
8673 Object visitDefaultFormalParameter(DefaultFormalParameter node) { 8673 Object visitDefaultFormalParameter(DefaultFormalParameter node) {
8674 InferenceContext.setType(node.defaultValue, node.parameter.element?.type); 8674 InferenceContext.setType(node.defaultValue, node.parameter.element?.type);
8675 super.visitDefaultFormalParameter(node); 8675 super.visitDefaultFormalParameter(node);
8676 ParameterElement element = node.element; 8676 ParameterElement element = node.element;
8677 if (element.initializer != null && node.defaultValue != null) { 8677 if (element.initializer != null && node.defaultValue != null) {
8678 (element.initializer as FunctionElementImpl).returnType = 8678 (element.initializer as FunctionElementImpl).returnType =
8679 node.defaultValue.staticType; 8679 node.defaultValue.staticType;
8680 } 8680 }
8681 FormalParameterList parent = node.parent; 8681 // Clone the ASTs for default formal parameters, so that we can use them
8682 AstNode grandparent = parent.parent; 8682 // during constant evaluation.
8683 if (grandparent is ConstructorDeclaration && 8683 (element as ConstVariableElement).constantInitializer =
8684 grandparent.constKeyword != null) { 8684 new ConstantAstCloner().cloneNode(node.defaultValue);
8685 // For const constructors, we need to clone the ASTs for default formal
8686 // parameters, so that we can use them during constant evaluation.
8687 ParameterElement element = node.element;
8688 (element as ConstVariableElement).constantInitializer =
8689 new ConstantAstCloner().cloneNode(node.defaultValue);
8690 }
8691 return null; 8685 return null;
8692 } 8686 }
8693 8687
8694 @override 8688 @override
8695 Object visitDoStatement(DoStatement node) { 8689 Object visitDoStatement(DoStatement node) {
8696 _overrideManager.enterScope(); 8690 _overrideManager.enterScope();
8697 try { 8691 try {
8698 super.visitDoStatement(node); 8692 super.visitDoStatement(node);
8699 } finally { 8693 } finally {
8700 _overrideManager.exitScope(); 8694 _overrideManager.exitScope();
(...skipping 4658 matching lines...) Expand 10 before | Expand all | Expand 10 after
13359 nonFields.add(node); 13353 nonFields.add(node);
13360 return null; 13354 return null;
13361 } 13355 }
13362 13356
13363 @override 13357 @override
13364 Object visitNode(AstNode node) => node.accept(TypeResolverVisitor_this); 13358 Object visitNode(AstNode node) => node.accept(TypeResolverVisitor_this);
13365 13359
13366 @override 13360 @override
13367 Object visitWithClause(WithClause node) => null; 13361 Object visitWithClause(WithClause node) => null;
13368 } 13362 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698