www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 20724] New: Compiler fails to infer safe


          Issue ID: 20724
           Summary: Compiler fails to infer  safe
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: major
          Priority: P1
         Component: dmd
          Assignee: nobody puremagic.com
          Reporter: andrej.mitrovich gmail.com

public void hash (T) (scope const auto ref T record) //  safe  // uncomment to
    if (is(T == struct))
    foreach (const ref field; record.tupleof)

public void hash (T) (scope const auto ref T[] records)  safe
    foreach (ref record; records)

 safe void main ()
    struct Foo
        Foo[] foo;

    Foo foo;

$ dmd test.d
$ test.d(15): Error:  safe function test.hash!(Foo).hash cannot call  system
function test.hash!(Foo).hash
$ test.d(3):        test.hash!(Foo).hash is declared here

Uncommenting ' safe' makes it compile. The safety should have been inferred.

Apr 07 2020