Better handle type probe of relation arguments.

This commit is contained in:
Stephen Williams 2011-06-12 11:35:04 -07:00
parent bf40c8ecc5
commit 43b3df00c8
1 changed files with 12 additions and 0 deletions

View File

@ -191,6 +191,11 @@ const VType* ExpName::probe_type(Entity*ent, Architecture*arc) const
if (Signal*sig = arc->find_signal(name_))
return sig->peek_type();
const VType*ctype = 0;
Expression*cval = 0;
if (arc->find_constant(name_, ctype, cval))
return ctype;
cerr << get_fileline() << ": error: Signal/variable " << name_
<< " not found in this context." << endl;
return 0;
@ -222,6 +227,13 @@ const VType* ExpRelation::probe_type(Entity*ent, Architecture*arc) const
if (type2 && !type1)
return type2;
const VTypeArray*type1a = dynamic_cast<const VTypeArray*>(type1);
const VTypeArray*type2a = dynamic_cast<const VTypeArray*>(type2);
if (type1a && type2a && type1a->element_type()==type2a->element_type()) {
return type1a->element_type();
}
cerr << get_fileline() << ": error: Type mismatch in relation expression." << endl;
return type1;
}