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

Side by Side Diff: pkg/compiler/lib/src/serialization/modelz.dart

Issue 2125823002: Handle redirects to unresolved redirects (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 4 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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 /// Implementation of the element model used for deserialiation. 5 /// Implementation of the element model used for deserialiation.
6 /// 6 ///
7 /// These classes are created by [ElementDeserializer] triggered by the 7 /// These classes are created by [ElementDeserializer] triggered by the
8 /// [Deserializer]. 8 /// [Deserializer].
9 9
10 library dart2js.serialization.modelz; 10 library dart2js.serialization.modelz;
(...skipping 1280 matching lines...) Expand 10 before | Expand all | Expand 10 after
1291 } 1291 }
1292 1292
1293 class FactoryConstructorElementZ extends ConstructorElementZ { 1293 class FactoryConstructorElementZ extends ConstructorElementZ {
1294 FactoryConstructorElementZ(ObjectDecoder decoder) : super(decoder); 1294 FactoryConstructorElementZ(ObjectDecoder decoder) : super(decoder);
1295 1295
1296 @override 1296 @override
1297 ElementKind get kind => ElementKind.FACTORY_CONSTRUCTOR; 1297 ElementKind get kind => ElementKind.FACTORY_CONSTRUCTOR;
1298 } 1298 }
1299 1299
1300 class RedirectingFactoryConstructorElementZ extends ConstructorElementZ { 1300 class RedirectingFactoryConstructorElementZ extends ConstructorElementZ {
1301 InterfaceType _effectiveTargetType; 1301 DartType _effectiveTargetType;
1302 ConstructorElement _immediateRedirectionTarget; 1302 ConstructorElement _immediateRedirectionTarget;
1303 PrefixElement _redirectionDeferredPrefix; 1303 PrefixElement _redirectionDeferredPrefix;
1304 bool _effectiveTargetIsMalformed;
1304 1305
1305 RedirectingFactoryConstructorElementZ(ObjectDecoder decoder) : super(decoder); 1306 RedirectingFactoryConstructorElementZ(ObjectDecoder decoder) : super(decoder);
1306 1307
1307 @override 1308 @override
1308 ElementKind get kind => ElementKind.FACTORY_CONSTRUCTOR; 1309 ElementKind get kind => ElementKind.FACTORY_CONSTRUCTOR;
1309 1310
1310 @override 1311 @override
1311 bool get isRedirectingFactory => true; 1312 bool get isRedirectingFactory => true;
1312 1313
1313 void _ensureEffectiveTarget() { 1314 void _ensureEffectiveTarget() {
1314 if (_effectiveTarget == null) { 1315 if (_effectiveTarget == null) {
1315 _effectiveTarget = 1316 _effectiveTarget =
1316 _decoder.getElement(Key.EFFECTIVE_TARGET, isOptional: true); 1317 _decoder.getElement(Key.EFFECTIVE_TARGET, isOptional: true);
1317 if (_effectiveTarget == null) { 1318 if (_effectiveTarget == null) {
1318 _effectiveTarget = this; 1319 _effectiveTarget = this;
1319 _effectiveTargetType = enclosingClass.thisType; 1320 _effectiveTargetType = enclosingClass.thisType;
1321 _effectiveTargetIsMalformed = false;
1320 } else { 1322 } else {
1321 _effectiveTargetType = _decoder.getType(Key.EFFECTIVE_TARGET_TYPE); 1323 _effectiveTargetType = _decoder.getType(Key.EFFECTIVE_TARGET_TYPE);
1324 _effectiveTargetIsMalformed =
1325 _decoder.getBool(Key.EFFECTIVE_TARGET_IS_MALFORMED);
1322 } 1326 }
1323 } 1327 }
1324 } 1328 }
1325 1329
1330 bool get isEffectiveTargetMalformed {
1331 _ensureEffectiveTarget();
1332 return _effectiveTargetIsMalformed;
1333 }
1334
1326 @override 1335 @override
1327 ConstructorElement get effectiveTarget { 1336 ConstructorElement get effectiveTarget {
1328 _ensureEffectiveTarget(); 1337 _ensureEffectiveTarget();
1329 return _effectiveTarget; 1338 return _effectiveTarget;
1330 } 1339 }
1331 1340
1332 @override 1341 @override
1333 InterfaceType computeEffectiveTargetType(InterfaceType newType) { 1342 DartType computeEffectiveTargetType(InterfaceType newType) {
1334 _ensureEffectiveTarget(); 1343 _ensureEffectiveTarget();
1335 return _effectiveTargetType.substByContext(newType); 1344 return _effectiveTargetType.substByContext(newType);
1336 } 1345 }
1337 1346
1338 void _ensureRedirection() { 1347 void _ensureRedirection() {
1339 if (_immediateRedirectionTarget == null) { 1348 if (_immediateRedirectionTarget == null) {
1340 _immediateRedirectionTarget = 1349 _immediateRedirectionTarget =
1341 _decoder.getElement(Key.IMMEDIATE_REDIRECTION_TARGET); 1350 _decoder.getElement(Key.IMMEDIATE_REDIRECTION_TARGET);
1342 _redirectionDeferredPrefix = 1351 _redirectionDeferredPrefix =
1343 _decoder.getElement(Key.PREFIX, isOptional: true); 1352 _decoder.getElement(Key.PREFIX, isOptional: true);
(...skipping 983 matching lines...) Expand 10 before | Expand all | Expand 10 after
2327 } 2336 }
2328 2337
2329 @override 2338 @override
2330 Node get node => throw new UnsupportedError('${this}.node'); 2339 Node get node => throw new UnsupportedError('${this}.node');
2331 2340
2332 @override 2341 @override
2333 bool get hasNode => false; 2342 bool get hasNode => false;
2334 2343
2335 String toString() => 'MetadataAnnotationZ(${constant.toDartText()})'; 2344 String toString() => 'MetadataAnnotationZ(${constant.toDartText()})';
2336 } 2345 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698