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

Unified Diff: lib/compiler/implementation/dart_backend/renamer.dart

Issue 11345031: [dart2dart] Support cosntructor redirects. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: fix dart_backend_test Created 8 years, 2 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: lib/compiler/implementation/dart_backend/renamer.dart
diff --git a/lib/compiler/implementation/dart_backend/renamer.dart b/lib/compiler/implementation/dart_backend/renamer.dart
index fc1a477a5ef324b68d0548d148d158c390bb8ead..20dcc9a969c84c0457feb90ad9241cf1a2f15a6d 100644
--- a/lib/compiler/implementation/dart_backend/renamer.dart
+++ b/lib/compiler/implementation/dart_backend/renamer.dart
@@ -101,7 +101,7 @@ void renamePlaceholders(
return result.toString();
}
- String renameConstructor(Element element, DartType type,
+ String renameConstructor(Element element, ConstructorPlaceholder placeholder,
Function renameString, Function renameElement) {
assert(element.isConstructor());
StringBuffer result = new StringBuffer();
@@ -109,8 +109,10 @@ void renamePlaceholders(
if (element.name != element.getEnclosingClass().name) {
// Named constructor or factory. Is there a more reliable way to check
// this case?
- result.add(renameType(type, renameElement));
- result.add('.');
+ if (!placeholder.isRedirectingCall) {
Anton Muhin 2012/10/30 15:23:44 where do we add super./this. prefix?
Roman 2012/10/30 15:52:09 Nowhere, the placeholder is placed for selector no
+ result.add(renameType(placeholder.type, renameElement));
+ result.add('.');
+ }
String prefix = '${element.getEnclosingClass().name.slowToString()}\$';
if (!name.startsWith(prefix)) {
// Factory for another interface (that is going away soon).
@@ -120,7 +122,9 @@ void renamePlaceholders(
name = name.substring(prefix.length);
result.add(name);
} else {
- result.add(renameType(type, renameElement));
+ assert(!placeholder.isRedirectingCall);
+ if (placeholder.isRedirectingCall) throw 'e';
Anton Muhin 2012/10/30 15:23:44 isn't assert enough?
Roman 2012/10/30 15:52:09 Sorry, that was my way to ensure that placeholder
+ result.add(renameType(placeholder.type, renameElement));
}
return result.toString();
}
@@ -281,7 +285,7 @@ void renamePlaceholders(
(Element constructor, List<ConstructorPlaceholder> placeholders) {
for (ConstructorPlaceholder ph in placeholders) {
renames[ph.node] =
- renameConstructor(constructor, ph.type, rename, renameElement);
+ renameConstructor(constructor, ph, rename, renameElement);
}
});
sortedForEach(placeholderCollector.privateNodes, (library, nodes) {

Powered by Google App Engine
This is Rietveld 408576698