From b481ad2a11b276788b3d74e6f5a197df1fe9c4a0 Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Thu, 5 Apr 2012 19:31:48 -0400
Subject: [PATCH] Report errors for incorrectly indexed arguments.

---
 loopy/codegen/expression.py | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/loopy/codegen/expression.py b/loopy/codegen/expression.py
index fc28f1d76..46f8aa6ed 100644
--- a/loopy/codegen/expression.py
+++ b/loopy/codegen/expression.py
@@ -168,15 +168,21 @@ class LoopyCCodeMapper(CCodeMapper):
             else:
                 # ArrayArg
                 index_expr = expr.index
-                if isinstance(expr.index, tuple):
+                if not isinstance(expr.index, tuple):
+                    index_expr = (index_expr,)
+
+                if arg.strides is not None:
                     ary_strides = arg.strides
-                    if ary_strides is None:
-                        raise RuntimeError("tuple-indexed variable '%s' does not "
-                                "have stride information" % expr.aggregate.name)
                 else:
                     ary_strides = (1,)
                     index_expr = (index_expr,)
 
+                if len(ary_strides) != len(index_expr):
+                    raise RuntimeError("subscript to '%s' in '%s' has the wrong "
+                            "number of indices (got: %d, expected: %d)" % (
+                                expr.aggregate.name, expr,
+                                len(index_expr), len(ary_strides)))
+
                 from pymbolic.primitives import Subscript
                 return CCodeMapper.map_subscript(self,
                         Subscript(expr.aggregate, arg.offset+sum(
-- 
GitLab