dmd/compiler/test/dub_package/frontend.d

55 lines
1.1 KiB
D
Executable file

#!/usr/bin/env dub
/+dub.sdl:
dependency "dmd" path="../../.."
+/
import std.stdio;
// test frontend
void main()
{
import dmd.frontend;
import std.algorithm : each;
initDMD;
findImportPaths.each!addImport;
auto t = parseModule("test.d", q{
void foo()
{
foreach (i; 0..10) {}
}
});
assert(!t.diagnostics.hasErrors);
assert(!t.diagnostics.hasWarnings);
t.module_.fullSemantic;
auto generated = t.module_.prettyPrint.toUnixLineEndings();
auto expected =q{import object;
void foo()
{
{
int __key2 = 0;
int __limit3 = 10;
for (; __key2 < __limit3; __key2 += 1)
{
int i = __key2;
}
}
}
}.toUnixLineEndings();
assert(expected == generated, generated);
}
/**
Converts Windows line endings (`\r\n`) to Unix line endings (`\n`).
This is required because this file is stored with Unix line endings but the
`prettyPrint` function outputs Windows line endings on Windows.
*/
string toUnixLineEndings(string str)
{
import std.string : replace;
return str.replace("\r\n", "\n");
}