@@ -285,6 +285,9 @@ def traverse_const(node):
285285 if node .token == 'CONST' :
286286 return Translator .traverse_const (node .expr )
287287
288+ if node .token == 'ARRAYACCESS' :
289+ return '({} + {})' .format (node .entry .mangled , node .offset )
290+
288291 raise InvalidCONSTexpr (node )
289292
290293 @staticmethod
@@ -457,6 +460,11 @@ def visit_ARGLIST(self, node):
457460 for i in range (len (node ) - 1 , - 1 , - 1 ): # visit in reverse order
458461 yield node [i ]
459462
463+ if isinstance (node .parent , symbols .ARRAYACCESS ) and OPTIONS .arrayCheck .value :
464+ upper = node .parent .entry .bounds [i ].upper
465+ lower = node .parent .entry .bounds [i ].lower
466+ self .emit ('paramu16' , upper - lower )
467+
460468 def visit_ARGUMENT (self , node ):
461469 if not node .byref :
462470 suffix = self .TSUFFIX (node .type_ )
@@ -496,11 +504,6 @@ def visit_ARRAYLOAD(self, node):
496504 if node .offset is None :
497505 yield node .args
498506
499- if OPTIONS .arrayCheck .value :
500- upper = node .entry .bounds [0 ].upper
501- lower = node .entry .bounds [0 ].lower
502- self .emit ('paramu16' , upper - lower )
503-
504507 if scope == SCOPE .global_ :
505508 self .emit ('aload' + self .TSUFFIX (node .type_ ), node .entry .t , node .entry .mangled )
506509 elif scope == SCOPE .parameter :
@@ -644,9 +647,6 @@ def visit_LETARRAYSUBSTR(self, node):
644647 def visit_ARRAYACCESS (self , node ):
645648 yield node .arglist
646649
647- if OPTIONS .arrayCheck .value :
648- self .emit ('param' + self .TSUFFIX (gl .BOUND_TYPE ), len (node .entry .bounds ))
649-
650650 def visit_STRSLICE (self , node ):
651651 yield node .string
652652 if node .string .token == 'STRING' or \
0 commit comments