OLD | NEW |
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 // This code was auto-generated, is not intended to be edited, and is subject to | 5 // This code was auto-generated, is not intended to be edited, and is subject to |
6 // significant change. Please see the README file for more information. | 6 // significant change. Please see the README file for more information. |
7 | 7 |
8 library engine.constant; | 8 library engine.constant; |
9 | 9 |
10 import 'dart:collection'; | 10 import 'dart:collection'; |
(...skipping 638 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
649 argumentNodes[i] = argument; | 649 argumentNodes[i] = argument; |
650 } | 650 } |
651 } | 651 } |
652 constructor = _followConstantRedirectionChain(constructor); | 652 constructor = _followConstantRedirectionChain(constructor); |
653 InterfaceType definingClass = constructor.returnType as InterfaceType; | 653 InterfaceType definingClass = constructor.returnType as InterfaceType; |
654 if (constructor.isFactory) { | 654 if (constructor.isFactory) { |
655 // We couldn't find a non-factory constructor. See if it's because we rea
ched an external | 655 // We couldn't find a non-factory constructor. See if it's because we rea
ched an external |
656 // const factory constructor that we can emulate. | 656 // const factory constructor that we can emulate. |
657 if (constructor.name == "fromEnvironment") { | 657 if (constructor.name == "fromEnvironment") { |
658 if (!_checkFromEnvironmentArguments(arguments, argumentValues, namedArgu
mentValues, definingClass)) { | 658 if (!_checkFromEnvironmentArguments(arguments, argumentValues, namedArgu
mentValues, definingClass)) { |
659 errorReporter.reportErrorForNode(CompileTimeErrorCode.CONST_EVAL_THROW
S_EXCEPTION, node, []); | 659 errorReporter.reportErrorForNode(CompileTimeErrorCode.CONST_EVAL_THROW
S_EXCEPTION, node); |
660 return null; | 660 return null; |
661 } | 661 } |
662 String variableName = argumentCount < 1 ? null : argumentValues[0].strin
gValue; | 662 String variableName = argumentCount < 1 ? null : argumentValues[0].strin
gValue; |
663 if (identical(definingClass, typeProvider.boolType)) { | 663 if (identical(definingClass, typeProvider.boolType)) { |
664 DartObject valueFromEnvironment; | 664 DartObject valueFromEnvironment; |
665 valueFromEnvironment = _declaredVariables.getBool(typeProvider, variab
leName); | 665 valueFromEnvironment = _declaredVariables.getBool(typeProvider, variab
leName); |
666 return _computeValueFromEnvironment(valueFromEnvironment, new DartObje
ctImpl(typeProvider.boolType, BoolState.FALSE_STATE), namedArgumentValues); | 666 return _computeValueFromEnvironment(valueFromEnvironment, new DartObje
ctImpl(typeProvider.boolType, BoolState.FALSE_STATE), namedArgumentValues); |
667 } else if (identical(definingClass, typeProvider.intType)) { | 667 } else if (identical(definingClass, typeProvider.intType)) { |
668 DartObject valueFromEnvironment; | 668 DartObject valueFromEnvironment; |
669 valueFromEnvironment = _declaredVariables.getInt(typeProvider, variabl
eName); | 669 valueFromEnvironment = _declaredVariables.getInt(typeProvider, variabl
eName); |
670 return _computeValueFromEnvironment(valueFromEnvironment, new DartObje
ctImpl(typeProvider.nullType, NullState.NULL_STATE), namedArgumentValues); | 670 return _computeValueFromEnvironment(valueFromEnvironment, new DartObje
ctImpl(typeProvider.nullType, NullState.NULL_STATE), namedArgumentValues); |
671 } else if (identical(definingClass, typeProvider.stringType)) { | 671 } else if (identical(definingClass, typeProvider.stringType)) { |
672 DartObject valueFromEnvironment; | 672 DartObject valueFromEnvironment; |
673 valueFromEnvironment = _declaredVariables.getString(typeProvider, vari
ableName); | 673 valueFromEnvironment = _declaredVariables.getString(typeProvider, vari
ableName); |
674 return _computeValueFromEnvironment(valueFromEnvironment, new DartObje
ctImpl(typeProvider.nullType, NullState.NULL_STATE), namedArgumentValues); | 674 return _computeValueFromEnvironment(valueFromEnvironment, new DartObje
ctImpl(typeProvider.nullType, NullState.NULL_STATE), namedArgumentValues); |
675 } | 675 } |
676 } else if (constructor.name == "" && identical(definingClass, typeProvider
.symbolType) && argumentCount == 1) { | 676 } else if (constructor.name == "" && identical(definingClass, typeProvider
.symbolType) && argumentCount == 1) { |
677 if (!_checkSymbolArguments(arguments, argumentValues, namedArgumentValue
s)) { | 677 if (!_checkSymbolArguments(arguments, argumentValues, namedArgumentValue
s)) { |
678 errorReporter.reportErrorForNode(CompileTimeErrorCode.CONST_EVAL_THROW
S_EXCEPTION, node, []); | 678 errorReporter.reportErrorForNode(CompileTimeErrorCode.CONST_EVAL_THROW
S_EXCEPTION, node); |
679 return null; | 679 return null; |
680 } | 680 } |
681 String argumentValue = argumentValues[0].stringValue; | 681 String argumentValue = argumentValues[0].stringValue; |
682 return new DartObjectImpl(definingClass, new SymbolState(argumentValue))
; | 682 return new DartObjectImpl(definingClass, new SymbolState(argumentValue))
; |
683 } | 683 } |
684 // Either it's an external const factory constructor that we can't emulate
, or an error | 684 // Either it's an external const factory constructor that we can't emulate
, or an error |
685 // occurred (a cycle, or a const constructor trying to delegate to a non-c
onst constructor). | 685 // occurred (a cycle, or a const constructor trying to delegate to a non-c
onst constructor). |
686 // In the former case, the best we can do is consider it an unknown value.
In the latter | 686 // In the former case, the best we can do is consider it an unknown value.
In the latter |
687 // case, the error has already been reported, so considering it an unknown
value will | 687 // case, the error has already been reported, so considering it an unknown
value will |
688 // suppress further errors. | 688 // suppress further errors. |
(...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1113 | 1113 |
1114 @override | 1114 @override |
1115 DartObjectImpl visitConditionalExpression(ConditionalExpression node) { | 1115 DartObjectImpl visitConditionalExpression(ConditionalExpression node) { |
1116 Expression condition = node.condition; | 1116 Expression condition = node.condition; |
1117 DartObjectImpl conditionResult = condition.accept(this); | 1117 DartObjectImpl conditionResult = condition.accept(this); |
1118 DartObjectImpl thenResult = node.thenExpression.accept(this); | 1118 DartObjectImpl thenResult = node.thenExpression.accept(this); |
1119 DartObjectImpl elseResult = node.elseExpression.accept(this); | 1119 DartObjectImpl elseResult = node.elseExpression.accept(this); |
1120 if (conditionResult == null) { | 1120 if (conditionResult == null) { |
1121 return conditionResult; | 1121 return conditionResult; |
1122 } else if (!conditionResult.isBool) { | 1122 } else if (!conditionResult.isBool) { |
1123 _errorReporter.reportErrorForNode(CompileTimeErrorCode.CONST_EVAL_TYPE_BOO
L, condition, []); | 1123 _errorReporter.reportErrorForNode(CompileTimeErrorCode.CONST_EVAL_TYPE_BOO
L, condition); |
1124 return null; | 1124 return null; |
1125 } else if (thenResult == null) { | 1125 } else if (thenResult == null) { |
1126 return thenResult; | 1126 return thenResult; |
1127 } else if (elseResult == null) { | 1127 } else if (elseResult == null) { |
1128 return elseResult; | 1128 return elseResult; |
1129 } | 1129 } |
1130 conditionResult = _dartObjectComputer.applyBooleanConversion(condition, cond
itionResult); | 1130 conditionResult = _dartObjectComputer.applyBooleanConversion(condition, cond
itionResult); |
1131 if (conditionResult == null) { | 1131 if (conditionResult == null) { |
1132 return conditionResult; | 1132 return conditionResult; |
1133 } | 1133 } |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1173 } | 1173 } |
1174 return _dartObjectComputer.performToString(node, result); | 1174 return _dartObjectComputer.performToString(node, result); |
1175 } | 1175 } |
1176 | 1176 |
1177 @override | 1177 @override |
1178 DartObjectImpl visitInterpolationString(InterpolationString node) => new DartO
bjectImpl(_typeProvider.stringType, new StringState(node.value)); | 1178 DartObjectImpl visitInterpolationString(InterpolationString node) => new DartO
bjectImpl(_typeProvider.stringType, new StringState(node.value)); |
1179 | 1179 |
1180 @override | 1180 @override |
1181 DartObjectImpl visitListLiteral(ListLiteral node) { | 1181 DartObjectImpl visitListLiteral(ListLiteral node) { |
1182 if (node.constKeyword == null) { | 1182 if (node.constKeyword == null) { |
1183 _errorReporter.reportErrorForNode(CompileTimeErrorCode.MISSING_CONST_IN_LI
ST_LITERAL, node, []); | 1183 _errorReporter.reportErrorForNode(CompileTimeErrorCode.MISSING_CONST_IN_LI
ST_LITERAL, node); |
1184 return null; | 1184 return null; |
1185 } | 1185 } |
1186 bool errorOccurred = false; | 1186 bool errorOccurred = false; |
1187 List<DartObjectImpl> elements = new List<DartObjectImpl>(); | 1187 List<DartObjectImpl> elements = new List<DartObjectImpl>(); |
1188 for (Expression element in node.elements) { | 1188 for (Expression element in node.elements) { |
1189 DartObjectImpl elementResult = element.accept(this); | 1189 DartObjectImpl elementResult = element.accept(this); |
1190 if (elementResult == null) { | 1190 if (elementResult == null) { |
1191 errorOccurred = true; | 1191 errorOccurred = true; |
1192 } else { | 1192 } else { |
1193 elements.add(elementResult); | 1193 elements.add(elementResult); |
1194 } | 1194 } |
1195 } | 1195 } |
1196 if (errorOccurred) { | 1196 if (errorOccurred) { |
1197 return null; | 1197 return null; |
1198 } | 1198 } |
1199 DartType elementType = _typeProvider.dynamicType; | 1199 DartType elementType = _typeProvider.dynamicType; |
1200 if (node.typeArguments != null && node.typeArguments.arguments.length == 1)
{ | 1200 if (node.typeArguments != null && node.typeArguments.arguments.length == 1)
{ |
1201 DartType type = node.typeArguments.arguments[0].type; | 1201 DartType type = node.typeArguments.arguments[0].type; |
1202 if (type != null) { | 1202 if (type != null) { |
1203 elementType = type; | 1203 elementType = type; |
1204 } | 1204 } |
1205 } | 1205 } |
1206 InterfaceType listType = _typeProvider.listType.substitute4([elementType]); | 1206 InterfaceType listType = _typeProvider.listType.substitute4([elementType]); |
1207 return new DartObjectImpl(listType, new ListState(elements)); | 1207 return new DartObjectImpl(listType, new ListState(elements)); |
1208 } | 1208 } |
1209 | 1209 |
1210 @override | 1210 @override |
1211 DartObjectImpl visitMapLiteral(MapLiteral node) { | 1211 DartObjectImpl visitMapLiteral(MapLiteral node) { |
1212 if (node.constKeyword == null) { | 1212 if (node.constKeyword == null) { |
1213 _errorReporter.reportErrorForNode(CompileTimeErrorCode.MISSING_CONST_IN_MA
P_LITERAL, node, []); | 1213 _errorReporter.reportErrorForNode(CompileTimeErrorCode.MISSING_CONST_IN_MA
P_LITERAL, node); |
1214 return null; | 1214 return null; |
1215 } | 1215 } |
1216 bool errorOccurred = false; | 1216 bool errorOccurred = false; |
1217 HashMap<DartObjectImpl, DartObjectImpl> map = new HashMap<DartObjectImpl, Da
rtObjectImpl>(); | 1217 HashMap<DartObjectImpl, DartObjectImpl> map = new HashMap<DartObjectImpl, Da
rtObjectImpl>(); |
1218 for (MapLiteralEntry entry in node.entries) { | 1218 for (MapLiteralEntry entry in node.entries) { |
1219 DartObjectImpl keyResult = entry.key.accept(this); | 1219 DartObjectImpl keyResult = entry.key.accept(this); |
1220 DartObjectImpl valueResult = entry.value.accept(this); | 1220 DartObjectImpl valueResult = entry.value.accept(this); |
1221 if (keyResult == null || valueResult == null) { | 1221 if (keyResult == null || valueResult == null) { |
1222 errorOccurred = true; | 1222 errorOccurred = true; |
1223 } else { | 1223 } else { |
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1430 return null2; | 1430 return null2; |
1431 } | 1431 } |
1432 | 1432 |
1433 /** | 1433 /** |
1434 * Create an error associated with the given node. | 1434 * Create an error associated with the given node. |
1435 * | 1435 * |
1436 * @param node the AST node associated with the error | 1436 * @param node the AST node associated with the error |
1437 * @param code the error code indicating the nature of the error | 1437 * @param code the error code indicating the nature of the error |
1438 */ | 1438 */ |
1439 void _error(AstNode node, ErrorCode code) { | 1439 void _error(AstNode node, ErrorCode code) { |
1440 _errorReporter.reportErrorForNode(code == null ? CompileTimeErrorCode.INVALI
D_CONSTANT : code, node, []); | 1440 _errorReporter.reportErrorForNode(code == null ? CompileTimeErrorCode.INVALI
D_CONSTANT : code, node); |
1441 } | 1441 } |
1442 | 1442 |
1443 /** | 1443 /** |
1444 * Return the constant value of the static constant represented by the given e
lement. | 1444 * Return the constant value of the static constant represented by the given e
lement. |
1445 * | 1445 * |
1446 * @param node the node to be used if an error needs to be reported | 1446 * @param node the node to be used if an error needs to be reported |
1447 * @param element the element whose value is to be returned | 1447 * @param element the element whose value is to be returned |
1448 * @return the constant value of the static constant | 1448 * @return the constant value of the static constant |
1449 */ | 1449 */ |
1450 DartObjectImpl _getConstantValue(AstNode node, Element element) { | 1450 DartObjectImpl _getConstantValue(AstNode node, Element element) { |
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1592 */ | 1592 */ |
1593 final TypeProvider _typeProvider; | 1593 final TypeProvider _typeProvider; |
1594 | 1594 |
1595 DartObjectComputer(this._errorReporter, this._typeProvider); | 1595 DartObjectComputer(this._errorReporter, this._typeProvider); |
1596 | 1596 |
1597 DartObjectImpl add(BinaryExpression node, DartObjectImpl leftOperand, DartObje
ctImpl rightOperand) { | 1597 DartObjectImpl add(BinaryExpression node, DartObjectImpl leftOperand, DartObje
ctImpl rightOperand) { |
1598 if (leftOperand != null && rightOperand != null) { | 1598 if (leftOperand != null && rightOperand != null) { |
1599 try { | 1599 try { |
1600 return leftOperand.add(_typeProvider, rightOperand); | 1600 return leftOperand.add(_typeProvider, rightOperand); |
1601 } on EvaluationException catch (exception) { | 1601 } on EvaluationException catch (exception) { |
1602 _errorReporter.reportErrorForNode(exception.errorCode, node, []); | 1602 _errorReporter.reportErrorForNode(exception.errorCode, node); |
1603 return null; | 1603 return null; |
1604 } | 1604 } |
1605 } | 1605 } |
1606 return null; | 1606 return null; |
1607 } | 1607 } |
1608 | 1608 |
1609 /** | 1609 /** |
1610 * Return the result of applying boolean conversion to this result. | 1610 * Return the result of applying boolean conversion to this result. |
1611 * | 1611 * |
1612 * @param node the node against which errors should be reported | 1612 * @param node the node against which errors should be reported |
1613 * @return the result of applying boolean conversion to the given value | 1613 * @return the result of applying boolean conversion to the given value |
1614 */ | 1614 */ |
1615 DartObjectImpl applyBooleanConversion(AstNode node, DartObjectImpl evaluationR
esult) { | 1615 DartObjectImpl applyBooleanConversion(AstNode node, DartObjectImpl evaluationR
esult) { |
1616 if (evaluationResult != null) { | 1616 if (evaluationResult != null) { |
1617 try { | 1617 try { |
1618 return evaluationResult.convertToBool(_typeProvider); | 1618 return evaluationResult.convertToBool(_typeProvider); |
1619 } on EvaluationException catch (exception) { | 1619 } on EvaluationException catch (exception) { |
1620 _errorReporter.reportErrorForNode(exception.errorCode, node, []); | 1620 _errorReporter.reportErrorForNode(exception.errorCode, node); |
1621 } | 1621 } |
1622 } | 1622 } |
1623 return null; | 1623 return null; |
1624 } | 1624 } |
1625 | 1625 |
1626 DartObjectImpl bitAnd(BinaryExpression node, DartObjectImpl leftOperand, DartO
bjectImpl rightOperand) { | 1626 DartObjectImpl bitAnd(BinaryExpression node, DartObjectImpl leftOperand, DartO
bjectImpl rightOperand) { |
1627 if (leftOperand != null && rightOperand != null) { | 1627 if (leftOperand != null && rightOperand != null) { |
1628 try { | 1628 try { |
1629 return leftOperand.bitAnd(_typeProvider, rightOperand); | 1629 return leftOperand.bitAnd(_typeProvider, rightOperand); |
1630 } on EvaluationException catch (exception) { | 1630 } on EvaluationException catch (exception) { |
1631 _errorReporter.reportErrorForNode(exception.errorCode, node, []); | 1631 _errorReporter.reportErrorForNode(exception.errorCode, node); |
1632 } | 1632 } |
1633 } | 1633 } |
1634 return null; | 1634 return null; |
1635 } | 1635 } |
1636 | 1636 |
1637 DartObjectImpl bitNot(Expression node, DartObjectImpl evaluationResult) { | 1637 DartObjectImpl bitNot(Expression node, DartObjectImpl evaluationResult) { |
1638 if (evaluationResult != null) { | 1638 if (evaluationResult != null) { |
1639 try { | 1639 try { |
1640 return evaluationResult.bitNot(_typeProvider); | 1640 return evaluationResult.bitNot(_typeProvider); |
1641 } on EvaluationException catch (exception) { | 1641 } on EvaluationException catch (exception) { |
1642 _errorReporter.reportErrorForNode(exception.errorCode, node, []); | 1642 _errorReporter.reportErrorForNode(exception.errorCode, node); |
1643 } | 1643 } |
1644 } | 1644 } |
1645 return null; | 1645 return null; |
1646 } | 1646 } |
1647 | 1647 |
1648 DartObjectImpl bitOr(BinaryExpression node, DartObjectImpl leftOperand, DartOb
jectImpl rightOperand) { | 1648 DartObjectImpl bitOr(BinaryExpression node, DartObjectImpl leftOperand, DartOb
jectImpl rightOperand) { |
1649 if (leftOperand != null && rightOperand != null) { | 1649 if (leftOperand != null && rightOperand != null) { |
1650 try { | 1650 try { |
1651 return leftOperand.bitOr(_typeProvider, rightOperand); | 1651 return leftOperand.bitOr(_typeProvider, rightOperand); |
1652 } on EvaluationException catch (exception) { | 1652 } on EvaluationException catch (exception) { |
1653 _errorReporter.reportErrorForNode(exception.errorCode, node, []); | 1653 _errorReporter.reportErrorForNode(exception.errorCode, node); |
1654 } | 1654 } |
1655 } | 1655 } |
1656 return null; | 1656 return null; |
1657 } | 1657 } |
1658 | 1658 |
1659 DartObjectImpl bitXor(BinaryExpression node, DartObjectImpl leftOperand, DartO
bjectImpl rightOperand) { | 1659 DartObjectImpl bitXor(BinaryExpression node, DartObjectImpl leftOperand, DartO
bjectImpl rightOperand) { |
1660 if (leftOperand != null && rightOperand != null) { | 1660 if (leftOperand != null && rightOperand != null) { |
1661 try { | 1661 try { |
1662 return leftOperand.bitXor(_typeProvider, rightOperand); | 1662 return leftOperand.bitXor(_typeProvider, rightOperand); |
1663 } on EvaluationException catch (exception) { | 1663 } on EvaluationException catch (exception) { |
1664 _errorReporter.reportErrorForNode(exception.errorCode, node, []); | 1664 _errorReporter.reportErrorForNode(exception.errorCode, node); |
1665 } | 1665 } |
1666 } | 1666 } |
1667 return null; | 1667 return null; |
1668 } | 1668 } |
1669 | 1669 |
1670 DartObjectImpl concatenate(Expression node, DartObjectImpl leftOperand, DartOb
jectImpl rightOperand) { | 1670 DartObjectImpl concatenate(Expression node, DartObjectImpl leftOperand, DartOb
jectImpl rightOperand) { |
1671 if (leftOperand != null && rightOperand != null) { | 1671 if (leftOperand != null && rightOperand != null) { |
1672 try { | 1672 try { |
1673 return leftOperand.concatenate(_typeProvider, rightOperand); | 1673 return leftOperand.concatenate(_typeProvider, rightOperand); |
1674 } on EvaluationException catch (exception) { | 1674 } on EvaluationException catch (exception) { |
1675 _errorReporter.reportErrorForNode(exception.errorCode, node, []); | 1675 _errorReporter.reportErrorForNode(exception.errorCode, node); |
1676 } | 1676 } |
1677 } | 1677 } |
1678 return null; | 1678 return null; |
1679 } | 1679 } |
1680 | 1680 |
1681 DartObjectImpl divide(BinaryExpression node, DartObjectImpl leftOperand, DartO
bjectImpl rightOperand) { | 1681 DartObjectImpl divide(BinaryExpression node, DartObjectImpl leftOperand, DartO
bjectImpl rightOperand) { |
1682 if (leftOperand != null && rightOperand != null) { | 1682 if (leftOperand != null && rightOperand != null) { |
1683 try { | 1683 try { |
1684 return leftOperand.divide(_typeProvider, rightOperand); | 1684 return leftOperand.divide(_typeProvider, rightOperand); |
1685 } on EvaluationException catch (exception) { | 1685 } on EvaluationException catch (exception) { |
1686 _errorReporter.reportErrorForNode(exception.errorCode, node, []); | 1686 _errorReporter.reportErrorForNode(exception.errorCode, node); |
1687 } | 1687 } |
1688 } | 1688 } |
1689 return null; | 1689 return null; |
1690 } | 1690 } |
1691 | 1691 |
1692 DartObjectImpl equalEqual(Expression node, DartObjectImpl leftOperand, DartObj
ectImpl rightOperand) { | 1692 DartObjectImpl equalEqual(Expression node, DartObjectImpl leftOperand, DartObj
ectImpl rightOperand) { |
1693 if (leftOperand != null && rightOperand != null) { | 1693 if (leftOperand != null && rightOperand != null) { |
1694 try { | 1694 try { |
1695 return leftOperand.equalEqual(_typeProvider, rightOperand); | 1695 return leftOperand.equalEqual(_typeProvider, rightOperand); |
1696 } on EvaluationException catch (exception) { | 1696 } on EvaluationException catch (exception) { |
1697 _errorReporter.reportErrorForNode(exception.errorCode, node, []); | 1697 _errorReporter.reportErrorForNode(exception.errorCode, node); |
1698 } | 1698 } |
1699 } | 1699 } |
1700 return null; | 1700 return null; |
1701 } | 1701 } |
1702 | 1702 |
1703 DartObjectImpl greaterThan(BinaryExpression node, DartObjectImpl leftOperand,
DartObjectImpl rightOperand) { | 1703 DartObjectImpl greaterThan(BinaryExpression node, DartObjectImpl leftOperand,
DartObjectImpl rightOperand) { |
1704 if (leftOperand != null && rightOperand != null) { | 1704 if (leftOperand != null && rightOperand != null) { |
1705 try { | 1705 try { |
1706 return leftOperand.greaterThan(_typeProvider, rightOperand); | 1706 return leftOperand.greaterThan(_typeProvider, rightOperand); |
1707 } on EvaluationException catch (exception) { | 1707 } on EvaluationException catch (exception) { |
1708 _errorReporter.reportErrorForNode(exception.errorCode, node, []); | 1708 _errorReporter.reportErrorForNode(exception.errorCode, node); |
1709 } | 1709 } |
1710 } | 1710 } |
1711 return null; | 1711 return null; |
1712 } | 1712 } |
1713 | 1713 |
1714 DartObjectImpl greaterThanOrEqual(BinaryExpression node, DartObjectImpl leftOp
erand, DartObjectImpl rightOperand) { | 1714 DartObjectImpl greaterThanOrEqual(BinaryExpression node, DartObjectImpl leftOp
erand, DartObjectImpl rightOperand) { |
1715 if (leftOperand != null && rightOperand != null) { | 1715 if (leftOperand != null && rightOperand != null) { |
1716 try { | 1716 try { |
1717 return leftOperand.greaterThanOrEqual(_typeProvider, rightOperand); | 1717 return leftOperand.greaterThanOrEqual(_typeProvider, rightOperand); |
1718 } on EvaluationException catch (exception) { | 1718 } on EvaluationException catch (exception) { |
1719 _errorReporter.reportErrorForNode(exception.errorCode, node, []); | 1719 _errorReporter.reportErrorForNode(exception.errorCode, node); |
1720 } | 1720 } |
1721 } | 1721 } |
1722 return null; | 1722 return null; |
1723 } | 1723 } |
1724 | 1724 |
1725 DartObjectImpl integerDivide(BinaryExpression node, DartObjectImpl leftOperand
, DartObjectImpl rightOperand) { | 1725 DartObjectImpl integerDivide(BinaryExpression node, DartObjectImpl leftOperand
, DartObjectImpl rightOperand) { |
1726 if (leftOperand != null && rightOperand != null) { | 1726 if (leftOperand != null && rightOperand != null) { |
1727 try { | 1727 try { |
1728 return leftOperand.integerDivide(_typeProvider, rightOperand); | 1728 return leftOperand.integerDivide(_typeProvider, rightOperand); |
1729 } on EvaluationException catch (exception) { | 1729 } on EvaluationException catch (exception) { |
1730 _errorReporter.reportErrorForNode(exception.errorCode, node, []); | 1730 _errorReporter.reportErrorForNode(exception.errorCode, node); |
1731 } | 1731 } |
1732 } | 1732 } |
1733 return null; | 1733 return null; |
1734 } | 1734 } |
1735 | 1735 |
1736 DartObjectImpl isIdentical(Expression node, DartObjectImpl leftOperand, | 1736 DartObjectImpl isIdentical(Expression node, DartObjectImpl leftOperand, |
1737 DartObjectImpl rightOperand) { | 1737 DartObjectImpl rightOperand) { |
1738 if (leftOperand != null && rightOperand != null) { | 1738 if (leftOperand != null && rightOperand != null) { |
1739 try { | 1739 try { |
1740 return leftOperand.isIdentical(_typeProvider, rightOperand); | 1740 return leftOperand.isIdentical(_typeProvider, rightOperand); |
1741 } on EvaluationException catch (exception) { | 1741 } on EvaluationException catch (exception) { |
1742 _errorReporter.reportErrorForNode(exception.errorCode, node, []); | 1742 _errorReporter.reportErrorForNode(exception.errorCode, node); |
1743 } | 1743 } |
1744 } | 1744 } |
1745 return null; | 1745 return null; |
1746 } | 1746 } |
1747 | 1747 |
1748 DartObjectImpl lessThan(BinaryExpression node, DartObjectImpl leftOperand, Dar
tObjectImpl rightOperand) { | 1748 DartObjectImpl lessThan(BinaryExpression node, DartObjectImpl leftOperand, Dar
tObjectImpl rightOperand) { |
1749 if (leftOperand != null && rightOperand != null) { | 1749 if (leftOperand != null && rightOperand != null) { |
1750 try { | 1750 try { |
1751 return leftOperand.lessThan(_typeProvider, rightOperand); | 1751 return leftOperand.lessThan(_typeProvider, rightOperand); |
1752 } on EvaluationException catch (exception) { | 1752 } on EvaluationException catch (exception) { |
1753 _errorReporter.reportErrorForNode(exception.errorCode, node, []); | 1753 _errorReporter.reportErrorForNode(exception.errorCode, node); |
1754 } | 1754 } |
1755 } | 1755 } |
1756 return null; | 1756 return null; |
1757 } | 1757 } |
1758 | 1758 |
1759 DartObjectImpl lessThanOrEqual(BinaryExpression node, DartObjectImpl leftOpera
nd, DartObjectImpl rightOperand) { | 1759 DartObjectImpl lessThanOrEqual(BinaryExpression node, DartObjectImpl leftOpera
nd, DartObjectImpl rightOperand) { |
1760 if (leftOperand != null && rightOperand != null) { | 1760 if (leftOperand != null && rightOperand != null) { |
1761 try { | 1761 try { |
1762 return leftOperand.lessThanOrEqual(_typeProvider, rightOperand); | 1762 return leftOperand.lessThanOrEqual(_typeProvider, rightOperand); |
1763 } on EvaluationException catch (exception) { | 1763 } on EvaluationException catch (exception) { |
1764 _errorReporter.reportErrorForNode(exception.errorCode, node, []); | 1764 _errorReporter.reportErrorForNode(exception.errorCode, node); |
1765 } | 1765 } |
1766 } | 1766 } |
1767 return null; | 1767 return null; |
1768 } | 1768 } |
1769 | 1769 |
1770 DartObjectImpl logicalAnd(BinaryExpression node, DartObjectImpl leftOperand, D
artObjectImpl rightOperand) { | 1770 DartObjectImpl logicalAnd(BinaryExpression node, DartObjectImpl leftOperand, D
artObjectImpl rightOperand) { |
1771 if (leftOperand != null && rightOperand != null) { | 1771 if (leftOperand != null && rightOperand != null) { |
1772 try { | 1772 try { |
1773 return leftOperand.logicalAnd(_typeProvider, rightOperand); | 1773 return leftOperand.logicalAnd(_typeProvider, rightOperand); |
1774 } on EvaluationException catch (exception) { | 1774 } on EvaluationException catch (exception) { |
1775 _errorReporter.reportErrorForNode(exception.errorCode, node, []); | 1775 _errorReporter.reportErrorForNode(exception.errorCode, node); |
1776 } | 1776 } |
1777 } | 1777 } |
1778 return null; | 1778 return null; |
1779 } | 1779 } |
1780 | 1780 |
1781 DartObjectImpl logicalNot(Expression node, DartObjectImpl evaluationResult) { | 1781 DartObjectImpl logicalNot(Expression node, DartObjectImpl evaluationResult) { |
1782 if (evaluationResult != null) { | 1782 if (evaluationResult != null) { |
1783 try { | 1783 try { |
1784 return evaluationResult.logicalNot(_typeProvider); | 1784 return evaluationResult.logicalNot(_typeProvider); |
1785 } on EvaluationException catch (exception) { | 1785 } on EvaluationException catch (exception) { |
1786 _errorReporter.reportErrorForNode(exception.errorCode, node, []); | 1786 _errorReporter.reportErrorForNode(exception.errorCode, node); |
1787 } | 1787 } |
1788 } | 1788 } |
1789 return null; | 1789 return null; |
1790 } | 1790 } |
1791 | 1791 |
1792 DartObjectImpl logicalOr(BinaryExpression node, DartObjectImpl leftOperand, Da
rtObjectImpl rightOperand) { | 1792 DartObjectImpl logicalOr(BinaryExpression node, DartObjectImpl leftOperand, Da
rtObjectImpl rightOperand) { |
1793 if (leftOperand != null && rightOperand != null) { | 1793 if (leftOperand != null && rightOperand != null) { |
1794 try { | 1794 try { |
1795 return leftOperand.logicalOr(_typeProvider, rightOperand); | 1795 return leftOperand.logicalOr(_typeProvider, rightOperand); |
1796 } on EvaluationException catch (exception) { | 1796 } on EvaluationException catch (exception) { |
1797 _errorReporter.reportErrorForNode(exception.errorCode, node, []); | 1797 _errorReporter.reportErrorForNode(exception.errorCode, node); |
1798 } | 1798 } |
1799 } | 1799 } |
1800 return null; | 1800 return null; |
1801 } | 1801 } |
1802 | 1802 |
1803 DartObjectImpl minus(BinaryExpression node, DartObjectImpl leftOperand, DartOb
jectImpl rightOperand) { | 1803 DartObjectImpl minus(BinaryExpression node, DartObjectImpl leftOperand, DartOb
jectImpl rightOperand) { |
1804 if (leftOperand != null && rightOperand != null) { | 1804 if (leftOperand != null && rightOperand != null) { |
1805 try { | 1805 try { |
1806 return leftOperand.minus(_typeProvider, rightOperand); | 1806 return leftOperand.minus(_typeProvider, rightOperand); |
1807 } on EvaluationException catch (exception) { | 1807 } on EvaluationException catch (exception) { |
1808 _errorReporter.reportErrorForNode(exception.errorCode, node, []); | 1808 _errorReporter.reportErrorForNode(exception.errorCode, node); |
1809 } | 1809 } |
1810 } | 1810 } |
1811 return null; | 1811 return null; |
1812 } | 1812 } |
1813 | 1813 |
1814 DartObjectImpl negated(Expression node, DartObjectImpl evaluationResult) { | 1814 DartObjectImpl negated(Expression node, DartObjectImpl evaluationResult) { |
1815 if (evaluationResult != null) { | 1815 if (evaluationResult != null) { |
1816 try { | 1816 try { |
1817 return evaluationResult.negated(_typeProvider); | 1817 return evaluationResult.negated(_typeProvider); |
1818 } on EvaluationException catch (exception) { | 1818 } on EvaluationException catch (exception) { |
1819 _errorReporter.reportErrorForNode(exception.errorCode, node, []); | 1819 _errorReporter.reportErrorForNode(exception.errorCode, node); |
1820 } | 1820 } |
1821 } | 1821 } |
1822 return null; | 1822 return null; |
1823 } | 1823 } |
1824 | 1824 |
1825 DartObjectImpl notEqual(BinaryExpression node, DartObjectImpl leftOperand, Dar
tObjectImpl rightOperand) { | 1825 DartObjectImpl notEqual(BinaryExpression node, DartObjectImpl leftOperand, Dar
tObjectImpl rightOperand) { |
1826 if (leftOperand != null && rightOperand != null) { | 1826 if (leftOperand != null && rightOperand != null) { |
1827 try { | 1827 try { |
1828 return leftOperand.notEqual(_typeProvider, rightOperand); | 1828 return leftOperand.notEqual(_typeProvider, rightOperand); |
1829 } on EvaluationException catch (exception) { | 1829 } on EvaluationException catch (exception) { |
1830 _errorReporter.reportErrorForNode(exception.errorCode, node, []); | 1830 _errorReporter.reportErrorForNode(exception.errorCode, node); |
1831 } | 1831 } |
1832 } | 1832 } |
1833 return null; | 1833 return null; |
1834 } | 1834 } |
1835 | 1835 |
1836 DartObjectImpl performToString(AstNode node, DartObjectImpl evaluationResult)
{ | 1836 DartObjectImpl performToString(AstNode node, DartObjectImpl evaluationResult)
{ |
1837 if (evaluationResult != null) { | 1837 if (evaluationResult != null) { |
1838 try { | 1838 try { |
1839 return evaluationResult.performToString(_typeProvider); | 1839 return evaluationResult.performToString(_typeProvider); |
1840 } on EvaluationException catch (exception) { | 1840 } on EvaluationException catch (exception) { |
1841 _errorReporter.reportErrorForNode(exception.errorCode, node, []); | 1841 _errorReporter.reportErrorForNode(exception.errorCode, node); |
1842 } | 1842 } |
1843 } | 1843 } |
1844 return null; | 1844 return null; |
1845 } | 1845 } |
1846 | 1846 |
1847 DartObjectImpl remainder(BinaryExpression node, DartObjectImpl leftOperand, Da
rtObjectImpl rightOperand) { | 1847 DartObjectImpl remainder(BinaryExpression node, DartObjectImpl leftOperand, Da
rtObjectImpl rightOperand) { |
1848 if (leftOperand != null && rightOperand != null) { | 1848 if (leftOperand != null && rightOperand != null) { |
1849 try { | 1849 try { |
1850 return leftOperand.remainder(_typeProvider, rightOperand); | 1850 return leftOperand.remainder(_typeProvider, rightOperand); |
1851 } on EvaluationException catch (exception) { | 1851 } on EvaluationException catch (exception) { |
1852 _errorReporter.reportErrorForNode(exception.errorCode, node, []); | 1852 _errorReporter.reportErrorForNode(exception.errorCode, node); |
1853 } | 1853 } |
1854 } | 1854 } |
1855 return null; | 1855 return null; |
1856 } | 1856 } |
1857 | 1857 |
1858 DartObjectImpl shiftLeft(BinaryExpression node, DartObjectImpl leftOperand, Da
rtObjectImpl rightOperand) { | 1858 DartObjectImpl shiftLeft(BinaryExpression node, DartObjectImpl leftOperand, Da
rtObjectImpl rightOperand) { |
1859 if (leftOperand != null && rightOperand != null) { | 1859 if (leftOperand != null && rightOperand != null) { |
1860 try { | 1860 try { |
1861 return leftOperand.shiftLeft(_typeProvider, rightOperand); | 1861 return leftOperand.shiftLeft(_typeProvider, rightOperand); |
1862 } on EvaluationException catch (exception) { | 1862 } on EvaluationException catch (exception) { |
1863 _errorReporter.reportErrorForNode(exception.errorCode, node, []); | 1863 _errorReporter.reportErrorForNode(exception.errorCode, node); |
1864 } | 1864 } |
1865 } | 1865 } |
1866 return null; | 1866 return null; |
1867 } | 1867 } |
1868 | 1868 |
1869 DartObjectImpl shiftRight(BinaryExpression node, DartObjectImpl leftOperand, D
artObjectImpl rightOperand) { | 1869 DartObjectImpl shiftRight(BinaryExpression node, DartObjectImpl leftOperand, D
artObjectImpl rightOperand) { |
1870 if (leftOperand != null && rightOperand != null) { | 1870 if (leftOperand != null && rightOperand != null) { |
1871 try { | 1871 try { |
1872 return leftOperand.shiftRight(_typeProvider, rightOperand); | 1872 return leftOperand.shiftRight(_typeProvider, rightOperand); |
1873 } on EvaluationException catch (exception) { | 1873 } on EvaluationException catch (exception) { |
1874 _errorReporter.reportErrorForNode(exception.errorCode, node, []); | 1874 _errorReporter.reportErrorForNode(exception.errorCode, node); |
1875 } | 1875 } |
1876 } | 1876 } |
1877 return null; | 1877 return null; |
1878 } | 1878 } |
1879 | 1879 |
1880 /** | 1880 /** |
1881 * Return the result of invoking the 'length' getter on this result. | 1881 * Return the result of invoking the 'length' getter on this result. |
1882 * | 1882 * |
1883 * @param node the node against which errors should be reported | 1883 * @param node the node against which errors should be reported |
1884 * @return the result of invoking the 'length' getter on this result | 1884 * @return the result of invoking the 'length' getter on this result |
1885 */ | 1885 */ |
1886 EvaluationResultImpl stringLength(Expression node, EvaluationResultImpl evalua
tionResult) { | 1886 EvaluationResultImpl stringLength(Expression node, EvaluationResultImpl evalua
tionResult) { |
1887 if (evaluationResult.value != null) { | 1887 if (evaluationResult.value != null) { |
1888 try { | 1888 try { |
1889 return new EvaluationResultImpl.con1(evaluationResult.value.stringLength
(_typeProvider)); | 1889 return new EvaluationResultImpl.con1(evaluationResult.value.stringLength
(_typeProvider)); |
1890 } on EvaluationException catch (exception) { | 1890 } on EvaluationException catch (exception) { |
1891 _errorReporter.reportErrorForNode(exception.errorCode, node, []); | 1891 _errorReporter.reportErrorForNode(exception.errorCode, node); |
1892 } | 1892 } |
1893 } | 1893 } |
1894 return new EvaluationResultImpl.con1(null); | 1894 return new EvaluationResultImpl.con1(null); |
1895 } | 1895 } |
1896 | 1896 |
1897 DartObjectImpl times(BinaryExpression node, DartObjectImpl leftOperand, DartOb
jectImpl rightOperand) { | 1897 DartObjectImpl times(BinaryExpression node, DartObjectImpl leftOperand, DartOb
jectImpl rightOperand) { |
1898 if (leftOperand != null && rightOperand != null) { | 1898 if (leftOperand != null && rightOperand != null) { |
1899 try { | 1899 try { |
1900 return leftOperand.times(_typeProvider, rightOperand); | 1900 return leftOperand.times(_typeProvider, rightOperand); |
1901 } on EvaluationException catch (exception) { | 1901 } on EvaluationException catch (exception) { |
1902 _errorReporter.reportErrorForNode(exception.errorCode, node, []); | 1902 _errorReporter.reportErrorForNode(exception.errorCode, node); |
1903 } | 1903 } |
1904 } | 1904 } |
1905 return null; | 1905 return null; |
1906 } | 1906 } |
1907 } | 1907 } |
1908 | 1908 |
1909 /** | 1909 /** |
1910 * Instances of the class `DartObjectImpl` represent an instance of a Dart class
. | 1910 * Instances of the class `DartObjectImpl` represent an instance of a Dart class
. |
1911 */ | 1911 */ |
1912 class DartObjectImpl implements DartObject { | 1912 class DartObjectImpl implements DartObject { |
1913 /** | 1913 /** |
1914 * The run-time type of this object. | 1914 * The run-time type of this object. |
1915 */ | 1915 */ |
1916 final ParameterizedType type; | 1916 final ParameterizedType type; |
1917 | 1917 |
1918 /** | 1918 /** |
1919 * The state of the object. | 1919 * The state of the object. |
1920 */ | 1920 */ |
1921 final InstanceState _state; | 1921 final InstanceState _state; |
1922 | 1922 |
1923 /** | 1923 /** |
| 1924 * An empty list of objects. |
| 1925 */ |
| 1926 static const List<DartObjectImpl> EMPTY_LIST = const <DartObjectImpl>[]; |
| 1927 |
| 1928 /** |
1924 * Initialize a newly created object to have the given type and state. | 1929 * Initialize a newly created object to have the given type and state. |
1925 * | 1930 * |
1926 * @param type the run-time type of this object | 1931 * @param type the run-time type of this object |
1927 * @param state the state of the object | 1932 * @param state the state of the object |
1928 */ | 1933 */ |
1929 DartObjectImpl(this.type, this._state); | 1934 DartObjectImpl(this.type, this._state); |
1930 | 1935 |
1931 /** | 1936 /** |
1932 * Return the result of invoking the '+' operator on this object with the give
n argument. | 1937 * Return the result of invoking the '+' operator on this object with the give
n argument. |
1933 * | 1938 * |
(...skipping 2859 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4793 | 4798 |
4794 @override | 4799 @override |
4795 String get typeName => "Type"; | 4800 String get typeName => "Type"; |
4796 | 4801 |
4797 @override | 4802 @override |
4798 int get hashCode => _element == null ? 0 : _element.hashCode; | 4803 int get hashCode => _element == null ? 0 : _element.hashCode; |
4799 | 4804 |
4800 @override | 4805 @override |
4801 String toString() => _element == null ? "-unknown-" : _element.name; | 4806 String toString() => _element == null ? "-unknown-" : _element.name; |
4802 } | 4807 } |
OLD | NEW |