mirror of https://gitlab.com/basile.b/dexed.git
dastworx, lazy init the badVersions and use AA for lookup
This commit is contained in:
parent
bcd374526f
commit
4a41db237a
|
@ -50,11 +50,19 @@ q{
|
|||
else version(unittest) log();
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Contains all the D version identifiers that are not valid
|
||||
* for this operating system.
|
||||
*/
|
||||
immutable string[] badVersions;
|
||||
ref const(bool[string]) badVersions()
|
||||
{
|
||||
if (!_badVersions.length)
|
||||
fillBadVersions;
|
||||
return _badVersions;
|
||||
}
|
||||
|
||||
private __gshared bool[string] _badVersions;
|
||||
|
||||
private static immutable predefinedVersions = [
|
||||
"AArch64",
|
||||
|
@ -154,12 +162,12 @@ private static immutable predefinedVersions = [
|
|||
"X86_64"
|
||||
];
|
||||
|
||||
static this()
|
||||
private void fillBadVersions()
|
||||
{
|
||||
// note: compiler switch -m32/64 can lead to wrong results
|
||||
string addVersionidentifier(string ver)()
|
||||
{
|
||||
return `version(` ~ ver ~ `){} else badVersions ~= "` ~ ver ~ "\";\n";
|
||||
return `version(` ~ ver ~ `){} else _badVersions["` ~ ver ~ "\"] = true;\n";
|
||||
}
|
||||
|
||||
string addVerionIdentifiers()
|
||||
|
|
|
@ -75,7 +75,7 @@ private final class ImportLister: ASTVisitor
|
|||
override void visit(const ConditionalDeclaration decl)
|
||||
{
|
||||
const VersionCondition ver = decl.compileCondition.versionCondition;
|
||||
if (ver is null || !canFind(badVersions, ver.token.text))
|
||||
if (ver is null || ver.token.text !in badVersions)
|
||||
decl.accept(this);
|
||||
}
|
||||
|
||||
|
|
|
@ -34,15 +34,10 @@ private final class MainFunctionDetector: ASTVisitor
|
|||
|
||||
ubyte hasMain;
|
||||
|
||||
this()
|
||||
{
|
||||
hasMain = false;
|
||||
}
|
||||
|
||||
override void visit(const ConditionalDeclaration decl)
|
||||
{
|
||||
const VersionCondition ver = decl.compileCondition.versionCondition;
|
||||
if (ver is null || !canFind(badVersions, ver.token.text))
|
||||
if (ver is null || ver.token.text !in badVersions)
|
||||
decl.accept(this);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue