aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2013-05-15 00:40:43 +0000
committerdos-reis <gdr@axiomatics.org>2013-05-15 00:40:43 +0000
commitd4dde65a0f23cef213aa03dbbb85cd2504af5b6f (patch)
tree8025b03eadace67a50393207fd90999b1987e64d
parenta97a8e2cbc7d6c86f79a5465cba20212deff66c9 (diff)
downloadopen-axiom-d4dde65a0f23cef213aa03dbbb85cd2504af5b6f.tar.gz
* interp/define.boot (checkAndDeclare): Constructor parameter
shadowing. * algebra/lodof.spad.pamphlet (SetOfMIntegersInOneToN): [enum]: Lose last parameter. Adjust callers.
-rw-r--r--src/ChangeLog9
-rw-r--r--src/algebra/lodof.spad.pamphlet10
-rw-r--r--src/interp/define.boot10
3 files changed, 19 insertions, 10 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 41ccaf39..e797f8b9 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,4 +1,11 @@
-2013-05-14 Gabriel Dos Reis <gdr@cse.tamu.edu>
+2013-05-14 Gabriel Dos Reis <gdr@integrable-solutions.net>
+
+ * interp/define.boot (checkAndDeclare): Constructor parameter
+ shadowing.
+ * algebra/lodof.spad.pamphlet (SetOfMIntegersInOneToN): [enum]:
+ Lose last parameter. Adjust callers.
+
+2013-05-14 Gabriel Dos Reis <gdr@integrable-solutions.net>
* interp/c-util.boot (cleanParameterList!): New.
* interp/define.boot (spadCompileOrSetq): Use it.
diff --git a/src/algebra/lodof.spad.pamphlet b/src/algebra/lodof.spad.pamphlet
index d4247b25..1e102220 100644
--- a/src/algebra/lodof.spad.pamphlet
+++ b/src/algebra/lodof.spad.pamphlet
@@ -51,7 +51,7 @@ SetOfMIntegersInOneToN(m, n): Exports == Implementation where
Rep := Record(bits:Bits, pos:N)
reallyEnumerate: () -> Vector %
- enum: (N, N, PI) -> List Bits
+ enum: (N, N) -> List Bits
all:Reference Vector % := ref empty()
sz:Reference N := ref 0
@@ -59,7 +59,7 @@ SetOfMIntegersInOneToN(m, n): Exports == Implementation where
s1 = s2 == s1.bits =$Bits s2.bits
coerce(s:%):OutputForm == brace [i::OutputForm for i in elements s]
random() == index((1 + (random()$Integer rem size()))::PI)
- reallyEnumerate() == [[b, i] for b in enum(m, n, n) for i in 1..]
+ reallyEnumerate() == [[b, i] for b in enum(m, n) for i in 1..]
member?(p, s) == s.bits.p
enumerate() ==
@@ -68,17 +68,17 @@ SetOfMIntegersInOneToN(m, n): Exports == Implementation where
-- enumerates the sets of p integers in 1..q, returns them as sets in 1..n
-- must have p <= q
- enum(p, q, n) ==
+ enum(p, q) ==
zero? p or zero? q => empty()
p = q =>
b := new(n, false)$Bits
for i in 1..p repeat b.i := true
[b]
q1 := (q - 1)::N
- l := enum((p - 1)::N, q1, n)
+ l := enum((p - 1)::N, q1)
if empty? l then l := [new(n, false)$Bits]
for s in l repeat s.q := true
- concat!(enum(p, q1, n), l)
+ concat!(enum(p, q1), l)
size() ==
if zero? deref sz then
diff --git a/src/interp/define.boot b/src/interp/define.boot
index 89244baf..7228ea44 100644
--- a/src/interp/define.boot
+++ b/src/interp/define.boot
@@ -1768,11 +1768,13 @@ hasSigInTargetCategory(form,target,e) ==
first potentialSigList
++ Subroutine of compDefineCapsuleFunction.
-checkAndDeclare(form,sig,e) ==
+checkAndDeclare(db,form,sig,e) ==
-- arguments with declared types must agree with those in sig;
-- those that don't get declarations put into e
for a in form.args for m in sig.source repeat
isQuasiquote m => nil -- we just built m from a.
+ symbolMember?(a,dbParameters db) =>
+ stackAndThrow('"Redeclaration of constructor parameter %1b",[a])
m1:= getArgumentMode(a,e) =>
not modeEqual(m1,m) =>
stack:= [" ",:bright a,'"must have type ",m,
@@ -1826,8 +1828,8 @@ refineDefinitionSignature(form,signature,e) ==
signature'
++ Subroutine of compDefineCapsuleFunction.
-processDefinitionParameters(form,signature,e) ==
- e := checkAndDeclare(form,signature,e)
+processDefinitionParameters(db,form,signature,e) ==
+ e := checkAndDeclare(db,form,signature,e)
e := giveFormalParametersValues(form.args,e)
e := addDomain(signature.target,e)
e := compArgumentConditions e
@@ -1901,7 +1903,7 @@ compDefineCapsuleFunction(db,df is ['DEF,form,signature,body],
$formalArgList:= [:argl,:$formalArgList]
signature := refineDefinitionSignature(form,signature,e) or return nil
$signatureOfForm := signature --this global is bound in compCapsuleItems
- e := processDefinitionParameters(form,signature,e)
+ e := processDefinitionParameters(db,form,signature,e)
rettype := resolve(signature.target,$returnMode)
localOrExported :=