From 7ca05a9ca188c9487b0b3067ca100ea105dca205 Mon Sep 17 00:00:00 2001 From: Ian Cordasco Date: Fri, 27 Jan 2017 15:22:49 -0600 Subject: [PATCH] Avoid calling rstrip on None When we receive a SyntaxError, it is not guaranteed to have a token that includes the physical line causing the issue. If it does not, we now will avoid trying to determine the number of rows and columns that are actually there and default to what the error tells us. Closes #279 --- src/flake8/checker.py | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/flake8/checker.py b/src/flake8/checker.py index 32d438c..a9d7cad 100644 --- a/src/flake8/checker.py +++ b/src/flake8/checker.py @@ -443,19 +443,24 @@ class FileChecker(object): # numbers. We need to decrement the column number by 1 at # least. column_offset = 1 + row_offset = 0 # See also: https://gitlab.com/pycqa/flake8/issues/237 physical_line = token[-1] - # NOTE(sigmavirus24): SyntaxErrors also don't exactly have a - # "physical" line so much as what was accumulated by the point - # tokenizing failed. - # See also: https://gitlab.com/pycqa/flake8/issues/237 - lines = physical_line.rstrip('\n').split('\n') - row_offset = len(lines) - 1 - logical_line = lines[0] - logical_line_length = len(logical_line) - if column > logical_line_length: - column = logical_line_length + # NOTE(sigmavirus24): Not all "tokens" have a string as the last + # argument. In this event, let's skip trying to find the correct + # column and row values. + if physical_line is not None: + # NOTE(sigmavirus24): SyntaxErrors also don't exactly have a + # "physical" line so much as what was accumulated by the point + # tokenizing failed. + # See also: https://gitlab.com/pycqa/flake8/issues/237 + lines = physical_line.rstrip('\n').split('\n') + row_offset = len(lines) - 1 + logical_line = lines[0] + logical_line_length = len(logical_line) + if column > logical_line_length: + column = logical_line_length row -= row_offset column -= column_offset return row, column