Skip to content

Commit 1e5de72

Browse files
committed
Don't let Resolver forget function_name
1 parent c372312 commit 1e5de72

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

plum/function.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ def __init__(self, f: Callable, owner: Optional[str] = None) -> None:
8888

8989
# Initialise pending and resolved methods.
9090
self._pending: List[Tuple[Callable, Optional[Signature], int]] = []
91-
self._resolver = Resolver(function_name=self.__name__)
91+
self._resolver = Resolver(self.__name__)
9292
self._resolved: List[Tuple[Callable, Signature, int]] = []
9393

9494
@property
@@ -233,7 +233,7 @@ def clear_cache(self, reregister: bool = True) -> None:
233233

234234
# Clear resolved.
235235
self._resolved = []
236-
self._resolver = Resolver()
236+
self._resolver = Resolver(self._resolver.function_name)
237237

238238
def register(
239239
self, f: Callable, signature: Optional[Signature] = None, precedence=0

tests/test_function.py

+14
Original file line numberDiff line numberDiff line change
@@ -612,3 +612,17 @@ def do(self, x: int):
612612
# Also test that `invoke` is wrapped, like above.
613613
assert A().do.invoke(int).__doc__ == "Docs"
614614
assert A.do.invoke(A, int).__doc__ == "Docs"
615+
616+
617+
def test_name_after_clearing_cache():
618+
dispatch = Dispatcher()
619+
620+
@dispatch
621+
def some_function_name(x: int):
622+
pass
623+
624+
assert some_function_name._resolver.function_name == "some_function_name"
625+
626+
some_function_name.clear_cache()
627+
628+
assert some_function_name._resolver.function_name == "some_function_name"

0 commit comments

Comments
 (0)