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

Unified Diff: sdk/lib/_internal/compiler/implementation/types/simple_types_inferrer.dart

Issue 19754002: Rewrite how we handle synthesized constructors in the compiler. This was motivated by issue https:/… (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 5 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: sdk/lib/_internal/compiler/implementation/types/simple_types_inferrer.dart
===================================================================
--- sdk/lib/_internal/compiler/implementation/types/simple_types_inferrer.dart (revision 25147)
+++ sdk/lib/_internal/compiler/implementation/types/simple_types_inferrer.dart (working copy)
@@ -571,9 +571,6 @@
}
bool analyze(Element element) {
- if (element.isForwardingConstructor) {
- element = element.targetConstructor;
- }
SimpleTypeInferrerVisitor visitor =
new SimpleTypeInferrerVisitor(element, compiler, this);
TypeMask returnType = visitor.run();
@@ -1439,10 +1436,16 @@
locals.update(element, parameterType);
}
});
- visitingInitializers = true;
- visit(node.initializers);
- visitingInitializers = false;
- visit(node.body);
+ if (analyzedElement.isSynthesized) {
+ // Use the enclosing class of the synthesized constructor as
+ // the location for the initialized fields.
+ node = analyzedElement.enclosingElement.parseNode(compiler);
+ } else {
+ visitingInitializers = true;
+ visit(node.initializers);
+ visitingInitializers = false;
+ visit(node.body);
+ }
ClassElement cls = analyzedElement.getEnclosingClass();
if (!isConstructorRedirect) {
// Iterate over all instance fields, and give a null type to

Powered by Google App Engine
This is Rietveld 408576698