Issue ID: 20853
           Summary: static array ptr cannot be used in safe code but it
                    should be allowed
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: enhancement
          Priority: P1
         Component: dmd

@safe void main() {
        int[2] i;
        int* a = i.ptr;

bug2.d(3): Error: i.ptr cannot be used in @safe code, use &i[0] instead

There's no good reason to prohibit this because `i` has static length and thus
it can be proven that .ptr is equivalent to &i[0] in all cases (unless length
== 0 which can obviously be checked too) and cannot go out of bounds.

Note that `i.ptr` when i has static length of 0 current compiles and should
continue to compile with this change made if it is @system code.


Reply via email to