| import std.stdio; | |
| import std.array : split; | |
| import std.string : strip; | |
| import extra; | |
| auto getMenu () | |
| { | |
| auto foods = import ("food.txt").strip.split ("\n"); | |
| return foods; | |
| } | |
| auto getPeople () | |
| { | |
| return import ("people.txt").strip.split ("\n"); | |
| } | |
| void main (string[] args) | |
| { | |
| import std.array : join; | |
| import core.stdc.stdlib : exit; | |
| immutable request = args[1]; | |
| if (request == "menu") { | |
| version (No_Menu) { | |
| } else { | |
| writeln ("On the menu: ", getMenu.join (", ")); | |
| exit (0); | |
| } | |
| } | |
| version (With_People) { | |
| if (request == "people") { | |
| writeln ("People: ", getPeople.join (", ")); | |
| // only exit successfully if the second module also had its module version set. | |
| // this checks for issue https://github.com/mesonbuild/meson/issues/3337 | |
| if (secondModulePeopleVersionSet ()) | |
| exit (0); | |
| exit (1); | |
| } | |
| } | |
| version (With_VersionInteger) | |
| version(3) exit(0); | |
| version (With_Debug) | |
| debug exit(0); | |
| version (With_DebugInteger) | |
| debug(3) exit(0); | |
| version (With_DebugIdentifier) | |
| debug(DebugIdentifier) exit(0); | |
| version (With_DebugAll) { | |
| int dbg = 0; | |
| debug dbg++; | |
| debug(2) dbg++; | |
| debug(3) dbg++; | |
| debug(4) dbg++; | |
| debug(DebugIdentifier) dbg++; | |
| if (dbg == 5) | |
| exit(0); | |
| } | |
| // we fail here | |
| exit (1); | |
| } | |
| unittest | |
| { | |
| writeln ("TEST"); | |
| import core.stdc.stdlib : exit; | |
| writeln(getMenu); | |
| assert (getMenu () == ["Spam", "Eggs", "Spam", "Baked Beans", "Spam", "Spam"]); | |
| exit (0); | |
| } |