From 6ca0d8aad1582cb997f7b33d1fedcd736e362c00 Mon Sep 17 00:00:00 2001
From: Kaushik Kulkarni <kaushikcfd@gmail.com>
Date: Wed, 26 May 2021 09:32:39 -0500
Subject: [PATCH] define :meth:`InKernelCallable.with_name`

---
 loopy/kernel/function_interface.py | 15 +++++++++++++++
 loopy/translation_unit.py          |  2 +-
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/loopy/kernel/function_interface.py b/loopy/kernel/function_interface.py
index e4a91f1e7..b99c8b2f8 100644
--- a/loopy/kernel/function_interface.py
+++ b/loopy/kernel/function_interface.py
@@ -314,6 +314,7 @@ class InKernelCallable(ImmutableRecord):
     .. automethod:: get_hw_axes_sizes
     .. automethod:: get_used_hw_axes
     .. automethod:: get_called_callables
+    .. automethod:: with_name
 
     .. note::
 
@@ -492,6 +493,13 @@ class InKernelCallable(ImmutableRecord):
         """
         raise NotImplementedError
 
+    def with_name(self, name):
+        """
+        Returns a copy of *self* so that it could be referred by *name*
+        in a :attr:`loopy.TranslationUnit.callables_table`'s namespace.
+        """
+        raise NotImplementedError
+
 # }}}
 
 
@@ -655,6 +663,9 @@ class ScalarCallable(InKernelCallable):
         """
         return frozenset()
 
+    def with_name(self, name):
+        return self
+
 # }}}
 
 
@@ -949,6 +960,10 @@ class CallableKernel(InKernelCallable):
         return get_resolved_callable_ids_called_by_knl(self.subkernel,
                                                        callables_table)
 
+    def with_name(self, name):
+        new_knl = self.subkernel.copy(name=name)
+        return self.copy(subkernel=new_knl)
+
 # }}}
 
 
diff --git a/loopy/translation_unit.py b/loopy/translation_unit.py
index 27c6392a5..2236b8134 100644
--- a/loopy/translation_unit.py
+++ b/loopy/translation_unit.py
@@ -715,7 +715,7 @@ def add_callable_to_table(callables_table, clbl_id, clbl):
         new_clbl_id = ung(clbl_id)
 
     new_callables_table = callables_table.copy()
-    new_callables_table[new_clbl_id] = clbl
+    new_callables_table[new_clbl_id] = clbl.with_name(new_clbl_id)
 
     return new_clbl_id, new_callables_table
 
-- 
GitLab