August 18, 2019
https://issues.dlang.org/show_bug.cgi?id=20138

          Issue ID: 20138
           Summary: is expression not evaluating correctly?
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: blocker
          Priority: P1
         Component: dmd
          Assignee: nobody@puremagic.com
          Reporter: turkeyman@gmail.com

Check this out:

  alias X = shared inout int;
  pragma(msg, X, "  ", is(X == shared U, U));

> shared(inout(int))  false

I feel like that should print `true`, and U should be `inout(int)`...?

This works:

  alias X = shared int;
  pragma(msg, X, "  ", is(X == shared U, U));

> shared(int)  true


What's going on here?

--