ruby: Added message type check to OutPortDeclAST.py
authorBrad Beckmann <Brad.Beckmann@amd.com>
Sat, 30 Jan 2010 04:29:13 +0000 (20:29 -0800)
committerBrad Beckmann <Brad.Beckmann@amd.com>
Sat, 30 Jan 2010 04:29:13 +0000 (20:29 -0800)
Though OutPort's message type is not used to generate code, this fix checks
that the programmer's intent is correct.  Eventually, we may want to
remove the message type from the OutPort declaration statement.

src/mem/slicc/ast/OutPortDeclAST.py

index e6ef3192868e47277f01aefc66e019a2a4a56ac3..a387f6d910c5dad433ce490e25ae09c94ccecb42 100644 (file)
@@ -30,6 +30,7 @@ from m5.util import code_formatter
 from slicc.ast.DeclAST import DeclAST
 from slicc.ast.TypeAST import TypeAST
 from slicc.symbols import Var
+from slicc.symbols import Type
 
 class OutPortDeclAST(DeclAST):
     def __init__(self, slicc, ident, msg_type, var_expr, pairs):
@@ -52,6 +53,10 @@ class OutPortDeclAST(DeclAST):
                        "attribute.  Type '%s' does not have this attribute.",
                        (queue_type))
 
+        if not self.symtab.find(self.msg_type.ident, Type):
+            self.error("The message type '%s' does not exist.",
+                       self.msg_type.ident)
+
         var = Var(self.symtab, self.ident, self.location, self.queue_type.type,
                   str(code), self.pairs)
         self.symtab.newSymbol(var)