dmd.location

Encapsulates file/line/column locations.

Authors

Walter Bright

Source: location.d

  • Declaration

    enum MessageStyle: ubyte;

    How code locations are formatted for diagnostic reporting

  • Loc

    Declaration

    struct Loc;

    A source code location

    Discussion

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

    • Declaration

      static immutable Loc initial;

      use for default initialization of const ref Loc's

    • set

      Declaration

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

      Configure how display is done

      Parameters

      bool showColumns

      when to display columns

      MessageStyle messageStyle

      digitalmars or gnu style messages

    • Declaration

      const nothrow @nogc @safe uint charnum();
      nothrow @nogc @safe uint charnum(uint num);

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

    • Declaration

      const nothrow @nogc @safe uint linnum();
      nothrow @nogc @safe uint linnum(uint num);

      line number, starting from 1

    • Declaration

      const nothrow @nogc const(char)* filename();

      Return Value

      filename for this location, null if none

    • Declaration

      nothrow @trusted void filename(const(char)* name);

      Set file name for this location

      Parameters

      const(char)* name

      file name for location, null for no file name

    • Declaration

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

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

      Note:

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

    • Declaration

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

      opEquals() / toHash() for AA key usage

      Discussion

      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 @safe bool isValid();

      Return Value

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