`define EXPR $unsigned(WIDTH'(ONES))
`define TEST(size) \
    localparam WIDTH = ONE * size; \
    localparam x = $unsigned(WIDTH'(ONES)); \
    integer y, z; \
    localparam type T = logic [WIDTH-1:0]; \
    y = T'(ones); \
    z = $unsigned(WIDTH'(ones)); \
    $display(`"size: %b %b %b %b`", x, y, z, $unsigned(WIDTH'(ones)));

module top;
    parameter ONE = 1;
    parameter signed [0:0] ONES = 1'sb1;
    logic signed [0:0] ones;
    initial ones = 1'sb1;
    task t;
        `TEST(6)
    endtask
    function f;
        input integer unused;
        `TEST(7)
    endfunction
    initial t;
    initial begin
        integer a;
        a = f(0);
    end
    initial begin
        `TEST(8)
    end
endmodule