[project @ 2000-01-05 19:10:21 by andy]
[ghc-hetmet.git] / ghc / interpreter / link.c
index dbab049..9ea2919 100644 (file)
@@ -9,8 +9,8 @@
  * included in the distribution.
  *
  * $RCSfile: link.c,v $
- * $Revision: 1.21 $
- * $Date: 1999/12/10 15:59:48 $
+ * $Revision: 1.25 $
+ * $Date: 2000/01/05 19:10:21 $
  * ------------------------------------------------------------------------*/
 
 #include "prelude.h"
@@ -490,22 +490,56 @@ Int what; {
                        break;
 
         case POSTPREL: 
+#if 0
          fprintf(stderr, "linkControl(POSTPREL)\n");
+#endif
 if (combined) assert(0);
 break;
 
         case PREPREL : 
 
-           modulePrelude = newModule(textPrelude);
-           setCurrModule(modulePrelude);
-        
-           for (i=0; i<NUM_TUPLES; ++i) {
-               allocTupleTycon(i);
-           }
-
            if (combined) {
+
+               modulePrelude = findFakeModule(textPrelude);
+               module(modulePrelude).objectExtraNames 
+                  = singleton(findText("libHS_cbits"));
+
+               nameMkC = addWiredInBoxingTycon("PrelBase","Char",  "C#",1,0,CHAR_REP  );
+               nameMkI = addWiredInBoxingTycon("PrelBase","Int",   "I#",1,0,INT_REP   );
+               nameMkW = addWiredInBoxingTycon("PrelAddr","Word",  "W#",1,0,WORD_REP  );
+               nameMkA = addWiredInBoxingTycon("PrelAddr","Addr",  "A#",1,0,ADDR_REP  );
+               nameMkF = addWiredInBoxingTycon("PrelBase","Float", "F#",1,0,FLOAT_REP );
+               nameMkD = addWiredInBoxingTycon("PrelBase","Double","D#",1,0,DOUBLE_REP);
+               nameMkInteger            
+                       = addWiredInBoxingTycon("PrelBase","Integer","Integer#",1,0,0);
+               nameMkPrimByteArray      
+                       = addWiredInBoxingTycon("PrelGHC","ByteArray","PrimByteArray#",1,0,0);
+
+               for (i=0; i<NUM_TUPLES; ++i) {
+                   addTupleTycon(i);
+               }
+              addWiredInEnumTycon("PrelBase","Bool",
+                                   doubleton(findText("False"),findText("True")));
+
+               //nameMkThreadId
+               //        = addWiredInBoxingTycon("PrelConc","ThreadId","ThreadId#"
+               //                                ,1,0,THREADID_REP);
+
+               setCurrModule(modulePrelude);
+
+               typeArrow = addPrimTycon(findText("(->)"),
+                                        pair(STAR,pair(STAR,STAR)),
+                                        2,DATATYPE,NIL);
            } else {
 
+               modulePrelude = newModule(textPrelude);
+               setCurrModule(modulePrelude);
+        
+               for (i=0; i<NUM_TUPLES; ++i) {
+                   addTupleTycon(i);
+               }
+               setCurrModule(modulePrelude);
+
                typeArrow = addPrimTycon(findText("(->)"),
                                         pair(STAR,pair(STAR,STAR)),
                                         2,DATATYPE,NIL);