January 15, 2022
https://issues.dlang.org/show_bug.cgi?id=22676

          Issue ID: 22676
           Summary: fullyQualifiedName fails to compile with 2.098.1
                    relese -- there is some issue with call to
                    __traits(isScalar ..
           Product: D
           Version: D2
          Hardware: x86_64
                OS: Linux
            Status: NEW
          Severity: regression
          Priority: P1
         Component: dmd
          Assignee: nobody@puremagic.com
          Reporter: puneet@coverify.org

The following reduced code fails to compile with the release 2.098.1. Earlier versions did not have this issue.


//

import std.traits: fullyQualifiedName;
class foo_base { }
class bar_base {
  static T instance(T)() {
    return new T(fullyQualifiedName!T);
  }
}
class typed_foo(T): foo_base {
  static class bar: bar_base {
    this(string) { }
    foo_base _inst;
  }
}
class foo (T): typed_foo!T {
  static auto _bar_inst() { return bar.instance!bar; }
  static private ref auto _inst() { return _bar_inst._inst; }
  mixin (attr_string!(attr_access!(__traits(getAttributes, _inst))));
}
template attr_access(A...) { enum attr_access = ""; }
template attr_string(string A) { enum string attr_string = ""; }

alias foo_frop = foo!frop;
class frop { alias type_id = registry!frop; }
template registry(T) { enum string FOO = fullyQualifiedName!T; }

--