Fix constant string function assignment (#3945)

This commit is contained in:
Todd Strader
2023-02-08 18:48:07 -05:00
committed by GitHub
parent cf88700fc2
commit d3cbb1e53f
4 changed files with 44 additions and 3 deletions
+1 -1
View File
@@ -4543,7 +4543,7 @@ public:
dtypeSetString();
}
ASTGEN_MEMBERS_AstCvtPackString;
void numberOperate(V3Number& out, const V3Number& lhs) override { V3ERROR_NA; }
void numberOperate(V3Number& out, const V3Number& lhs) override { out.opAssign(lhs); }
string emitVerilog() override { return "%f$_CAST(%l)"; }
string emitC() override { return "VL_CVT_PACK_STR_N%lq(%lW, %li)"; }
bool cleanOut() const override { return true; }
+2 -2
View File
@@ -2201,8 +2201,8 @@ V3Number& V3Number::opAssignNonXZ(const V3Number& lhs, bool ignoreXZ) {
m_data.m_isNull = true;
} else if (isString()) {
if (VL_UNLIKELY(!lhs.isString())) {
// Non-compatible types, erase value.
m_data.str() = "";
// Numbers can still be strings
m_data.str() = lhs.toString();
} else {
m_data.str() = lhs.m_data.str();
}