aboutsummaryrefslogtreecommitdiff
path: root/src/interp/c-doc.boot
diff options
context:
space:
mode:
authorGabriel Dos Reis <gdr@axiomatics.org>2016-01-09 21:09:22 -0800
committerGabriel Dos Reis <gdr@axiomatics.org>2016-01-09 21:09:22 -0800
commitea62b3a837416bea218f7a52db80505b8d271dc3 (patch)
treef447656c1c397b881e6114cddb5ff0e3c020d473 /src/interp/c-doc.boot
parent313768fe3869da54aadd7317179bd35a44f95de3 (diff)
downloadopen-axiom-ea62b3a837416bea218f7a52db80505b8d271dc3.tar.gz
Every use of getDualSignature that does not ensure that builtin
constructors are handled before the call is a bug. This patch fixes most the obvious and glaring places. Hopefully, the remaining cases will be exercised when getDualSignature bypasses the on-disk database mamouth.
Diffstat (limited to 'src/interp/c-doc.boot')
-rw-r--r--src/interp/c-doc.boot4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/interp/c-doc.boot b/src/interp/c-doc.boot
index b6cc0e66..88d9fa1d 100644
--- a/src/interp/c-doc.boot
+++ b/src/interp/c-doc.boot
@@ -440,12 +440,14 @@ checkIsValidType form == main where
main() ==
form isnt [.,:.] => 'ok
[op,:args] := form
+ op = ":" => args is [.,t] and checkIsValidType t
+ builtinConstructor? op => and/[checkIsValidType t for t in args]
conname := (constructor? op => op; abbreviation? op)
null conname => nil
fn(form,getDualSignature conname)
fn(form,coSig) ==
#form ~= #coSig => form
- or/[null checkIsValidType x for x in rest form for flag in rest coSig | flag]
+ or/[null checkIsValidType x for x in form.args for flag in rest coSig | flag]
=> nil
'ok