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

Unified Diff: pkg/analyzer/lib/src/dart/element/member.dart

Issue 1686283002: Ensure that element handles never refer to Member objects. (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 side-by-side diff with in-line comments
Download patch
Index: pkg/analyzer/lib/src/dart/element/member.dart
diff --git a/pkg/analyzer/lib/src/dart/element/member.dart b/pkg/analyzer/lib/src/dart/element/member.dart
index 57cbcb91d44f57a45c2e3d724f8121d0f185176d..f3689e4dbcbf4106dd7a01bf4194dad3c66b327c 100644
--- a/pkg/analyzer/lib/src/dart/element/member.dart
+++ b/pkg/analyzer/lib/src/dart/element/member.dart
@@ -128,8 +128,7 @@ class ConstructorMember extends ExecutableMember implements ConstructorElement {
* type parameters are known.
*/
abstract class ExecutableMember extends Member implements ExecutableElement {
- @override
- final FunctionType type;
+ FunctionType _type;
/**
* Initialize a newly created element to represent a callable element (like a
@@ -139,9 +138,7 @@ abstract class ExecutableMember extends Member implements ExecutableElement {
*/
ExecutableMember(ExecutableElement baseElement, InterfaceType definingType,
[FunctionType type])
scheglov 2016/02/10 21:53:26 [FunctionType this._type] maybe? OTOH this is not
Paul Berry 2016/02/10 22:10:59 Yeah, I had a similar thought. I think I'd prefer
- : type = type ??
- baseElement.type.substitute2(definingType.typeArguments,
- TypeParameterTypeImpl.getTypes(definingType.typeParameters)),
+ : _type = type,
super(baseElement, definingType);
@override
@@ -201,6 +198,12 @@ abstract class ExecutableMember extends Member implements ExecutableElement {
DartType get returnType => type.returnType;
@override
+ FunctionType get type {
+ return _type ??= baseElement.type.substitute2(definingType.typeArguments,
+ TypeParameterTypeImpl.getTypes(definingType.typeParameters));
+ }
+
+ @override
List<TypeParameterElement> get typeParameters => baseElement.typeParameters;
@override
« no previous file with comments | « no previous file | pkg/analyzer/lib/src/summary/resynthesize.dart » ('j') | pkg/analyzer/lib/src/summary/resynthesize.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698