In reply to dave_59:
Yes, thank for this additional distinction.
This bug “logic a = b” is difficult to debug, but it is flagged by some linters.
However at least one linter (I think it is from Synopsys) has another bug of its own.
If you write:
wire a = b; // OK
logic a = b; // ERROR, I agree
wire signed [7:0] a = b; // OK
So far so good. But:
typedef logic signed [7:0] abc;
abc a = b; // ERROR, I agree
wire abc a = b; // Also ERROR - it should not be an error
The last thing is I believe a bug in linter.