import "libc";

main :: proc(): int {
    {
        arr: [100]int = {1, 2 ,3 ,4};
        p0 := addptr(arr, 1);
        assert(*p0 == 2);

        p1 := addptr(p0, 1);
        assert(p1[0] == 3);
    }

    {
        i: *int = :*int(1);
        if i {
            i = nil;
            assert(i == 0);
        }
    }

    {
        token_count :: 20;
        tokens: [token_count]int;
        x: *int = addptr(tokens, 0);
        t: *int = addptr(tokens, 4);
        r1 := x && (t >= &tokens[0] && t < &tokens[token_count]);
        r2 := x && (t >= addptr(tokens, 0) && t < addptr(tokens, token_count));
        assert(r1 == true);
        assert(r2 == true);
    }

    return 0;
}