summaryrefslogtreecommitdiff
path: root/pylint/lint/pylinter.py
diff options
context:
space:
mode:
Diffstat (limited to 'pylint/lint/pylinter.py')
-rw-r--r--pylint/lint/pylinter.py44
1 files changed, 38 insertions, 6 deletions
diff --git a/pylint/lint/pylinter.py b/pylint/lint/pylinter.py
index 913bc4a22..53453af40 100644
--- a/pylint/lint/pylinter.py
+++ b/pylint/lint/pylinter.py
@@ -1413,14 +1413,30 @@ class PyLinter(
args: Optional[Any],
confidence: Optional[interfaces.Confidence],
col_offset: Optional[int],
+ end_lineno: Optional[int],
+ end_col_offset: Optional[int],
) -> None:
"""After various checks have passed a single Message is
passed to the reporter and added to stats"""
message_definition.check_message_definition(line, node)
- if line is None and node is not None:
- line = node.fromlineno
- if col_offset is None and hasattr(node, "col_offset"):
- col_offset = node.col_offset # type: ignore[union-attr]
+
+ # Look up "location" data of node if not yet supplied
+ if node:
+ if not line:
+ line = node.fromlineno
+ # pylint: disable=fixme
+ # TODO: Initialize col_offset on every node (can be None) -> astroid
+ if not col_offset and hasattr(node, "col_offset"):
+ col_offset = node.col_offset
+ # pylint: disable=fixme
+ # TODO: Initialize end_lineno on every node (can be None) -> astroid
+ # See https://github.com/PyCQA/astroid/issues/1273
+ if not end_lineno and hasattr(node, "end_lineno"):
+ end_lineno = node.end_lineno
+ # pylint: disable=fixme
+ # TODO: Initialize end_col_offset on every node (can be None) -> astroid
+ if not end_col_offset and hasattr(node, "end_col_offset"):
+ end_col_offset = node.end_col_offset
# should this message be displayed
if not self.is_message_enabled(message_definition.msgid, line, confidence):
@@ -1463,7 +1479,14 @@ class PyLinter(
message_definition.msgid,
message_definition.symbol,
MessageLocationTuple(
- abspath, path, module or "", obj, line or 1, col_offset or 0
+ abspath,
+ path,
+ module or "",
+ obj,
+ line or 1,
+ col_offset or 0,
+ end_lineno,
+ end_col_offset,
),
msg,
confidence,
@@ -1478,6 +1501,8 @@ class PyLinter(
args: Optional[Any] = None,
confidence: Optional[interfaces.Confidence] = None,
col_offset: Optional[int] = None,
+ end_lineno: Optional[int] = None,
+ end_col_offset: Optional[int] = None,
) -> None:
"""Adds a message given by ID or name.
@@ -1492,7 +1517,14 @@ class PyLinter(
message_definitions = self.msgs_store.get_message_definitions(msgid)
for message_definition in message_definitions:
self._add_one_message(
- message_definition, line, node, args, confidence, col_offset
+ message_definition,
+ line,
+ node,
+ args,
+ confidence,
+ col_offset,
+ end_lineno,
+ end_col_offset,
)
def add_ignored_message(