June 13, 2023
https://issues.dlang.org/show_bug.cgi?id=23989

          Issue ID: 23989
           Summary: Regression in rdmd when running an empty eval
           Product: D
           Version: D2
          Hardware: All
               URL: http://dlang.org/
                OS: All
            Status: NEW
          Severity: regression
          Priority: P3
         Component: tools
          Assignee: nobody@puremagic.com
          Reporter: deadalnix@gmail.com

We run unit tests for modules in the following way:

rdmd -m64 -Isrc -w -debug -g -unittest -i --extra-file=src/d/object.d --eval="/* Do nothing */"

With an extra-file per file. These command are generated automatically by the build and this used to work great.

With the latest rdmd, we have the following error message:

/tmp/.rdmd-1001/eval.73D1BDC8D7573E2DF9EF23CD86830110.d(18): Error: use `{ }`
for an empty statement, not `;`
Failed: ["/usr/bin/dmd", "-m64", "-Isrc", "-w", "-debug", "-g", "-unittest",
"-i", "-d", "-v", "-o-",
"/tmp/.rdmd-1001/eval.73D1BDC8D7573E2DF9EF23CD86830110.d", "-I/tmp/.rdmd-1001"]
make: *** [src/libd.mak:33: check-libd-d] Error 1

This is because the generated file is as follow:

module temporary;
import std.stdio, std.algorithm, std.array, std.ascii, std.base64,
    std.bigint, std.bitmanip,
    std.compiler, std.complex, std.concurrency, std.container, std.conv,
    std.csv,
    std.datetime, std.demangle, std.digest.md, std.encoding, std.exception,
    std.file,
    std.format, std.functional, std.getopt, std.json,
    std.math, std.mathspecial, std.mmfile,
    std.numeric, std.outbuffer, std.parallelism, std.path, std.process,
    std.random, std.range, std.regex, std.signals, std.socket,
    std.stdint, std.stdio,
    std.string, std.windows.syserror, std.system, std.traits, std.typecons,
    std.typetuple, std.uni, std.uri, std.utf, std.variant, std.zip,
    std.zlib;
void main(char[][] args) {
/* Do nothing */;
}

--