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

Side by Side Diff: pkg/analyzer/lib/src/dart/element/builder.dart

Issue 1703133002: Set FunctionTypeImpl for synthetic VariableElement.initializer elements. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 10 months 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
« no previous file with comments | « no previous file | pkg/analyzer/lib/src/generated/resolver.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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.dart.element.builder; 5 library analyzer.src.dart.element.builder;
6 6
7 import 'dart:collection'; 7 import 'dart:collection';
8 8
9 import 'package:analyzer/dart/ast/ast.dart'; 9 import 'package:analyzer/dart/ast/ast.dart';
10 import 'package:analyzer/dart/ast/token.dart'; 10 import 'package:analyzer/dart/ast/token.dart';
(...skipping 544 matching lines...) Expand 10 before | Expand all | Expand 10 after
555 Expression defaultValue = node.defaultValue; 555 Expression defaultValue = node.defaultValue;
556 if (defaultValue != null) { 556 if (defaultValue != null) {
557 _visit(holder, defaultValue); 557 _visit(holder, defaultValue);
558 FunctionElementImpl initializer = 558 FunctionElementImpl initializer =
559 new FunctionElementImpl.forOffset(defaultValue.beginToken.offset); 559 new FunctionElementImpl.forOffset(defaultValue.beginToken.offset);
560 initializer.functions = holder.functions; 560 initializer.functions = holder.functions;
561 initializer.labels = holder.labels; 561 initializer.labels = holder.labels;
562 initializer.localVariables = holder.localVariables; 562 initializer.localVariables = holder.localVariables;
563 initializer.parameters = holder.parameters; 563 initializer.parameters = holder.parameters;
564 initializer.synthetic = true; 564 initializer.synthetic = true;
565 initializer.type = new FunctionTypeImpl(initializer);
565 parameter.initializer = initializer; 566 parameter.initializer = initializer;
566 parameter.defaultValueCode = defaultValue.toSource(); 567 parameter.defaultValueCode = defaultValue.toSource();
567 } 568 }
568 // visible range 569 // visible range
569 _setParameterVisibleRange(node, parameter); 570 _setParameterVisibleRange(node, parameter);
570 if (normalParameter is SimpleFormalParameter && 571 if (normalParameter is SimpleFormalParameter &&
571 normalParameter.type == null) { 572 normalParameter.type == null) {
572 parameter.hasImplicitType = true; 573 parameter.hasImplicitType = true;
573 } 574 }
574 _currentHolder.addParameter(parameter); 575 _currentHolder.addParameter(parameter);
(...skipping 579 matching lines...) Expand 10 before | Expand all | Expand 10 after
1154 element.final2 = isFinal; 1155 element.final2 = isFinal;
1155 if (hasInitializer) { 1156 if (hasInitializer) {
1156 ElementHolder holder = new ElementHolder(); 1157 ElementHolder holder = new ElementHolder();
1157 _visit(holder, node.initializer); 1158 _visit(holder, node.initializer);
1158 FunctionElementImpl initializer = 1159 FunctionElementImpl initializer =
1159 new FunctionElementImpl.forOffset(node.initializer.beginToken.offset); 1160 new FunctionElementImpl.forOffset(node.initializer.beginToken.offset);
1160 initializer.functions = holder.functions; 1161 initializer.functions = holder.functions;
1161 initializer.labels = holder.labels; 1162 initializer.labels = holder.labels;
1162 initializer.localVariables = holder.localVariables; 1163 initializer.localVariables = holder.localVariables;
1163 initializer.synthetic = true; 1164 initializer.synthetic = true;
1165 initializer.type = new FunctionTypeImpl(initializer);
1164 element.initializer = initializer; 1166 element.initializer = initializer;
1165 holder.validate(); 1167 holder.validate();
1166 } 1168 }
1167 if (element is PropertyInducingElementImpl) { 1169 if (element is PropertyInducingElementImpl) {
1168 PropertyAccessorElementImpl getter = 1170 PropertyAccessorElementImpl getter =
1169 new PropertyAccessorElementImpl.forVariable(element); 1171 new PropertyAccessorElementImpl.forVariable(element);
1170 getter.getter = true; 1172 getter.getter = true;
1171 if (element.hasImplicitType) { 1173 if (element.hasImplicitType) {
1172 getter.hasImplicitReturnType = true; 1174 getter.hasImplicitReturnType = true;
1173 } 1175 }
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
1395 return null; 1397 return null;
1396 } 1398 }
1397 1399
1398 /** 1400 /**
1399 * Return the lexical identifiers associated with the given [identifiers]. 1401 * Return the lexical identifiers associated with the given [identifiers].
1400 */ 1402 */
1401 static List<String> _getIdentifiers(NodeList<SimpleIdentifier> identifiers) { 1403 static List<String> _getIdentifiers(NodeList<SimpleIdentifier> identifiers) {
1402 return identifiers.map((identifier) => identifier.name).toList(); 1404 return identifiers.map((identifier) => identifier.name).toList();
1403 } 1405 }
1404 } 1406 }
OLDNEW
« no previous file with comments | « no previous file | pkg/analyzer/lib/src/generated/resolver.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698