Skip to content

Commit f7cf7c3

Browse files
committed
fix error paths
1 parent 72ff419 commit f7cf7c3

3 files changed

Lines changed: 13 additions & 8 deletions

File tree

sdks/python/src/lqp/proto_validator.py

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -496,16 +496,21 @@ def _mark_var_used(self, var_name: str, node: Message):
496496

497497
def visit_Abstraction(self, node: logic_pb2.Abstraction, *args: Any):
498498
self.scopes.append((set(), set()))
499+
binding_map: dict[str, logic_pb2.Binding] = {}
499500
for binding in node.vars:
500-
self._declare_var(binding.var.name)
501+
name = binding.var.name
502+
self._declare_var(name)
503+
binding_map[name] = binding
501504
self.visit(node.value, *args)
502505
declared, used = self.scopes.pop()
503506
unused = declared - used
504-
if unused:
505-
for var_name in unused:
506-
if var_name.startswith("_"):
507-
continue
508-
raise ValidationError(f"Unused variable declared: '{var_name}'")
507+
for var_name in unused:
508+
if var_name.startswith("_"):
509+
continue
510+
b = binding_map[var_name]
511+
raise ValidationError(
512+
f"Unused variable declared{self._location_str(b)}: '{var_name}'"
513+
)
509514

510515
def visit_Var(self, node: logic_pb2.Var, *args: Any):
511516
self._mark_var_used(node.name, node)

sdks/python/tests/validator/fail_fragment_collision.lqp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
;; ERROR: Duplicate declaration within fragment in epoch
1+
;; ERROR: Duplicate declaration within fragment in epoch at fail_fragment_collision.lqp:10:11: 'output'
22
(transaction
33
(epoch
44
(writes

sdks/python/tests/validator/fail_unused.lqp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
;; ERROR: Unused variable declared: 'unused'
1+
;; ERROR: Unused variable declared at fail_unused.lqp:7:30: 'unused'
22
(transaction
33
(epoch
44
(writes

0 commit comments

Comments
 (0)