Improve stream concat context coverage
This commit is contained in:
parent
087d5c7280
commit
c440c46bd0
|
|
@ -110,6 +110,7 @@ Ilya Barkov
|
|||
Iru Cai
|
||||
Ivan Vnučec
|
||||
Iztok Jeras
|
||||
JAEUK LEE
|
||||
Jaeuk Lee (이재욱)
|
||||
Jake Merdich
|
||||
Jakub Michalski
|
||||
|
|
|
|||
|
|
@ -972,13 +972,9 @@ class WidthVisitor final : public VNVisitor {
|
|||
bool streamImplicitUseAllowed(const AstNodeStream* nodep) const {
|
||||
const AstNode* backp = nodep->backp();
|
||||
while (true) {
|
||||
if (const AstArg* const argp = VN_CAST(backp, Arg)) {
|
||||
backp = argp->backp();
|
||||
} else if (const AstSFormatArg* const argp = VN_CAST(backp, SFormatArg)) {
|
||||
backp = argp->backp();
|
||||
} else if (VN_IS(backp, CvtArrayToArray) || VN_IS(backp, CvtArrayToPacked)
|
||||
|| VN_IS(backp, CvtPackedToArray) || VN_IS(backp, CvtPackString)
|
||||
|| VN_IS(backp, CvtUnpackedToQueue)) {
|
||||
if (VN_IS(backp, Arg) || VN_IS(backp, SFormatArg) || VN_IS(backp, CvtArrayToArray)
|
||||
|| VN_IS(backp, CvtArrayToPacked) || VN_IS(backp, CvtPackedToArray)
|
||||
|| VN_IS(backp, CvtPackString) || VN_IS(backp, CvtUnpackedToQueue)) {
|
||||
backp = backp->backp();
|
||||
} else {
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -1,42 +1,42 @@
|
|||
%Error: t/t_display_stream_bad.v:14:15: Streaming concatenation cannot be used in an implicitly cast context (IEEE 1800-2023 11.4.17)
|
||||
: ... note: In instance 't'
|
||||
: ... Suggest use a cast
|
||||
14 | result = {<<{value}} + 1;
|
||||
| ^~
|
||||
... See the manual at https://verilator.org/verilator_doc.html?v=latest for more assistance.
|
||||
%Error: t/t_display_stream_bad.v:15:23: Streaming concatenation cannot be used in an implicitly cast context (IEEE 1800-2023 11.4.17)
|
||||
: ... note: In instance 't'
|
||||
: ... Suggest use a cast
|
||||
15 | result = value + {<<{value}};
|
||||
| ^~
|
||||
%Error: t/t_display_stream_bad.v:16:26: Streaming concatenation cannot be used in an implicitly cast context (IEEE 1800-2023 11.4.17)
|
||||
: ... note: In instance 't'
|
||||
: ... Suggest use a cast
|
||||
16 | result = value[0] ? {<<{value}} : other;
|
||||
| ^~
|
||||
%Error: t/t_display_stream_bad.v:17:16: Streaming concatenation cannot be used in an implicitly cast context (IEEE 1800-2023 11.4.17)
|
||||
: ... note: In instance 't'
|
||||
: ... Suggest use a cast
|
||||
17 | result = {{<<{value}}};
|
||||
| ^~
|
||||
%Error: t/t_display_stream_bad.v:18:14: Streaming concatenation cannot be used in an implicitly cast context (IEEE 1800-2023 11.4.17)
|
||||
: ... note: In instance 't'
|
||||
: ... Suggest use a cast
|
||||
18 | flag = ({<<{value}} == other);
|
||||
| ^~
|
||||
%Error: t/t_display_stream_bad.v:19:15: Streaming concatenation cannot be used in an implicitly cast context (IEEE 1800-2023 11.4.17)
|
||||
: ... note: In instance 't'
|
||||
: ... Suggest use a cast
|
||||
19 | $display({<<{value}});
|
||||
19 | result = {<<{value}} + 1;
|
||||
| ^~
|
||||
%Error: t/t_display_stream_bad.v:20:22: Streaming concatenation cannot be used in an implicitly cast context (IEEE 1800-2023 11.4.17)
|
||||
... See the manual at https://verilator.org/verilator_doc.html?v=latest for more assistance.
|
||||
%Error: t/t_display_stream_bad.v:20:23: Streaming concatenation cannot be used in an implicitly cast context (IEEE 1800-2023 11.4.17)
|
||||
: ... note: In instance 't'
|
||||
: ... Suggest use a cast
|
||||
20 | $display("%0d", {<<{value}});
|
||||
20 | result = value + {<<{value}};
|
||||
| ^~
|
||||
%Error: t/t_display_stream_bad.v:21:29: Streaming concatenation cannot be used in an implicitly cast context (IEEE 1800-2023 11.4.17)
|
||||
%Error: t/t_display_stream_bad.v:21:26: Streaming concatenation cannot be used in an implicitly cast context (IEEE 1800-2023 11.4.17)
|
||||
: ... note: In instance 't'
|
||||
: ... Suggest use a cast
|
||||
21 | void'($sformatf("%0d", {<<{value}}));
|
||||
21 | result = value[0] ? {<<{value}} : other;
|
||||
| ^~
|
||||
%Error: t/t_display_stream_bad.v:22:16: Streaming concatenation cannot be used in an implicitly cast context (IEEE 1800-2023 11.4.17)
|
||||
: ... note: In instance 't'
|
||||
: ... Suggest use a cast
|
||||
22 | result = {{<<{value}}};
|
||||
| ^~
|
||||
%Error: t/t_display_stream_bad.v:23:14: Streaming concatenation cannot be used in an implicitly cast context (IEEE 1800-2023 11.4.17)
|
||||
: ... note: In instance 't'
|
||||
: ... Suggest use a cast
|
||||
23 | flag = ({<<{value}} == other);
|
||||
| ^~
|
||||
%Error: t/t_display_stream_bad.v:24:15: Streaming concatenation cannot be used in an implicitly cast context (IEEE 1800-2023 11.4.17)
|
||||
: ... note: In instance 't'
|
||||
: ... Suggest use a cast
|
||||
24 | $display({<<{value}});
|
||||
| ^~
|
||||
%Error: t/t_display_stream_bad.v:25:22: Streaming concatenation cannot be used in an implicitly cast context (IEEE 1800-2023 11.4.17)
|
||||
: ... note: In instance 't'
|
||||
: ... Suggest use a cast
|
||||
25 | $display("%0d", {<<{value}});
|
||||
| ^~
|
||||
%Error: t/t_display_stream_bad.v:26:29: Streaming concatenation cannot be used in an implicitly cast context (IEEE 1800-2023 11.4.17)
|
||||
: ... note: In instance 't'
|
||||
: ... Suggest use a cast
|
||||
26 | void'($sformatf("%0d", {<<{value}}));
|
||||
| ^~
|
||||
%Error: Exiting due to
|
||||
|
|
|
|||
|
|
@ -10,7 +10,12 @@ module t;
|
|||
int result;
|
||||
bit flag;
|
||||
|
||||
function automatic int passthrough(input int arg);
|
||||
return arg;
|
||||
endfunction
|
||||
|
||||
initial begin
|
||||
result = passthrough({<<{value}});
|
||||
result = {<<{value}} + 1;
|
||||
result = value + {<<{value}};
|
||||
result = value[0] ? {<<{value}} : other;
|
||||
|
|
|
|||
Loading…
Reference in New Issue