Fix backwards array interface error message
This commit is contained in:
parent
bdeee35669
commit
d693065afb
|
|
@ -2178,22 +2178,22 @@ private:
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO Simple dtype checking, should be a more general check
|
// TODO Simple dtype checking, should be a more general check
|
||||||
AstNodeArrayDType* loArrayp = exprDTypep->skipRefp()->castUnpackArrayDType();
|
AstNodeArrayDType* exprArrayp = exprDTypep->skipRefp()->castUnpackArrayDType();
|
||||||
AstNodeArrayDType* hiArrayp = modDTypep->skipRefp()->castUnpackArrayDType();
|
AstNodeArrayDType* modArrayp = modDTypep->skipRefp()->castUnpackArrayDType();
|
||||||
if (loArrayp && hiArrayp && loArrayp->subDTypep()->skipRefp()->castIfaceRefDType()
|
if (exprArrayp && modArrayp && exprArrayp->subDTypep()->skipRefp()->castIfaceRefDType()
|
||||||
&& loArrayp->declRange().elements() != hiArrayp->declRange().elements()) {
|
&& exprArrayp->declRange().elements() != modArrayp->declRange().elements()) {
|
||||||
int loSize = loArrayp->declRange().elements();
|
int exprSize = exprArrayp->declRange().elements();
|
||||||
int hiSize = hiArrayp->declRange().elements();
|
int modSize = modArrayp->declRange().elements();
|
||||||
nodep->v3error("Illegal "<<nodep->prettyOperatorName()<<","
|
nodep->v3error("Illegal "<<nodep->prettyOperatorName()<<","
|
||||||
<<" mismatch between port which is an interface array of size "<<loSize<<","
|
<<" mismatch between port which is an interface array of size "<<modSize<<","
|
||||||
<<" and expression which is an interface array of size "<<hiSize<<".");
|
<<" and expression which is an interface array of size "<<exprSize<<".");
|
||||||
UINFO(1," Related lo: "<<modDTypep->skipRefp()<<endl);
|
UINFO(1," Related lo: "<<modDTypep->skipRefp()<<endl);
|
||||||
UINFO(1," Related hi: "<<exprDTypep->skipRefp()<<endl);
|
UINFO(1," Related hi: "<<exprDTypep->skipRefp()<<endl);
|
||||||
} else if ((loArrayp && !hiArrayp && pinwidth != conwidth)
|
} else if ((exprArrayp && !modArrayp && pinwidth != conwidth)
|
||||||
|| (!loArrayp && hiArrayp && pinwidth != conwidth)) {
|
|| (!exprArrayp && modArrayp && pinwidth != conwidth)) {
|
||||||
nodep->v3error("Illegal "<<nodep->prettyOperatorName()<<","
|
nodep->v3error("Illegal "<<nodep->prettyOperatorName()<<","
|
||||||
<<" mismatch between port which is"<<(loArrayp?"":" not")<<" an array,"
|
<<" mismatch between port which is"<<(modArrayp?"":" not")<<" an array,"
|
||||||
<<" and expression which is"<<(hiArrayp?"":" not")<<" an array.");
|
<<" and expression which is"<<(exprArrayp?"":" not")<<" an array.");
|
||||||
UINFO(1," Related lo: "<<modDTypep->skipRefp()<<endl);
|
UINFO(1," Related lo: "<<modDTypep->skipRefp()<<endl);
|
||||||
UINFO(1," Related hi: "<<exprDTypep->skipRefp()<<endl);
|
UINFO(1," Related hi: "<<exprDTypep->skipRefp()<<endl);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,8 +10,8 @@ if (!$::Driver) { use FindBin; exec("$FindBin::Bin/bootstrap.pl", @ARGV, $0); di
|
||||||
compile (
|
compile (
|
||||||
fails=>1,
|
fails=>1,
|
||||||
expect=>
|
expect=>
|
||||||
q{%Error: t/t_interface_size_bad.v:\d+: Illegal IFACEREF port connection 'foo', mismatch between port which is an interface array of size 4, and expression which is an interface array of size 5.
|
q{%Error: t/t_interface_size_bad.v:\d+: Illegal IFACEREF port connection 'foo', mismatch between port which is an interface array of size 5, and expression which is an interface array of size 4.
|
||||||
%Error: t/t_interface_size_bad.v:\d+: Illegal IFACEREF port connection 'foo', mismatch between port which is an interface array of size 6, and expression which is an interface array of size 5.
|
%Error: t/t_interface_size_bad.v:\d+: Illegal IFACEREF port connection 'foo', mismatch between port which is an interface array of size 5, and expression which is an interface array of size 6.
|
||||||
%Error: Exiting due to.*},
|
%Error: Exiting due to.*},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue