| Index: pkg/compiler/lib/src/elements/common.dart
|
| diff --git a/pkg/compiler/lib/src/elements/common.dart b/pkg/compiler/lib/src/elements/common.dart
|
| index 0020393f7e616ae6d80de1292a0ac38bfc788bf8..5ff83412937348f8cadd7710e5a49ebfc3fe5a4e 100644
|
| --- a/pkg/compiler/lib/src/elements/common.dart
|
| +++ b/pkg/compiler/lib/src/elements/common.dart
|
| @@ -608,34 +608,48 @@ abstract class AbstractFieldElementCommon implements AbstractFieldElement {
|
| }
|
| }
|
|
|
| +enum _FromEnvironmentState { NOT, BOOL, INT, STRING, }
|
| +
|
| abstract class ConstructorElementCommon implements ConstructorElement {
|
| + _FromEnvironmentState _fromEnvironmentState;
|
| +
|
| + _FromEnvironmentState get fromEnvironmentState {
|
| + if (_fromEnvironmentState == null) {
|
| + _fromEnvironmentState = _FromEnvironmentState.NOT;
|
| + if (name == Identifiers.fromEnvironment && library.isDartCore) {
|
| + switch (enclosingClass.name) {
|
| + case 'bool':
|
| + _fromEnvironmentState = _FromEnvironmentState.BOOL;
|
| + break;
|
| + case 'int':
|
| + _fromEnvironmentState = _FromEnvironmentState.INT;
|
| + break;
|
| + case 'String':
|
| + _fromEnvironmentState = _FromEnvironmentState.STRING;
|
| + break;
|
| + }
|
| + }
|
| + }
|
| + return _fromEnvironmentState;
|
| + }
|
| +
|
| @override
|
| bool get isFromEnvironmentConstructor {
|
| - return name == Identifiers.fromEnvironment &&
|
| - library.isDartCore &&
|
| - (enclosingClass.name == 'bool' ||
|
| - enclosingClass.name == 'int' ||
|
| - enclosingClass.name == 'String');
|
| + return fromEnvironmentState != _FromEnvironmentState.NOT;
|
| }
|
|
|
| @override
|
| bool get isIntFromEnvironmentConstructor {
|
| - return name == Identifiers.fromEnvironment &&
|
| - library.isDartCore &&
|
| - enclosingClass.name == 'int';
|
| + return fromEnvironmentState == _FromEnvironmentState.INT;
|
| }
|
|
|
| @override
|
| bool get isBoolFromEnvironmentConstructor {
|
| - return name == Identifiers.fromEnvironment &&
|
| - library.isDartCore &&
|
| - enclosingClass.name == 'bool';
|
| + return fromEnvironmentState == _FromEnvironmentState.BOOL;
|
| }
|
|
|
| @override
|
| bool get isStringFromEnvironmentConstructor {
|
| - return name == Identifiers.fromEnvironment &&
|
| - library.isDartCore &&
|
| - enclosingClass.name == 'String';
|
| + return fromEnvironmentState == _FromEnvironmentState.STRING;
|
| }
|
| }
|
|
|