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

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

Issue 2033293003: Compute ConstructorElement.returnType/type dynamically. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 6 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.testing.element_factory; 5 library analyzer.src.generated.testing.element_factory;
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 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 unit.librarySource = librarySource; 89 unit.librarySource = librarySource;
90 return unit; 90 return unit;
91 } 91 }
92 92
93 static ConstLocalVariableElementImpl constLocalVariableElement(String name) => 93 static ConstLocalVariableElementImpl constLocalVariableElement(String name) =>
94 new ConstLocalVariableElementImpl(name, 0); 94 new ConstLocalVariableElementImpl(name, 0);
95 95
96 static ConstructorElementImpl constructorElement( 96 static ConstructorElementImpl constructorElement(
97 ClassElement definingClass, String name, bool isConst, 97 ClassElement definingClass, String name, bool isConst,
98 [List<DartType> argumentTypes]) { 98 [List<DartType> argumentTypes]) {
99 DartType type = definingClass.type;
100 ConstructorElementImpl constructor = name == null 99 ConstructorElementImpl constructor = name == null
101 ? new ConstructorElementImpl("", -1) 100 ? new ConstructorElementImpl("", -1)
102 : new ConstructorElementImpl(name, 0); 101 : new ConstructorElementImpl(name, 0);
103 if (name != null) { 102 if (name != null) {
104 if (name.isEmpty) { 103 if (name.isEmpty) {
105 constructor.nameEnd = definingClass.name.length; 104 constructor.nameEnd = definingClass.name.length;
106 } else { 105 } else {
107 constructor.periodOffset = definingClass.name.length; 106 constructor.periodOffset = definingClass.name.length;
108 constructor.nameEnd = definingClass.name.length + name.length + 1; 107 constructor.nameEnd = definingClass.name.length + name.length + 1;
109 } 108 }
110 } 109 }
111 constructor.synthetic = name == null; 110 constructor.synthetic = name == null;
112 constructor.const2 = isConst; 111 constructor.const2 = isConst;
113 if (argumentTypes != null) { 112 if (argumentTypes != null) {
114 int count = argumentTypes.length; 113 int count = argumentTypes.length;
115 List<ParameterElement> parameters = new List<ParameterElement>(count); 114 List<ParameterElement> parameters = new List<ParameterElement>(count);
116 for (int i = 0; i < count; i++) { 115 for (int i = 0; i < count; i++) {
117 ParameterElementImpl parameter = new ParameterElementImpl("a$i", i); 116 ParameterElementImpl parameter = new ParameterElementImpl("a$i", i);
118 parameter.type = argumentTypes[i]; 117 parameter.type = argumentTypes[i];
119 parameter.parameterKind = ParameterKind.REQUIRED; 118 parameter.parameterKind = ParameterKind.REQUIRED;
120 parameters[i] = parameter; 119 parameters[i] = parameter;
121 } 120 }
122 constructor.parameters = parameters; 121 constructor.parameters = parameters;
123 } else { 122 } else {
124 constructor.parameters = <ParameterElement>[]; 123 constructor.parameters = <ParameterElement>[];
125 } 124 }
126 constructor.returnType = type;
127 constructor.enclosingElement = definingClass; 125 constructor.enclosingElement = definingClass;
128 constructor.type = new FunctionTypeImpl(constructor);
129 if (!constructor.isSynthetic) { 126 if (!constructor.isSynthetic) {
130 constructor.constantInitializers = <ConstructorInitializer>[]; 127 constructor.constantInitializers = <ConstructorInitializer>[];
131 } 128 }
132 return constructor; 129 return constructor;
133 } 130 }
134 131
135 static ConstructorElementImpl constructorElement2( 132 static ConstructorElementImpl constructorElement2(
136 ClassElement definingClass, String name, 133 ClassElement definingClass, String name,
137 [List<DartType> argumentTypes]) => 134 [List<DartType> argumentTypes]) =>
138 constructorElement(definingClass, name, false, argumentTypes); 135 constructorElement(definingClass, name, false, argumentTypes);
139 136
140 static EnumElementImpl enumElement( 137 static EnumElementImpl enumElement(TypeProvider typeProvider, String enumName,
141 TypeProvider typeProvider, String enumName,
142 [List<String> constantNames]) { 138 [List<String> constantNames]) {
143 // 139 //
144 // Build the enum. 140 // Build the enum.
145 // 141 //
146 EnumElementImpl enumElement = new EnumElementImpl(enumName, -1); 142 EnumElementImpl enumElement = new EnumElementImpl(enumName, -1);
147 InterfaceTypeImpl enumType = new InterfaceTypeImpl(enumElement); 143 InterfaceTypeImpl enumType = new InterfaceTypeImpl(enumElement);
148 enumElement.type = enumType; 144 enumElement.type = enumType;
149 // 145 //
150 // Populate the fields. 146 // Populate the fields.
151 // 147 //
(...skipping 469 matching lines...) Expand 10 before | Expand all | Expand 10 after
621 } 617 }
622 618
623 static TypeParameterElementImpl typeParameterWithType(String name, 619 static TypeParameterElementImpl typeParameterWithType(String name,
624 [DartType bound]) { 620 [DartType bound]) {
625 TypeParameterElementImpl typeParameter = typeParameterElement(name); 621 TypeParameterElementImpl typeParameter = typeParameterElement(name);
626 typeParameter.type = new TypeParameterTypeImpl(typeParameter); 622 typeParameter.type = new TypeParameterTypeImpl(typeParameter);
627 typeParameter.bound = bound; 623 typeParameter.bound = bound;
628 return typeParameter; 624 return typeParameter;
629 } 625 }
630 } 626 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698