aboutsummaryrefslogtreecommitdiff
path: root/src/interp/c-util.boot
diff options
context:
space:
mode:
Diffstat (limited to 'src/interp/c-util.boot')
-rw-r--r--src/interp/c-util.boot18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/interp/c-util.boot b/src/interp/c-util.boot
index bcbef30c..e658f851 100644
--- a/src/interp/c-util.boot
+++ b/src/interp/c-util.boot
@@ -1,6 +1,6 @@
-- Copyright (c) 1991-2002, The Numerical Algorithms Group Ltd.
-- All rights reserved.
--- Copyright (C) 2007-2012, Gabriel Dos Reis.
+-- Copyright (C) 2007-2013, Gabriel Dos Reis.
-- All rights reserved.
--
-- Redistribution and use in source and binary forms, with or without
@@ -1727,3 +1727,19 @@ lookupDefiningFunction(op,sig,dc) ==
lookupInheritedDefiningFunction(op,sig,shell,args,shell.loc)
-- 6.3. Whatever.
fun
+
+++ flag parameters needs to be made atomic, otherwise Lisp is confused.
+++ We try our best to preserve
+++ Note that we don't need substitution in the body because flag
+++ parameters are never used in the body.
+cleanParameterList! parms ==
+ count := 0
+ for vars in tails parms repeat
+ v := first vars
+ ident? v => nil
+ t := nil
+ until not symbolMember?(t,parms) repeat
+ count := count + 1
+ t := makeSymbol strconc('"T",toString count)
+ vars.first := t
+ parms