From fe94402a46e352ca4509d7d469a2e9138539ad2a Mon Sep 17 00:00:00 2001
From: Stephan Seitz <stephan.seitz@fau.de>
Date: Fri, 27 Sep 2019 13:31:52 +0200
Subject: [PATCH] Bugfix: count field as accessed even if through
 InterpolatorAccess instead of ResolvedFieldAccess

---
 pystencils/astnodes.py | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/pystencils/astnodes.py b/pystencils/astnodes.py
index 5cb8c8d3d..eb5910f9c 100644
--- a/pystencils/astnodes.py
+++ b/pystencils/astnodes.py
@@ -211,17 +211,18 @@ class KernelFunction(Node):
         return self._body,
 
     @property
-    def fields_accessed(self) -> Set['ResolvedFieldAccess']:
+    def fields_accessed(self) -> Set[Field]:
         """Set of Field instances: fields which are accessed inside this kernel function"""
-        return set(o.field for o in self.atoms(ResolvedFieldAccess))
+        from pystencils.interpolation_astnodes import InterpolatorAccess
+        return set(o.field for o in itertools.chain(self.atoms(ResolvedFieldAccess), self.atoms(InterpolatorAccess)))
 
     @property
-    def fields_written(self) -> Set['ResolvedFieldAccess']:
+    def fields_written(self) -> Set[Field]:
         assignments = self.atoms(SympyAssignment)
         return {a.lhs.field for a in assignments if isinstance(a.lhs, ResolvedFieldAccess)}
 
     @property
-    def fields_read(self) -> Set['ResolvedFieldAccess']:
+    def fields_read(self) -> Set[Field]:
         assignments = self.atoms(SympyAssignment)
         return set().union(itertools.chain.from_iterable([f.field for f in a.rhs.free_symbols if hasattr(f, 'field')]
                                                          for a in assignments))
-- 
GitLab