dmd/compiler/test/unit/parser/dvcondition_location.d
2022-12-25 06:32:05 +01:00

60 lines
1.1 KiB
D

module parser.dvcondition_location;
import dmd.frontend : parseModule;
import support : afterEach, beforeEach;
import dmd.cond : VersionCondition, DebugCondition;
import dmd.location;
import dmd.visitor : SemanticTimeTransitiveVisitor;
@beforeEach initializeFrontend()
{
import dmd.frontend : initDMD;
initDMD();
}
@afterEach deinitializeFrontend()
{
import dmd.frontend : deinitializeDMD;
deinitializeDMD();
}
extern (C++) static class Visitor : SemanticTimeTransitiveVisitor
{
alias visit = typeof(super).visit;
Loc l;
override void visit(VersionCondition vc)
{
l = vc.loc;
}
override void visit(DebugCondition dc)
{
l = dc.loc;
}
}
@("version(identifier)")
unittest
{
auto t = parseModule("test.d", "version(a)");
scope visitor = new Visitor;
t.module_.accept(visitor);
assert(visitor.l.linnum == 1);
assert(visitor.l.charnum == 9);
}
@("debug(identifier)")
unittest
{
auto t = parseModule("test.d", "debug(a)");
scope visitor = new Visitor;
t.module_.accept(visitor);
assert(visitor.l.linnum == 1);
assert(visitor.l.charnum == 7);
}