aboutsummaryrefslogtreecommitdiff
path: root/src/interp/compiler.boot
diff options
context:
space:
mode:
Diffstat (limited to 'src/interp/compiler.boot')
-rw-r--r--src/interp/compiler.boot11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/interp/compiler.boot b/src/interp/compiler.boot
index 6490991d..abf2f685 100644
--- a/src/interp/compiler.boot
+++ b/src/interp/compiler.boot
@@ -34,7 +34,6 @@
import msgdb
import pathname
-import modemap
import define
namespace BOOT
@@ -1184,6 +1183,11 @@ compTry(['%Try,x,ys,z],m,e) ==
--% ELT
+getModemapListFromDomain(op,numOfArgs,D,e) ==
+ [mm
+ for (mm:= [[dc,:sig],:.]) in get(op,'modemap,e) | dc=D and #rest sig=
+ numOfArgs]
+
++ `op' supposedly designate an external entity with language linkage
++ `lang'. Return the mode of its local declaration (import).
getExternalSymbolMode(op,lang,e) ==
@@ -1514,6 +1518,11 @@ compExclusiveOr(x,m,e) ==
compCase: (%Form,%Mode,%Env) -> %Maybe %Triple
compCase1: (%Form,%Mode,%Env) -> %Maybe %Triple
+getModemapList(op,numOfArgs,e) ==
+ op is ['elt,D,op'] => getModemapListFromDomain(op',numOfArgs,D,e)
+ [mm for
+ (mm:= [[.,.,:sigl],:.]) in get(op,'modemap,e) | numOfArgs=#sigl]
+
--Will the jerk who commented out these two functions please NOT do so
--again. These functions ARE needed, and case can NOT be done by
--modemap alone. The reason is that A case B requires to take A