Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 12 additions & 1 deletion vyper/semantics/namespace.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,18 @@ def validate_assignment(self, attr):
prev_decl = getattr(prev, "decl_node", None)
msg = f"'{attr}' has already been declared"
if prev_decl is None:
msg += f" as a {prev}"
# attempt to print a hint for namespace collision
alias = getattr(prev, "alias", None)

if alias:
hint = f" via import (alias=`{alias}`)"
else:
short_name = getattr(prev, "name", None)
type_name = type(prev).__name__

hint = f" as {type_name} '{short_name}'" if short_name else f" as {type_name}"

msg += hint + f".\n\n Suggested fix: rename or remove the previous declaration (e.g. use `import {attr} as ...` to avoid collisions)"
raise NamespaceCollision(msg, prev_decl=prev_decl)


Expand Down