Chromium Code Reviews| Index: pkg/analyzer/lib/src/dart/element/builder.dart |
| diff --git a/pkg/analyzer/lib/src/dart/element/builder.dart b/pkg/analyzer/lib/src/dart/element/builder.dart |
| index c450a8fa93f66478991563ac92442f6ff0937ca6..0a78aaa74cb3621b87d14d26d7663d3068faa28c 100644 |
| --- a/pkg/analyzer/lib/src/dart/element/builder.dart |
| +++ b/pkg/analyzer/lib/src/dart/element/builder.dart |
| @@ -1041,7 +1041,8 @@ class ElementBuilder extends ApiElementBuilder { |
| @override |
| Object visitDefaultFormalParameter(DefaultFormalParameter node) { |
| super.visitDefaultFormalParameter(node); |
| - _buildParameterInitializer(node.element as ParameterElementImpl, node); |
| + buildParameterInitializer( |
| + node.element as ParameterElementImpl, node.defaultValue); |
| return null; |
| } |
| @@ -1055,7 +1056,7 @@ class ElementBuilder extends ApiElementBuilder { |
| Object visitVariableDeclaration(VariableDeclaration node) { |
| super.visitVariableDeclaration(node); |
| VariableElementImpl element = node.element as VariableElementImpl; |
| - _buildVariableInitializer(element, node.initializer); |
| + buildVariableInitializer(element, node.initializer); |
| return null; |
| } |
| @@ -1271,7 +1272,7 @@ class LocalElementBuilder extends _BaseElementBuilder { |
| variableName.staticElement = element; |
| element.const3 = isConst; |
| element.final2 = isFinal; |
| - _buildVariableInitializer(element, initializerNode); |
| + buildVariableInitializer(element, initializerNode); |
| return null; |
| } |
| @@ -1314,6 +1315,43 @@ abstract class _BaseElementBuilder extends RecursiveAstVisitor<Object> { |
| _BaseElementBuilder(this._currentHolder, this._unitElement); |
| + void buildParameterInitializer( |
|
Paul Berry
2016/10/18 21:14:09
Since this method is now public, would you mind ad
scheglov
2016/10/18 21:18:38
Done.
|
| + ParameterElementImpl parameter, Expression defaultValue) { |
| + if (defaultValue != null) { |
| + ElementHolder holder = new ElementHolder(); |
| + _visit(holder, defaultValue); |
| + FunctionElementImpl initializer = |
| + new FunctionElementImpl.forOffset(defaultValue.beginToken.offset); |
| + initializer.hasImplicitReturnType = true; |
| + initializer.functions = holder.functions; |
| + initializer.labels = holder.labels; |
| + initializer.localVariables = holder.localVariables; |
| + initializer.parameters = holder.parameters; |
| + initializer.synthetic = true; |
| + initializer.type = new FunctionTypeImpl(initializer); |
| + parameter.initializer = initializer; |
| + parameter.defaultValueCode = defaultValue.toSource(); |
| + holder.validate(); |
| + } |
| + } |
| + |
| + void buildVariableInitializer(VariableElementImpl element, Expression node) { |
|
Paul Berry
2016/10/18 21:14:09
Same here.
|
| + if (node != null) { |
| + ElementHolder holder = new ElementHolder(); |
| + _visit(holder, node); |
| + FunctionElementImpl initializer = |
| + new FunctionElementImpl.forOffset(node.beginToken.offset); |
| + initializer.hasImplicitReturnType = true; |
| + initializer.functions = holder.functions; |
| + initializer.labels = holder.labels; |
| + initializer.localVariables = holder.localVariables; |
| + initializer.synthetic = true; |
| + initializer.type = new FunctionTypeImpl(initializer); |
| + element.initializer = initializer; |
| + holder.validate(); |
| + } |
| + } |
| + |
| @override |
| Object visitDefaultFormalParameter(DefaultFormalParameter node) { |
| NormalFormalParameter normalParameter = node.parameter; |
| @@ -1407,44 +1445,6 @@ abstract class _BaseElementBuilder extends RecursiveAstVisitor<Object> { |
| return super.visitTypeParameter(node); |
| } |
| - void _buildParameterInitializer( |
| - ParameterElementImpl parameter, DefaultFormalParameter node) { |
| - Expression defaultValue = node.defaultValue; |
| - if (defaultValue != null) { |
| - ElementHolder holder = new ElementHolder(); |
| - _visit(holder, defaultValue); |
| - FunctionElementImpl initializer = |
| - new FunctionElementImpl.forOffset(defaultValue.beginToken.offset); |
| - initializer.hasImplicitReturnType = true; |
| - initializer.functions = holder.functions; |
| - initializer.labels = holder.labels; |
| - initializer.localVariables = holder.localVariables; |
| - initializer.parameters = holder.parameters; |
| - initializer.synthetic = true; |
| - initializer.type = new FunctionTypeImpl(initializer); |
| - parameter.initializer = initializer; |
| - parameter.defaultValueCode = defaultValue.toSource(); |
| - holder.validate(); |
| - } |
| - } |
| - |
| - void _buildVariableInitializer(VariableElementImpl element, Expression node) { |
| - if (node != null) { |
| - ElementHolder holder = new ElementHolder(); |
| - _visit(holder, node); |
| - FunctionElementImpl initializer = |
| - new FunctionElementImpl.forOffset(node.beginToken.offset); |
| - initializer.hasImplicitReturnType = true; |
| - initializer.functions = holder.functions; |
| - initializer.labels = holder.labels; |
| - initializer.localVariables = holder.localVariables; |
| - initializer.synthetic = true; |
| - initializer.type = new FunctionTypeImpl(initializer); |
| - element.initializer = initializer; |
| - holder.validate(); |
| - } |
| - } |
| - |
| /** |
| * For each [Annotation] found in [annotations], create a new |
| * [ElementAnnotation] object and set the [Annotation] to point to it. |