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

Side by Side Diff: pkg/compiler/lib/src/elements/modelx.dart

Issue 1127363003: Insert the right checks for redirecting factories to deferred constructors. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: update to status-file rebase 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 library elements.modelx; 5 library elements.modelx;
6 6
7 import 'elements.dart'; 7 import 'elements.dart';
8 import '../constants/expressions.dart'; 8 import '../constants/expressions.dart';
9 import '../helpers/helpers.dart'; // Included for debug helpers. 9 import '../helpers/helpers.dart'; // Included for debug helpers.
10 import '../tree/tree.dart'; 10 import '../tree/tree.dart';
(...skipping 1942 matching lines...) Expand 10 before | Expand all | Expand 10 after
1953 implements ConstructorElement { 1953 implements ConstructorElement {
1954 bool isRedirectingGenerative = false; 1954 bool isRedirectingGenerative = false;
1955 1955
1956 ConstructorElementX(String name, 1956 ConstructorElementX(String name,
1957 ElementKind kind, 1957 ElementKind kind,
1958 Modifiers modifiers, 1958 Modifiers modifiers,
1959 Element enclosing) 1959 Element enclosing)
1960 : super(name, kind, modifiers, enclosing, false); 1960 : super(name, kind, modifiers, enclosing, false);
1961 1961
1962 FunctionElement immediateRedirectionTarget; 1962 FunctionElement immediateRedirectionTarget;
1963 PrefixElement redirectionDeferredPrefix;
1963 1964
1964 bool get isRedirectingFactory => immediateRedirectionTarget != null; 1965 bool get isRedirectingFactory => immediateRedirectionTarget != null;
1965 1966
1967 // TODO(johnniwinther): This should also return true for cyclic redirecting
1968 // generative constructors.
1969 bool get isCyclicRedirection => effectiveTarget.isRedirectingFactory;
1970
1966 /// This field is set by the post process queue when checking for cycles. 1971 /// This field is set by the post process queue when checking for cycles.
1967 ConstructorElement internalEffectiveTarget; 1972 ConstructorElement internalEffectiveTarget;
1968 DartType effectiveTargetType; 1973 DartType effectiveTargetType;
1969 1974
1970 void set effectiveTarget(ConstructorElement constructor) { 1975 void set effectiveTarget(ConstructorElement constructor) {
1971 assert(constructor != null && internalEffectiveTarget == null); 1976 assert(constructor != null && internalEffectiveTarget == null);
1972 internalEffectiveTarget = constructor; 1977 internalEffectiveTarget = constructor;
1973 } 1978 }
1974 1979
1975 ConstructorElement get effectiveTarget { 1980 ConstructorElement get effectiveTarget {
(...skipping 1149 matching lines...) Expand 10 before | Expand all | Expand 10 after
3125 AstElement get definingElement; 3130 AstElement get definingElement;
3126 3131
3127 bool get hasResolvedAst => definingElement.hasTreeElements; 3132 bool get hasResolvedAst => definingElement.hasTreeElements;
3128 3133
3129 ResolvedAst get resolvedAst { 3134 ResolvedAst get resolvedAst {
3130 return new ResolvedAst(declaration, 3135 return new ResolvedAst(declaration,
3131 definingElement.node, definingElement.treeElements); 3136 definingElement.node, definingElement.treeElements);
3132 } 3137 }
3133 3138
3134 } 3139 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/elements/elements.dart ('k') | pkg/compiler/lib/src/resolution/members.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698