Changeset: 46f12e85984a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=46f12e85984a
Modified Files:
        testing/malcheck.py
Branch: Jul2017
Log Message:

Improve type checking.


diffs (46 lines):

diff --git a/testing/malcheck.py b/testing/malcheck.py
--- a/testing/malcheck.py
+++ b/testing/malcheck.py
@@ -46,7 +46,7 @@ atomfunctypes = {
     'cmp': ('int', (('void *', True), ('void *', True))),
     'del': ('void', (('Heap *', False), ('var_t *', False))),
     'fix': ('int', (('void *', True),)),
-    'fromstr': ('int', (('char *', True), ('int *', False), ('ptr *', False))),
+    'fromstr': ('int', (('char *', True), ('int *', False), ('void **', 
False))),
     'hash': ('BUN', (('void *', True),)),
     'heap': ('void', (('Heap *', False), ('size_t', False))),
     'length': ('int', (('void *', False),)),
@@ -55,7 +55,7 @@ atomfunctypes = {
     'put': ('var_t', (('Heap *', False), ('var_t *', False), ('void *', 
True))),
     'read': ('void *', (('void *', False), ('stream *', False), ('size_t', 
False))),
     'storage': ('long', (('void', False),)),
-    'tostr': ('int', (('str *', False), ('int *', False), ('void *', True))),
+    'tostr': ('int', (('char **', False), ('int *', False), ('void *', True))),
     'unfix': ('int', (('void *', True),)),
     'write': ('gdk_return', (('void *', True), ('stream *', False), ('size_t', 
False))),
     }
@@ -255,7 +255,7 @@ else:
             crtype, cargs, funcf = odecls[func]
             if len(args) != len(cargs):
                 print '%s in %s: argument count mismatch for command %s for 
atom %s in %s' % (func, funcf, malf, atom, f)
-            elif rtype != crtype and rtype == 'void *' and crtype != atm + ' 
*' and (base != 'str' or (crtype != atm and crtype != 'char *')):
+            elif rtype != crtype and (rtype != 'void *' or crtype != atm + ' 
*'):
                 print '%s in %s: return type mismatch for command %s for atom 
%s in %s (%s vs %s)' % (func, funcf, malf, atom, f, rtype, crtype)
             else:
                 for i in range(len(args)):
@@ -263,6 +263,14 @@ else:
                     a2, r2 = cargs[i]
                     if r2 and not r1:
                         print 'argument %d of %s in %s incorrectly declared 
const for atom command %s in %s' % (i+1, func, funcf, malf, f)
-                    if a1 != a2 and a1 == 'void *' and a2 != atm + ' *' and 
(base != 'str' or (a2 != atm and a2 != 'char *')):
+                    if a1 != a2 and \
+                       (a1 != 'void *' or a2 != atm + ' *') and \
+                       (a1 != 'char **' or a2 != 'str *') and \
+                       (a1 != 'void **' or a2 != atm + ' **') and \
+                       (base != 'str' or a1 != 'void *' or a2 != atm) and \
+                       (base != 'str' or a1 != 'void *' or a2 != 'char *') and 
\
+                       (base != 'str' or a1 != 'void **' or a2 != atm + ' *') 
and \
+                       (base != 'str' or a1 != 'void **' or a2 != 'str *') and 
\
+                       (base != 'str' or a1 != 'char **' or a2 != atm + ' *'):
                         print (a1,a2,atom,base)
                         print '%s in %s: argument %d mismatch for command %s 
for atom %s in %s (%s vs %s)' % (func, funcf, i+1, malf, atom, f, a1, a2)
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to