Codebase list sugar-calculate-activity / 6be1180
Fix issues occured while raising RuntimeError eqn was added to RuntimeError, but not passed to the parent class ParserError Errors occured while ParserError tried subscripting on the missing eqn variable Fix adds the missing arguments while raising RuntimeError Fixes regressions introduced in eb9d99a Reproduce: Type random text (eg. sweetener) -> Hit Enter / Equals symbol (=) Traceback: ``` 1592573782.228379 DEBUG Calculate: Result: RuntimeError("Variable 'sweetener' not defined", 0, 5) Traceback (most recent call last): File "/usr/share/sugar/activities/Calculate.activity/layout.py", line 133, in <lambda> lambda w: self._parent.process()], File "/usr/share/sugar/activities/Calculate.activity/calculate.py", line 552, in process self.set_error_equation(eqn) File "/usr/share/sugar/activities/Calculate.activity/calculate.py", line 444, in set_error_equation self.set_last_equation(eqn) File "/usr/share/sugar/activities/Calculate.activity/calculate.py", line 439, in set_last_equation self.layout.last_eq.set_buffer(eqn.create_lasteq_textbuf()) File "/usr/share/sugar/activities/Calculate.activity/calculate.py", line 219, in create_lasteq_textbuf resstr = str(self.result) File "/usr/share/sugar/activities/Calculate.activity/astparser.py", line 110, in __str__ {'a': self.eqn[self._range[0] - 1: self._range[1] - 1], TypeError: 'NoneType' object is not subscriptable ``` Fixes #67 Shaan Subbaiah authored 3 years ago James Cameron committed 3 years ago
1 changed file(s) with 14 addition(s) and 13 deletion(s). Raw diff Collapse all Expand all
7171 ParserError.__init__(self, msg, start, eqn, end)
7272
7373 def __str__(self):
74 msg = _("Error at %s, position: %s") % \
75 (self.eqn[self._range[0] - 1: self._range[1] - 1],
74 msg = _("Error at \'%s\', position: %s") % \
75 (self.eqn[self._range[0]: self._range[1]] or self.eqn,
7676 self._range[0])
7777 if self._msg is not None and len(self._msg) > 0:
78 msg += ": %s" % (self._msg)
78 msg += "\n%s" % (self._msg)
7979 return msg
8080
8181
8484 """Class for reporting syntax errors."""
8585
8686 def __init__(self, module=None, helper=None, start=0, end=0):
87 ParserError.__init__(self, _("Syntax Error."), start, end)
87 ParserError.__init__(self, _("Syntax Error."), start, "", end)
8888 if module is None and helper is not None:
8989 self.help_text = helper.get_help(module)
9090 else:
102102 """Class for error during executing."""
103103
104104 def __init__(self, msg, start, eqn, end=None):
105 ParserError.__init__(self, msg, start, end)
105 ParserError.__init__(self, msg, start, eqn, end)
106106
107107 def __str__(self):
108 msg = _("Error at %s, position: %s") % \
109 (self.eqn[self._range[0] - 1: self._range[1] - 1],
108 msg = _("Error at \'%s\', position: %s") % \
109 (self.eqn[self._range[0]: self._range[1]] or self.eqn,
110110 self._range[0])
111111 if self._msg is not None and len(self._msg) > 0:
112 msg += ": %s" % (self._msg)
112 msg += "\n%s" % (self._msg)
113113 return msg
114114
115115
118118 """Class for error if incorrect arguments are entered."""
119119
120120 def __init__(self, msg, end=None):
121 ParserError.__init__(self, msg, 0, end)
121 ParserError.__init__(self, msg, 0, "", end)
122122
123123 def __str__(self):
124124 return self._msg
451451 try:
452452 return func(left, right)
453453 except Exception as e:
454 raise RuntimeError(str(e), node.right.col_offset - 1)
454 raise RuntimeError(str(e), node.right.col_offset - 1, "")
455455
456456 elif isinstance(node, ast.UnaryOp):
457457 operand = self._process_node(node.operand, state)
507507 if not isfunc:
508508 # Check whether variable was already used in this branch
509509 if node.id in state.branch_vars:
510 raise RuntimeError(_('Recursion detected'), ofs)
510 raise RuntimeError(_('Recursion detected'), ofs, "")
511511 state.branch_vars = copy.copy(state.branch_vars)
512512
513513 # Update where variable is first used
534534 msg = _("Function '%s' not defined") % (node.id)
535535 else:
536536 msg = _("Variable '%s' not defined") % (node.id)
537 raise RuntimeError(msg, ofs, ofs + len(node.id))
537 raise RuntimeError(msg, ofs, node.id, ofs + len(node.id))
538538
539539 elif isinstance(node, ast.Attribute):
540540 parent = self._process_node(node.value, state)
544544 return val
545545 except Exception as e:
546546 msg = _("Attribute '%s' does not exist") % node.value
547 raise RuntimeError(msg, ofs, ofs + len(node.value))
547 raise RuntimeError(msg, ofs, node.value,
548 ofs + len(node.value))
548549
549550 return None
550551