June 15, 2019
https://issues.dlang.org/show_bug.cgi?id=19969

          Issue ID: 19969
           Summary: Unhelpful error when attempting (incorrectly) to
                    append to a string
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: enhancement
          Priority: P1
         Component: dmd
          Assignee: nobody@puremagic.com
          Reporter: peter.alexander.au@gmail.com

void main() {
  string s;
  s += "foo"; // Error: slice s is not mutable
}

Of course, the user meant to use ~=, but many other languages use += so this will be a common occurrence. An error is expected here, but erroring on mutability is unhelpful. It's also incorrect since the slice *is* mutable (even though the elements are not).

Note, with a mutable string, you get a more helpful error:

void main() {
  char[] s;
  s += "foo"; // Error: invalid array operation s += "foo" (possible missing
[])
}

The enhancement request here is for a better error. Preferably something mentioning that the operation is invalid.

--