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

Side by Side Diff: packages/analyzer/lib/src/generated/constant.dart

Issue 1521693002: Roll Observatory deps (charted -> ^0.3.0) (Closed) Base URL: https://chromium.googlesource.com/external/github.com/dart-lang/observatory_pub_packages.git@master
Patch Set: Created 5 years 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) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 engine.constant; 5 library engine.constant;
6 6
7 import 'dart:collection'; 7 import 'dart:collection';
8 8
9 import 'package:analyzer/src/generated/engine.dart'; 9 import 'package:analyzer/src/generated/engine.dart';
10 import 'package:analyzer/src/generated/utilities_general.dart'; 10 import 'package:analyzer/src/generated/utilities_general.dart';
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 HashMap<String, DartObjectImpl> namedArgumentValues) { 304 HashMap<String, DartObjectImpl> namedArgumentValues) {
305 if (arguments.length != 1) { 305 if (arguments.length != 1) {
306 return false; 306 return false;
307 } 307 }
308 if (arguments[0] is NamedExpression) { 308 if (arguments[0] is NamedExpression) {
309 return false; 309 return false;
310 } 310 }
311 if (!identical(argumentValues[0].type, typeProvider.stringType)) { 311 if (!identical(argumentValues[0].type, typeProvider.stringType)) {
312 return false; 312 return false;
313 } 313 }
314 String name = argumentValues[0].stringValue; 314 String name = argumentValues[0].toStringValue();
315 return isValidPublicSymbol(name); 315 return isValidPublicSymbol(name);
316 } 316 }
317 317
318 /** 318 /**
319 * Compute the constant value associated with the given [constant]. 319 * Compute the constant value associated with the given [constant].
320 */ 320 */
321 void computeConstantValue(ConstantEvaluationTarget constant) { 321 void computeConstantValue(ConstantEvaluationTarget constant) {
322 validator.beforeComputeValue(constant); 322 validator.beforeComputeValue(constant);
323 if (constant is ParameterElement) { 323 if (constant is ParameterElement) {
324 if (constant.initializer != null) { 324 if (constant.initializer != null) {
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after
619 // See if it's because we reached an external const factory constructor 619 // See if it's because we reached an external const factory constructor
620 // that we can emulate. 620 // that we can emulate.
621 if (constructor.name == "fromEnvironment") { 621 if (constructor.name == "fromEnvironment") {
622 if (!checkFromEnvironmentArguments( 622 if (!checkFromEnvironmentArguments(
623 arguments, argumentValues, namedArgumentValues, definingClass)) { 623 arguments, argumentValues, namedArgumentValues, definingClass)) {
624 errorReporter.reportErrorForNode( 624 errorReporter.reportErrorForNode(
625 CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, node); 625 CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, node);
626 return null; 626 return null;
627 } 627 }
628 String variableName = 628 String variableName =
629 argumentCount < 1 ? null : argumentValues[0].stringValue; 629 argumentCount < 1 ? null : argumentValues[0].toStringValue();
630 if (identical(definingClass, typeProvider.boolType)) { 630 if (identical(definingClass, typeProvider.boolType)) {
631 DartObject valueFromEnvironment; 631 DartObject valueFromEnvironment;
632 valueFromEnvironment = 632 valueFromEnvironment =
633 _declaredVariables.getBool(typeProvider, variableName); 633 _declaredVariables.getBool(typeProvider, variableName);
634 return computeValueFromEnvironment( 634 return computeValueFromEnvironment(
635 valueFromEnvironment, 635 valueFromEnvironment,
636 new DartObjectImpl(typeProvider.boolType, BoolState.FALSE_STATE), 636 new DartObjectImpl(typeProvider.boolType, BoolState.FALSE_STATE),
637 namedArgumentValues); 637 namedArgumentValues);
638 } else if (identical(definingClass, typeProvider.intType)) { 638 } else if (identical(definingClass, typeProvider.intType)) {
639 DartObject valueFromEnvironment; 639 DartObject valueFromEnvironment;
(...skipping 14 matching lines...) Expand all
654 } 654 }
655 } else if (constructor.name == "" && 655 } else if (constructor.name == "" &&
656 identical(definingClass, typeProvider.symbolType) && 656 identical(definingClass, typeProvider.symbolType) &&
657 argumentCount == 1) { 657 argumentCount == 1) {
658 if (!checkSymbolArguments( 658 if (!checkSymbolArguments(
659 arguments, argumentValues, namedArgumentValues)) { 659 arguments, argumentValues, namedArgumentValues)) {
660 errorReporter.reportErrorForNode( 660 errorReporter.reportErrorForNode(
661 CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, node); 661 CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION, node);
662 return null; 662 return null;
663 } 663 }
664 String argumentValue = argumentValues[0].stringValue; 664 String argumentValue = argumentValues[0].toStringValue();
665 return new DartObjectImpl( 665 return new DartObjectImpl(
666 definingClass, new SymbolState(argumentValue)); 666 definingClass, new SymbolState(argumentValue));
667 } 667 }
668 // Either it's an external const factory constructor that we can't 668 // Either it's an external const factory constructor that we can't
669 // emulate, or an error occurred (a cycle, or a const constructor trying 669 // emulate, or an error occurred (a cycle, or a const constructor trying
670 // to delegate to a non-const constructor). 670 // to delegate to a non-const constructor).
671 // In the former case, the best we can do is consider it an unknown value. 671 // In the former case, the best we can do is consider it an unknown value.
672 // In the latter case, the error has already been reported, so considering 672 // In the latter case, the error has already been reported, so considering
673 // it an unknown value will suppress further errors. 673 // it an unknown value will suppress further errors.
674 return new DartObjectImpl.validWithUnknownValue(definingClass); 674 return new DartObjectImpl.validWithUnknownValue(definingClass);
(...skipping 916 matching lines...) Expand 10 before | Expand all | Expand 10 after
1591 } else if (thenResult == null) { 1591 } else if (thenResult == null) {
1592 return thenResult; 1592 return thenResult;
1593 } else if (elseResult == null) { 1593 } else if (elseResult == null) {
1594 return elseResult; 1594 return elseResult;
1595 } 1595 }
1596 conditionResult = 1596 conditionResult =
1597 _dartObjectComputer.applyBooleanConversion(condition, conditionResult); 1597 _dartObjectComputer.applyBooleanConversion(condition, conditionResult);
1598 if (conditionResult == null) { 1598 if (conditionResult == null) {
1599 return conditionResult; 1599 return conditionResult;
1600 } 1600 }
1601 if (conditionResult.isTrue) { 1601 if (conditionResult.toBoolValue() == true) {
1602 return thenResult; 1602 return thenResult;
1603 } else if (conditionResult.isFalse) { 1603 } else if (conditionResult.toBoolValue() == false) {
1604 return elseResult; 1604 return elseResult;
1605 } 1605 }
1606 ParameterizedType thenType = thenResult.type; 1606 ParameterizedType thenType = thenResult.type;
1607 ParameterizedType elseType = elseResult.type; 1607 ParameterizedType elseType = elseResult.type;
1608 return new DartObjectImpl.validWithUnknownValue( 1608 return new DartObjectImpl.validWithUnknownValue(
1609 _typeSystem.getLeastUpperBound(_typeProvider, thenType, elseType) 1609 _typeSystem.getLeastUpperBound(_typeProvider, thenType, elseType)
1610 as InterfaceType); 1610 as InterfaceType);
1611 } 1611 }
1612 1612
1613 @override 1613 @override
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after
1929 DartObjectImpl _valueOf(Expression expression) { 1929 DartObjectImpl _valueOf(Expression expression) {
1930 DartObjectImpl expressionValue = expression.accept(this); 1930 DartObjectImpl expressionValue = expression.accept(this);
1931 if (expressionValue != null) { 1931 if (expressionValue != null) {
1932 return expressionValue; 1932 return expressionValue;
1933 } 1933 }
1934 return _typeProvider.nullObject; 1934 return _typeProvider.nullObject;
1935 } 1935 }
1936 } 1936 }
1937 1937
1938 /** 1938 /**
1939 * The state of a Dart object. 1939 * A representation of the value of a compile-time constant expression.
1940 *
1941 * Note that, unlike the mirrors system, the object being represented does *not*
1942 * exist. This interface allows static analysis tools to determine something
1943 * about the state of the object that would exist if the code that creates the
1944 * object were executed, but none of the code being analyzed is actually
1945 * executed.
1940 */ 1946 */
1941 abstract class DartObject { 1947 abstract class DartObject {
1942 /** 1948 /**
1943 * Return the boolean value of this object, or `null` if either the value of 1949 * Return the boolean value of this object, or `null` if either the value of
1944 * this object is not known or this object is not of type 'bool'. 1950 * this object is not known or this object is not of type 'bool'.
1945 */ 1951 *
1952 * Deprecated. Use [toBoolValue].
1953 */
1954 @deprecated
1946 bool get boolValue; 1955 bool get boolValue;
1947 1956
1948 /** 1957 /**
1949 * Return the floating point value of this object, or `null` if either the 1958 * Return the floating point value of this object, or `null` if either the
1950 * value of this object is not known or this object is not of type 'double'. 1959 * value of this object is not known or this object is not of type 'double'.
1951 */ 1960 *
1961 * Deprecated. Use [toDoubleValue].
1962 */
1963 @deprecated
1952 double get doubleValue; 1964 double get doubleValue;
1953 1965
1954 /** 1966 /**
1955 * Return `true` if this object's value can be represented exactly. 1967 * Return `true` if this object's value can be represented exactly.
1956 */ 1968 *
1969 * Deprecated. The semantics of this method were not clear. One semantic is
1970 * covered by [hasKnownValue].
1971 */
1972 @deprecated
1957 bool get hasExactValue; 1973 bool get hasExactValue;
1958 1974
1959 /** 1975 /**
1976 * Return `true` if the value of the object being represented is known.
1977 *
1978 * This method will return `false` if
1979 * * the value being represented is the value of a declared variable (a
1980 * variable whose value is provided at run-time using a `-D` command-line
1981 * option), or
1982 * * the value is a function.
1983 *
1984 * The result of this method does not imply anything about the state of
1985 * object representations returned by the method [getField], those that are
1986 * elements of the list returned by [toListValue], or the keys or values in
1987 * the map returned by [toMapValue]. For example, a representation of a list
1988 * can return `true` even if one or more of the elements of that list would
1989 * return `false`.
1990 */
1991 bool get hasKnownValue;
1992
1993 /**
1960 * Return the integer value of this object, or `null` if either the value of 1994 * Return the integer value of this object, or `null` if either the value of
1961 * this object is not known or this object is not of type 'int'. 1995 * this object is not known or this object is not of type 'int'.
1962 */ 1996 *
1997 * Deprecated. Use [toIntValue].
1998 */
1999 @deprecated
1963 int get intValue; 2000 int get intValue;
1964 2001
1965 /** 2002 /**
1966 * Return `true` if this object represents the value 'false'. 2003 * Return `true` if this object represents the value 'false'.
1967 */ 2004 *
2005 * Deprecated. Use `object.toBoolValue() == false`.
2006 */
2007 @deprecated
1968 bool get isFalse; 2008 bool get isFalse;
1969 2009
1970 /** 2010 /**
1971 * Return `true` if this object represents the value 'null'. 2011 * Return `true` if the object being represented represents the value 'null'.
1972 */ 2012 */
1973 bool get isNull; 2013 bool get isNull;
1974 2014
1975 /** 2015 /**
1976 * Return `true` if this object represents the value 'true'. 2016 * Return `true` if this object represents the value 'true'.
1977 */ 2017 *
2018 * Deprecated. Use `object.toBoolValue() == true`.
2019 */
2020 @deprecated
1978 bool get isTrue; 2021 bool get isTrue;
1979 2022
1980 /** 2023 /**
1981 * Return the string value of this object, or `null` if either the value of 2024 * Return the string value of this object, or `null` if either the value of
1982 * this object is not known or this object is not of type 'String'. 2025 * this object is not known or this object is not of type 'String'.
1983 */ 2026 *
2027 * Deprecated. Use [toStringValue].
2028 */
2029 @deprecated
1984 String get stringValue; 2030 String get stringValue;
1985 2031
1986 /** 2032 /**
1987 * Return the run-time type of this object. 2033 * Return a representation of the type of the object being represented.
2034 *
2035 * For values resulting from the invocation of a 'const' constructor, this
2036 * will be a representation of the run-time type of the object.
2037 *
2038 * For values resulting from a literal expression, this will be a
2039 * representation of the static type of the value -- `int` for integer
2040 * literals, `List` for list literals, etc. -- even when the static type is an
2041 * abstract type (such as `List`) and hence will never be the run-time type of
2042 * the represented object.
2043 *
2044 * For values resulting from any other kind of expression, this will be a
2045 * representation of the result of evaluating the expression.
2046 *
2047 * Return `null` if the expression cannot be evaluated, either because it is
2048 * not a valid constant expression or because one or more of the values used
2049 * in the expression does not have a known value.
2050 *
2051 * This method can return a representation of the type, even if this object
2052 * would return `false` from [hasKnownValue].
1988 */ 2053 */
1989 ParameterizedType get type; 2054 ParameterizedType get type;
1990 2055
1991 /** 2056 /**
1992 * Return this object's value if it can be represented exactly, or `null` if 2057 * Return this object's value if it can be represented exactly, or `null` if
1993 * either the value cannot be represented exactly or if the value is `null`. 2058 * either the value cannot be represented exactly or if the value is `null`.
1994 * Clients should use [hasExactValue] to distinguish between these two cases. 2059 * Clients should use `hasExactValue` to distinguish between these two cases.
1995 */ 2060 *
2061 * Deprecated. Use one of the `isXValue()` methods.
2062 */
2063 @deprecated
1996 Object get value; 2064 Object get value;
2065
2066 /**
2067 * Return a representation of the value of the field with the given [name].
2068 *
2069 * Return `null` if either the object being represented does not have a field
2070 * with the given name or if the implementation of the class of the object is
2071 * invalid, making it impossible to determine that value of the field.
2072 *
2073 * Note that, unlike the mirrors API, this method does *not* invoke a getter;
2074 * it simply returns a representation of the known state of a field.
2075 */
2076 DartObject getField(String name);
2077
2078 /**
2079 * Return a boolean corresponding to the value of the object being
2080 * represented, or `null` if
2081 * * this object is not of type 'bool',
2082 * * the value of the object being represented is not known, or
2083 * * the value of the object being represented is `null`.
2084 */
2085 bool toBoolValue();
2086
2087 /**
2088 * Return a double corresponding to the value of the object being represented,
2089 * or `null`
2090 * if
2091 * * this object is not of type 'double',
2092 * * the value of the object being represented is not known, or
2093 * * the value of the object being represented is `null`.
2094 */
2095 double toDoubleValue();
2096
2097 /**
2098 * Return an integer corresponding to the value of the object being
2099 * represented, or `null` if
2100 * * this object is not of type 'int',
2101 * * the value of the object being represented is not known, or
2102 * * the value of the object being represented is `null`.
2103 */
2104 int toIntValue();
2105
2106 /**
2107 * Return a list corresponding to the value of the object being represented,
2108 * or `null` if
2109 * * this object is not of type 'List', or
2110 * * the value of the object being represented is `null`.
2111 */
2112 List<DartObject> toListValue();
2113
2114 /**
2115 * Return a map corresponding to the value of the object being represented, or
2116 * `null` if
2117 * * this object is not of type 'Map', or
2118 * * the value of the object being represented is `null`.
2119 */
2120 Map<DartObject, DartObject> toMapValue();
2121
2122 /**
2123 * Return a string corresponding to the value of the object being represented,
2124 * or `null` if
2125 * * this object is not of type 'String',
2126 * * the value of the object being represented is not known, or
2127 * * the value of the object being represented is `null`.
2128 */
2129 String toStringValue();
2130
2131 /**
2132 * Return a string corresponding to the value of the object being represented,
2133 * or `null` if
2134 * * this object is not of type 'Symbol', or
2135 * * the value of the object being represented is `null`.
2136 * (We return the string
2137 */
2138 String toSymbolValue();
2139
2140 /**
2141 * Return the representation of the type corresponding to the value of the
2142 * object being represented, or `null` if
2143 * * this object is not of type 'Type', or
2144 * * the value of the object being represented is `null`.
2145 */
2146 ParameterizedType toTypeValue();
1997 } 2147 }
1998 2148
1999 /** 2149 /**
2000 * A utility class that contains methods for manipulating instances of a Dart 2150 * A utility class that contains methods for manipulating instances of a Dart
2001 * class and for collecting errors during evaluation. 2151 * class and for collecting errors during evaluation.
2002 */ 2152 */
2003 class DartObjectComputer { 2153 class DartObjectComputer {
2004 /** 2154 /**
2005 * The error reporter that we are using to collect errors. 2155 * The error reporter that we are using to collect errors.
2006 */ 2156 */
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after
2383 return new DartObjectImpl(type, DoubleState.UNKNOWN_VALUE); 2533 return new DartObjectImpl(type, DoubleState.UNKNOWN_VALUE);
2384 } else if (typeName == "int") { 2534 } else if (typeName == "int") {
2385 return new DartObjectImpl(type, IntState.UNKNOWN_VALUE); 2535 return new DartObjectImpl(type, IntState.UNKNOWN_VALUE);
2386 } else if (typeName == "String") { 2536 } else if (typeName == "String") {
2387 return new DartObjectImpl(type, StringState.UNKNOWN_VALUE); 2537 return new DartObjectImpl(type, StringState.UNKNOWN_VALUE);
2388 } 2538 }
2389 } 2539 }
2390 return new DartObjectImpl(type, GenericState.UNKNOWN_VALUE); 2540 return new DartObjectImpl(type, GenericState.UNKNOWN_VALUE);
2391 } 2541 }
2392 2542
2543 @deprecated
2393 @override 2544 @override
2394 bool get boolValue { 2545 bool get boolValue => toBoolValue();
2395 if (_state is BoolState) {
2396 return (_state as BoolState).value;
2397 }
2398 return null;
2399 }
2400 2546
2547 @deprecated
2401 @override 2548 @override
2402 double get doubleValue { 2549 double get doubleValue => toDoubleValue();
2403 if (_state is DoubleState) {
2404 return (_state as DoubleState).value;
2405 }
2406 return null;
2407 }
2408 2550
2409 HashMap<String, DartObjectImpl> get fields => _state.fields; 2551 HashMap<String, DartObjectImpl> get fields => _state.fields;
2410 2552
2553 @deprecated
2411 @override 2554 @override
2412 bool get hasExactValue => _state.hasExactValue; 2555 bool get hasExactValue => _state.hasExactValue;
2413 2556
2414 @override 2557 @override
2415 int get hashCode => JenkinsSmiHash.hash2(type.hashCode, _state.hashCode); 2558 int get hashCode => JenkinsSmiHash.hash2(type.hashCode, _state.hashCode);
2416 2559
2417 @override 2560 @override
2418 int get intValue { 2561 bool get hasKnownValue => !_state.isUnknown;
2419 if (_state is IntState) { 2562
2420 return (_state as IntState).value; 2563 @deprecated
2421 } 2564 @override
2422 return null; 2565 int get intValue => toIntValue();
2423 }
2424 2566
2425 /** 2567 /**
2426 * Return `true` if this object represents an object whose type is 'bool'. 2568 * Return `true` if this object represents an object whose type is 'bool'.
2427 */ 2569 */
2428 bool get isBool => _state.isBool; 2570 bool get isBool => _state.isBool;
2429 2571
2430 /** 2572 /**
2431 * Return `true` if this object represents an object whose type is either 2573 * Return `true` if this object represents an object whose type is either
2432 * 'bool', 'num', 'String', or 'Null'. 2574 * 'bool', 'num', 'String', or 'Null'.
2433 */ 2575 */
2434 bool get isBoolNumStringOrNull => _state.isBoolNumStringOrNull; 2576 bool get isBoolNumStringOrNull => _state.isBoolNumStringOrNull;
2435 2577
2578 @deprecated
2436 @override 2579 @override
2437 bool get isFalse => 2580 bool get isFalse => toBoolValue() == false;
2438 _state is BoolState && identical((_state as BoolState).value, false);
2439 2581
2440 @override 2582 @override
2441 bool get isNull => _state is NullState; 2583 bool get isNull => _state is NullState;
2442 2584
2585 @deprecated
2443 @override 2586 @override
2444 bool get isTrue => 2587 bool get isTrue =>
2445 _state is BoolState && identical((_state as BoolState).value, true); 2588 _state is BoolState && identical((_state as BoolState).value, true);
2446 2589
2447 /** 2590 /**
2448 * Return `true` if this object represents an unknown value. 2591 * Return `true` if this object represents an unknown value.
2449 */ 2592 */
2450 bool get isUnknown => _state.isUnknown; 2593 bool get isUnknown => _state.isUnknown;
2451 2594
2452 /** 2595 /**
2453 * Return `true` if this object represents an instance of a user-defined 2596 * Return `true` if this object represents an instance of a user-defined
2454 * class. 2597 * class.
2455 */ 2598 */
2456 bool get isUserDefinedObject => _state is GenericState; 2599 bool get isUserDefinedObject => _state is GenericState;
2457 2600
2601 @deprecated
2458 @override 2602 @override
2459 String get stringValue { 2603 String get stringValue => toStringValue();
2460 if (_state is StringState) {
2461 return (_state as StringState).value;
2462 }
2463 return null;
2464 }
2465 2604
2605 @deprecated
2466 @override 2606 @override
2467 Object get value => _state.value; 2607 Object get value => _state.value;
2468 2608
2469 @override 2609 @override
2470 bool operator ==(Object object) { 2610 bool operator ==(Object object) {
2471 if (object is! DartObjectImpl) { 2611 if (object is! DartObjectImpl) {
2472 return false; 2612 return false;
2473 } 2613 }
2474 DartObjectImpl dartObject = object as DartObjectImpl; 2614 DartObjectImpl dartObject = object as DartObjectImpl;
2475 return type == dartObject.type && _state == dartObject._state; 2615 return type == dartObject.type && _state == dartObject._state;
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
2617 typeName == "Null" || 2757 typeName == "Null" ||
2618 type.isDynamic)) { 2758 type.isDynamic)) {
2619 throw new EvaluationException( 2759 throw new EvaluationException(
2620 CompileTimeErrorCode.CONST_EVAL_TYPE_BOOL_NUM_STRING); 2760 CompileTimeErrorCode.CONST_EVAL_TYPE_BOOL_NUM_STRING);
2621 } 2761 }
2622 } 2762 }
2623 return new DartObjectImpl( 2763 return new DartObjectImpl(
2624 typeProvider.boolType, _state.equalEqual(rightOperand._state)); 2764 typeProvider.boolType, _state.equalEqual(rightOperand._state));
2625 } 2765 }
2626 2766
2767 @override
2768 DartObject getField(String name) {
2769 if (_state is GenericState) {
2770 return (_state as GenericState).fields[name];
2771 }
2772 return null;
2773 }
2774
2627 /** 2775 /**
2628 * Return the result of invoking the '&gt;' operator on this object with the 2776 * Return the result of invoking the '&gt;' operator on this object with the
2629 * [rightOperand]. The [typeProvider] is the type provider used to find known 2777 * [rightOperand]. The [typeProvider] is the type provider used to find known
2630 * types. 2778 * types.
2631 * 2779 *
2632 * Throws an [EvaluationException] if the operator is not appropriate for an 2780 * Throws an [EvaluationException] if the operator is not appropriate for an
2633 * object of this kind. 2781 * object of this kind.
2634 */ 2782 */
2635 DartObjectImpl greaterThan( 2783 DartObjectImpl greaterThan(
2636 TypeProvider typeProvider, DartObjectImpl rightOperand) => 2784 TypeProvider typeProvider, DartObjectImpl rightOperand) =>
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
2890 } else if (result is DoubleState) { 3038 } else if (result is DoubleState) {
2891 return new DartObjectImpl(typeProvider.doubleType, result); 3039 return new DartObjectImpl(typeProvider.doubleType, result);
2892 } else if (result is NumState) { 3040 } else if (result is NumState) {
2893 return new DartObjectImpl(typeProvider.numType, result); 3041 return new DartObjectImpl(typeProvider.numType, result);
2894 } 3042 }
2895 // We should never get here. 3043 // We should never get here.
2896 throw new IllegalStateException("times returned a ${result.runtimeType}"); 3044 throw new IllegalStateException("times returned a ${result.runtimeType}");
2897 } 3045 }
2898 3046
2899 @override 3047 @override
3048 bool toBoolValue() {
3049 if (_state is BoolState) {
3050 return (_state as BoolState).value;
3051 }
3052 return null;
3053 }
3054
3055 @override
3056 double toDoubleValue() {
3057 if (_state is DoubleState) {
3058 return (_state as DoubleState).value;
3059 }
3060 return null;
3061 }
3062
3063 @override
3064 int toIntValue() {
3065 if (_state is IntState) {
3066 return (_state as IntState).value;
3067 }
3068 return null;
3069 }
3070
3071 @override
3072 List<DartObject> toListValue() {
3073 if (_state is ListState) {
3074 return (_state as ListState)._elements;
3075 }
3076 return null;
3077 }
3078
3079 @override
3080 Map<DartObject, DartObject> toMapValue() {
3081 if (_state is MapState) {
3082 return (_state as MapState)._entries;
3083 }
3084 return null;
3085 }
3086
3087 @override
2900 String toString() => "${type.displayName} ($_state)"; 3088 String toString() => "${type.displayName} ($_state)";
3089
3090 @override
3091 String toStringValue() {
3092 if (_state is StringState) {
3093 return (_state as StringState).value;
3094 }
3095 return null;
3096 }
3097
3098 @override
3099 String toSymbolValue() {
3100 if (_state is SymbolState) {
3101 return (_state as SymbolState).value;
3102 }
3103 return null;
3104 }
3105
3106 @override
3107 ParameterizedType toTypeValue() {
3108 if (_state is TypeState) {
3109 Element element = (_state as TypeState).value;
3110 if (element is ClassElement) {
3111 return element.type;
3112 }
3113 if (element is FunctionElement) {
3114 return element.type;
3115 }
3116 }
3117 return null;
3118 }
2901 } 3119 }
2902 3120
2903 /** 3121 /**
2904 * An object used to provide access to the values of variables that have been 3122 * An object used to provide access to the values of variables that have been
2905 * defined on the command line using the `-D` option. 3123 * defined on the command line using the `-D` option.
2906 */ 3124 */
2907 class DeclaredVariables { 3125 class DeclaredVariables {
2908 /** 3126 /**
2909 * A table mapping the names of declared variables to their values. 3127 * A table mapping the names of declared variables to their values.
2910 */ 3128 */
(...skipping 2412 matching lines...) Expand 10 before | Expand all | Expand 10 after
5323 return BoolState.from(_element == rightElement); 5541 return BoolState.from(_element == rightElement);
5324 } else if (rightOperand is DynamicState) { 5542 } else if (rightOperand is DynamicState) {
5325 return BoolState.UNKNOWN_VALUE; 5543 return BoolState.UNKNOWN_VALUE;
5326 } 5544 }
5327 return BoolState.FALSE_STATE; 5545 return BoolState.FALSE_STATE;
5328 } 5546 }
5329 5547
5330 @override 5548 @override
5331 String toString() => _element == null ? "-unknown-" : _element.name; 5549 String toString() => _element == null ? "-unknown-" : _element.name;
5332 } 5550 }
OLDNEW
« no previous file with comments | « packages/analyzer/lib/src/generated/ast.dart ('k') | packages/analyzer/lib/src/generated/element.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698