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

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

Issue 2060143002: Cache fromEnvironment state in ConstructorElementCommon (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 4 years, 6 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
« no previous file with comments | « no previous file | pkg/compiler/lib/src/typechecker.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 /// Mixins that implement convenience methods on [Element] subclasses. 5 /// Mixins that implement convenience methods on [Element] subclasses.
6 6
7 library elements.common; 7 library elements.common;
8 8
9 import '../common/names.dart' show Identifiers, Names, Uris; 9 import '../common/names.dart' show Identifiers, Names, Uris;
10 import '../core_types.dart' show CoreClasses; 10 import '../core_types.dart' show CoreClasses;
(...skipping 590 matching lines...) Expand 10 before | Expand all | Expand 10 after
601 return isClassMember && !isStatic; 601 return isClassMember && !isStatic;
602 } 602 }
603 603
604 @override 604 @override
605 bool get isAbstract { 605 bool get isAbstract {
606 return getter != null && getter.isAbstract || 606 return getter != null && getter.isAbstract ||
607 setter != null && setter.isAbstract; 607 setter != null && setter.isAbstract;
608 } 608 }
609 } 609 }
610 610
611 enum _FromEnvironmentState { NOT, BOOL, INT, STRING, }
612
611 abstract class ConstructorElementCommon implements ConstructorElement { 613 abstract class ConstructorElementCommon implements ConstructorElement {
614 _FromEnvironmentState _fromEnvironmentState;
615
616 _FromEnvironmentState get fromEnvironmentState {
617 if (_fromEnvironmentState == null) {
618 _fromEnvironmentState = _FromEnvironmentState.NOT;
619 if (name == Identifiers.fromEnvironment && library.isDartCore) {
620 switch (enclosingClass.name) {
621 case 'bool':
622 _fromEnvironmentState = _FromEnvironmentState.BOOL;
623 break;
624 case 'int':
625 _fromEnvironmentState = _FromEnvironmentState.INT;
626 break;
627 case 'String':
628 _fromEnvironmentState = _FromEnvironmentState.STRING;
629 break;
630 }
631 }
632 }
633 return _fromEnvironmentState;
634 }
635
612 @override 636 @override
613 bool get isFromEnvironmentConstructor { 637 bool get isFromEnvironmentConstructor {
614 return name == Identifiers.fromEnvironment && 638 return fromEnvironmentState != _FromEnvironmentState.NOT;
615 library.isDartCore &&
616 (enclosingClass.name == 'bool' ||
617 enclosingClass.name == 'int' ||
618 enclosingClass.name == 'String');
619 } 639 }
620 640
621 @override 641 @override
622 bool get isIntFromEnvironmentConstructor { 642 bool get isIntFromEnvironmentConstructor {
623 return name == Identifiers.fromEnvironment && 643 return fromEnvironmentState == _FromEnvironmentState.INT;
624 library.isDartCore &&
625 enclosingClass.name == 'int';
626 } 644 }
627 645
628 @override 646 @override
629 bool get isBoolFromEnvironmentConstructor { 647 bool get isBoolFromEnvironmentConstructor {
630 return name == Identifiers.fromEnvironment && 648 return fromEnvironmentState == _FromEnvironmentState.BOOL;
631 library.isDartCore &&
632 enclosingClass.name == 'bool';
633 } 649 }
634 650
635 @override 651 @override
636 bool get isStringFromEnvironmentConstructor { 652 bool get isStringFromEnvironmentConstructor {
637 return name == Identifiers.fromEnvironment && 653 return fromEnvironmentState == _FromEnvironmentState.STRING;
638 library.isDartCore &&
639 enclosingClass.name == 'String';
640 } 654 }
641 } 655 }
OLDNEW
« no previous file with comments | « no previous file | pkg/compiler/lib/src/typechecker.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698