Ok. It was the compiler. To reproduce the error, I wrote a small example:

import std.stdio;
import std.algorithm : sort;

enum {
  Answers = [
    "Are you corrupt?" : "No!",
    "Will you resign?" : "No!"
  ]
}

void main() {
  auto journalist = new myClass;
  journalist.printAnswers();
}

class myClass {
  mixin News;
  this() {
    Questions = Answers.keys();
    // Only here to do what my program does
    sort!((a, b) => a.length > b.length)(Questions);
  }

  protected void printAnswers() {
    foreach (q; Questions) {
      writefln("Q: %s\nA: %s", q, getAnswer(q));
    }
  }
}

mixin template News() {
  string[] Questions;

  auto getAnswer(string q) {
    return Answers[q];
  }
}

[version 2.065]
$ dmd optimizer.d -O -release -inline -noboundscheck
$ ./optimizer
$ Segmentation fault (core dumped)

[versino 2.066]
$ dmd optimizer.d -O -release -inline -noboundscheck
$ ./optimizer
Q: Are you corrupt?
A: No!
Q: Will you resign?
A: No!
$

Sorry, I couldn't try it with 2.066 first, because I still have to update my code base.

Reply via email to