From be184241fda8397fcef01825551d99d042655805 Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Tue, 16 Jun 2020 08:51:54 +0200 Subject: [PATCH] Add SyntaxError.get_message --- CHANGELOG.rst | 1 + jedi/api/errors.py | 3 +++ test/test_api/test_syntax_errors.py | 15 ++++++++------- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 76f50a42..10f12db5 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -9,6 +9,7 @@ Unreleased: 0.17.1 (2020-04-) - Django ``Model`` meta class support - Added Django Stubs to Jedi, thanks to all contributors of the `Django Stubs `_ project +- Added ``SyntaxError.get_message`` - Python 3.9 support - A few bugfixes diff --git a/jedi/api/errors.py b/jedi/api/errors.py index ea104b6f..6dc9ae2d 100644 --- a/jedi/api/errors.py +++ b/jedi/api/errors.py @@ -35,6 +35,9 @@ class SyntaxError(object): """The column where the error ends (starting with 0).""" return self._parso_error.end_pos[1] + def get_message(self): + return self._parso_error.message + def __repr__(self): return '<%s from=%s to=%s>' % ( self.__class__.__name__, diff --git a/test/test_api/test_syntax_errors.py b/test/test_api/test_syntax_errors.py index 01e99688..f604f123 100644 --- a/test/test_api/test_syntax_errors.py +++ b/test/test_api/test_syntax_errors.py @@ -10,20 +10,21 @@ import pytest @pytest.mark.parametrize( - 'code, line, column, until_line, until_column', [ - ('?\n', 1, 0, 1, 1), - ('x %% y', 1, 3, 1, 4), - ('"""\n\n', 1, 0, 3, 0), - ('(1, 2\n', 2, 0, 2, 0), - ('foo(1, 2\ndef x(): pass', 2, 0, 2, 3), + 'code, line, column, until_line, until_column, message', [ + ('?\n', 1, 0, 1, 1, 'SyntaxError: invalid syntax'), + ('x %% y', 1, 3, 1, 4, 'SyntaxError: invalid syntax'), + ('"""\n\n', 1, 0, 3, 0, 'SyntaxError: EOF while scanning triple-quoted string literal'), + ('(1, 2\n', 2, 0, 2, 0, 'SyntaxError: invalid syntax'), + ('foo(1, 2\ndef x(): pass', 2, 0, 2, 3, 'SyntaxError: invalid syntax'), ] ) -def test_simple_syntax_errors(Script, code, line, column, until_line, until_column): +def test_simple_syntax_errors(Script, code, line, column, until_line, until_column, message): e, = Script(code).get_syntax_errors() assert e.line == line assert e.column == column assert e.until_line == until_line assert e.until_column == until_column + assert e.get_message() == message @pytest.mark.parametrize(