`define TEST(size) \
    localparam WIDTH = ONE * size; \
    localparam [WIDTH-1:0] short = ONES; \
    integer long; \
    long = short; \
    $display(`"size: %b %b %b %b`", short, long, long, short);

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