From ebd1bf99b0cf0c3eebe65e729e975c774ab52be0 Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Fri, 2 Jun 2017 13:10:35 -0400
Subject: [PATCH] Re-improve: type inf error messages for invalid aggregate
 lookups

---
 loopy/type_inference.py | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/loopy/type_inference.py b/loopy/type_inference.py
index 4df619fea..78d817ce7 100644
--- a/loopy/type_inference.py
+++ b/loopy/type_inference.py
@@ -332,13 +332,21 @@ class TypeInferenceMapper(CombineMapper):
         if not agg_result:
             return agg_result
 
-        fields = agg_result[0].numpy_dtype.fields
+        numpy_dtype = agg_result[0].numpy_dtype
+        fields = numpy_dtype.fields
         if fields is None:
             raise LoopyError("cannot look up attribute '%s' in "
                     "non-aggregate expression '%s'"
                     % (expr.aggregate, expr.name))
 
-        dtype = fields[0]
+        try:
+            field = fields[expr.name]
+        except KeyError:
+            raise LoopyError("cannot look up attribute '%s' in "
+                    "aggregate expression '%s' of dtype '%s'"
+                    % (expr.aggregate, expr.name, numpy_dtype))
+
+        dtype = field[0]
         return [NumpyType(dtype)]
 
     def map_comparison(self, expr):
-- 
GitLab