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

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

Issue 2798663003: Fix generic function types in variable declarations (issue 29237) (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
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.element; 5 library analyzer.src.dart.element.element;
6 6
7 import 'dart:collection'; 7 import 'dart:collection';
8 import 'dart:math' show min; 8 import 'dart:math' show min;
9 9
10 import 'package:analyzer/dart/ast/ast.dart'; 10 import 'package:analyzer/dart/ast/ast.dart';
(...skipping 3129 matching lines...) Expand 10 before | Expand all | Expand 10 after
3140 } 3140 }
3141 } 3141 }
3142 3142
3143 /** 3143 /**
3144 * If the element associated with the given [type] is a generic function type 3144 * If the element associated with the given [type] is a generic function type
3145 * element, then make it a child of this element. Return the [type] as a 3145 * element, then make it a child of this element. Return the [type] as a
3146 * convenience. 3146 * convenience.
3147 */ 3147 */
3148 DartType _checkElementOfType(DartType type) { 3148 DartType _checkElementOfType(DartType type) {
3149 Element element = type?.element; 3149 Element element = type?.element;
3150 if (element is GenericFunctionTypeElementImpl) { 3150 if (element is GenericFunctionTypeElementImpl &&
3151 element.enclosingElement == null) {
3151 element.enclosingElement = this; 3152 element.enclosingElement = this;
3152 } 3153 }
3153 return type; 3154 return type;
3154 } 3155 }
3155 3156
3156 /** 3157 /**
3157 * If the given [type] is a generic function type, then the element associated 3158 * If the given [type] is a generic function type, then the element associated
3158 * with the type is implicitly a child of this element and should be visted by 3159 * with the type is implicitly a child of this element and should be visted by
3159 * the given [visitor]. 3160 * the given [visitor].
3160 */ 3161 */
(...skipping 4024 matching lines...) Expand 10 before | Expand all | Expand 10 after
7185 void set hasImplicitType(bool hasImplicitType) { 7186 void set hasImplicitType(bool hasImplicitType) {
7186 _assertNotResynthesized(_unlinkedVariable); 7187 _assertNotResynthesized(_unlinkedVariable);
7187 super.hasImplicitType = hasImplicitType; 7188 super.hasImplicitType = hasImplicitType;
7188 } 7189 }
7189 7190
7190 @override 7191 @override
7191 FunctionElement get initializer { 7192 FunctionElement get initializer {
7192 if (_unlinkedVariable != null && _initializer == null) { 7193 if (_unlinkedVariable != null && _initializer == null) {
7193 UnlinkedExecutable unlinkedInitializer = _unlinkedVariable.initializer; 7194 UnlinkedExecutable unlinkedInitializer = _unlinkedVariable.initializer;
7194 if (unlinkedInitializer != null) { 7195 if (unlinkedInitializer != null) {
7195 _initializer = new FunctionElementImpl.forSerialized( 7196 _initializer =
7196 unlinkedInitializer, this)..isSynthetic = true; 7197 new FunctionElementImpl.forSerialized(unlinkedInitializer, this)
7198 ..isSynthetic = true;
7197 } else { 7199 } else {
7198 return null; 7200 return null;
7199 } 7201 }
7200 } 7202 }
7201 return super.initializer; 7203 return super.initializer;
7202 } 7204 }
7203 7205
7204 /** 7206 /**
7205 * Set the function representing this variable's initializer to the given 7207 * Set the function representing this variable's initializer to the given
7206 * [function]. 7208 * [function].
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after
7477 void set inheritsCovariant(bool value) { 7479 void set inheritsCovariant(bool value) {
7478 _assertNotResynthesized(_unlinkedParam); 7480 _assertNotResynthesized(_unlinkedParam);
7479 _inheritsCovariant = value; 7481 _inheritsCovariant = value;
7480 } 7482 }
7481 7483
7482 @override 7484 @override
7483 FunctionElement get initializer { 7485 FunctionElement get initializer {
7484 if (_unlinkedParam != null && _initializer == null) { 7486 if (_unlinkedParam != null && _initializer == null) {
7485 UnlinkedExecutable unlinkedInitializer = _unlinkedParam.initializer; 7487 UnlinkedExecutable unlinkedInitializer = _unlinkedParam.initializer;
7486 if (unlinkedInitializer != null) { 7488 if (unlinkedInitializer != null) {
7487 _initializer = new FunctionElementImpl.forSerialized( 7489 _initializer =
7488 unlinkedInitializer, this)..isSynthetic = true; 7490 new FunctionElementImpl.forSerialized(unlinkedInitializer, this)
7491 ..isSynthetic = true;
7489 } else { 7492 } else {
7490 return null; 7493 return null;
7491 } 7494 }
7492 } 7495 }
7493 return super.initializer; 7496 return super.initializer;
7494 } 7497 }
7495 7498
7496 /** 7499 /**
7497 * Set the function representing this variable's initializer to the given 7500 * Set the function representing this variable's initializer to the given
7498 * [function]. 7501 * [function].
(...skipping 1592 matching lines...) Expand 10 before | Expand all | Expand 10 after
9091 9094
9092 @override 9095 @override
9093 void visitElement(Element element) { 9096 void visitElement(Element element) {
9094 int offset = element.nameOffset; 9097 int offset = element.nameOffset;
9095 if (offset != -1) { 9098 if (offset != -1) {
9096 map[offset] = element; 9099 map[offset] = element;
9097 } 9100 }
9098 super.visitElement(element); 9101 super.visitElement(element);
9099 } 9102 }
9100 } 9103 }
OLDNEW
« no previous file with comments | « no previous file | pkg/analyzer/lib/src/generated/resolver.dart » ('j') | pkg/analyzer/lib/src/generated/resolver.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698