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