Move visitors into a package

This commit is contained in:
Nicholas Wilson 2024-09-24 16:06:56 +08:00 committed by Nicholas Wilson
parent a4b6c41fd3
commit d927bdb871
24 changed files with 287 additions and 55 deletions

View file

@ -1571,10 +1571,12 @@ auto sourceFiles()
dtemplate.d dtoh.d dversion.d enumsem.d escape.d expression.d expressionsem.d func.d funcsem.d hdrgen.d iasm.d iasmgcc.d
impcnvtab.d imphint.d importc.d init.d initsem.d inline.d inlinecost.d intrange.d json.d lambdacomp.d
mtype.d mustuse.d nogc.d nspace.d ob.d objc.d opover.d optimize.d
parse.d parsetimevisitor.d permissivevisitor.d postordervisitor.d pragmasem.d printast.d rootobject.d safe.d
semantic2.d semantic3.d sideeffect.d statement.d statement_rewrite_walker.d
parse.d pragmasem.d printast.d rootobject.d safe.d
semantic2.d semantic3.d sideeffect.d statement.d
statementsem.d staticassert.d staticcond.d stmtstate.d target.d templatesem.d templateparamsem.d traits.d
transitivevisitor.d typesem.d typinf.d utils.d visitor.d foreachvar.d
typesem.d typinf.d utils.d
visitor/package.d visitor/foreachvar.d visitor/parsetime.d visitor/permissive.d visitor/postorder.d visitor/statement_rewrite_walker.d
visitor/strict.d visitor/transitive.d
cparse.d
"),
backendHeaders: fileArray(env["C"], "

View file

@ -98,13 +98,14 @@ Note that these groups have no strict meaning, the category assignments are a bi
| File | Purpose |
|-----------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------|
| [parsetimevisitor.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/parsetimevisitor.d) | General [visitor](https://en.wikipedia.org/wiki/Visitor_pattern) for AST nodes |
| [permissivevisitor.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/permissivevisitor.d) | Subclass of ParseTimeVisitor that does not `assert(0)` on unimplemented nodes |
| [strictvisitor.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/strictvisitor.d) | Visitor that forces derived classes to implement `visit` for every possible node |
| [visitor.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/visitor.d) | A visitor implementing `visit` for all nodes present in the compiler |
| [transitivevisitor.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/transitivevisitor.d) | Provide a mixin template with visit methods for the parse time AST |
| [postordervisitor.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/postordervisitor.d) | Depth-first expression visitor |
| [statement_rewrite_walker.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/statement_rewrite_walker.d) | Statement visitor that allows replacing the currently visited node |
| [visitor/parsetime.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/visitor/parsetime.d) | General [visitor](https://en.wikipedia.org/wiki/Visitor_pattern) for AST nodes |
| [visitor/permissive.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/visitor/permissive.d) | Subclass of ParseTimeVisitor that does not `assert(0)` on unimplemented nodes |
| [visitor/strict.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/visitor/strict.d) | Visitor that forces derived classes to implement `visit` for every possible node |
| [visitor/package.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/visitor/package.d) | A visitor implementing `visit` for all nodes present in the compiler |
| [visitor/transitive.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/visitor/transitive.d) | Provide a mixin template with visit methods for the parse time AST |
| [visitor/postorder.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/visitor/postorder.d) | Depth-first expression & statement visitor |
| [visitor/statement_rewrite_walker.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/visitor/statement_rewrite_walker.d) | Statement visitor that allows replacing the currently visited node |
| [visitor/foreachvar.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/visitor/foreachvar.d) | Used in `ob.d` to iterate over all variables in an expression |
**Semantic passes**
@ -269,4 +270,3 @@ Note: many other utilities are in [dmd/root](https://github.com/dlang/dmd/tree/m
|---------------------------------------------------------------------------------|---------------------------------------------------------------|
| [asttypename.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/asttypename.d) | Print the internal name of an AST node (for debugging only) |
| [printast.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/printast.d) | Print the AST data structure |
| [foreachvar.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/foreachvar.d) | Used in `ob.d` to iterate over all variables in an expression |

View file

@ -11,7 +11,7 @@
module dmd.astbase;
import dmd.astenums;
import dmd.parsetimevisitor;
import dmd.visitor.parsetime;
import dmd.tokens : EXP;
/** The ASTBase family defines a family of AST nodes appropriate for parsing with

View file

@ -26,9 +26,9 @@ import dmd.func;
import dmd.globals;
import dmd.init;
import dmd.mtype;
import dmd.postordervisitor;
import dmd.tokens;
import dmd.visitor;
import dmd.visitor.postorder;
/**
* Status indicating what kind of throwable might be caused by an expression.

View file

@ -25,10 +25,10 @@ import dmd.init;
import dmd.initsem;
import dmd.location;
import dmd.mtype;
import dmd.postordervisitor;
import dmd.statement;
import dmd.tokens;
import dmd.visitor;
import dmd.visitor.postorder;
/*********************************

View file

@ -69,7 +69,6 @@ import dmd.opover;
import dmd.optimize;
import dmd.parse;
import dmd.printast;
import dmd.postordervisitor;
import dmd.root.array;
import dmd.root.ctfloat;
import dmd.root.filename;
@ -89,6 +88,7 @@ import dmd.typinf;
import dmd.utils;
import dmd.utils : arrayCastBigEndian;
import dmd.visitor;
import dmd.visitor.postorder;
enum LOGSEMANTIC = false;

View file

@ -7484,21 +7484,6 @@ public:
virtual void checkTupleof(Expression* expression, TypeClass* type) const = 0;
};
template <typename AST>
class PermissiveVisitor : public ParseTimeVisitor<AST >
{
public:
typedef ParseTimeVisitor<AST > visit;
virtual void visit(typename AST::Dsymbol ) override;
virtual void visit(typename AST::Parameter ) override;
virtual void visit(typename AST::Statement ) override;
virtual void visit(typename AST::Type ) override;
virtual void visit(typename AST::Expression ) override;
virtual void visit(typename AST::TemplateParameter ) override;
virtual void visit(typename AST::Condition ) override;
virtual void visit(typename AST::Initializer ) override;
};
struct Target final
{
enum class OS : uint8_t
@ -7810,6 +7795,251 @@ public:
void visit(LoweredAssignExp* e) override;
};
template <typename AST>
class PermissiveVisitor : public ParseTimeVisitor<AST >
{
public:
typedef ParseTimeVisitor<AST > visit;
virtual void visit(typename AST::Dsymbol ) override;
virtual void visit(typename AST::Parameter ) override;
virtual void visit(typename AST::Statement ) override;
virtual void visit(typename AST::Type ) override;
virtual void visit(typename AST::Expression ) override;
virtual void visit(typename AST::TemplateParameter ) override;
virtual void visit(typename AST::Condition ) override;
virtual void visit(typename AST::Initializer ) override;
};
template <typename AST>
class StrictVisitor : public ParseTimeVisitor<AST >
{
public:
typedef ParseTimeVisitor<AST > visit;
virtual void visit(typename AST::Dsymbol ) override;
virtual void visit(typename AST::AliasThis ) override;
virtual void visit(typename AST::Declaration ) override;
virtual void visit(typename AST::ScopeDsymbol ) override;
virtual void visit(typename AST::Import ) override;
virtual void visit(typename AST::AttribDeclaration ) override;
virtual void visit(typename AST::StaticAssert ) override;
virtual void visit(typename AST::DebugSymbol ) override;
virtual void visit(typename AST::VersionSymbol ) override;
virtual void visit(typename AST::VarDeclaration ) override;
virtual void visit(typename AST::FuncDeclaration ) override;
virtual void visit(typename AST::AliasDeclaration ) override;
virtual void visit(typename AST::AliasAssign ) override;
virtual void visit(typename AST::TupleDeclaration ) override;
virtual void visit(typename AST::FuncLiteralDeclaration ) override;
virtual void visit(typename AST::PostBlitDeclaration ) override;
virtual void visit(typename AST::CtorDeclaration ) override;
virtual void visit(typename AST::DtorDeclaration ) override;
virtual void visit(typename AST::InvariantDeclaration ) override;
virtual void visit(typename AST::UnitTestDeclaration ) override;
virtual void visit(typename AST::NewDeclaration ) override;
virtual void visit(typename AST::StaticCtorDeclaration ) override;
virtual void visit(typename AST::StaticDtorDeclaration ) override;
virtual void visit(typename AST::SharedStaticCtorDeclaration ) override;
virtual void visit(typename AST::SharedStaticDtorDeclaration ) override;
virtual void visit(typename AST::Package ) override;
virtual void visit(typename AST::EnumDeclaration ) override;
virtual void visit(typename AST::AggregateDeclaration ) override;
virtual void visit(typename AST::TemplateDeclaration ) override;
virtual void visit(typename AST::TemplateInstance ) override;
virtual void visit(typename AST::Nspace ) override;
virtual void visit(typename AST::MixinDeclaration ) override;
virtual void visit(typename AST::UserAttributeDeclaration ) override;
virtual void visit(typename AST::LinkDeclaration ) override;
virtual void visit(typename AST::AnonDeclaration ) override;
virtual void visit(typename AST::AlignDeclaration ) override;
virtual void visit(typename AST::CPPMangleDeclaration ) override;
virtual void visit(typename AST::VisibilityDeclaration ) override;
virtual void visit(typename AST::PragmaDeclaration ) override;
virtual void visit(typename AST::StorageClassDeclaration ) override;
virtual void visit(typename AST::ConditionalDeclaration ) override;
virtual void visit(typename AST::DeprecatedDeclaration ) override;
virtual void visit(typename AST::StaticIfDeclaration ) override;
virtual void visit(typename AST::EnumMember ) override;
virtual void visit(typename AST::Module ) override;
virtual void visit(typename AST::StructDeclaration ) override;
virtual void visit(typename AST::UnionDeclaration ) override;
virtual void visit(typename AST::ClassDeclaration ) override;
virtual void visit(typename AST::InterfaceDeclaration ) override;
virtual void visit(typename AST::TemplateMixin ) override;
virtual void visit(typename AST::Parameter ) override;
virtual void visit(typename AST::Statement ) override;
virtual void visit(typename AST::ImportStatement ) override;
virtual void visit(typename AST::ScopeStatement ) override;
virtual void visit(typename AST::ReturnStatement ) override;
virtual void visit(typename AST::LabelStatement ) override;
virtual void visit(typename AST::StaticAssertStatement ) override;
virtual void visit(typename AST::MixinStatement ) override;
virtual void visit(typename AST::WhileStatement ) override;
virtual void visit(typename AST::ForStatement ) override;
virtual void visit(typename AST::DoStatement ) override;
virtual void visit(typename AST::ForeachRangeStatement ) override;
virtual void visit(typename AST::ForeachStatement ) override;
virtual void visit(typename AST::IfStatement ) override;
virtual void visit(typename AST::ScopeGuardStatement ) override;
virtual void visit(typename AST::ConditionalStatement ) override;
virtual void visit(typename AST::PragmaStatement ) override;
virtual void visit(typename AST::SwitchStatement ) override;
virtual void visit(typename AST::CaseRangeStatement ) override;
virtual void visit(typename AST::CaseStatement ) override;
virtual void visit(typename AST::DefaultStatement ) override;
virtual void visit(typename AST::BreakStatement ) override;
virtual void visit(typename AST::ContinueStatement ) override;
virtual void visit(typename AST::GotoDefaultStatement ) override;
virtual void visit(typename AST::GotoCaseStatement ) override;
virtual void visit(typename AST::GotoStatement ) override;
virtual void visit(typename AST::SynchronizedStatement ) override;
virtual void visit(typename AST::WithStatement ) override;
virtual void visit(typename AST::TryCatchStatement ) override;
virtual void visit(typename AST::TryFinallyStatement ) override;
virtual void visit(typename AST::ThrowStatement ) override;
virtual void visit(typename AST::AsmStatement ) override;
virtual void visit(typename AST::ExpStatement ) override;
virtual void visit(typename AST::CompoundStatement ) override;
virtual void visit(typename AST::CompoundDeclarationStatement ) override;
virtual void visit(typename AST::CompoundAsmStatement ) override;
virtual void visit(typename AST::InlineAsmStatement ) override;
virtual void visit(typename AST::Type ) override;
virtual void visit(typename AST::TypeBasic ) override;
virtual void visit(typename AST::TypeError ) override;
virtual void visit(typename AST::TypeNull ) override;
virtual void visit(typename AST::TypeNoreturn ) override;
virtual void visit(typename AST::TypeVector ) override;
virtual void visit(typename AST::TypeEnum ) override;
virtual void visit(typename AST::TypeTuple ) override;
virtual void visit(typename AST::TypeClass ) override;
virtual void visit(typename AST::TypeStruct ) override;
virtual void visit(typename AST::TypeNext ) override;
virtual void visit(typename AST::TypeReference ) override;
virtual void visit(typename AST::TypeSlice ) override;
virtual void visit(typename AST::TypeDelegate ) override;
virtual void visit(typename AST::TypePointer ) override;
virtual void visit(typename AST::TypeFunction ) override;
virtual void visit(typename AST::TypeArray ) override;
virtual void visit(typename AST::TypeDArray ) override;
virtual void visit(typename AST::TypeAArray ) override;
virtual void visit(typename AST::TypeSArray ) override;
virtual void visit(typename AST::TypeQualified ) override;
virtual void visit(typename AST::TypeTraits ) override;
virtual void visit(typename AST::TypeMixin ) override;
virtual void visit(typename AST::TypeIdentifier ) override;
virtual void visit(typename AST::TypeReturn ) override;
virtual void visit(typename AST::TypeTypeof ) override;
virtual void visit(typename AST::TypeInstance ) override;
virtual void visit(typename AST::Expression ) override;
virtual void visit(typename AST::DeclarationExp ) override;
virtual void visit(typename AST::IntegerExp ) override;
virtual void visit(typename AST::NewAnonClassExp ) override;
virtual void visit(typename AST::IsExp ) override;
virtual void visit(typename AST::RealExp ) override;
virtual void visit(typename AST::NullExp ) override;
virtual void visit(typename AST::TypeidExp ) override;
virtual void visit(typename AST::TraitsExp ) override;
virtual void visit(typename AST::StringExp ) override;
virtual void visit(typename AST::InterpExp ) override;
virtual void visit(typename AST::NewExp ) override;
virtual void visit(typename AST::AssocArrayLiteralExp ) override;
virtual void visit(typename AST::ArrayLiteralExp ) override;
virtual void visit(typename AST::FuncExp ) override;
virtual void visit(typename AST::IntervalExp ) override;
virtual void visit(typename AST::TypeExp ) override;
virtual void visit(typename AST::ScopeExp ) override;
virtual void visit(typename AST::IdentifierExp ) override;
virtual void visit(typename AST::UnaExp ) override;
virtual void visit(typename AST::DefaultInitExp ) override;
virtual void visit(typename AST::BinExp ) override;
virtual void visit(typename AST::DsymbolExp ) override;
virtual void visit(typename AST::TemplateExp ) override;
virtual void visit(typename AST::SymbolExp ) override;
virtual void visit(typename AST::VarExp ) override;
virtual void visit(typename AST::TupleExp ) override;
virtual void visit(typename AST::DollarExp ) override;
virtual void visit(typename AST::ThisExp ) override;
virtual void visit(typename AST::SuperExp ) override;
virtual void visit(typename AST::AddrExp ) override;
virtual void visit(typename AST::PreExp ) override;
virtual void visit(typename AST::PtrExp ) override;
virtual void visit(typename AST::NegExp ) override;
virtual void visit(typename AST::UAddExp ) override;
virtual void visit(typename AST::NotExp ) override;
virtual void visit(typename AST::ComExp ) override;
virtual void visit(typename AST::DeleteExp ) override;
virtual void visit(typename AST::CastExp ) override;
virtual void visit(typename AST::CallExp ) override;
virtual void visit(typename AST::DotIdExp ) override;
virtual void visit(typename AST::AssertExp ) override;
virtual void visit(typename AST::ThrowExp ) override;
virtual void visit(typename AST::MixinExp ) override;
virtual void visit(typename AST::ImportExp ) override;
virtual void visit(typename AST::DotTemplateInstanceExp ) override;
virtual void visit(typename AST::ArrayExp ) override;
virtual void visit(typename AST::FuncInitExp ) override;
virtual void visit(typename AST::PrettyFuncInitExp ) override;
virtual void visit(typename AST::FileInitExp ) override;
virtual void visit(typename AST::LineInitExp ) override;
virtual void visit(typename AST::ModuleInitExp ) override;
virtual void visit(typename AST::CommaExp ) override;
virtual void visit(typename AST::PostExp ) override;
virtual void visit(typename AST::PowExp ) override;
virtual void visit(typename AST::MulExp ) override;
virtual void visit(typename AST::DivExp ) override;
virtual void visit(typename AST::ModExp ) override;
virtual void visit(typename AST::AddExp ) override;
virtual void visit(typename AST::MinExp ) override;
virtual void visit(typename AST::CatExp ) override;
virtual void visit(typename AST::ShlExp ) override;
virtual void visit(typename AST::ShrExp ) override;
virtual void visit(typename AST::UshrExp ) override;
virtual void visit(typename AST::EqualExp ) override;
virtual void visit(typename AST::InExp ) override;
virtual void visit(typename AST::IdentityExp ) override;
virtual void visit(typename AST::CmpExp ) override;
virtual void visit(typename AST::AndExp ) override;
virtual void visit(typename AST::XorExp ) override;
virtual void visit(typename AST::OrExp ) override;
virtual void visit(typename AST::LogicalExp ) override;
virtual void visit(typename AST::CondExp ) override;
virtual void visit(typename AST::AssignExp ) override;
virtual void visit(typename AST::BinAssignExp ) override;
virtual void visit(typename AST::AddAssignExp ) override;
virtual void visit(typename AST::MinAssignExp ) override;
virtual void visit(typename AST::MulAssignExp ) override;
virtual void visit(typename AST::DivAssignExp ) override;
virtual void visit(typename AST::ModAssignExp ) override;
virtual void visit(typename AST::PowAssignExp ) override;
virtual void visit(typename AST::AndAssignExp ) override;
virtual void visit(typename AST::OrAssignExp ) override;
virtual void visit(typename AST::XorAssignExp ) override;
virtual void visit(typename AST::ShlAssignExp ) override;
virtual void visit(typename AST::ShrAssignExp ) override;
virtual void visit(typename AST::UshrAssignExp ) override;
virtual void visit(typename AST::CatAssignExp ) override;
virtual void visit(typename AST::CatElemAssignExp ) override;
virtual void visit(typename AST::CatDcharAssignExp ) override;
virtual void visit(typename AST::GenericExp ) override;
virtual void visit(typename AST::TemplateParameter ) override;
virtual void visit(typename AST::TemplateAliasParameter ) override;
virtual void visit(typename AST::TemplateTypeParameter ) override;
virtual void visit(typename AST::TemplateTupleParameter ) override;
virtual void visit(typename AST::TemplateValueParameter ) override;
virtual void visit(typename AST::TemplateThisParameter ) override;
virtual void visit(typename AST::Condition ) override;
virtual void visit(typename AST::StaticIfCondition ) override;
virtual void visit(typename AST::DVCondition ) override;
virtual void visit(typename AST::DebugCondition ) override;
virtual void visit(typename AST::VersionCondition ) override;
virtual void visit(typename AST::Initializer ) override;
virtual void visit(typename AST::ExpInitializer ) override;
virtual void visit(typename AST::StructInitializer ) override;
virtual void visit(typename AST::ArrayInitializer ) override;
virtual void visit(typename AST::VoidInitializer ) override;
virtual void visit(typename AST::DefaultInitializer ) override;
virtual void visit(typename AST::CInitializer ) override;
};
extern _d_real creall(complex_t x);
extern _d_real cimagl(complex_t x);

View file

@ -56,7 +56,6 @@ import dmd.root.string;
import dmd.root.stringtable;
import dmd.semantic2;
import dmd.semantic3;
import dmd.statement_rewrite_walker;
import dmd.statement;
import dmd.statementsem;
import dmd.target;
@ -64,6 +63,7 @@ import dmd.templatesem;
import dmd.tokens;
import dmd.typesem;
import dmd.visitor;
import dmd.visitor.statement_rewrite_walker;
version (IN_GCC) {}
else version (IN_LLVM) {}
@ -2757,7 +2757,6 @@ Statement mergeFensure(FuncDeclaration fd, Statement sf, Identifier oid, Express
*/
void modifyReturns(FuncLiteralDeclaration fld, Scope* sc, Type tret)
{
import dmd.statement_rewrite_walker;
extern (C++) final class RetWalker : StatementRewriteWalker
{
alias visit = typeof(super).visit;

View file

@ -40,11 +40,11 @@ import dmd.location;
import dmd.mtype;
import dmd.opover;
import dmd.printast;
import dmd.postordervisitor;
import dmd.statement;
import dmd.tokens;
import dmd.typesem : pointerTo, sarrayOf;
import dmd.visitor;
import dmd.visitor.postorder;
import dmd.inlinecost;
/***********************************************************

View file

@ -32,10 +32,10 @@ import dmd.identifier;
import dmd.init;
import dmd.mtype;
import dmd.opover;
import dmd.postordervisitor;
import dmd.statement;
import dmd.tokens;
import dmd.visitor;
import dmd.visitor.postorder;
enum COST_MAX = 250;

View file

@ -29,12 +29,12 @@ import dmd.globals;
import dmd.init;
import dmd.location;
import dmd.mtype;
import dmd.postordervisitor;
import dmd.rootobject : RootObject, DYNCAST;
import dmd.semantic2;
import dmd.semantic3;
import dmd.tokens;
import dmd.visitor;
import dmd.visitor.postorder;
/**************************************
* Look for GC-allocations

View file

@ -32,7 +32,7 @@ import dmd.dtemplate;
import dmd.errors;
import dmd.escape;
import dmd.expression;
import dmd.foreachvar;
import dmd.func;
import dmd.globals;
import dmd.hdrgen;
@ -46,6 +46,7 @@ import dmd.stmtstate;
import dmd.tokens;
import dmd.typesem;
import dmd.visitor;
import dmd.visitor.foreachvar;
import dmd.root.bitarray;
import dmd.common.outbuffer;

View file

@ -24,10 +24,10 @@ import dmd.id;
import dmd.identifier;
import dmd.init;
import dmd.mtype;
import dmd.postordervisitor;
import dmd.tokens;
import dmd.typesem;
import dmd.visitor;
import dmd.visitor.postorder;
/**************************************************
* Front-end expression rewriting should create temporary variables for

View file

@ -29,11 +29,11 @@ import dmd.id;
import dmd.identifier;
import dmd.location;
import dmd.mtype;
import dmd.postordervisitor;
import dmd.rootobject;
import dmd.staticassert;
import dmd.tokens;
import dmd.visitor;
import dmd.visitor.postorder;
/***********************************************************
* Specification: https://dlang.org/spec/statement.html

View file

@ -9,7 +9,7 @@
* Coverage: https://codecov.io/gh/dlang/dmd/src/master/src/dmd/foreachvar.d
*/
module dmd.foreachvar;
module dmd.visitor.foreachvar;
import core.stdc.stdio;
import core.stdc.stdlib;
@ -32,13 +32,13 @@ import dmd.identifier;
import dmd.init;
import dmd.initsem;
import dmd.mtype;
import dmd.postordervisitor;
import dmd.printast;
import dmd.root.array;
import dmd.rootobject;
import dmd.statement;
import dmd.tokens;
import dmd.visitor;
import dmd.visitor.postorder;
/*********************************************
* Visit each Expression in e, and call dgVar() on each variable declared in it.

View file

@ -12,10 +12,10 @@
module dmd.visitor;
import dmd.astcodegen;
import dmd.parsetimevisitor;
import dmd.tokens;
import dmd.transitivevisitor;
import dmd.rootobject;
import dmd.visitor.parsetime;
import dmd.visitor.transitive;
/**
* Classic Visitor class which implements visit methods for all the AST

View file

@ -7,7 +7,7 @@
* Coverage: https://codecov.io/gh/dlang/dmd/src/master/src/dmd/parsetimevisitor.d
*/
module dmd.parsetimevisitor;
module dmd.visitor.parsetime;
/** Basic and dumm visitor which implements a visit method for each AST node
* implemented in AST. This visitor is the parent of strict, transitive

View file

@ -5,9 +5,9 @@
* Coverage: https://codecov.io/gh/dlang/dmd/src/master/src/dmd/permissivevisitor.d
*/
module dmd.permissivevisitor;
module dmd.visitor.permissive;
import dmd.parsetimevisitor;
import dmd.visitor.parsetime;
/** PermissiveVisitor overrides all the visit methods in the parent class
* that assert(0) in order to facilitate the traversal of subsets of the AST.

View file

@ -9,7 +9,7 @@
* Coverage: https://codecov.io/gh/dlang/dmd/src/master/src/dmd/apply.d
*/
module dmd.postordervisitor;
module dmd.visitor.postorder;
import dmd.dtemplate;
import dmd.expression;

View file

@ -9,7 +9,7 @@
* Coverage: https://codecov.io/gh/dlang/dmd/src/master/src/dmd/statement_rewrite_walker.d
*/
module dmd.statement_rewrite_walker;
module dmd.visitor.statement_rewrite_walker;
import core.stdc.stdio;

View file

@ -3,9 +3,9 @@
* Coverage: https://codecov.io/gh/dlang/dmd/src/master/src/dmd/strictvisitor.d
*/
module dmd.strictvisitor;
module dmd.visitor.strict;
import dmd.parsetimevisitor;
import dmd.visitor.parsetime;
/** The StrictVisitor asserts 0 an all visiting functions in order to
* make sure that all the nodes are visited.

View file

@ -3,10 +3,10 @@
* Coverage: https://codecov.io/gh/dlang/dmd/src/master/src/dmd/transitivevisitor.d
*/
module dmd.transitivevisitor;
module dmd.visitor.transitive;
import dmd.astenums;
import dmd.permissivevisitor;
import dmd.visitor.permissive;
import dmd.tokens;
import dmd.rootobject;
@ -26,7 +26,7 @@ extern(C++) class ParseTimeTransitiveVisitor(AST) : PermissiveVisitor!AST
* is used for semantic time AST node traversal, so in order to not duplicate the code,
* the template mixin is used.
*/
package mixin template ParseVisitMethods(AST)
package(dmd.visitor) mixin template ParseVisitMethods(AST)
{
import dmd.root.array;

View file

@ -13,7 +13,7 @@ import dmd.astbase;
import dmd.errorsink;
import dmd.parse;
import dmd.target;
import dmd.transitivevisitor;
import dmd.visitor.transitive;
import dmd.globals;
import dmd.id;

View file

@ -3,8 +3,8 @@
dependency "dmd" path="../../.."
+/
import dmd.permissivevisitor;
import dmd.transitivevisitor;
import dmd.visitor.permissive;
import dmd.visitor.transitive;
import dmd.tokens;
import dmd.common.outbuffer;