Cleanup more errors showing data types.
This commit is contained in:
parent
619214b48f
commit
5430e4ac9b
|
|
@ -66,10 +66,10 @@ private:
|
|||
|
||||
// RETURN TYPE
|
||||
struct FromData {
|
||||
AstNode* m_errp; // Node that was found, for error reporting if not known type
|
||||
AstNodeDType* m_errp; // Node that was found, for error reporting if not known type
|
||||
AstNodeDType* m_dtypep; // Data type for the 'from' slice
|
||||
VNumRange m_fromRange; // Numeric range bounds for the 'from' slice
|
||||
FromData(AstNode* errp, AstNodeDType* dtypep, const VNumRange& fromRange)
|
||||
FromData(AstNodeDType* errp, AstNodeDType* dtypep, const VNumRange& fromRange)
|
||||
{ m_errp = errp; m_dtypep = dtypep; m_fromRange = fromRange; }
|
||||
~FromData() {}
|
||||
};
|
||||
|
|
@ -86,7 +86,7 @@ private:
|
|||
}
|
||||
UASSERT_OBJ(basefromp && basefromp->dtypep(), nodep, "Select with no from dtype");
|
||||
AstNodeDType* ddtypep = basefromp->dtypep()->skipRefp();
|
||||
AstNode* errp = ddtypep;
|
||||
AstNodeDType* errp = ddtypep;
|
||||
UINFO(9," fromData.ddtypep = "<<ddtypep<<endl);
|
||||
if (const AstNodeArrayDType* adtypep = VN_CAST(ddtypep, NodeArrayDType)) {
|
||||
fromRange = adtypep->declRange();
|
||||
|
|
@ -106,13 +106,13 @@ private:
|
|||
nodep, "Non-constant variable range; errored earlier"); // in constifyParam(bfdtypep)
|
||||
fromRange = adtypep->declRange();
|
||||
} else {
|
||||
nodep->v3error("Illegal bit or array select; type does not have a bit range, or bad dimension: type is "
|
||||
<<errp->prettyName());
|
||||
nodep->v3error("Illegal bit or array select; type does not have a bit range, or "
|
||||
<< "bad dimension: data type is " << errp->prettyDTypeNameQ());
|
||||
}
|
||||
}
|
||||
else {
|
||||
nodep->v3error("Illegal bit or array select; type already selected, or bad dimension: type is "
|
||||
<<errp->prettyName());
|
||||
nodep->v3error("Illegal bit or array select; type already selected, or bad dimension: "
|
||||
<< "data type is " << errp->prettyDTypeNameQ());
|
||||
}
|
||||
return FromData(errp, ddtypep, fromRange);
|
||||
}
|
||||
|
|
@ -293,10 +293,11 @@ private:
|
|||
nodep->replaceWith(newp); VL_DO_DANGLING(pushDeletep(nodep), nodep);
|
||||
}
|
||||
else { // NULL=bad extract, or unknown node type
|
||||
nodep->v3error("Illegal bit or array select; type already selected, or bad dimension: type is"
|
||||
<<fromdata.m_errp->prettyName());
|
||||
nodep->v3error("Illegal bit or array select; type already selected, or bad dimension: "
|
||||
<< "data type is" << fromdata.m_errp->prettyDTypeNameQ());
|
||||
// How to recover? We'll strip a dimension.
|
||||
nodep->replaceWith(fromp); VL_DO_DANGLING(pushDeletep(nodep), nodep);
|
||||
nodep->replaceWith(fromp);
|
||||
VL_DO_DANGLING(pushDeletep(nodep), nodep);
|
||||
}
|
||||
if (!rhsp->backp()) { VL_DO_DANGLING(pushDeletep(rhsp), rhsp); }
|
||||
}
|
||||
|
|
@ -409,11 +410,12 @@ private:
|
|||
nodep->replaceWith(newp); VL_DO_DANGLING(pushDeletep(nodep), nodep);
|
||||
}
|
||||
else { // NULL=bad extract, or unknown node type
|
||||
nodep->v3error("Illegal range select; type already selected, or bad dimension: type is "
|
||||
<<fromdata.m_errp->prettyName());
|
||||
UINFO(1," Related ddtype: "<<ddtypep<<endl);
|
||||
nodep->v3error("Illegal range select; type already selected, or bad dimension: "
|
||||
<< "data type is " << fromdata.m_errp->prettyDTypeNameQ());
|
||||
UINFO(1, " Related ddtype: " << ddtypep << endl);
|
||||
// How to recover? We'll strip a dimension.
|
||||
nodep->replaceWith(fromp); VL_DO_DANGLING(pushDeletep(nodep), nodep);
|
||||
nodep->replaceWith(fromp);
|
||||
VL_DO_DANGLING(pushDeletep(nodep), nodep);
|
||||
}
|
||||
// delete whatever we didn't use in reconstruction
|
||||
if (!fromp->backp()) { VL_DO_DANGLING(pushDeletep(fromp), fromp); }
|
||||
|
|
@ -482,10 +484,11 @@ private:
|
|||
nodep->replaceWith(newp); VL_DO_DANGLING(pushDeletep(nodep), nodep);
|
||||
}
|
||||
else { // NULL=bad extract, or unknown node type
|
||||
nodep->v3error("Illegal +: or -: select; type already selected, or bad dimension: type is "
|
||||
<<fromdata.m_errp->prettyTypeName());
|
||||
nodep->v3error("Illegal +: or -: select; type already selected, or bad dimension: "
|
||||
<< "data type is " << fromdata.m_errp->prettyDTypeNameQ());
|
||||
// How to recover? We'll strip a dimension.
|
||||
nodep->replaceWith(fromp); VL_DO_DANGLING(pushDeletep(nodep), nodep);
|
||||
nodep->replaceWith(fromp);
|
||||
VL_DO_DANGLING(pushDeletep(nodep), nodep);
|
||||
}
|
||||
// delete whatever we didn't use in reconstruction
|
||||
if (!fromp->backp()) { VL_DO_DANGLING(pushDeletep(fromp), fromp); }
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
%Error: t/t_bitsel_const_bad.v:20: Illegal bit or array select; type does not have a bit range, or bad dimension: type is logic
|
||||
%Error: t/t_bitsel_const_bad.v:20: Illegal bit or array select; type does not have a bit range, or bad dimension: data type is 'logic'
|
||||
: ... In instance t
|
||||
assign a = b[0];
|
||||
^
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
%Error: t/t_mem_multi_ref_bad.v:14: Illegal bit or array select; type does not have a bit range, or bad dimension: type is logic
|
||||
%Error: t/t_mem_multi_ref_bad.v:14: Illegal bit or array select; type does not have a bit range, or bad dimension: data type is 'logic'
|
||||
: ... In instance t
|
||||
dimn[1:0] = 0;
|
||||
^
|
||||
|
|
@ -6,7 +6,7 @@
|
|||
: ... In instance t
|
||||
dimn[1:0] = 0;
|
||||
^
|
||||
%Error: t/t_mem_multi_ref_bad.v:15: Illegal bit or array select; type does not have a bit range, or bad dimension: type is logic
|
||||
%Error: t/t_mem_multi_ref_bad.v:15: Illegal bit or array select; type does not have a bit range, or bad dimension: data type is 'logic'
|
||||
: ... In instance t
|
||||
dim0[1][1] = 0;
|
||||
^
|
||||
|
|
@ -15,7 +15,7 @@
|
|||
dim0[1][1] = 0;
|
||||
^
|
||||
... Use "/* verilator lint_off SELRANGE */" and lint_on around source to disable this message.
|
||||
%Error: t/t_mem_multi_ref_bad.v:16: Illegal bit or array select; type does not have a bit range, or bad dimension: type is logic
|
||||
%Error: t/t_mem_multi_ref_bad.v:16: Illegal bit or array select; type does not have a bit range, or bad dimension: data type is 'logic'
|
||||
: ... In instance t
|
||||
dim1[1][1][1] = 0;
|
||||
^
|
||||
|
|
@ -23,11 +23,11 @@
|
|||
: ... In instance t
|
||||
dim1[1][1][1] = 0;
|
||||
^
|
||||
%Error: t/t_mem_multi_ref_bad.v:18: Illegal +: or -: select; type already selected, or bad dimension: type is UNPACKARRAYDTYPE
|
||||
%Error: t/t_mem_multi_ref_bad.v:18: Illegal +: or -: select; type already selected, or bad dimension: data type is 'logic[1:0]$[1:0][1:0]'
|
||||
: ... In instance t
|
||||
dim2[0 +: 1][1] = 0;
|
||||
^
|
||||
%Error: t/t_mem_multi_ref_bad.v:22: Illegal bit or array select; type does not have a bit range, or bad dimension: type is logic
|
||||
%Error: t/t_mem_multi_ref_bad.v:22: Illegal bit or array select; type does not have a bit range, or bad dimension: data type is 'logic'
|
||||
: ... In instance t
|
||||
dim0nv[1][1] = 0;
|
||||
^
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@
|
|||
: ... In instance t
|
||||
q = {q[0], q[2:$]};
|
||||
^
|
||||
%Error: t/t_queue_unsup_bad.v:37: Illegal range select; type already selected, or bad dimension: type is
|
||||
%Error: t/t_queue_unsup_bad.v:37: Illegal range select; type already selected, or bad dimension: data type is 'string[$]'
|
||||
: ... In instance t
|
||||
q = {q[0], q[2:$]};
|
||||
^
|
||||
|
|
|
|||
|
|
@ -1,16 +1,16 @@
|
|||
%Error: t/t_var_types_bad.v:38: Illegal bit or array select; type does not have a bit range, or bad dimension: type is bit
|
||||
%Error: t/t_var_types_bad.v:38: Illegal bit or array select; type does not have a bit range, or bad dimension: data type is 'bit'
|
||||
: ... In instance t
|
||||
d_bitz[0] = 1'b1;
|
||||
^
|
||||
%Error: t/t_var_types_bad.v:39: Illegal bit or array select; type does not have a bit range, or bad dimension: type is logic
|
||||
%Error: t/t_var_types_bad.v:39: Illegal bit or array select; type does not have a bit range, or bad dimension: data type is 'logic'
|
||||
: ... In instance t
|
||||
d_logicz[0] = 1'b1;
|
||||
^
|
||||
%Error: t/t_var_types_bad.v:40: Illegal bit or array select; type does not have a bit range, or bad dimension: type is logic
|
||||
%Error: t/t_var_types_bad.v:40: Illegal bit or array select; type does not have a bit range, or bad dimension: data type is 'logic'
|
||||
: ... In instance t
|
||||
d_regz[0] = 1'b1;
|
||||
^
|
||||
%Error: t/t_var_types_bad.v:45: Illegal bit or array select; type does not have a bit range, or bad dimension: type is real
|
||||
%Error: t/t_var_types_bad.v:45: Illegal bit or array select; type does not have a bit range, or bad dimension: data type is 'real'
|
||||
: ... In instance t
|
||||
d_real[0] = 1'b1;
|
||||
^
|
||||
|
|
@ -22,7 +22,7 @@
|
|||
d_real[0] = 1'b1;
|
||||
^~~~~~
|
||||
... Use "/* verilator lint_off REALCVT */" and lint_on around source to disable this message.
|
||||
%Error: t/t_var_types_bad.v:46: Illegal bit or array select; type does not have a bit range, or bad dimension: type is real
|
||||
%Error: t/t_var_types_bad.v:46: Illegal bit or array select; type does not have a bit range, or bad dimension: data type is 'real'
|
||||
: ... In instance t
|
||||
d_realtime[0] = 1'b1;
|
||||
^
|
||||
|
|
|
|||
Loading…
Reference in New Issue