| OLD | NEW |
| 1 // This code was auto-generated, is not intended to be edited, and is subject to | 1 // This code was auto-generated, is not intended to be edited, and is subject to |
| 2 // significant change. Please see the README file for more information. | 2 // significant change. Please see the README file for more information. |
| 3 library engine.constant; | 3 library engine.constant; |
| 4 import 'java_core.dart'; | 4 import 'java_core.dart'; |
| 5 import 'source.dart' show Source; | 5 import 'source.dart' show Source; |
| 6 import 'error.dart' show AnalysisError, ErrorCode, CompileTimeErrorCode; | 6 import 'error.dart' show AnalysisError, ErrorCode, CompileTimeErrorCode; |
| 7 import 'scanner.dart' show TokenType; | 7 import 'scanner.dart' show TokenType; |
| 8 import 'ast.dart'; | 8 import 'ast.dart'; |
| 9 import 'element.dart'; | 9 import 'element.dart'; |
| 10 import 'engine.dart' show AnalysisEngine; | 10 import 'engine.dart' show AnalysisEngine; |
| (...skipping 1085 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1096 EvaluationResultImpl shiftLeft(BinaryExpression node, EvaluationResultImpl rig
htOperand) => rightOperand.shiftLeftValid(node, this); | 1096 EvaluationResultImpl shiftLeft(BinaryExpression node, EvaluationResultImpl rig
htOperand) => rightOperand.shiftLeftValid(node, this); |
| 1097 EvaluationResultImpl shiftRight(BinaryExpression node, EvaluationResultImpl ri
ghtOperand) => rightOperand.shiftRightValid(node, this); | 1097 EvaluationResultImpl shiftRight(BinaryExpression node, EvaluationResultImpl ri
ghtOperand) => rightOperand.shiftRightValid(node, this); |
| 1098 EvaluationResultImpl times(BinaryExpression node, EvaluationResultImpl rightOp
erand) => rightOperand.timesValid(node, this); | 1098 EvaluationResultImpl times(BinaryExpression node, EvaluationResultImpl rightOp
erand) => rightOperand.timesValid(node, this); |
| 1099 String toString() { | 1099 String toString() { |
| 1100 if (value == null) { | 1100 if (value == null) { |
| 1101 return "null"; | 1101 return "null"; |
| 1102 } | 1102 } |
| 1103 return value.toString(); | 1103 return value.toString(); |
| 1104 } | 1104 } |
| 1105 EvaluationResultImpl addToError(BinaryExpression node, ErrorResult leftOperand
) => leftOperand; | 1105 EvaluationResultImpl addToError(BinaryExpression node, ErrorResult leftOperand
) => leftOperand; |
| 1106 EvaluationResultImpl addToValid(BinaryExpression node, ValidResult leftOperand
2) { | 1106 EvaluationResultImpl addToValid(BinaryExpression node, ValidResult leftOperand
) { |
| 1107 if (!isAnyNum || !leftOperand2.isAnyNum) { | 1107 if (!isAnyNum || !leftOperand.isAnyNum) { |
| 1108 return error2(node, CompileTimeErrorCode.CONST_EVAL_TYPE_NUM); | 1108 return error2(node, CompileTimeErrorCode.CONST_EVAL_TYPE_NUM); |
| 1109 } | 1109 } |
| 1110 if (isSomeInt || leftOperand2.isSomeInt) { | 1110 if (isSomeInt || leftOperand.isSomeInt) { |
| 1111 return RESULT_INT; | 1111 return RESULT_INT; |
| 1112 } else if (isSomeNum || leftOperand2.isSomeNum) { | 1112 } else if (isSomeNum || leftOperand.isSomeNum) { |
| 1113 return RESULT_NUM; | 1113 return RESULT_NUM; |
| 1114 } | 1114 } |
| 1115 Object leftValue = leftOperand2.value; | 1115 Object leftValue = leftOperand.value; |
| 1116 if (leftValue == null) { | 1116 if (leftValue == null) { |
| 1117 return error(node.leftOperand); | 1117 return error(node.leftOperand); |
| 1118 } else if (value == null) { | 1118 } else if (value == null) { |
| 1119 return error(node.rightOperand); | 1119 return error(node.rightOperand); |
| 1120 } else if (leftValue is int) { | 1120 } else if (leftValue is int) { |
| 1121 if (value is int) { | 1121 if (value is int) { |
| 1122 return valueOf(((leftValue as int)) + (value as int)); | 1122 return valueOf(((leftValue as int)) + (value as int)); |
| 1123 } else if (value is double) { | 1123 } else if (value is double) { |
| 1124 return valueOf3(((leftValue as int)).toDouble() + ((value as double))); | 1124 return valueOf3(((leftValue as int)).toDouble() + ((value as double))); |
| 1125 } | 1125 } |
| 1126 } else if (leftValue is double) { | 1126 } else if (leftValue is double) { |
| 1127 if (value is int) { | 1127 if (value is int) { |
| 1128 return valueOf3(((leftValue as double)) + ((value as int)).toDouble()); | 1128 return valueOf3(((leftValue as double)) + ((value as int)).toDouble()); |
| 1129 } else if (value is double) { | 1129 } else if (value is double) { |
| 1130 return valueOf3(((leftValue as double)) + ((value as double))); | 1130 return valueOf3(((leftValue as double)) + ((value as double))); |
| 1131 } | 1131 } |
| 1132 } else if (leftValue is String) { | 1132 } else if (leftValue is String) { |
| 1133 if (value is String) { | 1133 if (value is String) { |
| 1134 return valueOf4("${((leftValue as String))}${((value as String))}"); | 1134 return valueOf4("${((leftValue as String))}${((value as String))}"); |
| 1135 } | 1135 } |
| 1136 } | 1136 } |
| 1137 return error(node); | 1137 return error(node); |
| 1138 } | 1138 } |
| 1139 EvaluationResultImpl bitAndError(BinaryExpression node, ErrorResult leftOperan
d) => leftOperand; | 1139 EvaluationResultImpl bitAndError(BinaryExpression node, ErrorResult leftOperan
d) => leftOperand; |
| 1140 EvaluationResultImpl bitAndValid(BinaryExpression node, ValidResult leftOperan
d2) { | 1140 EvaluationResultImpl bitAndValid(BinaryExpression node, ValidResult leftOperan
d) { |
| 1141 if (!isAnyInt || !leftOperand2.isAnyInt) { | 1141 if (!isAnyInt || !leftOperand.isAnyInt) { |
| 1142 return error2(node, CompileTimeErrorCode.CONST_EVAL_TYPE_INT); | 1142 return error2(node, CompileTimeErrorCode.CONST_EVAL_TYPE_INT); |
| 1143 } | 1143 } |
| 1144 if (isSomeInt || leftOperand2.isSomeInt) { | 1144 if (isSomeInt || leftOperand.isSomeInt) { |
| 1145 return RESULT_INT; | 1145 return RESULT_INT; |
| 1146 } | 1146 } |
| 1147 Object leftValue = leftOperand2.value; | 1147 Object leftValue = leftOperand.value; |
| 1148 if (leftValue == null) { | 1148 if (leftValue == null) { |
| 1149 return error(node.leftOperand); | 1149 return error(node.leftOperand); |
| 1150 } else if (value == null) { | 1150 } else if (value == null) { |
| 1151 return error(node.rightOperand); | 1151 return error(node.rightOperand); |
| 1152 } else if (leftValue is int) { | 1152 } else if (leftValue is int) { |
| 1153 if (value is int) { | 1153 if (value is int) { |
| 1154 return valueOf(((leftValue as int)) & (value as int)); | 1154 return valueOf(((leftValue as int)) & (value as int)); |
| 1155 } | 1155 } |
| 1156 return error(node.leftOperand); | 1156 return error(node.leftOperand); |
| 1157 } | 1157 } |
| 1158 if (value is int) { | 1158 if (value is int) { |
| 1159 return error(node.rightOperand); | 1159 return error(node.rightOperand); |
| 1160 } | 1160 } |
| 1161 return union(error(node.leftOperand), error(node.rightOperand)); | 1161 return union(error(node.leftOperand), error(node.rightOperand)); |
| 1162 } | 1162 } |
| 1163 EvaluationResultImpl bitOrError(BinaryExpression node, ErrorResult leftOperand
) => leftOperand; | 1163 EvaluationResultImpl bitOrError(BinaryExpression node, ErrorResult leftOperand
) => leftOperand; |
| 1164 EvaluationResultImpl bitOrValid(BinaryExpression node, ValidResult leftOperand
2) { | 1164 EvaluationResultImpl bitOrValid(BinaryExpression node, ValidResult leftOperand
) { |
| 1165 if (!isAnyInt || !leftOperand2.isAnyInt) { | 1165 if (!isAnyInt || !leftOperand.isAnyInt) { |
| 1166 return error2(node, CompileTimeErrorCode.CONST_EVAL_TYPE_INT); | 1166 return error2(node, CompileTimeErrorCode.CONST_EVAL_TYPE_INT); |
| 1167 } | 1167 } |
| 1168 if (isSomeInt || leftOperand2.isSomeInt) { | 1168 if (isSomeInt || leftOperand.isSomeInt) { |
| 1169 return RESULT_INT; | 1169 return RESULT_INT; |
| 1170 } | 1170 } |
| 1171 Object leftValue = leftOperand2.value; | 1171 Object leftValue = leftOperand.value; |
| 1172 if (leftValue == null) { | 1172 if (leftValue == null) { |
| 1173 return error(node.leftOperand); | 1173 return error(node.leftOperand); |
| 1174 } else if (value == null) { | 1174 } else if (value == null) { |
| 1175 return error(node.rightOperand); | 1175 return error(node.rightOperand); |
| 1176 } else if (leftValue is int) { | 1176 } else if (leftValue is int) { |
| 1177 if (value is int) { | 1177 if (value is int) { |
| 1178 return valueOf(((leftValue as int)) | (value as int)); | 1178 return valueOf(((leftValue as int)) | (value as int)); |
| 1179 } | 1179 } |
| 1180 return error(node.leftOperand); | 1180 return error(node.leftOperand); |
| 1181 } | 1181 } |
| 1182 if (value is int) { | 1182 if (value is int) { |
| 1183 return error(node.rightOperand); | 1183 return error(node.rightOperand); |
| 1184 } | 1184 } |
| 1185 return union(error(node.leftOperand), error(node.rightOperand)); | 1185 return union(error(node.leftOperand), error(node.rightOperand)); |
| 1186 } | 1186 } |
| 1187 EvaluationResultImpl bitXorError(BinaryExpression node, ErrorResult leftOperan
d) => leftOperand; | 1187 EvaluationResultImpl bitXorError(BinaryExpression node, ErrorResult leftOperan
d) => leftOperand; |
| 1188 EvaluationResultImpl bitXorValid(BinaryExpression node, ValidResult leftOperan
d2) { | 1188 EvaluationResultImpl bitXorValid(BinaryExpression node, ValidResult leftOperan
d) { |
| 1189 if (!isAnyInt || !leftOperand2.isAnyInt) { | 1189 if (!isAnyInt || !leftOperand.isAnyInt) { |
| 1190 return error2(node, CompileTimeErrorCode.CONST_EVAL_TYPE_INT); | 1190 return error2(node, CompileTimeErrorCode.CONST_EVAL_TYPE_INT); |
| 1191 } | 1191 } |
| 1192 if (isSomeInt || leftOperand2.isSomeInt) { | 1192 if (isSomeInt || leftOperand.isSomeInt) { |
| 1193 return RESULT_INT; | 1193 return RESULT_INT; |
| 1194 } | 1194 } |
| 1195 Object leftValue = leftOperand2.value; | 1195 Object leftValue = leftOperand.value; |
| 1196 if (leftValue == null) { | 1196 if (leftValue == null) { |
| 1197 return error(node.leftOperand); | 1197 return error(node.leftOperand); |
| 1198 } else if (value == null) { | 1198 } else if (value == null) { |
| 1199 return error(node.rightOperand); | 1199 return error(node.rightOperand); |
| 1200 } else if (leftValue is int) { | 1200 } else if (leftValue is int) { |
| 1201 if (value is int) { | 1201 if (value is int) { |
| 1202 return valueOf(((leftValue as int)) ^ (value as int)); | 1202 return valueOf(((leftValue as int)) ^ (value as int)); |
| 1203 } | 1203 } |
| 1204 return error(node.leftOperand); | 1204 return error(node.leftOperand); |
| 1205 } | 1205 } |
| 1206 if (value is int) { | 1206 if (value is int) { |
| 1207 return error(node.rightOperand); | 1207 return error(node.rightOperand); |
| 1208 } | 1208 } |
| 1209 return union(error(node.leftOperand), error(node.rightOperand)); | 1209 return union(error(node.leftOperand), error(node.rightOperand)); |
| 1210 } | 1210 } |
| 1211 EvaluationResultImpl concatenateError(Expression node, ErrorResult leftOperand
) => leftOperand; | 1211 EvaluationResultImpl concatenateError(Expression node, ErrorResult leftOperand
) => leftOperand; |
| 1212 EvaluationResultImpl concatenateValid(Expression node, ValidResult leftOperand
) { | 1212 EvaluationResultImpl concatenateValid(Expression node, ValidResult leftOperand
) { |
| 1213 Object leftValue = leftOperand.value; | 1213 Object leftValue = leftOperand.value; |
| 1214 if (leftValue is String && value is String) { | 1214 if (leftValue is String && value is String) { |
| 1215 return valueOf4("${((leftValue as String))}${((value as String))}"); | 1215 return valueOf4("${((leftValue as String))}${((value as String))}"); |
| 1216 } | 1216 } |
| 1217 return error(node); | 1217 return error(node); |
| 1218 } | 1218 } |
| 1219 EvaluationResultImpl divideError(BinaryExpression node, ErrorResult leftOperan
d) => leftOperand; | 1219 EvaluationResultImpl divideError(BinaryExpression node, ErrorResult leftOperan
d) => leftOperand; |
| 1220 EvaluationResultImpl divideValid(BinaryExpression node, ValidResult leftOperan
d2) { | 1220 EvaluationResultImpl divideValid(BinaryExpression node, ValidResult leftOperan
d) { |
| 1221 if (!isAnyNum || !leftOperand2.isAnyNum) { | 1221 if (!isAnyNum || !leftOperand.isAnyNum) { |
| 1222 return error2(node, CompileTimeErrorCode.CONST_EVAL_TYPE_NUM); | 1222 return error2(node, CompileTimeErrorCode.CONST_EVAL_TYPE_NUM); |
| 1223 } | 1223 } |
| 1224 if (isSomeNum || leftOperand2.isSomeNum) { | 1224 if (isSomeNum || leftOperand.isSomeNum) { |
| 1225 return RESULT_NUM; | 1225 return RESULT_NUM; |
| 1226 } | 1226 } |
| 1227 Object leftValue = leftOperand2.value; | 1227 Object leftValue = leftOperand.value; |
| 1228 if (leftValue == null) { | 1228 if (leftValue == null) { |
| 1229 return error(node.leftOperand); | 1229 return error(node.leftOperand); |
| 1230 } else if (value == null) { | 1230 } else if (value == null) { |
| 1231 return error(node.rightOperand); | 1231 return error(node.rightOperand); |
| 1232 } else if (leftValue is int) { | 1232 } else if (leftValue is int) { |
| 1233 if (value is int) { | 1233 if (value is int) { |
| 1234 if (((value as int)) == 0) { | 1234 if (((value as int)) == 0) { |
| 1235 return valueOf3(((leftValue as int)).toDouble() / ((value as int)).toD
ouble()); | 1235 return valueOf3(((leftValue as int)).toDouble() / ((value as int)).toD
ouble()); |
| 1236 } | 1236 } |
| 1237 return valueOf(((leftValue as int)) ~/ (value as int)); | 1237 return valueOf(((leftValue as int)) ~/ (value as int)); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1279 } else if (leftValue is String) { | 1279 } else if (leftValue is String) { |
| 1280 if (value is String) { | 1280 if (value is String) { |
| 1281 return valueOf2(((leftValue as String)) == value); | 1281 return valueOf2(((leftValue as String)) == value); |
| 1282 } | 1282 } |
| 1283 return RESULT_FALSE; | 1283 return RESULT_FALSE; |
| 1284 } | 1284 } |
| 1285 return RESULT_FALSE; | 1285 return RESULT_FALSE; |
| 1286 } | 1286 } |
| 1287 EvaluationResultImpl greaterThanError(BinaryExpression node, ErrorResult leftO
perand) => leftOperand; | 1287 EvaluationResultImpl greaterThanError(BinaryExpression node, ErrorResult leftO
perand) => leftOperand; |
| 1288 EvaluationResultImpl greaterThanOrEqualError(BinaryExpression node, ErrorResul
t leftOperand) => leftOperand; | 1288 EvaluationResultImpl greaterThanOrEqualError(BinaryExpression node, ErrorResul
t leftOperand) => leftOperand; |
| 1289 EvaluationResultImpl greaterThanOrEqualValid(BinaryExpression node, ValidResul
t leftOperand2) { | 1289 EvaluationResultImpl greaterThanOrEqualValid(BinaryExpression node, ValidResul
t leftOperand) { |
| 1290 if (!isAnyNum || !leftOperand2.isAnyNum) { | 1290 if (!isAnyNum || !leftOperand.isAnyNum) { |
| 1291 return error2(node, CompileTimeErrorCode.CONST_EVAL_TYPE_NUM); | 1291 return error2(node, CompileTimeErrorCode.CONST_EVAL_TYPE_NUM); |
| 1292 } | 1292 } |
| 1293 if (isSomeNum || leftOperand2.isSomeNum) { | 1293 if (isSomeNum || leftOperand.isSomeNum) { |
| 1294 return RESULT_BOOL; | 1294 return RESULT_BOOL; |
| 1295 } | 1295 } |
| 1296 Object leftValue = leftOperand2.value; | 1296 Object leftValue = leftOperand.value; |
| 1297 if (leftValue == null) { | 1297 if (leftValue == null) { |
| 1298 return error(node.leftOperand); | 1298 return error(node.leftOperand); |
| 1299 } else if (value == null) { | 1299 } else if (value == null) { |
| 1300 return error(node.rightOperand); | 1300 return error(node.rightOperand); |
| 1301 } else if (leftValue is int) { | 1301 } else if (leftValue is int) { |
| 1302 if (value is int) { | 1302 if (value is int) { |
| 1303 return valueOf2(((leftValue as int)).compareTo(value as int) >= 0); | 1303 return valueOf2(((leftValue as int)).compareTo(value as int) >= 0); |
| 1304 } else if (value is double) { | 1304 } else if (value is double) { |
| 1305 return valueOf2(((leftValue as int)).toDouble() >= ((value as double))); | 1305 return valueOf2(((leftValue as int)).toDouble() >= ((value as double))); |
| 1306 } | 1306 } |
| 1307 } else if (leftValue is double) { | 1307 } else if (leftValue is double) { |
| 1308 if (value is int) { | 1308 if (value is int) { |
| 1309 return valueOf2(((leftValue as double)) >= ((value as int)).toDouble()); | 1309 return valueOf2(((leftValue as double)) >= ((value as int)).toDouble()); |
| 1310 } else if (value is double) { | 1310 } else if (value is double) { |
| 1311 return valueOf2(((leftValue as double)) >= ((value as double))); | 1311 return valueOf2(((leftValue as double)) >= ((value as double))); |
| 1312 } | 1312 } |
| 1313 } | 1313 } |
| 1314 return error(node); | 1314 return error(node); |
| 1315 } | 1315 } |
| 1316 EvaluationResultImpl greaterThanValid(BinaryExpression node, ValidResult leftO
perand2) { | 1316 EvaluationResultImpl greaterThanValid(BinaryExpression node, ValidResult leftO
perand) { |
| 1317 if (!isAnyNum || !leftOperand2.isAnyNum) { | 1317 if (!isAnyNum || !leftOperand.isAnyNum) { |
| 1318 return error2(node, CompileTimeErrorCode.CONST_EVAL_TYPE_NUM); | 1318 return error2(node, CompileTimeErrorCode.CONST_EVAL_TYPE_NUM); |
| 1319 } | 1319 } |
| 1320 if (isSomeNum || leftOperand2.isSomeNum) { | 1320 if (isSomeNum || leftOperand.isSomeNum) { |
| 1321 return RESULT_BOOL; | 1321 return RESULT_BOOL; |
| 1322 } | 1322 } |
| 1323 Object leftValue = leftOperand2.value; | 1323 Object leftValue = leftOperand.value; |
| 1324 if (leftValue == null) { | 1324 if (leftValue == null) { |
| 1325 return error(node.leftOperand); | 1325 return error(node.leftOperand); |
| 1326 } else if (value == null) { | 1326 } else if (value == null) { |
| 1327 return error(node.rightOperand); | 1327 return error(node.rightOperand); |
| 1328 } else if (leftValue is int) { | 1328 } else if (leftValue is int) { |
| 1329 if (value is int) { | 1329 if (value is int) { |
| 1330 return valueOf2(((leftValue as int)).compareTo(value as int) > 0); | 1330 return valueOf2(((leftValue as int)).compareTo(value as int) > 0); |
| 1331 } else if (value is double) { | 1331 } else if (value is double) { |
| 1332 return valueOf2(((leftValue as int)).toDouble() > ((value as double))); | 1332 return valueOf2(((leftValue as int)).toDouble() > ((value as double))); |
| 1333 } | 1333 } |
| 1334 } else if (leftValue is double) { | 1334 } else if (leftValue is double) { |
| 1335 if (value is int) { | 1335 if (value is int) { |
| 1336 return valueOf2(((leftValue as double)) > ((value as int)).toDouble()); | 1336 return valueOf2(((leftValue as double)) > ((value as int)).toDouble()); |
| 1337 } else if (value is double) { | 1337 } else if (value is double) { |
| 1338 return valueOf2(((leftValue as double)) > ((value as double))); | 1338 return valueOf2(((leftValue as double)) > ((value as double))); |
| 1339 } | 1339 } |
| 1340 } | 1340 } |
| 1341 return error(node); | 1341 return error(node); |
| 1342 } | 1342 } |
| 1343 EvaluationResultImpl integerDivideError(BinaryExpression node, ErrorResult lef
tOperand) => leftOperand; | 1343 EvaluationResultImpl integerDivideError(BinaryExpression node, ErrorResult lef
tOperand) => leftOperand; |
| 1344 EvaluationResultImpl integerDivideValid(BinaryExpression node, ValidResult lef
tOperand2) { | 1344 EvaluationResultImpl integerDivideValid(BinaryExpression node, ValidResult lef
tOperand) { |
| 1345 if (!isAnyNum || !leftOperand2.isAnyNum) { | 1345 if (!isAnyNum || !leftOperand.isAnyNum) { |
| 1346 return error2(node, CompileTimeErrorCode.CONST_EVAL_TYPE_NUM); | 1346 return error2(node, CompileTimeErrorCode.CONST_EVAL_TYPE_NUM); |
| 1347 } | 1347 } |
| 1348 if (isSomeNum || leftOperand2.isSomeNum) { | 1348 if (isSomeNum || leftOperand.isSomeNum) { |
| 1349 return RESULT_INT; | 1349 return RESULT_INT; |
| 1350 } | 1350 } |
| 1351 Object leftValue = leftOperand2.value; | 1351 Object leftValue = leftOperand.value; |
| 1352 if (leftValue == null) { | 1352 if (leftValue == null) { |
| 1353 return error(node.leftOperand); | 1353 return error(node.leftOperand); |
| 1354 } else if (value == null) { | 1354 } else if (value == null) { |
| 1355 return error(node.rightOperand); | 1355 return error(node.rightOperand); |
| 1356 } else if (leftValue is int) { | 1356 } else if (leftValue is int) { |
| 1357 if (value is int) { | 1357 if (value is int) { |
| 1358 if (((value as int)) == 0) { | 1358 if (((value as int)) == 0) { |
| 1359 return error2(node, CompileTimeErrorCode.CONST_EVAL_THROWS_IDBZE); | 1359 return error2(node, CompileTimeErrorCode.CONST_EVAL_THROWS_IDBZE); |
| 1360 } | 1360 } |
| 1361 return valueOf(((leftValue as int)) ~/ (value as int)); | 1361 return valueOf(((leftValue as int)) ~/ (value as int)); |
| 1362 } else if (value is double) { | 1362 } else if (value is double) { |
| 1363 double result = ((leftValue as int)).toDouble() / ((value as double)); | 1363 double result = ((leftValue as int)).toDouble() / ((value as double)); |
| 1364 return valueOf(result.toInt()); | 1364 return valueOf(result.toInt()); |
| 1365 } | 1365 } |
| 1366 } else if (leftValue is double) { | 1366 } else if (leftValue is double) { |
| 1367 if (value is int) { | 1367 if (value is int) { |
| 1368 double result = ((leftValue as double)) / ((value as int)).toDouble(); | 1368 double result = ((leftValue as double)) / ((value as int)).toDouble(); |
| 1369 return valueOf(result.toInt()); | 1369 return valueOf(result.toInt()); |
| 1370 } else if (value is double) { | 1370 } else if (value is double) { |
| 1371 double result = ((leftValue as double)) / ((value as double)); | 1371 double result = ((leftValue as double)) / ((value as double)); |
| 1372 return valueOf(result.toInt()); | 1372 return valueOf(result.toInt()); |
| 1373 } | 1373 } |
| 1374 } | 1374 } |
| 1375 return error(node); | 1375 return error(node); |
| 1376 } | 1376 } |
| 1377 EvaluationResultImpl lessThanError(BinaryExpression node, ErrorResult leftOper
and) => leftOperand; | 1377 EvaluationResultImpl lessThanError(BinaryExpression node, ErrorResult leftOper
and) => leftOperand; |
| 1378 EvaluationResultImpl lessThanOrEqualError(BinaryExpression node, ErrorResult l
eftOperand) => leftOperand; | 1378 EvaluationResultImpl lessThanOrEqualError(BinaryExpression node, ErrorResult l
eftOperand) => leftOperand; |
| 1379 EvaluationResultImpl lessThanOrEqualValid(BinaryExpression node, ValidResult l
eftOperand2) { | 1379 EvaluationResultImpl lessThanOrEqualValid(BinaryExpression node, ValidResult l
eftOperand) { |
| 1380 if (!isAnyNum || !leftOperand2.isAnyNum) { | 1380 if (!isAnyNum || !leftOperand.isAnyNum) { |
| 1381 return error2(node, CompileTimeErrorCode.CONST_EVAL_TYPE_NUM); | 1381 return error2(node, CompileTimeErrorCode.CONST_EVAL_TYPE_NUM); |
| 1382 } | 1382 } |
| 1383 if (isSomeNum || leftOperand2.isSomeNum) { | 1383 if (isSomeNum || leftOperand.isSomeNum) { |
| 1384 return RESULT_BOOL; | 1384 return RESULT_BOOL; |
| 1385 } | 1385 } |
| 1386 Object leftValue = leftOperand2.value; | 1386 Object leftValue = leftOperand.value; |
| 1387 if (leftValue == null) { | 1387 if (leftValue == null) { |
| 1388 return error(node.leftOperand); | 1388 return error(node.leftOperand); |
| 1389 } else if (value == null) { | 1389 } else if (value == null) { |
| 1390 return error(node.rightOperand); | 1390 return error(node.rightOperand); |
| 1391 } else if (leftValue is int) { | 1391 } else if (leftValue is int) { |
| 1392 if (value is int) { | 1392 if (value is int) { |
| 1393 return valueOf2(((leftValue as int)).compareTo(value as int) <= 0); | 1393 return valueOf2(((leftValue as int)).compareTo(value as int) <= 0); |
| 1394 } else if (value is double) { | 1394 } else if (value is double) { |
| 1395 return valueOf2(((leftValue as int)).toDouble() <= ((value as double))); | 1395 return valueOf2(((leftValue as int)).toDouble() <= ((value as double))); |
| 1396 } | 1396 } |
| 1397 } else if (leftValue is double) { | 1397 } else if (leftValue is double) { |
| 1398 if (value is int) { | 1398 if (value is int) { |
| 1399 return valueOf2(((leftValue as double)) <= ((value as int)).toDouble()); | 1399 return valueOf2(((leftValue as double)) <= ((value as int)).toDouble()); |
| 1400 } else if (value is double) { | 1400 } else if (value is double) { |
| 1401 return valueOf2(((leftValue as double)) <= ((value as double))); | 1401 return valueOf2(((leftValue as double)) <= ((value as double))); |
| 1402 } | 1402 } |
| 1403 } | 1403 } |
| 1404 return error(node); | 1404 return error(node); |
| 1405 } | 1405 } |
| 1406 EvaluationResultImpl lessThanValid(BinaryExpression node, ValidResult leftOper
and2) { | 1406 EvaluationResultImpl lessThanValid(BinaryExpression node, ValidResult leftOper
and) { |
| 1407 if (!isAnyNum || !leftOperand2.isAnyNum) { | 1407 if (!isAnyNum || !leftOperand.isAnyNum) { |
| 1408 return error2(node, CompileTimeErrorCode.CONST_EVAL_TYPE_NUM); | 1408 return error2(node, CompileTimeErrorCode.CONST_EVAL_TYPE_NUM); |
| 1409 } | 1409 } |
| 1410 if (isSomeNum || leftOperand2.isSomeNum) { | 1410 if (isSomeNum || leftOperand.isSomeNum) { |
| 1411 return RESULT_BOOL; | 1411 return RESULT_BOOL; |
| 1412 } | 1412 } |
| 1413 Object leftValue = leftOperand2.value; | 1413 Object leftValue = leftOperand.value; |
| 1414 if (leftValue == null) { | 1414 if (leftValue == null) { |
| 1415 return error(node.leftOperand); | 1415 return error(node.leftOperand); |
| 1416 } else if (value == null) { | 1416 } else if (value == null) { |
| 1417 return error(node.rightOperand); | 1417 return error(node.rightOperand); |
| 1418 } else if (leftValue is int) { | 1418 } else if (leftValue is int) { |
| 1419 if (value is int) { | 1419 if (value is int) { |
| 1420 return valueOf2(((leftValue as int)).compareTo(value as int) < 0); | 1420 return valueOf2(((leftValue as int)).compareTo(value as int) < 0); |
| 1421 } else if (value is double) { | 1421 } else if (value is double) { |
| 1422 return valueOf2(((leftValue as int)).toDouble() < ((value as double))); | 1422 return valueOf2(((leftValue as int)).toDouble() < ((value as double))); |
| 1423 } | 1423 } |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1455 if (isSomeBool || leftOperand.isSomeBool) { | 1455 if (isSomeBool || leftOperand.isSomeBool) { |
| 1456 return RESULT_BOOL; | 1456 return RESULT_BOOL; |
| 1457 } | 1457 } |
| 1458 Object leftValue = leftOperand.value; | 1458 Object leftValue = leftOperand.value; |
| 1459 if (leftValue is bool && ((leftValue as bool))) { | 1459 if (leftValue is bool && ((leftValue as bool))) { |
| 1460 return RESULT_TRUE; | 1460 return RESULT_TRUE; |
| 1461 } | 1461 } |
| 1462 return booleanConversion(node.rightOperand, value); | 1462 return booleanConversion(node.rightOperand, value); |
| 1463 } | 1463 } |
| 1464 EvaluationResultImpl minusError(BinaryExpression node, ErrorResult leftOperand
) => leftOperand; | 1464 EvaluationResultImpl minusError(BinaryExpression node, ErrorResult leftOperand
) => leftOperand; |
| 1465 EvaluationResultImpl minusValid(BinaryExpression node, ValidResult leftOperand
2) { | 1465 EvaluationResultImpl minusValid(BinaryExpression node, ValidResult leftOperand
) { |
| 1466 if (!isAnyNum || !leftOperand2.isAnyNum) { | 1466 if (!isAnyNum || !leftOperand.isAnyNum) { |
| 1467 return error2(node, CompileTimeErrorCode.CONST_EVAL_TYPE_NUM); | 1467 return error2(node, CompileTimeErrorCode.CONST_EVAL_TYPE_NUM); |
| 1468 } | 1468 } |
| 1469 if (isSomeInt || leftOperand2.isSomeInt) { | 1469 if (isSomeInt || leftOperand.isSomeInt) { |
| 1470 return RESULT_INT; | 1470 return RESULT_INT; |
| 1471 } else if (isSomeNum || leftOperand2.isSomeNum) { | 1471 } else if (isSomeNum || leftOperand.isSomeNum) { |
| 1472 return RESULT_NUM; | 1472 return RESULT_NUM; |
| 1473 } | 1473 } |
| 1474 Object leftValue = leftOperand2.value; | 1474 Object leftValue = leftOperand.value; |
| 1475 if (leftValue == null) { | 1475 if (leftValue == null) { |
| 1476 return error(node.leftOperand); | 1476 return error(node.leftOperand); |
| 1477 } else if (value == null) { | 1477 } else if (value == null) { |
| 1478 return error(node.rightOperand); | 1478 return error(node.rightOperand); |
| 1479 } else if (leftValue is int) { | 1479 } else if (leftValue is int) { |
| 1480 if (value is int) { | 1480 if (value is int) { |
| 1481 return valueOf(((leftValue as int)) - (value as int)); | 1481 return valueOf(((leftValue as int)) - (value as int)); |
| 1482 } else if (value is double) { | 1482 } else if (value is double) { |
| 1483 return valueOf3(((leftValue as int)).toDouble() - ((value as double))); | 1483 return valueOf3(((leftValue as int)).toDouble() - ((value as double))); |
| 1484 } | 1484 } |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1520 return RESULT_TRUE; | 1520 return RESULT_TRUE; |
| 1521 } else if (leftValue is String) { | 1521 } else if (leftValue is String) { |
| 1522 if (value is String) { | 1522 if (value is String) { |
| 1523 return valueOf2(((leftValue as String)) != value); | 1523 return valueOf2(((leftValue as String)) != value); |
| 1524 } | 1524 } |
| 1525 return RESULT_TRUE; | 1525 return RESULT_TRUE; |
| 1526 } | 1526 } |
| 1527 return RESULT_TRUE; | 1527 return RESULT_TRUE; |
| 1528 } | 1528 } |
| 1529 EvaluationResultImpl remainderError(BinaryExpression node, ErrorResult leftOpe
rand) => leftOperand; | 1529 EvaluationResultImpl remainderError(BinaryExpression node, ErrorResult leftOpe
rand) => leftOperand; |
| 1530 EvaluationResultImpl remainderValid(BinaryExpression node, ValidResult leftOpe
rand2) { | 1530 EvaluationResultImpl remainderValid(BinaryExpression node, ValidResult leftOpe
rand) { |
| 1531 if (!isAnyNum || !leftOperand2.isAnyNum) { | 1531 if (!isAnyNum || !leftOperand.isAnyNum) { |
| 1532 return error2(node, CompileTimeErrorCode.CONST_EVAL_TYPE_NUM); | 1532 return error2(node, CompileTimeErrorCode.CONST_EVAL_TYPE_NUM); |
| 1533 } | 1533 } |
| 1534 if (isSomeInt || leftOperand2.isSomeInt) { | 1534 if (isSomeInt || leftOperand.isSomeInt) { |
| 1535 return RESULT_INT; | 1535 return RESULT_INT; |
| 1536 } else if (isSomeNum || leftOperand2.isSomeNum) { | 1536 } else if (isSomeNum || leftOperand.isSomeNum) { |
| 1537 return RESULT_NUM; | 1537 return RESULT_NUM; |
| 1538 } | 1538 } |
| 1539 Object leftValue = leftOperand2.value; | 1539 Object leftValue = leftOperand.value; |
| 1540 if (leftValue == null) { | 1540 if (leftValue == null) { |
| 1541 return error(node.leftOperand); | 1541 return error(node.leftOperand); |
| 1542 } else if (value == null) { | 1542 } else if (value == null) { |
| 1543 return error(node.rightOperand); | 1543 return error(node.rightOperand); |
| 1544 } else if (leftValue is int) { | 1544 } else if (leftValue is int) { |
| 1545 if (value is int) { | 1545 if (value is int) { |
| 1546 if (((value as int)) == 0) { | 1546 if (((value as int)) == 0) { |
| 1547 return valueOf3(((leftValue as int)).toDouble() % ((value as int)).toD
ouble()); | 1547 return valueOf3(((leftValue as int)).toDouble() % ((value as int)).toD
ouble()); |
| 1548 } | 1548 } |
| 1549 return valueOf(((leftValue as int)).remainder(value as int)); | 1549 return valueOf(((leftValue as int)).remainder(value as int)); |
| 1550 } else if (value is double) { | 1550 } else if (value is double) { |
| 1551 return valueOf3(((leftValue as int)).toDouble() % ((value as double))); | 1551 return valueOf3(((leftValue as int)).toDouble() % ((value as double))); |
| 1552 } | 1552 } |
| 1553 } else if (leftValue is double) { | 1553 } else if (leftValue is double) { |
| 1554 if (value is int) { | 1554 if (value is int) { |
| 1555 return valueOf3(((leftValue as double)) % ((value as int)).toDouble()); | 1555 return valueOf3(((leftValue as double)) % ((value as int)).toDouble()); |
| 1556 } else if (value is double) { | 1556 } else if (value is double) { |
| 1557 return valueOf3(((leftValue as double)) % ((value as double))); | 1557 return valueOf3(((leftValue as double)) % ((value as double))); |
| 1558 } | 1558 } |
| 1559 } | 1559 } |
| 1560 return error(node); | 1560 return error(node); |
| 1561 } | 1561 } |
| 1562 EvaluationResultImpl shiftLeftError(BinaryExpression node, ErrorResult leftOpe
rand) => leftOperand; | 1562 EvaluationResultImpl shiftLeftError(BinaryExpression node, ErrorResult leftOpe
rand) => leftOperand; |
| 1563 EvaluationResultImpl shiftLeftValid(BinaryExpression node, ValidResult leftOpe
rand2) { | 1563 EvaluationResultImpl shiftLeftValid(BinaryExpression node, ValidResult leftOpe
rand) { |
| 1564 if (!isAnyInt || !leftOperand2.isAnyInt) { | 1564 if (!isAnyInt || !leftOperand.isAnyInt) { |
| 1565 return error2(node, CompileTimeErrorCode.CONST_EVAL_TYPE_INT); | 1565 return error2(node, CompileTimeErrorCode.CONST_EVAL_TYPE_INT); |
| 1566 } | 1566 } |
| 1567 if (isSomeInt || leftOperand2.isSomeInt) { | 1567 if (isSomeInt || leftOperand.isSomeInt) { |
| 1568 return RESULT_INT; | 1568 return RESULT_INT; |
| 1569 } | 1569 } |
| 1570 Object leftValue = leftOperand2.value; | 1570 Object leftValue = leftOperand.value; |
| 1571 if (leftValue == null) { | 1571 if (leftValue == null) { |
| 1572 return error(node.leftOperand); | 1572 return error(node.leftOperand); |
| 1573 } else if (value == null) { | 1573 } else if (value == null) { |
| 1574 return error(node.rightOperand); | 1574 return error(node.rightOperand); |
| 1575 } else if (leftValue is int) { | 1575 } else if (leftValue is int) { |
| 1576 if (value is int) { | 1576 if (value is int) { |
| 1577 return valueOf(((leftValue as int)) << ((value as int))); | 1577 return valueOf(((leftValue as int)) << ((value as int))); |
| 1578 } | 1578 } |
| 1579 return error(node.rightOperand); | 1579 return error(node.rightOperand); |
| 1580 } | 1580 } |
| 1581 if (value is int) { | 1581 if (value is int) { |
| 1582 return error(node.leftOperand); | 1582 return error(node.leftOperand); |
| 1583 } | 1583 } |
| 1584 return union(error(node.leftOperand), error(node.rightOperand)); | 1584 return union(error(node.leftOperand), error(node.rightOperand)); |
| 1585 } | 1585 } |
| 1586 EvaluationResultImpl shiftRightError(BinaryExpression node, ErrorResult leftOp
erand) => leftOperand; | 1586 EvaluationResultImpl shiftRightError(BinaryExpression node, ErrorResult leftOp
erand) => leftOperand; |
| 1587 EvaluationResultImpl shiftRightValid(BinaryExpression node, ValidResult leftOp
erand2) { | 1587 EvaluationResultImpl shiftRightValid(BinaryExpression node, ValidResult leftOp
erand) { |
| 1588 if (!isAnyInt || !leftOperand2.isAnyInt) { | 1588 if (!isAnyInt || !leftOperand.isAnyInt) { |
| 1589 return error2(node, CompileTimeErrorCode.CONST_EVAL_TYPE_INT); | 1589 return error2(node, CompileTimeErrorCode.CONST_EVAL_TYPE_INT); |
| 1590 } | 1590 } |
| 1591 if (isSomeInt || leftOperand2.isSomeInt) { | 1591 if (isSomeInt || leftOperand.isSomeInt) { |
| 1592 return RESULT_INT; | 1592 return RESULT_INT; |
| 1593 } | 1593 } |
| 1594 Object leftValue = leftOperand2.value; | 1594 Object leftValue = leftOperand.value; |
| 1595 if (leftValue == null) { | 1595 if (leftValue == null) { |
| 1596 return error(node.leftOperand); | 1596 return error(node.leftOperand); |
| 1597 } else if (value == null) { | 1597 } else if (value == null) { |
| 1598 return error(node.rightOperand); | 1598 return error(node.rightOperand); |
| 1599 } else if (leftValue is int) { | 1599 } else if (leftValue is int) { |
| 1600 if (value is int) { | 1600 if (value is int) { |
| 1601 return valueOf(((leftValue as int)) >> ((value as int))); | 1601 return valueOf(((leftValue as int)) >> ((value as int))); |
| 1602 } | 1602 } |
| 1603 return error(node.rightOperand); | 1603 return error(node.rightOperand); |
| 1604 } | 1604 } |
| 1605 if (value is int) { | 1605 if (value is int) { |
| 1606 return error(node.leftOperand); | 1606 return error(node.leftOperand); |
| 1607 } | 1607 } |
| 1608 return union(error(node.leftOperand), error(node.rightOperand)); | 1608 return union(error(node.leftOperand), error(node.rightOperand)); |
| 1609 } | 1609 } |
| 1610 EvaluationResultImpl timesError(BinaryExpression node, ErrorResult leftOperand
) => leftOperand; | 1610 EvaluationResultImpl timesError(BinaryExpression node, ErrorResult leftOperand
) => leftOperand; |
| 1611 EvaluationResultImpl timesValid(BinaryExpression node, ValidResult leftOperand
2) { | 1611 EvaluationResultImpl timesValid(BinaryExpression node, ValidResult leftOperand
) { |
| 1612 if (!isAnyNum || !leftOperand2.isAnyNum) { | 1612 if (!isAnyNum || !leftOperand.isAnyNum) { |
| 1613 return error2(node, CompileTimeErrorCode.CONST_EVAL_TYPE_NUM); | 1613 return error2(node, CompileTimeErrorCode.CONST_EVAL_TYPE_NUM); |
| 1614 } | 1614 } |
| 1615 if (isSomeInt || leftOperand2.isSomeInt) { | 1615 if (isSomeInt || leftOperand.isSomeInt) { |
| 1616 return RESULT_INT; | 1616 return RESULT_INT; |
| 1617 } else if (isSomeNum || leftOperand2.isSomeNum) { | 1617 } else if (isSomeNum || leftOperand.isSomeNum) { |
| 1618 return RESULT_NUM; | 1618 return RESULT_NUM; |
| 1619 } | 1619 } |
| 1620 Object leftValue = leftOperand2.value; | 1620 Object leftValue = leftOperand.value; |
| 1621 if (leftValue == null) { | 1621 if (leftValue == null) { |
| 1622 return error(node.leftOperand); | 1622 return error(node.leftOperand); |
| 1623 } else if (value == null) { | 1623 } else if (value == null) { |
| 1624 return error(node.rightOperand); | 1624 return error(node.rightOperand); |
| 1625 } else if (leftValue is int) { | 1625 } else if (leftValue is int) { |
| 1626 if (value is int) { | 1626 if (value is int) { |
| 1627 return valueOf(((leftValue as int)) * (value as int)); | 1627 return valueOf(((leftValue as int)) * (value as int)); |
| 1628 } else if (value is double) { | 1628 } else if (value is double) { |
| 1629 return valueOf3(((leftValue as int)).toDouble() * ((value as double))); | 1629 return valueOf3(((leftValue as int)).toDouble() * ((value as double))); |
| 1630 } | 1630 } |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1737 ValidResult valueOf3(double value) => new ValidResult(value); | 1737 ValidResult valueOf3(double value) => new ValidResult(value); |
| 1738 | 1738 |
| 1739 /** | 1739 /** |
| 1740 * Return a result object representing the given value. | 1740 * Return a result object representing the given value. |
| 1741 * | 1741 * |
| 1742 * @param value the value to be represented as a result object | 1742 * @param value the value to be represented as a result object |
| 1743 * @return a result object representing the given value | 1743 * @return a result object representing the given value |
| 1744 */ | 1744 */ |
| 1745 ValidResult valueOf4(String value) => new ValidResult(value); | 1745 ValidResult valueOf4(String value) => new ValidResult(value); |
| 1746 } | 1746 } |
| OLD | NEW |