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

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

Issue 2809423003: Build GenericFunctionTypeElementImpl in both ApiElementBuilder and LocalElementBuilder. (Closed)
Patch Set: Created 3 years, 8 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/test/dart/element/builder_test.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 380 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 element.typeParameters = typeParameters; 391 element.typeParameters = typeParameters;
392 _createTypeParameterTypes(typeParameters); 392 _createTypeParameterTypes(typeParameters);
393 element.type = new FunctionTypeImpl.forTypedef(element); 393 element.type = new FunctionTypeImpl.forTypedef(element);
394 _currentHolder.addTypeAlias(element); 394 _currentHolder.addTypeAlias(element);
395 aliasName.staticElement = element; 395 aliasName.staticElement = element;
396 holder.validate(); 396 holder.validate();
397 return null; 397 return null;
398 } 398 }
399 399
400 @override 400 @override
401 Object visitGenericFunctionType(GenericFunctionType node) {
402 ElementHolder holder = new ElementHolder();
403 _visitChildren(holder, node);
404 GenericFunctionTypeElementImpl element =
405 new GenericFunctionTypeElementImpl.forOffset(node.beginToken.offset);
406 _setCodeRange(element, node);
407 element.parameters = holder.parameters;
408 element.typeParameters = holder.typeParameters;
409 FunctionType type = new FunctionTypeImpl(element);
410 element.type = type;
411 (node as GenericFunctionTypeImpl).type = type;
412 holder.validate();
413 return null;
414 }
415
416 @override
417 Object visitGenericTypeAlias(GenericTypeAlias node) { 401 Object visitGenericTypeAlias(GenericTypeAlias node) {
418 ElementHolder holder = new ElementHolder(); 402 ElementHolder holder = new ElementHolder();
419 _visitChildren(holder, node); 403 _visitChildren(holder, node);
420 SimpleIdentifier aliasName = node.name; 404 SimpleIdentifier aliasName = node.name;
421 List<TypeParameterElement> typeParameters = holder.typeParameters; 405 List<TypeParameterElement> typeParameters = holder.typeParameters;
422 GenericTypeAliasElementImpl element = 406 GenericTypeAliasElementImpl element =
423 new GenericTypeAliasElementImpl.forNode(aliasName); 407 new GenericTypeAliasElementImpl.forNode(aliasName);
424 _setCodeRange(element, node); 408 _setCodeRange(element, node);
425 element.metadata = _createElementAnnotations(node.metadata); 409 element.metadata = _createElementAnnotations(node.metadata);
426 setElementDocumentationComment(element, node); 410 setElementDocumentationComment(element, node);
(...skipping 1047 matching lines...) Expand 10 before | Expand all | Expand 10 after
1474 _visitChildren(holder, node); 1458 _visitChildren(holder, node);
1475 ParameterElementImpl element = node.element; 1459 ParameterElementImpl element = node.element;
1476 element.metadata = _createElementAnnotations(node.metadata); 1460 element.metadata = _createElementAnnotations(node.metadata);
1477 element.parameters = holder.parameters; 1461 element.parameters = holder.parameters;
1478 element.typeParameters = holder.typeParameters; 1462 element.typeParameters = holder.typeParameters;
1479 holder.validate(); 1463 holder.validate();
1480 return null; 1464 return null;
1481 } 1465 }
1482 1466
1483 @override 1467 @override
1468 Object visitGenericFunctionType(GenericFunctionType node) {
1469 ElementHolder holder = new ElementHolder();
1470 _visitChildren(holder, node);
1471 GenericFunctionTypeElementImpl element =
1472 new GenericFunctionTypeElementImpl.forOffset(node.beginToken.offset);
1473 _setCodeRange(element, node);
1474 element.parameters = holder.parameters;
1475 element.typeParameters = holder.typeParameters;
1476 FunctionType type = new FunctionTypeImpl(element);
1477 element.type = type;
1478 (node as GenericFunctionTypeImpl).type = type;
1479 holder.validate();
1480 return null;
1481 }
1482
1483 @override
1484 Object visitSimpleFormalParameter(SimpleFormalParameter node) { 1484 Object visitSimpleFormalParameter(SimpleFormalParameter node) {
1485 ParameterElementImpl parameter; 1485 ParameterElementImpl parameter;
1486 if (node.parent is! DefaultFormalParameter) { 1486 if (node.parent is! DefaultFormalParameter) {
1487 SimpleIdentifier parameterName = node.identifier; 1487 SimpleIdentifier parameterName = node.identifier;
1488 parameter = new ParameterElementImpl.forNode(parameterName); 1488 parameter = new ParameterElementImpl.forNode(parameterName);
1489 _setCodeRange(parameter, node); 1489 _setCodeRange(parameter, node);
1490 parameter.isConst = node.isConst; 1490 parameter.isConst = node.isConst;
1491 parameter.isExplicitlyCovariant = node.covariantKeyword != null; 1491 parameter.isExplicitlyCovariant = node.covariantKeyword != null;
1492 parameter.isFinal = node.isFinal; 1492 parameter.isFinal = node.isFinal;
1493 parameter.parameterKind = node.kind; 1493 parameter.parameterKind = node.kind;
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
1668 return null; 1668 return null;
1669 } 1669 }
1670 1670
1671 /** 1671 /**
1672 * Return the lexical identifiers associated with the given [identifiers]. 1672 * Return the lexical identifiers associated with the given [identifiers].
1673 */ 1673 */
1674 static List<String> _getIdentifiers(NodeList<SimpleIdentifier> identifiers) { 1674 static List<String> _getIdentifiers(NodeList<SimpleIdentifier> identifiers) {
1675 return identifiers.map((identifier) => identifier.name).toList(); 1675 return identifiers.map((identifier) => identifier.name).toList();
1676 } 1676 }
1677 } 1677 }
OLDNEW
« no previous file with comments | « no previous file | pkg/analyzer/test/dart/element/builder_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698