)
self.assertEqual(result_lines, expected_error.splitlines())
+ def assertSpecialized(self, func, expected_specialization):
+ result_lines = self.get_exception(func)
+ specialization_line = result_lines[-1]
+ self.assertEqual(specialization_line.lstrip(), expected_specialization)
+
+ def test_specialization_variations(self):
+ self.assertSpecialized(lambda: 1/0,
+ "~^~")
+ self.assertSpecialized(lambda: 1/0/3,
+ "~^~")
+ self.assertSpecialized(lambda: 1 / 0,
+ "~~^~~")
+ self.assertSpecialized(lambda: 1 / 0 / 3,
+ "~~^~~")
+ self.assertSpecialized(lambda: 1/ 0,
+ "~^~~")
+ self.assertSpecialized(lambda: 1/ 0/3,
+ "~^~~")
+ self.assertSpecialized(lambda: 1 / 0,
+ "~~~~~^~~~")
+ self.assertSpecialized(lambda: 1 / 0 / 5,
+ "~~~~~^~~~")
+ self.assertSpecialized(lambda: 1 /0,
+ "~~^~")
+ self.assertSpecialized(lambda: 1//0,
+ "~^^~")
+ self.assertSpecialized(lambda: 1//0//4,
+ "~^^~")
+ self.assertSpecialized(lambda: 1 // 0,
+ "~~^^~~")
+ self.assertSpecialized(lambda: 1 // 0 // 4,
+ "~~^^~~")
+ self.assertSpecialized(lambda: 1 //0,
+ "~~^^~")
+ self.assertSpecialized(lambda: 1// 0,
+ "~^^~~")
+
+
@cpython_only
@requires_debug_ranges()
class CPythonTracebackErrorCaretTests(TracebackErrorLocationCaretTests):
case BinOp_kind: {
expr_ty left = expr->v.BinOp.left;
expr_ty right = expr->v.BinOp.right;
- for (int i = left->end_col_offset + 1; i < right->col_offset; i++) {
+ for (int i = left->end_col_offset; i < right->col_offset; i++) {
if (IS_WHITESPACE(segment_str[i])) {
continue;
}