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

Side by Side Diff: lib/compiler/implementation/dart_backend/backend.dart

Issue 11238035: Make isEmpty a getter. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Update status file with co19 issue number. Created 8 years, 1 month 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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 class ElementAst { 5 class ElementAst {
6 final Node ast; 6 final Node ast;
7 final TreeElements treeElements; 7 final TreeElements treeElements;
8 8
9 ElementAst(this.ast, this.treeElements); 9 ElementAst(this.ast, this.treeElements);
10 10
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 return true; 78 return true;
79 } 79 }
80 } 80 }
81 } 81 }
82 return false; 82 return false;
83 } 83 }
84 84
85 rewiteStatement(Statement statement) { 85 rewiteStatement(Statement statement) {
86 if (statement is Block) { 86 if (statement is Block) {
87 Link statements = statement.statements.nodes; 87 Link statements = statement.statements.nodes;
88 if (!statements.isEmpty() && statements.tail.isEmpty()) { 88 if (!statements.isEmpty && statements.tail.isEmpty) {
89 Statement single = statements.head; 89 Statement single = statements.head;
90 bool isDeclaration = 90 bool isDeclaration =
91 single is VariableDefinitions || single is FunctionDeclaration; 91 single is VariableDefinitions || single is FunctionDeclaration;
92 if (!isDeclaration) return single; 92 if (!isDeclaration) return single;
93 } 93 }
94 } 94 }
95 return statement; 95 return statement;
96 } 96 }
97 97
98 NodeList statements = block.statements; 98 NodeList statements = block.statements;
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 } 147 }
148 if (typeArgument == null) continue; 148 if (typeArgument == null) continue;
149 assert(typeArgument is TypeAnnotation); 149 assert(typeArgument is TypeAnnotation);
150 DartType argumentType = 150 DartType argumentType =
151 compiler.resolveTypeAnnotation(classElement, typeArgument); 151 compiler.resolveTypeAnnotation(classElement, typeArgument);
152 assert(argumentType != null); 152 assert(argumentType != null);
153 workQueue.add(argumentType); 153 workQueue.add(argumentType);
154 } 154 }
155 } 155 }
156 156
157 while (!workQueue.isEmpty()) { 157 while (!workQueue.isEmpty) {
158 DartType type = workQueue.removeLast(); 158 DartType type = workQueue.removeLast();
159 if (processedTypes.contains(type)) continue; 159 if (processedTypes.contains(type)) continue;
160 processedTypes.add(type); 160 processedTypes.add(type);
161 if (type is TypedefType) return false; 161 if (type is TypedefType) return false;
162 if (type is InterfaceType) { 162 if (type is InterfaceType) {
163 ClassElement element = type.element; 163 ClassElement element = type.element;
164 ClassNode node = element.parseNode(compiler); 164 ClassNode node = element.parseNode(compiler);
165 // Check class type args. 165 // Check class type args.
166 processTypeArguments(element, node.typeParameters); 166 processTypeArguments(element, node.typeParameters);
167 // Check superclass type args. 167 // Check superclass type args.
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
336 // but which originally had any constructor. That should prevent 336 // but which originally had any constructor. That should prevent
337 // those classes from being instantiable with default constructor. 337 // those classes from being instantiable with default constructor.
338 Identifier synthesizedIdentifier = 338 Identifier synthesizedIdentifier =
339 new Identifier(new StringToken(IDENTIFIER_INFO, '', -1)); 339 new Identifier(new StringToken(IDENTIFIER_INFO, '', -1));
340 340
341 NextClassElement: 341 NextClassElement:
342 for (ClassElement classElement in classMembers.getKeys()) { 342 for (ClassElement classElement in classMembers.getKeys()) {
343 for (Element member in classMembers[classElement]) { 343 for (Element member in classMembers[classElement]) {
344 if (member.isConstructor()) continue NextClassElement; 344 if (member.isConstructor()) continue NextClassElement;
345 } 345 }
346 if (classElement.constructors.isEmpty()) continue NextClassElement; 346 if (classElement.constructors.isEmpty) continue NextClassElement;
347 347
348 // TODO(antonm): check with AAR team if there is better approach. 348 // TODO(antonm): check with AAR team if there is better approach.
349 // As an idea: provide template as a Dart code---class C { C.name(); }--- 349 // As an idea: provide template as a Dart code---class C { C.name(); }---
350 // and then overwrite necessary parts. 350 // and then overwrite necessary parts.
351 SynthesizedConstructorElement constructor = 351 SynthesizedConstructorElement constructor =
352 new SynthesizedConstructorElement(classElement); 352 new SynthesizedConstructorElement(classElement);
353 constructor.type = new FunctionType( 353 constructor.type = new FunctionType(
354 compiler.types.voidType, const Link<DartType>(), 354 compiler.types.voidType, const Link<DartType>(),
355 constructor); 355 constructor);
356 constructor.cachedNode = new FunctionExpression( 356 constructor.cachedNode = new FunctionExpression(
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
536 } 536 }
537 537
538 compareElements(e0, e1) { 538 compareElements(e0, e1) {
539 int result = compareBy((e) => e.getLibrary().uri.toString())(e0, e1); 539 int result = compareBy((e) => e.getLibrary().uri.toString())(e0, e1);
540 if (result != 0) return result; 540 if (result != 0) return result;
541 return compareBy((e) => e.position().charOffset)(e0, e1); 541 return compareBy((e) => e.position().charOffset)(e0, e1);
542 } 542 }
543 543
544 List<Element> sortElements(Collection<Element> elements) => 544 List<Element> sortElements(Collection<Element> elements) =>
545 sorted(elements, compareElements); 545 sorted(elements, compareElements);
OLDNEW
« no previous file with comments | « lib/compiler/implementation/dart2js.dart ('k') | lib/compiler/implementation/dart_backend/utils.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698