Charj: Fixed problem with readonly module not being compiled in.
authorJonathan Lifflander <jliffl2@illinois.edu>
Tue, 6 Jul 2010 01:40:23 +0000 (20:40 -0500)
committerJonathan Lifflander <jliffl2@illinois.edu>
Tue, 6 Jul 2010 01:40:23 +0000 (20:40 -0500)
Extern the readonly module in the mainmodule.

src/langs/charj/src/charj/translator/Charj.stg
src/langs/charj/src/charj/translator/CharjEmitter.g

index 341c07b37f1d825e019f02a0dd99a6fa4e545eda..55772f6e577a84caa4d7dba39042879ce645012c 100644 (file)
@@ -6,14 +6,26 @@ charjSource_ci(basename, pd, imports, types, ros, debug) ::=
 // interface for <basename>
 <imports; separator="\n">
 <types; separator="\n\n">
-<if(ros)>
 
 module <basename>_readonly {
-    <ros; separator="\n">
-}
+<if(ros)>
+    <charjReadonly_ci(pds = pd, ros = ros)>
 <endif>
+
+}
+
 >>
 
+charjReadonly_ci(pds, ros) ::=
+<<
+<if(first(pds))>namespace <first(pds)>
+{
+    <charjReadonly_ci(pds = rest(pds), ros = ros)>
+} // namespace <first(pds)>
+<else>
+<ros; separator="\n">
+<endif>
+>>
 
 charjSource_h(basename, pd, imports, types, ros, debug) ::=
 <<
@@ -73,9 +85,9 @@ readonlys_cc(pds, ros, basename) ::=
 {
     <readonlys_cc(pds = rest(pds), ros = ros, basename = basename)>
 } // namespace <first(pds)>
+#include "<basename>_readonly.def.h"
 <else>
 <ros; separator="\n">
-#include "<basename>_readonly.def.h"
 <endif>
 
 >>
@@ -303,13 +315,16 @@ class <ident>: public CBase_<ident> {
 <endif>
 >>
 
-chareDeclaration_ci(sym, chareType, arrayDim, ident, ext, csds) ::=
+chareDeclaration_ci(basename, sym, chareType, arrayDim, ident, ext, csds) ::=
 <<
 <if(sym.isMainChare)>main<endif>module <ident> {
 <if(ext)>
     extern module <ext>;
 <endif>
     <sym.Externs:{ext| extern module <ext>;
+<if(sym.isMainChare)>
+extern module <basename>_readonly;
+<endif>
     }>
     <chareDeclaration_ci_cont(pds = sym.packageNames, chareType = chareType, arrayDim = arrayDim, ident = ident, ext = ext, csds = csds)>
 }
index bd6d78b8e48562248e8f5caba79151bc8b9330a4..f1517608400238ba9caae5c35145335ec8112c3e 100644 (file)
@@ -192,6 +192,7 @@ typeDeclaration
                 needsMigration={needsMigration},
                 inits={initializers})
         -> {emitCI()}? chareDeclaration_ci(
+                basename={basename()},
                 sym={currentClass},
                 chareType={$chareType.st},
                 arrayDim={null},