]> thyrsus.com Git - mad.git/commitdiff
Type deduction for formals of internal functions.
authorEric S. Raymond <esr@thyrsus,com>
Tue, 10 Feb 2004 19:46:47 +0000 (19:46 +0000)
committerEric S. Raymond <esr@thyrsus,com>
Tue, 10 Feb 2004 19:46:47 +0000 (19:46 +0000)
mad

diff --git a/mad b/mad
index 6d67add5299474c465fdb7a94ebea76c18034798..189a38dcbee46cce6f66229d698b77d0c5721d47 100755 (executable)
--- a/mad
+++ b/mad
@@ -816,8 +816,12 @@ def print_statement(statement):
     elif statement[0] == 'if':
         return 'if (' + print_expr(statement[1]) + ') ' + print_statement(statement[2])
     elif statement[0] == 'internal':
-        return '%s %s {return %s;}' % \
-                      (returntypes.get(statement[1], normalmode), print_expr(('apply', statement[1], statement[2])), print_expr(statement[3]))
+        rep = returntypes.get(statement[1], normalmode) + " " + statement[1][:-1] +"("
+        for (dummy, var) in statement[2]:
+            rep += mode((dummy, var)) + " " + var + ", "
+        rep = rep[:-2]
+        rep += ') {return %s;}' % print_expr(statement[3])
+        return rep
     elif statement[0] == 'map':
         global dummycount
         count = len(statement[3])