Skip to content
Snippets Groups Projects
Commit 31d7a450 authored by Andreas Klöckner's avatar Andreas Klöckner
Browse files

Test, fix inconsistency in call handling in dep mapper (reported by Matt Wala)

parent 9c0dc68f
No related branches found
No related tags found
No related merge requests found
...@@ -83,6 +83,17 @@ class DependencyMapper(CSECachingMapperMixin, CombineMapper): ...@@ -83,6 +83,17 @@ class DependencyMapper(CSECachingMapperMixin, CombineMapper):
else: else:
return CombineMapper.map_call(self, expr) return CombineMapper.map_call(self, expr)
def map_call_with_kwargs(self, expr):
if self.include_calls == "descend_args":
return self.combine(
[self.rec(child) for child in expr.parameters]
+ [self.rec(val) for name, val in expr.kw_parameters.items()]
)
elif self.include_calls:
return set([expr])
else:
return CombineMapper.map_call(self, expr)
def map_lookup(self, expr): def map_lookup(self, expr):
if self.include_lookups: if self.include_lookups:
return set([expr]) return set([expr])
......
...@@ -255,6 +255,16 @@ def test_mappers(): ...@@ -255,6 +255,16 @@ def test_mappers():
DependencyMapper()(expr) DependencyMapper()(expr)
def test_func_dep_consistency():
from pymbolic import var
from pymbolic.mapper.dependency import DependencyMapper
f = var('f')
x = var('x')
dep_map = DependencyMapper(include_calls="descend_args")
assert dep_map(f(x)) == set([x])
assert dep_map(f(x=x)) == set([x])
# {{{ geometric algebra # {{{ geometric algebra
@pytest.mark.parametrize("dims", [2, 3, 4, 5]) @pytest.mark.parametrize("dims", [2, 3, 4, 5])
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment