Encapsulates file/line/column locations.


Walter Bright

Source: location.d

  • Declaration

    enum MessageStyle: ubyte;

    How code locations are formatted for diagnostic reporting

  • Loc


    struct Loc;

    A source code location


    Used for error messages, __FILE__ and __LINE__ tokens, __traits(getLocation, XXX), debug info etc.

    • Declaration

      const(char)* filename;

      zero-terminated filename string, either absolute or relative to cwd

    • Declaration

      uint linnum;

      line number, starting from 1

    • Declaration

      uint charnum;

      utf8 code unit index relative to start of line, starting from 1

    • Declaration

      static immutable Loc initial;

      use for default initialization of const ref Loc's

    • set


      static nothrow void set(bool showColumns, MessageStyle messageStyle);

      Configure how display is done


      bool showColumns

      when to display columns

      MessageStyle messageStyle

      digitalmars or gnu style messages

    • Declaration

      const nothrow bool equals(ref const(Loc) loc);

      Checks for equivalence by comparing the filename contents (not the pointer) and character location.


      • Uses case-insensitive comparison on Windows
      • Ignores charnum if Columns is false.

    • Declaration

      const pure nothrow @nogc @trusted bool opEquals(ref const(Loc) loc);
      const pure nothrow @trusted size_t toHash();

      opEquals() / toHash() for AA key usage


      Compare filename contents (case-sensitively on Windows too), not the pointer - a static foreach loop repeatedly mixing in a mixin may lead to multiple equivalent filenames (foo.d-mixin-<line>), e.g., for test/runnable/test18880.d.

    • Declaration

      const pure nothrow bool isValid();

      Return Value

      true if Loc has been set to other than the default initialization