[Issue 14182] New: AA with pointer key can't find key (regression)

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Sun Feb 15 01:39:21 PST 2015


https://issues.dlang.org/show_bug.cgi?id=14182

          Issue ID: 14182
           Summary: AA with pointer key can't find key (regression)
           Product: D
           Version: D2
          Hardware: x86
                OS: Mac OS X
            Status: NEW
          Severity: regression
          Priority: P1
         Component: DMD
          Assignee: nobody at puremagic.com
          Reporter: timothee.cour2 at gmail.com

git head (v2.067-devel-e542e14):
dmd -run main.d passes but this is surprising.
dmd(2.066.rc2): this fails at pa !in map which seems more correct, but still
weird for lines 4 and 5 simultaneously.
void main(){
  int[int*]map;//Same below if this line changes to int[const(int)*] map;
  assert(typeof(map).stringof=="int[const(int)*]");//why?
  assert(is(typeof(map)==int[const(int)*]));//where did const came from
  assert(is(typeof(map)==int[int*]));//why both are true?

  auto pa=new int;
  map[pa]=0;
  assert(pa !in map);//REGRESSION: worked in dmd.066(rc2)
  assert((cast(const(int)*)pa) !in map);//why not either?
}

Furthermore, with int[int*]map=>int[immutable(int)*]map we have:
void main(){
  int[immutable(int)*]map;
  assert(is(typeof(map)==int[immutable(int)*]));//ok
  immutable pa=new int;
  map[pa]=0;
  assert(pa !in map);//REGRESSION: worked in dmd.066(rc2)
}

--


More information about the Digitalmars-d-bugs mailing list