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

Side by Side Diff: pkg/compiler/lib/src/js_backend/custom_elements_analysis.dart

Issue 1121233002: Add ConstantExpression.evaluate. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Updated cf. comments Created 5 years, 7 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 part of js_backend; 5 part of js_backend;
6 6
7 /** 7 /**
8 * Support for Custom Elements. 8 * Support for Custom Elements.
9 * 9 *
10 * The support for custom elements the compiler builds a table that maps the 10 * The support for custom elements the compiler builds a table that maps the
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 constant, compiler.globalDependencies); 171 constant, compiler.globalDependencies);
172 backend.constants.addCompileTimeConstantForEmission(constant); 172 backend.constants.addCompileTimeConstantForEmission(constant);
173 } 173 }
174 } 174 }
175 activeClasses.addAll(newActiveClasses); 175 activeClasses.addAll(newActiveClasses);
176 instantiatedClasses.removeAll(newActiveClasses); 176 instantiatedClasses.removeAll(newActiveClasses);
177 } 177 }
178 178
179 TypeConstantValue makeTypeConstant(ClassElement element) { 179 TypeConstantValue makeTypeConstant(ClassElement element) {
180 DartType elementType = element.rawType; 180 DartType elementType = element.rawType;
181 DartType constantType = backend.typeImplementation.rawType; 181 return backend.constantSystem.createType(compiler, elementType);
182 return new TypeConstantValue(elementType, constantType);
183 } 182 }
184 183
185 List<Element> computeEscapingConstructors(ClassElement classElement) { 184 List<Element> computeEscapingConstructors(ClassElement classElement) {
186 List<Element> result = <Element>[]; 185 List<Element> result = <Element>[];
187 // Only classes that extend native classes have constructors in the table. 186 // Only classes that extend native classes have constructors in the table.
188 // We could refine this to classes that extend Element, but that would break 187 // We could refine this to classes that extend Element, but that would break
189 // the tests and there is no sane reason to subclass other native classes. 188 // the tests and there is no sane reason to subclass other native classes.
190 if (classElement.isNative) return result; 189 if (classElement.isNative) return result;
191 190
192 selectGenerativeConstructors(ClassElement enclosing, Element member) { 191 selectGenerativeConstructors(ClassElement enclosing, Element member) {
193 if (member.isGenerativeConstructor) { 192 if (member.isGenerativeConstructor) {
194 // Ignore constructors that cannot be called with zero arguments. 193 // Ignore constructors that cannot be called with zero arguments.
195 FunctionElement constructor = member; 194 FunctionElement constructor = member;
196 constructor.computeSignature(compiler); 195 constructor.computeSignature(compiler);
197 FunctionSignature parameters = constructor.functionSignature; 196 FunctionSignature parameters = constructor.functionSignature;
198 if (parameters.requiredParameterCount == 0) { 197 if (parameters.requiredParameterCount == 0) {
199 result.add(member); 198 result.add(member);
200 } 199 }
201 } 200 }
202 } 201 }
203 classElement.forEachMember(selectGenerativeConstructors, 202 classElement.forEachMember(selectGenerativeConstructors,
204 includeBackendMembers: false, 203 includeBackendMembers: false,
205 includeSuperAndInjectedMembers: false); 204 includeSuperAndInjectedMembers: false);
206 return result; 205 return result;
207 } 206 }
208 } 207 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698