charmxi: report an error when a non-constructor is missing a return type, rather...
[charm.git] / src / xlat-i / xi-symbol.C
index 9024c1947fcb4490e86937e269f0e4fb0c2560f6..09f03ed4765423ce5d4b5300a7a4b328a63d183f 100644 (file)
@@ -488,6 +488,39 @@ Module::print(XStr& str)
   }
 }
 
   }
 }
 
+void Module::check() {
+  if (clist)
+    clist->check();
+}
+
+void ConstructList::check() {
+  perElem(constructs, &Construct::check);
+}
+
+void Scope::check() {
+  if (contents_)
+    contents_->check();
+}
+
+void Entry::check() {
+  if (!external) {
+    if(isConstructor() && retType && !retType->isVoid())
+      die("Constructors cannot return a value",line);
+
+    if (!isConstructor() && !retType)
+      die("Non-constructor entry methods must specify a return type (probably void)", line);
+  }
+}
+
+void Chare::check() {
+  if (list)
+    list->check();
+}
+
+void MemberList::check() {
+  perElem(members, &Member::check);
+}
+
 void
 Module::generate()
 {
 void
 Module::generate()
 {
@@ -662,6 +695,12 @@ ModuleList::generate()
   perElem(modules, &Module::generate);
 }
 
   perElem(modules, &Module::generate);
 }
 
+void
+ModuleList::check()
+{
+  perElem(modules, &Module::check);
+}
+
 void
 ModuleList::preprocess()
 {
 void
 ModuleList::preprocess()
 {
@@ -4140,9 +4179,6 @@ void Entry::genDecls(XStr& str)
   if (external)
     return;
 
   if (external)
     return;
 
-  if(isConstructor() && retType && !retType->isVoid())
-    die("Constructors cannot return a value",line);
-
   str << "/* DECLS: "; print(str); str << " */\n";
   if(retType==0 && !isConstructor())
     die("Entry methods must specify a return type-- \n"
   str << "/* DECLS: "; print(str); str << " */\n";
   if(retType==0 && !isConstructor())
     die("Entry methods must specify a return type-- \n"