Skip to content

Commit 5d45fdc

Browse files
authored
Keep resolution errors to the fn (#4106)
1 parent d7a04dd commit 5d45fdc

File tree

2 files changed

+4
-2
lines changed

2 files changed

+4
-2
lines changed

src/cfnlint/rules/functions/_BaseFn.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
from __future__ import annotations
77

8-
from collections import namedtuple
8+
from collections import deque, namedtuple
99
from typing import Any, Tuple
1010

1111
from cfnlint.helpers import ToPy, ensure_list, is_types_compatible
@@ -59,6 +59,8 @@ def validator(self, validator: Validator) -> Validator:
5959
def _clean_resolve_errors(
6060
self, err: ValidationError, value: Any, instance: Any
6161
) -> ValidationError:
62+
if len(err.path) > 1:
63+
err.path = deque([err.path[0]])
6264
err.message = err.message.replace(f"{value!r}", f"{instance!r}")
6365
err.message = f"{err.message} when {self.fn.name!r} is resolved"
6466
if self.child_rules[self.resolved_rule]:

src/cfnlint/template/template.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -723,7 +723,7 @@ def get_location_yaml(self, text: Any, path: Path):
723723
if isinstance(text, list) and isinstance(path[0], int):
724724
try:
725725
result = self._loc(text[path[0]])
726-
except AttributeError as err:
726+
except (AttributeError, IndexError) as err:
727727
LOGGER.debug(err)
728728
else:
729729
try:

0 commit comments

Comments
 (0)