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

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

Issue 1579303002: fix generic function expressions, part of #25175 (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 11 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
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 3082 matching lines...) Expand 10 before | Expand all | Expand 10 after
3093 Block enclosingBlock = node.getAncestor((node) => node is Block); 3093 Block enclosingBlock = node.getAncestor((node) => node is Block);
3094 if (enclosingBlock != null) { 3094 if (enclosingBlock != null) {
3095 int functionEnd = node.offset + node.length; 3095 int functionEnd = node.offset + node.length;
3096 int blockEnd = enclosingBlock.offset + enclosingBlock.length; 3096 int blockEnd = enclosingBlock.offset + enclosingBlock.length;
3097 element.setVisibleRange(functionEnd, blockEnd - functionEnd - 1); 3097 element.setVisibleRange(functionEnd, blockEnd - functionEnd - 1);
3098 } 3098 }
3099 } 3099 }
3100 if (_functionTypesToFix != null) { 3100 if (_functionTypesToFix != null) {
3101 _functionTypesToFix.add(element); 3101 _functionTypesToFix.add(element);
3102 } else { 3102 } else {
3103 // TODO(jmesserly): for local functions inside of top-level generic
3104 // functions, this is probably not right. The function type should be set
3105 // after the enclosingElement is set, otherwise we won't be able to
3106 // substitute those type parameters later.
3107 element.type = new FunctionTypeImpl(element); 3103 element.type = new FunctionTypeImpl(element);
3108 } 3104 }
3109 element.hasImplicitReturnType = true; 3105 element.hasImplicitReturnType = true;
3110 _currentHolder.addFunction(element); 3106 _currentHolder.addFunction(element);
3111 node.element = element; 3107 node.element = element;
3112 holder.validate(); 3108 holder.validate();
3113 return null; 3109 return null;
3114 } 3110 }
3115 3111
3116 @override 3112 @override
(...skipping 10440 matching lines...) Expand 10 before | Expand all | Expand 10 after
13557 nonFields.add(node); 13553 nonFields.add(node);
13558 return null; 13554 return null;
13559 } 13555 }
13560 13556
13561 @override 13557 @override
13562 Object visitNode(AstNode node) => node.accept(TypeResolverVisitor_this); 13558 Object visitNode(AstNode node) => node.accept(TypeResolverVisitor_this);
13563 13559
13564 @override 13560 @override
13565 Object visitWithClause(WithClause node) => null; 13561 Object visitWithClause(WithClause node) => null;
13566 } 13562 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698