diff --git a/CODEOWNERS b/CODEOWNERS index a44b8e78c17f..893d2475fd59 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -11,33 +11,34 @@ # Later matches take precedence. src/dmd/access.d @MartinNowak -src/dmd/astbase* @RazvanN7 -src/dmd/astcodegen.d @RazvanN7 -src/dmd/asttypename.d @UplinkCoder -src/dmd/attrib.d @Geod24 +src/dmd/ast/base* @RazvanN7 +src/dmd/ast/codegen.d @RazvanN7 +src/dmd/ast/typename.d @UplinkCoder +src/dmd/astattrib.d @Geod24 src/dmd/builtin.d @klickvebot @WalterBright -src/dmd/cond.d @Geod24 +src/dmd/ast/cond.d @Geod24 src/dmd/console.d @CyberShadow -src/dmd/cppmangle.d @ibuclaw @Geod24 +src/dmd/mangle/cpp.d @ibuclaw @Geod24 src/dmd/cparse.d @ibuclaw @WalterBright src/dmd/ctfeexpr.d @UplinkCoder src/dmd/doc.d @andralex @jacob-carlborg src/dmd/dscope.d @Geod24 src/dmd/hdrgen.d @UplinkCoder @WalterBright -src/dmd/iasm.d @ibuclaw @WalterBright -src/dmd/iasmdmd.d @WalterBright -src/dmd/iasmgcc.d @ibuclaw +src/dmd/iasm/package.d @ibuclaw @WalterBright +src/dmd/iasm/dmdx86.d @WalterBright +src/dmd/iasm/dmdaarch64.d @WalterBright +src/dmd/iasm/gcc.d @ibuclaw src/dmd/mars.d @MartinNowak @Geod24 @rainers @UplinkCoder @WalterBright src/dmd/objc* @jacob-carlborg -src/dmd/permissivevisitor.d @RazvanN7 +src/dmd/visitor/permissive.d @RazvanN7 src/dmd/target.d @ibuclaw @MartinNowak -src/dmd/transitivevisitor.d @RazvanN7 +src/dmd/visitor/transitive.d @RazvanN7 src/dmd/vcbuild @rainers # GitHub's implementation of the CODEOWNERS format is buggy, it doesn't allow src/dmd/*.h *.h @ibuclaw @klickverbot # CI & automation -posix.mak @MartinNowak @wilzbach +posix.mak @MartinNowak src/posix.mak @MartinNowak @wilzbach -circle.sh @MartinNowak @wilzbach +circle.sh @MartinNowak diff --git a/compiler/include/dmd/declaration.h b/compiler/include/dmd/declaration.h index 62b681f7518a..129526c14481 100644 --- a/compiler/include/dmd/declaration.h +++ b/compiler/include/dmd/declaration.h @@ -48,7 +48,7 @@ namespace dmd bool isVirtual(const FuncDeclaration * const fd); } -//enum STC : ulong from astenums.d: +//enum STC : ulong from ast/enums.d: #define STCundefined 0ULL diff --git a/compiler/src/.dscanner.ini b/compiler/src/.dscanner.ini index ccd3f84a35de..cd2e8deb906d 100644 --- a/compiler/src/.dscanner.ini +++ b/compiler/src/.dscanner.ini @@ -119,7 +119,7 @@ unused_result="disabled" trust_too_much="-dmd.root.longdouble" builtin_property_names_check="-dmd.backend.obj,-dmd.backend.code,-dmd.backend.cc" object_const_check="-dmd.dtemplate" -enum_array_literal_check="-dmd.astbase,-dmd.backend.oper,-dmd.backend.oper,-dmd.backend.var,-dmd.tokens,-dmd.expression" +enum_array_literal_check="-dmd.ast.base,-dmd.backend.oper,-dmd.backend.oper,-dmd.backend.var,-dmd.tokens,-dmd.ast.expression" unused_variable_check="-dmd.backend.aarray,\ -dmd.backend.blockopt,\ -dmd.backend.cg,\ diff --git a/compiler/src/build.d b/compiler/src/build.d index 64effb2c52df..8b376d67896c 100755 --- a/compiler/src/build.d +++ b/compiler/src/build.d @@ -903,7 +903,7 @@ alias html = makeRule!((htmlBuilder, htmlRule) { } const stddocs = env.get("STDDOC", "").split(); auto docSources = .sources.common ~ .sources.root ~ .sources.lexer ~ .sources.dmd.all - ~ env["D"].buildPath("astbase.d") + ~ env["D"].buildPath("ast/base.d") ~ env["D"].buildPath("cxxfrontend.d") ~ env["D"].buildPath("frontend.d"); htmlBuilder.deps(docSources.chunks(1).map!(sourceArray => @@ -1515,24 +1515,29 @@ auto sourceFiles() link.d mars.d main.d sarif.d lib/scanelf.d lib/scanmach.d lib/scanmscoff.d timetrace.d vsoptions.d "), frontend: fileArray(env["D"], " - access.d aggregate.d aliasthis.d argtypes_x86.d argtypes_sysv_x64.d argtypes_aarch64.d arrayop.d - arraytypes.d astenums.d ast_node.d astcodegen.d asttypename.d attrib.d attribsem.d blockexit.d builtin.d canthrow.d chkformat.d - cli.d clone.d compiler.d cond.d constfold.d cpreprocess.d ctfeexpr.d - ctorflow.d dcast.d dclass.d declaration.d delegatize.d denum.d deps.d dimport.d - dinterpret.d dmacro.d dmodule.d doc.d dscope.d dstruct.d dsymbol.d dsymbolsem.d - dtemplate.d dtoh.d dversion.d enumsem.d escape.d expression.d expressionsem.d func.d funcsem.d hdrgen.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 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 targetcompiler.d templatesem.d templateparamsem.d traits.d + access.d argtypes_x86.d argtypes_sysv_x64.d argtypes_aarch64.d arrayop.d + arraytypes.d attribsem.d blockexit.d builtin.d canthrow.d chkformat.d + cli.d clone.d compiler.d constfold.d cpreprocess.d ctfeexpr.d + ctorflow.d dcast.d delegatize.d deps.d + dinterpret.d dmacro.d doc.d dscope.d dsymbolsem.d + dtoh.d enumsem.d escape.d expressionsem.d funcsem.d hdrgen.d + impcnvtab.d imphint.d importc.d initsem.d inline.d inlinecost.d intrange.d json.d lambdacomp.d + mustuse.d nogc.d ob.d objc.d opover.d optimize.d + parse.d pragmasem.d rootobject.d safe.d + semantic2.d semantic3.d sideeffect.d + statementsem.d stmtstate.d target.d targetcompiler.d templatesem.d templateparamsem.d traits.d typesem.d typinf.d utils.d + ast/aggregate.d ast/aliasthis.d ast/codegen.d ast/attrib.d ast/cond.d ast/dclass.d ast/declaration.d + ast/denum.d ast/dimport.d ast/dmodule.d ast/dstruct.d ast/dsymbol.d ast/dtemplate.d ast/dversion.d ast/enums.d + ast/expression.d ast/func.d ast/init.d ast/mtype.d ast/node.d ast/nspace.d ast/print.d ast/statement.d + ast/staticassert.d ast/staticcond.d ast/typename.d + dfa/entry.d dfa/utils.d dfa/fast/structure.d dfa/fast/analysis.d dfa/fast/report.d dfa/fast/expression.d dfa/fast/statement.d iasm/package.d iasm/gcc.d mangle/package.d mangle/basic.d mangle/cpp.d mangle/cppwin.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 - dfa/entry.d dfa/utils.d dfa/fast/structure.d dfa/fast/analysis.d dfa/fast/report.d dfa/fast/expression.d dfa/fast/statement.d + "), backendHeaders: fileArray(env["C"], " cc.d cdef.d cgcv.d code.d dt.d el.d global.d diff --git a/compiler/src/dmd/README.md b/compiler/src/dmd/README.md index fb1299b01072..8d3e9ad916e0 100644 --- a/compiler/src/dmd/README.md +++ b/compiler/src/dmd/README.md @@ -62,40 +62,38 @@ Note that these groups have no strict meaning, the category assignments are a bi ### Semantic analysis -**Symbols and declarations** +**AST Nodes, Symbols and declarations** | File | Purpose | |---------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------| -| [dsymbol.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/dsymbol.d) | Base class for a D symbol, e.g. a variable, function, module, enum etc. | +| [dsymbol.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/dsymbol.d) | Base class for a D symbol, e.g. a variable, function, module, enum etc. | | [identifier.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/identifier.d) | Represents the name of a `Dsymbol` | | [id.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/id.d) | Define strings for pre-defined identifiers (e.g. `sizeof`, `string`) | -| [dscope.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/dscope.d) | Define a 'scope' on which symbol lookup can be performed | -| [dtemplate.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/dtemplate.d) | A template declaration or instance | -| [dmodule.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/dmodule.d) | Define a package and module | -| [mtype.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/mtype.d) | Define expression types such as `int`, `char[]`, `void function()` | +| [dscope.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/dscope.d) | Define a 'scope' on which symbol lookup can be performed | +| [dtemplate.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/dtemplate.d) | A template declaration or instance | +| [dmodule.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/dmodule.d) | Define a package and module | +| [mtype.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/mtype.d) | Define expression types such as `int`, `char[]`, `void function()` | | [arraytypes.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/arraytypes.d) | For certain Declaration nodes of type `T`, provides aliases for `Array!T` | -| [declaration.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/declaration.d) | Misc. declarations of `alias`, variables, type tuples, `ClassInfo` etc. | -| [denum.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/denum.d) | Defines `enum` declarations and enum members | +| [declaration.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/declaration.d) | Misc. declarations of `alias`, variables, type tuples, `ClassInfo` etc. | +| [denum.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/denum.d) | Defines `enum` declarations and enum members | | [attrib.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/nogc.d) | Declarations of 'attributes' such as `private`, `pragma()`, `immutable`, `@UDA`, `align`, `extern(C++)` and more | -| [func.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/func.d) | Define a function declaration (includes function literals, `invariant`, `unittest`) | -| [dversion.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/dversion.d) | Defines a version symbol, e.g. `version = ident`, `debug = ident` | - -**AST nodes** - -| File | Purpose | -|-----------------------------------------------------------------------------------|-------------------------------------------------------------| -| [ast_node.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast_node.d) | Define an abstract AST node class | -| [astbase.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/astbase.d) | Namespace of AST nodes that can be produced by the parser | -| [astcodegen.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/astcodegen.d) | Namespace of AST nodes of a AST ready for code generation | -| [astenums.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/astenums.d) | Enums common to DMD and AST | -| [expression.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/expression.d) | Define expression AST nodes | +| [func.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/func.d) | Define a function declaration (includes function literals, `invariant`, `unittest`) | +| [dversion.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/dversion.d) | Defines a version symbol, e.g. `version = ident`, `debug = ident` | +| [node.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/node.d) | Define an abstract AST node class | +| [base.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/base.d) | Namespace of AST nodes that can be produced by the parser | +| [codegen.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/codegen.d) | Namespace of AST nodes of a AST ready for code generation | +| [enums.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/enums.d) | Enums common to DMD and AST | +| [cond.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/cond.d) | AST nodes for `static if`, `version` `debug ` | +| [expression.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/expression.d) | Define expression AST nodes | | [rootobject.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/rootobject.d) | Define an abstract root class | -| [statement.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/statement.d) | Define statement AST nodes | -| [staticassert.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/staticassert.d) | Define a `static assert` AST node | -| [aggregate.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/aggregate.d) | Define an aggregate (`struct`, `union` or `class`) AST node | -| [dclass.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/dclass.d) | Define a `class` AST node | -| [dstruct.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/dstruct.d) | Define a `struct` or `union` AST node | -| [init.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/init.d) | Define variable initializers | +| [dimport.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/dimport.d) | Renamed imports (`import aliasSymbol = pkg1.pkg2.symbol`) | +| [nspace.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/nspace.d) | Namespace for `extern (C++, Module)` | +| [statement.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/statement.d) | Define statement AST nodes | +| [staticassert.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/staticassert.d) | Define a `static assert` AST node | +| [aggregate.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/aggregate.d) | Define an aggregate (`struct`, `union` or `class`) AST node | +| [dclass.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/dclass.d) | Define a `class` AST node | +| [dstruct.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/dstruct.d) | Define a `struct` or `union` AST node | +| [init.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/init.d) | Define variable initializers | **AST visitors** @@ -184,12 +182,9 @@ Note that these groups have no strict meaning, the category assignments are a bi | [aliasthis.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/aliasthis.d) | Resolve implicit conversions for `alias X this` | | [traits.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/traits.d) | `__traits()` | | [lambdacomp.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/lambdacomp.d) | `__traits(isSame, x => y, z => w)` | -| [cond.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/cond.d) | Evaluate `static if`, `version` `debug ` | | [staticcond.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/staticcond.d) | Lazily evaluate static conditions for `static if`, `static assert` and template constraints | | [delegatize.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/delegatize.d) | Converts expression to delegates for `lazy` parameters | -| [nspace.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/nspace.d) | Namespace for `extern (C++, Module)` | | [intrange.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/intrange.d) | [Value range propagation](https://digitalmars.com/articles/b62.html) | -| [dimport.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/dimport.d) | Renamed imports (`import aliasSymbol = pkg1.pkg2.symbol`) | | [arrayop.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/arrayop.d) | Array operations (`a[] = b[] + c[]`) | | [cpreprocess.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/cpreprocess.d)| Run the C preprocessor on C source files | | [typinf.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/typinf.d) | Generate typeinfo for `typeid()` (as well as internals) | @@ -273,5 +268,5 @@ Note: many other utilities are in [dmd/root](https://github.com/dlang/dmd/tree/m | File | Purpose | |---------------------------------------------------------------------------------|---------------------------------------------------------------| -| [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) | +| [asttypename.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/typename.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 | diff --git a/compiler/src/dmd/access.d b/compiler/src/dmd/access.d index 1363671009bf..f5d2c13fb8fd 100644 --- a/compiler/src/dmd/access.d +++ b/compiler/src/dmd/access.d @@ -13,16 +13,17 @@ module dmd.access; -import dmd.aggregate; -import dmd.astenums; -import dmd.dclass; -import dmd.dmodule; +import dmd.ast.aggregate; +import dmd.ast.enums; +import dmd.ast.dclass; +import dmd.ast.dmodule; +import dmd.ast.dstruct; +import dmd.ast.dsymbol; +import dmd.ast.expression; + import dmd.dscope; -import dmd.dstruct; -import dmd.dsymbol; import dmd.dsymbolsem : toAlias; import dmd.errors; -import dmd.expression; import dmd.funcsem : overloadApply; import dmd.location; import dmd.tokens; diff --git a/compiler/src/dmd/argtypes_aarch64.d b/compiler/src/dmd/argtypes_aarch64.d index 7c01e1723ba9..bb512db9d975 100644 --- a/compiler/src/dmd/argtypes_aarch64.d +++ b/compiler/src/dmd/argtypes_aarch64.d @@ -11,10 +11,11 @@ module dmd.argtypes_aarch64; +import dmd.ast.enums; +import dmd.ast.mtype; + import core.stdc.stdio; -import dmd.astenums; import dmd.dsymbolsem : isPOD; -import dmd.mtype; import dmd.typesem; import dmd.expressionsem : toUInteger; diff --git a/compiler/src/dmd/argtypes_sysv_x64.d b/compiler/src/dmd/argtypes_sysv_x64.d index 1b1308a00c74..2f2630ea59a1 100644 --- a/compiler/src/dmd/argtypes_sysv_x64.d +++ b/compiler/src/dmd/argtypes_sysv_x64.d @@ -12,10 +12,12 @@ module dmd.argtypes_sysv_x64; import core.stdc.stdio; -import dmd.astenums; -import dmd.declaration; + +import dmd.ast.enums; +import dmd.ast.declaration; +import dmd.ast.mtype; + import dmd.dsymbolsem : isPOD; -import dmd.mtype; import dmd.typesem; import dmd.expressionsem : toInteger; import dmd.target; diff --git a/compiler/src/dmd/argtypes_x86.d b/compiler/src/dmd/argtypes_x86.d index c05f2bdb684e..227178fd91de 100644 --- a/compiler/src/dmd/argtypes_x86.d +++ b/compiler/src/dmd/argtypes_x86.d @@ -14,12 +14,13 @@ module dmd.argtypes_x86; import core.stdc.stdio; import core.checkedint; -import dmd.astenums; -import dmd.declaration; +import dmd.ast.enums; +import dmd.ast.declaration; +import dmd.ast.mtype; + import dmd.dsymbolsem : isPOD; import dmd.expressionsem : toInteger; import dmd.location; -import dmd.mtype; import dmd.typesem; import dmd.target; import dmd.visitor; diff --git a/compiler/src/dmd/arrayop.d b/compiler/src/dmd/arrayop.d index 73a92f46ffa9..ae26724857d2 100644 --- a/compiler/src/dmd/arrayop.d +++ b/compiler/src/dmd/arrayop.d @@ -14,20 +14,22 @@ module dmd.arrayop; import core.stdc.stdio; + +import dmd.ast.enums; +import dmd.ast.declaration; +import dmd.ast.expression; +import dmd.ast.mtype; + import dmd.arraytypes; -import dmd.astenums; import dmd.dcast : implicitConvTo; -import dmd.declaration; import dmd.dscope; import dmd.errors; -import dmd.expression; import dmd.expressionsem; import dmd.funcsem; import dmd.hdrgen; import dmd.id; import dmd.identifier; import dmd.location; -import dmd.mtype; import dmd.common.outbuffer; import dmd.tokens; import dmd.typesem : isAssignable, nextOf, toBasetype; @@ -132,7 +134,7 @@ Expression arrayOp(BinExp e, Scope* sc) auto tiargs = new Objects(); auto args = buildArrayOp(sc, e, tiargs); - import dmd.dtemplate : TemplateDeclaration; + import dmd.ast.dtemplate : TemplateDeclaration; __gshared TemplateDeclaration arrayOp; if (arrayOp is null) { diff --git a/compiler/src/dmd/arraytypes.d b/compiler/src/dmd/arraytypes.d index 1d73cfc175ea..580f1684d8f0 100644 --- a/compiler/src/dmd/arraytypes.d +++ b/compiler/src/dmd/arraytypes.d @@ -11,19 +11,20 @@ module dmd.arraytypes; -import dmd.dclass; -import dmd.declaration; -import dmd.dmodule; -import dmd.dsymbol; -import dmd.dtemplate; -import dmd.expression; -import dmd.func; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.dmodule; +import dmd.ast.dsymbol; +import dmd.ast.dtemplate; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.init; +import dmd.ast.mtype; +import dmd.ast.statement; + import dmd.identifier; -import dmd.init; -import dmd.mtype; import dmd.root.array; import dmd.rootobject; -import dmd.statement; alias Strings = Array!(const(char)*); alias Identifiers = Array!(Identifier); diff --git a/compiler/src/dmd/aggregate.d b/compiler/src/dmd/ast/aggregate.d similarity index 96% rename from compiler/src/dmd/aggregate.d rename to compiler/src/dmd/ast/aggregate.d index b61b44a374d1..56f0b8381922 100644 --- a/compiler/src/dmd/aggregate.d +++ b/compiler/src/dmd/ast/aggregate.d @@ -7,28 +7,29 @@ * Copyright: Copyright (C) 1999-2026 by The D Language Foundation, All Rights Reserved * Authors: $(LINK2 https://www.digitalmars.com, Walter Bright) * License: $(LINK2 https://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/aggregate.d, _aggregate.d) - * Documentation: https://dlang.org/phobos/dmd_aggregate.html - * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/aggregate.d + * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/aggregate.d, _aggregate.d) + * Documentation: https://dlang.org/phobos/dmd_ast_aggregate.html + * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/ast/aggregate.d */ -module dmd.aggregate; +module dmd.ast.aggregate; import core.stdc.stdio; import core.checkedint; -import dmd.aliasthis; +import dmd.ast.aliasthis; +import dmd.ast.enums; +import dmd.ast.declaration; +import dmd.ast.dsymbol; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.mtype; + import dmd.arraytypes; -import dmd.astenums; -import dmd.declaration; import dmd.dscope; -import dmd.dsymbol; import dmd.errors; -import dmd.expression; -import dmd.func; import dmd.identifier; import dmd.location; -import dmd.mtype; import dmd.visitor; /** diff --git a/compiler/src/dmd/aliasthis.d b/compiler/src/dmd/ast/aliasthis.d similarity index 88% rename from compiler/src/dmd/aliasthis.d rename to compiler/src/dmd/ast/aliasthis.d index 98380cb90f37..7115ede0f29d 100644 --- a/compiler/src/dmd/aliasthis.d +++ b/compiler/src/dmd/ast/aliasthis.d @@ -6,16 +6,16 @@ * Copyright: Copyright (C) 1999-2026 by The D Language Foundation, All Rights Reserved * Authors: $(LINK2 https://www.digitalmars.com, Walter Bright) * License: $(LINK2 https://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/aliasthis.d, _aliasthis.d) - * Documentation: https://dlang.org/phobos/dmd_aliasthis.html - * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/aliasthis.d + * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/aliasthis.d, _aliasthis.d) + * Documentation: https://dlang.org/phobos/dmd_ast_aliasthis.html + * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/ast/aliasthis.d */ -module dmd.aliasthis; +module dmd.ast.aliasthis; import core.stdc.stdio; -import dmd.dsymbol; +import dmd.ast.dsymbol; import dmd.identifier; import dmd.location; import dmd.visitor; diff --git a/compiler/src/dmd/attrib.d b/compiler/src/dmd/ast/attrib.d similarity index 98% rename from compiler/src/dmd/attrib.d rename to compiler/src/dmd/ast/attrib.d index 250b19a887c6..762d7a2024fe 100644 --- a/compiler/src/dmd/attrib.d +++ b/compiler/src/dmd/ast/attrib.d @@ -17,20 +17,20 @@ * Copyright: Copyright (C) 1999-2026 by The D Language Foundation, All Rights Reserved * Authors: $(LINK2 https://www.digitalmars.com, Walter Bright) * License: $(LINK2 https://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/attrib.d, _attrib.d) - * Documentation: https://dlang.org/phobos/dmd_attrib.html - * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/attrib.d + * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/attrib.d, _attrib.d) + * Documentation: https://dlang.org/phobos/dmd_ast_attrib.html + * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/ast/attrib.d */ -module dmd.attrib; +module dmd.ast.attrib; import dmd.arraytypes; -import dmd.astenums; -import dmd.cond; -import dmd.dmodule; +import dmd.ast.enums; +import dmd.ast.cond; +import dmd.ast.dmodule; +import dmd.ast.dsymbol; +import dmd.ast.expression; import dmd.dscope; -import dmd.dsymbol; -import dmd.expression; import dmd.hdrgen : visibilityToBuffer; import dmd.id; import dmd.identifier; @@ -803,7 +803,6 @@ int foreachUdaNoSemantic(Dsymbol sym, int delegate(Expression) dg) */ bool isEnumAttribute(Expression e, Identifier id) { - import dmd.attrib : isCoreUda; import dmd.id : Id; // Logic based on dmd.objc.Supported.declaredAsOptionalCount diff --git a/compiler/src/dmd/astbase.d b/compiler/src/dmd/ast/base.d similarity index 99% rename from compiler/src/dmd/astbase.d rename to compiler/src/dmd/ast/base.d index 9a2567ceb71f..13c54dcda363 100644 --- a/compiler/src/dmd/astbase.d +++ b/compiler/src/dmd/ast/base.d @@ -3,17 +3,17 @@ * * Copyright: Copyright (C) 1999-2026 by The D Language Foundation, All Rights Reserved * License: $(LINK2 https://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/astbase.d, _astbase.d) - * Documentation: https://dlang.org/phobos/dmd_astbase.html - * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/astbase.d + * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/base.d, _base.d) + * Documentation: https://dlang.org/phobos/dmd_ast_base.html + * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/ast/base.d */ -module dmd.astbase; +module dmd.ast.base; -import dmd.astenums; +import dmd.ast.enums; +import dmd.ast.expression; import dmd.visitor.parsetime; import dmd.tokens : EXP; -import dmd.expression; /** The ASTBase family defines a family of AST nodes appropriate for parsing with * no semantic information. It defines all the AST nodes that the parser needs diff --git a/compiler/src/dmd/ast/codegen.d b/compiler/src/dmd/ast/codegen.d new file mode 100644 index 000000000000..551030132b49 --- /dev/null +++ b/compiler/src/dmd/ast/codegen.d @@ -0,0 +1,104 @@ +/** + * Defines AST nodes for the code generation stage. + * + * Documentation: https://dlang.org/phobos/dmd_ast/codegen.html + * Coverage: https://codecov.io/gh/dlang/dmd/src/master/src/dmd/ast/codegen.d + */ +module dmd.ast.codegen; + + +struct ASTCodegen +{ + public import dmd.ast.aggregate; + public import dmd.ast.aliasthis; + public import dmd.ast.attrib; + public import dmd.ast.cond; + public import dmd.ast.dclass; + public import dmd.ast.declaration; + public import dmd.ast.denum; + public import dmd.ast.dimport; + public import dmd.ast.dmodule; + public import dmd.ast.dstruct; + public import dmd.ast.dsymbol; + public import dmd.ast.dtemplate; + public import dmd.ast.dversion; + public import dmd.ast.expression; + public import dmd.ast.func; + public import dmd.ast.init; + public import dmd.ast.mtype; + public import dmd.ast.nspace; + public import dmd.ast.statement; + public import dmd.ast.staticassert; + public import dmd.ast.init : Designator; + + public import dmd.arraytypes; + public import dmd.initsem; + public import dmd.hdrgen; + public import dmd.typesem; + + alias addSTC = dmd.typesem.addSTC; + alias initializerToExpression = dmd.initsem.initializerToExpression; + alias typeToExpression = dmd.ast.mtype.typeToExpression; + alias UserAttributeDeclaration = dmd.ast.attrib.UserAttributeDeclaration; + alias Ensure = dmd.ast.func.Ensure; // workaround for bug in older DMD frontends + alias ErrorExp = dmd.ast.expression.ErrorExp; + alias ArgumentLabel = dmd.ast.expression.ArgumentLabel; + + alias MODFlags = dmd.ast.mtype.MODFlags; + alias Type = dmd.ast.mtype.Type; + alias Parameter = dmd.ast.mtype.Parameter; + alias Tarray = dmd.ast.mtype.Tarray; + alias Taarray = dmd.ast.mtype.Taarray; + alias Tbool = dmd.ast.mtype.Tbool; + alias Tchar = dmd.ast.mtype.Tchar; + alias Tdchar = dmd.ast.mtype.Tdchar; + alias Tdelegate = dmd.ast.mtype.Tdelegate; + alias Tenum = dmd.ast.mtype.Tenum; + alias Terror = dmd.ast.mtype.Terror; + alias Tfloat32 = dmd.ast.mtype.Tfloat32; + alias Tfloat64 = dmd.ast.mtype.Tfloat64; + alias Tfloat80 = dmd.ast.mtype.Tfloat80; + alias Tfunction = dmd.ast.mtype.Tfunction; + alias Tpointer = dmd.ast.mtype.Tpointer; + alias Treference = dmd.ast.mtype.Treference; + alias Tident = dmd.ast.mtype.Tident; + alias Tint8 = dmd.ast.mtype.Tint8; + alias Tint16 = dmd.ast.mtype.Tint16; + alias Tint32 = dmd.ast.mtype.Tint32; + alias Tint64 = dmd.ast.mtype.Tint64; + alias Tsarray = dmd.ast.mtype.Tsarray; + alias Tstruct = dmd.ast.mtype.Tstruct; + alias Tuns8 = dmd.ast.mtype.Tuns8; + alias Tuns16 = dmd.ast.mtype.Tuns16; + alias Tuns32 = dmd.ast.mtype.Tuns32; + alias Tuns64 = dmd.ast.mtype.Tuns64; + alias Tvoid = dmd.ast.mtype.Tvoid; + alias Twchar = dmd.ast.mtype.Twchar; + alias Tnoreturn = dmd.ast.mtype.Tnoreturn; + + alias Timaginary32 = dmd.ast.mtype.Timaginary32; + alias Timaginary64 = dmd.ast.mtype.Timaginary64; + alias Timaginary80 = dmd.ast.mtype.Timaginary80; + alias Tcomplex32 = dmd.ast.mtype.Tcomplex32; + alias Tcomplex64 = dmd.ast.mtype.Tcomplex64; + alias Tcomplex80 = dmd.ast.mtype.Tcomplex80; + + alias ModToStc = dmd.ast.mtype.ModToStc; + alias ParameterList = dmd.ast.mtype.ParameterList; + alias VarArg = dmd.ast.mtype.VarArg; + alias STC = dmd.ast.declaration.STC; + alias Dsymbol = dmd.ast.dsymbol.Dsymbol; + alias Dsymbols = dmd.ast.dsymbol.Dsymbols; + alias Visibility = dmd.ast.dsymbol.Visibility; + + alias stcToBuffer = dmd.hdrgen.stcToBuffer; + alias linkageToChars = dmd.hdrgen.linkageToChars; + alias visibilityToChars = dmd.hdrgen.visibilityToChars; + + alias isType = dmd.ast.dtemplate.isType; + alias isExpression = dmd.ast.dtemplate.isExpression; + alias isTuple = dmd.ast.dtemplate.isTuple; + + alias SearchOpt = dmd.ast.dsymbol.SearchOpt; + alias PASS = dmd.ast.dsymbol.PASS; +} diff --git a/compiler/src/dmd/cond.d b/compiler/src/dmd/ast/cond.d similarity index 97% rename from compiler/src/dmd/cond.d rename to compiler/src/dmd/ast/cond.d index b1cdbbcade11..7b68e5455aaf 100644 --- a/compiler/src/dmd/cond.d +++ b/compiler/src/dmd/ast/cond.d @@ -6,35 +6,38 @@ * Copyright: Copyright (C) 1999-2026 by The D Language Foundation, All Rights Reserved * Authors: $(LINK2 https://www.digitalmars.com, Walter Bright) * License: $(LINK2 https://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/cond.d, _cond.d) - * Documentation: https://dlang.org/phobos/dmd_cond.html - * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/cond.d + * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/cond.d, _cond.d) + * Documentation: https://dlang.org/phobos/dmd_ast_cond.html + * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/ast/cond.d */ -module dmd.cond; +module dmd.ast.cond; import core.stdc.string; + +import dmd.ast.node; +import dmd.ast.dmodule; +import dmd.ast.enums; +import dmd.ast.expression; +import dmd.ast.mtype; +import dmd.ast.statement; +import dmd.ast.declaration; +import dmd.ast.dstruct; +import dmd.ast.func; + import dmd.arraytypes; -import dmd.astenums; -import dmd.ast_node; -import dmd.dmodule; import dmd.dscope; import dmd.errors; -import dmd.expression; import dmd.globals; import dmd.identifier; import dmd.location; -import dmd.mtype; import dmd.common.outbuffer; import dmd.rootobject; import dmd.root.string; import dmd.tokens; import dmd.utils; import dmd.visitor; -import dmd.statement; -import dmd.declaration; -import dmd.dstruct; -import dmd.func; + /*********************************************************** */ diff --git a/compiler/src/dmd/dclass.d b/compiler/src/dmd/ast/dclass.d similarity index 98% rename from compiler/src/dmd/dclass.d rename to compiler/src/dmd/ast/dclass.d index 7edcc42da827..5d50c40ab8bb 100644 --- a/compiler/src/dmd/dclass.d +++ b/compiler/src/dmd/ast/dclass.d @@ -6,27 +6,28 @@ * Copyright: Copyright (C) 1999-2026 by The D Language Foundation, All Rights Reserved * Authors: $(LINK2 https://www.digitalmars.com, Walter Bright) * License: $(LINK2 https://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/dclass.d, _dclass.d) - * Documentation: https://dlang.org/phobos/dmd_dclass.html - * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/dclass.d + * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/dast/class.d, _dclass.d) + * Documentation: https://dlang.org/phobos/dmd_ast_dclass.html + * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/ast/dclass.d */ -module dmd.dclass; +module dmd.ast.dclass; import core.stdc.stdio; import core.stdc.string; -import dmd.aggregate; +import dmd.ast.aggregate; +import dmd.ast.enums; +import dmd.ast.declaration; +import dmd.ast.dsymbol; +import dmd.ast.func; +import dmd.ast.mtype; + import dmd.arraytypes; -import dmd.astenums; -import dmd.declaration; -import dmd.dsymbol; import dmd.errors; -import dmd.func; import dmd.id; import dmd.identifier; import dmd.location; -import dmd.mtype; import dmd.objc; import dmd.root.rmem; import dmd.visitor; diff --git a/compiler/src/dmd/declaration.d b/compiler/src/dmd/ast/declaration.d similarity index 98% rename from compiler/src/dmd/declaration.d rename to compiler/src/dmd/ast/declaration.d index a0bd68676050..153dd4386b90 100644 --- a/compiler/src/dmd/declaration.d +++ b/compiler/src/dmd/ast/declaration.d @@ -5,29 +5,31 @@ * Copyright: Copyright (C) 1999-2026 by The D Language Foundation, All Rights Reserved * Authors: $(LINK2 https://www.digitalmars.com, Walter Bright) * License: $(LINK2 https://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/declaration.d, _declaration.d) - * Documentation: https://dlang.org/phobos/dmd_declaration.html - * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/declaration.d + * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/declaration.d, _declaration.d) + * Documentation: https://dlang.org/phobos/dmd_ast_declaration.html + * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/ast/declaration.d */ -module dmd.declaration; +module dmd.ast.declaration; import core.stdc.stdio; -import dmd.aggregate; + +import dmd.ast.aggregate; +import dmd.ast.enums; +import dmd.ast.dsymbol; +import dmd.ast.dtemplate; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.init; +import dmd.ast.mtype; + import dmd.arraytypes; -import dmd.astenums; -import dmd.dsymbol; -import dmd.dtemplate; import dmd.errors; import dmd.errorsink; -import dmd.expression; -import dmd.func; import dmd.id; import dmd.identifier; -import dmd.init; import dmd.intrange; import dmd.location; -import dmd.mtype; import dmd.common.outbuffer; import dmd.root.filename; import dmd.target; diff --git a/compiler/src/dmd/denum.d b/compiler/src/dmd/ast/denum.d similarity index 94% rename from compiler/src/dmd/denum.d rename to compiler/src/dmd/ast/denum.d index f065580a355b..574553304bbe 100644 --- a/compiler/src/dmd/denum.d +++ b/compiler/src/dmd/ast/denum.d @@ -6,26 +6,27 @@ * Copyright: Copyright (C) 1999-2026 by The D Language Foundation, All Rights Reserved * Authors: $(LINK2 https://www.digitalmars.com, Walter Bright) * License: $(LINK2 https://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/denum.d, _denum.d) - * Documentation: https://dlang.org/phobos/dmd_denum.html - * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/denum.d + * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/denum.d, _denum.d) + * Documentation: https://dlang.org/phobos/dmd_ast_denum.html + * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/ast/denum.d * References: https://dlang.org/spec/enum.html */ -module dmd.denum; +module dmd.ast.denum; import core.stdc.stdio; -import dmd.astenums; -import dmd.attrib; -import dmd.declaration; -import dmd.dsymbol; -import dmd.expression; +import dmd.ast.enums; +import dmd.ast.attrib; +import dmd.ast.declaration; +import dmd.ast.dsymbol; +import dmd.ast.expression; +import dmd.ast.init; +import dmd.ast.mtype; + import dmd.id; import dmd.identifier; -import dmd.init; import dmd.location; -import dmd.mtype; import dmd.visitor; /*********************************************************** diff --git a/compiler/src/dmd/dimport.d b/compiler/src/dmd/ast/dimport.d similarity index 95% rename from compiler/src/dmd/dimport.d rename to compiler/src/dmd/ast/dimport.d index 349f439ac2c2..911bda50661e 100644 --- a/compiler/src/dmd/dimport.d +++ b/compiler/src/dmd/ast/dimport.d @@ -4,16 +4,17 @@ * Copyright: Copyright (C) 1999-2026 by The D Language Foundation, All Rights Reserved * Authors: $(LINK2 https://www.digitalmars.com, Walter Bright) * License: $(LINK2 https://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/dimport.d, _dimport.d) - * Documentation: https://dlang.org/phobos/dmd_dimport.html - * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/dimport.d + * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/dimport.d, _dimport.d) + * Documentation: https://dlang.org/phobos/dmd_ast_dimport.html + * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/ast/dimport.d */ -module dmd.dimport; +module dmd.ast.dimport; + +import dmd.ast.dmodule; +import dmd.ast.dsymbol; import dmd.arraytypes; -import dmd.dmodule; -import dmd.dsymbol; import dmd.identifier; import dmd.location; import dmd.visitor; diff --git a/compiler/src/dmd/dmodule.d b/compiler/src/dmd/ast/dmodule.d similarity index 99% rename from compiler/src/dmd/dmodule.d rename to compiler/src/dmd/ast/dmodule.d index 40d9736caf7f..8210db98c055 100644 --- a/compiler/src/dmd/dmodule.d +++ b/compiler/src/dmd/ast/dmodule.d @@ -6,31 +6,32 @@ * Copyright: Copyright (C) 1999-2026 by The D Language Foundation, All Rights Reserved * Authors: $(LINK2 https://www.digitalmars.com, Walter Bright) * License: $(LINK2 https://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/dmodule.d, _dmodule.d) - * Documentation: https://dlang.org/phobos/dmd_dmodule.html - * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/dmodule.d + * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/dmodule.d, _dmodule.d) + * Documentation: https://dlang.org/phobos/dmd_ast_dmodule.html + * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/ast/dmodule.d */ -module dmd.dmodule; +module dmd.ast.dmodule; import core.stdc.stdio; import core.stdc.stdlib; import core.stdc.string; -import dmd.aggregate; +import dmd.ast.aggregate; +import dmd.ast.codegen; +import dmd.ast.enums; +import dmd.ast.declaration; +import dmd.ast.dsymbol; +import dmd.ast.expression; +import dmd.ast.func; + import dmd.arraytypes; -import dmd.astcodegen; -import dmd.astenums; import dmd.common.outbuffer; import dmd.compiler; import dmd.cparse; -import dmd.declaration; import dmd.dmacro; -import dmd.dsymbol; import dmd.errors; -import dmd.expression; import dmd.file_manager; -import dmd.func; import dmd.globals; import dmd.id; import dmd.identifier; diff --git a/compiler/src/dmd/dstruct.d b/compiler/src/dmd/ast/dstruct.d similarity index 94% rename from compiler/src/dmd/dstruct.d rename to compiler/src/dmd/ast/dstruct.d index 089307968d57..e55c2067d7d6 100644 --- a/compiler/src/dmd/dstruct.d +++ b/compiler/src/dmd/ast/dstruct.d @@ -6,25 +6,26 @@ * Copyright: Copyright (C) 1999-2026 by The D Language Foundation, All Rights Reserved * Authors: $(LINK2 https://www.digitalmars.com, Walter Bright) * License: $(LINK2 https://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/dstruct.d, _dstruct.d) - * Documentation: https://dlang.org/phobos/dmd_dstruct.html - * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/dstruct.d + * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/dstruct.d, _dstruct.d) + * Documentation: https://dlang.org/phobos/dmd_ast_dstruct.html + * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/ast/dstruct.d */ -module dmd.dstruct; +module dmd.ast.dstruct; import core.stdc.stdio; -import dmd.aggregate; +import dmd.ast.aggregate; +import dmd.ast.enums; +import dmd.ast.dmodule; +import dmd.ast.dsymbol; +import dmd.ast.func; +import dmd.ast.mtype; + import dmd.arraytypes; -import dmd.astenums; -import dmd.dmodule; -import dmd.dsymbol; -import dmd.func; import dmd.id; import dmd.identifier; import dmd.location; -import dmd.mtype; import dmd.visitor; enum StructFlags : int diff --git a/compiler/src/dmd/dsymbol.d b/compiler/src/dmd/ast/dsymbol.d similarity index 98% rename from compiler/src/dmd/dsymbol.d rename to compiler/src/dmd/ast/dsymbol.d index d4d0f0430003..98271b229155 100644 --- a/compiler/src/dmd/dsymbol.d +++ b/compiler/src/dmd/ast/dsymbol.d @@ -4,45 +4,46 @@ * Copyright: Copyright (C) 1999-2026 by The D Language Foundation, All Rights Reserved * Authors: $(LINK2 https://www.digitalmars.com, Walter Bright) * License: $(LINK2 https://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/dsymbol.d, _dsymbol.d) - * Documentation: https://dlang.org/phobos/dmd_dsymbol.html - * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/dsymbol.d + * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/dsymbol.d, _dsymbol.d) + * Documentation: https://dlang.org/phobos/dmd_ast_dsymbol.html + * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/ast/dsymbol.d */ -module dmd.dsymbol; +module dmd.ast.dsymbol; import core.stdc.stdarg; import core.stdc.stdio; import core.stdc.string; import core.stdc.stdlib; -import dmd.aggregate; +import dmd.ast.aggregate; +import dmd.ast.attrib; +import dmd.ast.enums; +import dmd.ast.node; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.denum; +import dmd.ast.dimport; +import dmd.ast.dmodule; +import dmd.ast.dversion; +import dmd.ast.dstruct; +import dmd.ast.dtemplate; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.mtype; +import dmd.ast.nspace; +import dmd.ast.statement; +import dmd.ast.staticassert; + import dmd.arraytypes; -import dmd.attrib; -import dmd.astenums; -import dmd.ast_node; -import dmd.dclass; -import dmd.declaration; -import dmd.denum; -import dmd.dimport; -import dmd.dmodule; -import dmd.dversion; import dmd.dscope; -import dmd.dstruct; -import dmd.dtemplate; import dmd.errors; -import dmd.expression; -import dmd.func; import dmd.identifier; import dmd.location; -import dmd.mtype; -import dmd.nspace; import dmd.root.aav; import dmd.root.rmem; import dmd.rootobject; import dmd.root.string; -import dmd.statement; -import dmd.staticassert; import dmd.tokens; import dmd.visitor; import dmd.common.outbuffer; diff --git a/compiler/src/dmd/dtemplate.d b/compiler/src/dmd/ast/dtemplate.d similarity index 99% rename from compiler/src/dmd/dtemplate.d rename to compiler/src/dmd/ast/dtemplate.d index 1af033fcaa98..6b56f9335f99 100644 --- a/compiler/src/dmd/dtemplate.d +++ b/compiler/src/dmd/ast/dtemplate.d @@ -31,32 +31,33 @@ * Copyright: Copyright (C) 1999-2026 by The D Language Foundation, All Rights Reserved * Authors: $(LINK2 https://www.digitalmars.com, Walter Bright) * License: $(LINK2 https://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/dtemplate.d, _dtemplate.d) - * Documentation: https://dlang.org/phobos/dmd_dtemplate.html - * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/dtemplate.d + * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/dtemplate.d, _dtemplate.d) + * Documentation: https://dlang.org/phobos/dmd_ast_dtemplate.html + * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/ast/dtemplate.d */ -module dmd.dtemplate; +module dmd.ast.dtemplate; import core.stdc.stdio; import core.stdc.string; import dmd.arraytypes; -import dmd.astenums; -import dmd.ast_node; -import dmd.declaration; -import dmd.dmodule; +import dmd.ast.enums; +import dmd.ast.expression; +import dmd.ast.node; +import dmd.ast.declaration; +import dmd.ast.dmodule; +import dmd.ast.mtype; +import dmd.ast.func; +import dmd.ast.dsymbol; + import dmd.dscope; -import dmd.dsymbol; import dmd.errors; import dmd.errorsink; -import dmd.expression; -import dmd.func; import dmd.globals; import dmd.hdrgen; import dmd.identifier; import dmd.location; import dmd.mangle; -import dmd.mtype; import dmd.root.array; import dmd.common.outbuffer; import dmd.rootobject; diff --git a/compiler/src/dmd/dversion.d b/compiler/src/dmd/ast/dversion.d similarity index 92% rename from compiler/src/dmd/dversion.d rename to compiler/src/dmd/ast/dversion.d index 2036f7830423..ea2f55e29ae8 100644 --- a/compiler/src/dmd/dversion.d +++ b/compiler/src/dmd/ast/dversion.d @@ -7,14 +7,14 @@ * Copyright: Copyright (C) 1999-2026 by The D Language Foundation, All Rights Reserved * Authors: $(LINK2 https://www.digitalmars.com, Walter Bright) * License: $(LINK2 https://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/dversion.d, _dversion.d) - * Documentation: https://dlang.org/phobos/dmd_dversion.html - * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/dversion.d + * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/dversion.d, _dversion.d) + * Documentation: https://dlang.org/phobos/dmd_ast_dversion.html + * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/ast/dversion.d */ -module dmd.dversion; +module dmd.ast.dversion; -import dmd.dsymbol; +import dmd.ast.dsymbol; import dmd.identifier; import dmd.location; import dmd.visitor; diff --git a/compiler/src/dmd/astenums.d b/compiler/src/dmd/ast/enums.d similarity index 99% rename from compiler/src/dmd/astenums.d rename to compiler/src/dmd/ast/enums.d index dcaa9dbd8da1..b2356afce6f2 100644 --- a/compiler/src/dmd/astenums.d +++ b/compiler/src/dmd/ast/enums.d @@ -3,12 +3,12 @@ * * Copyright: Copyright (C) 1999-2026 by The D Language Foundation, All Rights Reserved * License: $(LINK2 https://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/astenums.d, _astenums.d) - * Documentation: https://dlang.org/phobos/dmd_astenums.html - * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/astenums.d + * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/enums.d, _enums.d) + * Documentation: https://dlang.org/phobos/dmd_ast_enums.html + * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/ast/enums.d */ -module dmd.astenums; +module dmd.ast.enums; enum Sizeok : ubyte { diff --git a/compiler/src/dmd/expression.d b/compiler/src/dmd/ast/expression.d similarity index 99% rename from compiler/src/dmd/expression.d rename to compiler/src/dmd/ast/expression.d index 58bd4fbfeb6d..cf9d3790fe81 100644 --- a/compiler/src/dmd/expression.d +++ b/compiler/src/dmd/ast/expression.d @@ -6,34 +6,35 @@ * Copyright: Copyright (C) 1999-2026 by The D Language Foundation, All Rights Reserved * Authors: $(LINK2 https://www.digitalmars.com, Walter Bright) * License: $(LINK2 https://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/expression.d, _expression.d) - * Documentation: https://dlang.org/phobos/dmd_expression.html - * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/expression.d + * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/expression.d, _expression.d) + * Documentation: https://dlang.org/phobos/dmd_ast_expression.html + * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/ast/expression.d */ -module dmd.expression; +module dmd.ast.expression; import core.stdc.stdarg; import core.stdc.stdio; import core.stdc.string; import dmd.arraytypes; -import dmd.astenums; -import dmd.ast_node; -import dmd.dclass; -import dmd.declaration; -import dmd.dstruct; -import dmd.dsymbol; -import dmd.dtemplate; +import dmd.ast.enums; +import dmd.ast.node; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.dstruct; +import dmd.ast.dsymbol; +import dmd.ast.dtemplate; +import dmd.ast.func; +import dmd.ast.init; +import dmd.ast.mtype; + import dmd.errors; -import dmd.func; import dmd.globals; import dmd.hdrgen : toChars; import dmd.id; import dmd.identifier; -import dmd.init; import dmd.location; -import dmd.mtype; import dmd.root.complex; import dmd.root.ctfloat; import dmd.root.rmem; diff --git a/compiler/src/dmd/func.d b/compiler/src/dmd/ast/func.d similarity index 99% rename from compiler/src/dmd/func.d rename to compiler/src/dmd/ast/func.d index 32cfd7ad22f8..3741a5723bc6 100644 --- a/compiler/src/dmd/func.d +++ b/compiler/src/dmd/ast/func.d @@ -11,31 +11,33 @@ * Copyright: Copyright (C) 1999-2026 by The D Language Foundation, All Rights Reserved * Authors: $(LINK2 https://www.digitalmars.com, Walter Bright) * License: $(LINK2 https://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/func.d, _func.d) - * Documentation: https://dlang.org/phobos/dmd_func.html - * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/func.d + * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/func.d, _func.d) + * Documentation: https://dlang.org/phobos/dmd_ast_func.html + * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/ast/func.d */ -module dmd.func; +module dmd.ast.func; import core.stdc.stdio; import core.stdc.string; -import dmd.aggregate; + +import dmd.ast.aggregate; +import dmd.ast.enums; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.dsymbol; +import dmd.ast.dtemplate; +import dmd.ast.mtype; +import dmd.ast.statement; + import dmd.arraytypes; -import dmd.astenums; -import dmd.dclass; -import dmd.declaration; -import dmd.dsymbol; -import dmd.dtemplate; import dmd.hdrgen; import dmd.id; import dmd.identifier; import dmd.location; -import dmd.mtype; import dmd.objc; import dmd.common.outbuffer; import dmd.rootobject; -import dmd.statement; import dmd.targetcompiler; import dmd.tokens; import dmd.visitor; diff --git a/compiler/src/dmd/init.d b/compiler/src/dmd/ast/init.d similarity index 97% rename from compiler/src/dmd/init.d rename to compiler/src/dmd/ast/init.d index 9a118bb3d658..bf49b18e34c2 100644 --- a/compiler/src/dmd/init.d +++ b/compiler/src/dmd/ast/init.d @@ -4,22 +4,24 @@ * Copyright: Copyright (C) 1999-2026 by The D Language Foundation, All Rights Reserved * Authors: $(LINK2 https://www.digitalmars.com, Walter Bright) * License: $(LINK2 https://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/init.d, _init.d) - * Documentation: https://dlang.org/phobos/dmd_init.html - * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/init.d + * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/dinit.d, _dinit.d) + * Documentation: https://dlang.org/phobos/dmd_ast_dinit.html + * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/ast/dinit.d */ -module dmd.init; +module dmd.ast.init; import core.stdc.stdio; +import dmd.ast.enums; +import dmd.ast.expression; +import dmd.ast.node; +import dmd.ast.mtype; + import dmd.arraytypes; -import dmd.astenums; -import dmd.ast_node; -import dmd.expression; import dmd.identifier; import dmd.location; -import dmd.mtype; + import dmd.rootobject; import dmd.visitor; diff --git a/compiler/src/dmd/mtype.d b/compiler/src/dmd/ast/mtype.d similarity index 99% rename from compiler/src/dmd/mtype.d rename to compiler/src/dmd/ast/mtype.d index 3dc6871abf80..2249d53cad9e 100644 --- a/compiler/src/dmd/mtype.d +++ b/compiler/src/dmd/ast/mtype.d @@ -4,12 +4,12 @@ * Copyright: Copyright (C) 1999-2026 by The D Language Foundation, All Rights Reserved * Authors: $(LINK2 https://www.digitalmars.com, Walter Bright) * License: $(LINK2 https://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/mtype.d, _mtype.d) - * Documentation: https://dlang.org/phobos/dmd_mtype.html - * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/mtype.d + * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/mtype.d, _mtype.d) + * Documentation: https://dlang.org/phobos/dmd_ast_mtype.html + * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/ast/mtype.d */ -module dmd.mtype; +module dmd.ast.mtype; import core.checkedint; import core.stdc.stdarg; @@ -17,16 +17,17 @@ import core.stdc.stdio; import core.stdc.stdlib; import core.stdc.string; +import dmd.ast.enums; +import dmd.ast.node; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.denum; +import dmd.ast.dstruct; +import dmd.ast.dsymbol; +import dmd.ast.dtemplate; +import dmd.ast.expression; + import dmd.arraytypes; -import dmd.astenums; -import dmd.ast_node; -import dmd.dclass; -import dmd.declaration; -import dmd.denum; -import dmd.dstruct; -import dmd.dsymbol; -import dmd.dtemplate; -import dmd.expression; import dmd.hdrgen; import dmd.id; import dmd.identifier; @@ -2284,7 +2285,7 @@ extern (C++) struct ParameterList */ extern (C++) final class Parameter : ASTNode { - import dmd.attrib : UserAttributeDeclaration; + import dmd.ast.attrib : UserAttributeDeclaration; Loc loc; STC storageClass; diff --git a/compiler/src/dmd/ast_node.d b/compiler/src/dmd/ast/node.d similarity index 90% rename from compiler/src/dmd/ast_node.d rename to compiler/src/dmd/ast/node.d index 2693fcb9bb40..3953819d3af7 100644 --- a/compiler/src/dmd/ast_node.d +++ b/compiler/src/dmd/ast/node.d @@ -4,11 +4,11 @@ * Copyright: Copyright (C) 1999-2026 by The D Language Foundation, All Rights Reserved * Authors: $(LINK2 https://www.digitalmars.com, Walter Bright) * License: $(LINK2 https://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast_node.d, _ast_node.d) + * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/node.d, _ast_node.d) * Documentation: https://dlang.org/phobos/dmd_ast_node.html - * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/ast_node.d + * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/ast/node.d */ -module dmd.ast_node; +module dmd.ast.node; import dmd.rootobject : RootObject; import dmd.visitor : Visitor; diff --git a/compiler/src/dmd/nspace.d b/compiler/src/dmd/ast/nspace.d similarity index 92% rename from compiler/src/dmd/nspace.d rename to compiler/src/dmd/ast/nspace.d index a21a67ffcdfe..d9767400c8c7 100644 --- a/compiler/src/dmd/nspace.d +++ b/compiler/src/dmd/ast/nspace.d @@ -39,16 +39,17 @@ * Copyright: Copyright (C) 1999-2026 by The D Language Foundation, All Rights Reserved * Authors: $(LINK2 https://www.digitalmars.com, Walter Bright) * License: $(LINK2 https://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/nspace.d, _nspace.d) - * Documentation: https://dlang.org/phobos/dmd_nspace.html - * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/nspace.d + * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/nspace.d, _nspace.d) + * Documentation: https://dlang.org/phobos/dmd_ast/nspace.html + * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/ast/nspace.d */ -module dmd.nspace; +module dmd.ast.nspace; + +import dmd.ast.dsymbol; +import dmd.ast.expression; import dmd.arraytypes; -import dmd.dsymbol; -import dmd.expression; import dmd.identifier; import dmd.location; import dmd.visitor; diff --git a/compiler/src/dmd/ast/package.d b/compiler/src/dmd/ast/package.d new file mode 100644 index 000000000000..324dd4dc8cec --- /dev/null +++ b/compiler/src/dmd/ast/package.d @@ -0,0 +1,41 @@ +/** + * Package import for all the D Abstract Syntax Tree nodes. + Excludes imports of base, codegen, node, print, and typename modules + * + * Copyright: Copyright (C) 1999-2026 by The D Language Foundation, All Rights Reserved + * Authors: Nicholas Wilson + * License: $(LINK2 https://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) + * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/package.d, _package.d) + * Documentation: https://dlang.org/phobos/dmd_ast_package.html + * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/ast/package.d + */ + +module dmd.ast.typename; + +public import dmd.ast.aggregate; +public import dmd.ast.aliasthis; +public import dmd.ast.attrib; +//public import dmd.ast.base; +//public import dmd.ast.codegen; +public import dmd.ast.cond; +public import dmd.ast.dclass; +public import dmd.ast.declaration; +public import dmd.ast.denum; +public import dmd.ast.dimport; +public import dmd.ast.dmodule; +public import dmd.ast.dstruct; +public import dmd.ast.dsymbol; +public import dmd.ast.dtemplate; +public import dmd.ast.dversion; +public import dmd.ast.enums; +public import dmd.ast.expression; +public import dmd.ast.func; +public import dmd.ast.init; +public import dmd.ast.mtype; +public import dmd.ast.node; +public import dmd.ast.nspace; +//public import dmd.ast.print; +public import dmd.ast.statement; +public import dmd.ast.staticassert; +public import dmd.ast.staticcond; +//public import dmd.ast.typename; diff --git a/compiler/src/dmd/printast.d b/compiler/src/dmd/ast/print.d similarity index 97% rename from compiler/src/dmd/printast.d rename to compiler/src/dmd/ast/print.d index ef97306c5a7b..b7f04dc66587 100644 --- a/compiler/src/dmd/printast.d +++ b/compiler/src/dmd/ast/print.d @@ -4,16 +4,17 @@ * Copyright: Copyright (C) 1999-2026 by The D Language Foundation, All Rights Reserved * Authors: $(LINK2 https://www.digitalmars.com, Walter Bright) * License: $(LINK2 https://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/printast.d, _printast.d) - * Documentation: https://dlang.org/phobos/dmd_printast.html - * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/printast.d + * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/print.d, _printast.d) + * Documentation: https://dlang.org/phobos/dmd_ast_print.html + * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/ast/print.d */ -module dmd.printast; +module dmd.ast.print; import core.stdc.stdio; -import dmd.expression; +import dmd.ast.expression; + import dmd.expressionsem : toInteger; import dmd.ctfeexpr; import dmd.tokens; diff --git a/compiler/src/dmd/statement.d b/compiler/src/dmd/ast/statement.d similarity index 99% rename from compiler/src/dmd/statement.d rename to compiler/src/dmd/ast/statement.d index 0b9e3fb4df31..acdf2db1013a 100644 --- a/compiler/src/dmd/statement.d +++ b/compiler/src/dmd/ast/statement.d @@ -6,30 +6,31 @@ * Copyright: Copyright (C) 1999-2026 by The D Language Foundation, All Rights Reserved * Authors: $(LINK2 https://www.digitalmars.com, Walter Bright) * License: $(LINK2 https://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/statement.d, _statement.d) - * Documentation: https://dlang.org/phobos/dmd_statement.html - * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/statement.d + * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/statement.d, _statement.d) + * Documentation: https://dlang.org/phobos/dmd_ast_statement.html + * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/ast/statement.d */ -module dmd.statement; +module dmd.ast.statement; import core.stdc.stdarg; import core.stdc.stdio; +import dmd.ast.enums; +import dmd.ast.node; +import dmd.ast.cond; +import dmd.ast.declaration; +import dmd.ast.dsymbol; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.mtype; +import dmd.ast.staticassert; + import dmd.arraytypes; -import dmd.astenums; -import dmd.ast_node; -import dmd.cond; -import dmd.declaration; -import dmd.dsymbol; -import dmd.expression; -import dmd.func; import dmd.id; import dmd.identifier; import dmd.location; -import dmd.mtype; import dmd.rootobject; -import dmd.staticassert; import dmd.tokens; import dmd.visitor; import dmd.visitor.postorder; diff --git a/compiler/src/dmd/staticassert.d b/compiler/src/dmd/ast/staticassert.d similarity index 86% rename from compiler/src/dmd/staticassert.d rename to compiler/src/dmd/ast/staticassert.d index 97bd8e520279..a17ee3883bd9 100644 --- a/compiler/src/dmd/staticassert.d +++ b/compiler/src/dmd/ast/staticassert.d @@ -6,16 +6,17 @@ * Copyright: Copyright (C) 1999-2026 by The D Language Foundation, All Rights Reserved * Authors: $(LINK2 https://www.digitalmars.com, Walter Bright) * License: $(LINK2 https://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/staticassert.d, _staticassert.d) - * Documentation: https://dlang.org/phobos/dmd_staticassert.html - * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/staticassert.d + * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/staticassert.d, _staticassert.d) + * Documentation: https://dlang.org/phobos/dmd_ast_staticassert.html + * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/ast/staticassert.d */ -module dmd.staticassert; +module dmd.ast.staticassert; + +import dmd.ast.dsymbol; +import dmd.ast.expression; import dmd.arraytypes; -import dmd.dsymbol; -import dmd.expression; import dmd.location; import dmd.id; import dmd.visitor; diff --git a/compiler/src/dmd/staticcond.d b/compiler/src/dmd/ast/staticcond.d similarity index 98% rename from compiler/src/dmd/staticcond.d rename to compiler/src/dmd/ast/staticcond.d index 75a059640d19..cc6d11a8b70e 100644 --- a/compiler/src/dmd/staticcond.d +++ b/compiler/src/dmd/ast/staticcond.d @@ -4,14 +4,14 @@ * Copyright: Copyright (C) 1999-2026 by The D Language Foundation, All Rights Reserved * Authors: $(LINK2 https://www.digitalmars.com, Walter Bright) * License: $(LINK2 https://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/staticcond.d, _staticcond.d) - * Documentation: https://dlang.org/phobos/dmd_staticcond.html - * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/staticcond.d + * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/staticcond.d, _staticcond.d) + * Documentation: https://dlang.org/phobos/dmd_ast_staticcond.html + * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/ast/staticcond.d */ -module dmd.staticcond; +module dmd.ast.staticcond; -import dmd.expression; +import dmd.ast.expression; import dmd.root.array; import dmd.common.outbuffer; import dmd.tokens; diff --git a/compiler/src/dmd/asttypename.d b/compiler/src/dmd/ast/typename.d similarity index 80% rename from compiler/src/dmd/asttypename.d rename to compiler/src/dmd/ast/typename.d index 7962a891f5bd..a46d44d4da8e 100644 --- a/compiler/src/dmd/asttypename.d +++ b/compiler/src/dmd/ast/typename.d @@ -4,37 +4,40 @@ * Copyright: Copyright (C) 1999-2026 by The D Language Foundation, All Rights Reserved * Authors: Stefan Koch * License: $(LINK2 https://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) - * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/asttypename.d, _asttypename.d) - * Documentation: https://dlang.org/phobos/dmd_asttypename.html - * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/asttypename.d + * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/ast/typename.d, _typename.d) + * Documentation: https://dlang.org/phobos/dmd_ast_typename.html + * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/ast/typename.d */ -module dmd.asttypename; +module dmd.ast.asttypename; + +import dmd.ast.node; +import dmd.ast.attrib; +import dmd.ast.aliasthis; +import dmd.ast.aggregate; +import dmd.ast.cond; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.denum; +import dmd.ast.dimport; +import dmd.ast.init; +import dmd.ast.dmodule; +import dmd.ast.dstruct; +import dmd.ast.dsymbol; +import dmd.ast.dtemplate; +import dmd.ast.dversion; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.mtype; +import dmd.ast.nspace; +import dmd.ast.statement; +import dmd.ast.staticassert; -import dmd.ast_node; -import dmd.attrib; -import dmd.aliasthis; -import dmd.aggregate; -import dmd.cond; -import dmd.dclass; -import dmd.declaration; -import dmd.denum; -import dmd.dimport; -import dmd.dstruct; -import dmd.dsymbol; -import dmd.dtemplate; -import dmd.dversion; -import dmd.expression; -import dmd.func; -import dmd.dmodule; -import dmd.mtype; import dmd.identifier; -import dmd.init; import dmd.root.complex; import dmd.rootobject; -import dmd.statement; -import dmd.staticassert; -import dmd.nspace; + + import dmd.visitor; /// Returns: the typename of the dynamic ast-node-type diff --git a/compiler/src/dmd/astcodegen.d b/compiler/src/dmd/astcodegen.d deleted file mode 100644 index ae0c3629178b..000000000000 --- a/compiler/src/dmd/astcodegen.d +++ /dev/null @@ -1,103 +0,0 @@ -/** - * Defines AST nodes for the code generation stage. - * - * Documentation: https://dlang.org/phobos/dmd_astcodegen.html - * Coverage: https://codecov.io/gh/dlang/dmd/src/master/src/dmd/astcodegen.d - */ -module dmd.astcodegen; - - -struct ASTCodegen -{ - public import dmd.aggregate; - public import dmd.aliasthis; - public import dmd.arraytypes; - public import dmd.attrib; - public import dmd.cond; - public import dmd.dclass; - public import dmd.declaration; - public import dmd.denum; - public import dmd.dimport; - public import dmd.dmodule; - public import dmd.dstruct; - public import dmd.dsymbol; - public import dmd.dtemplate; - public import dmd.dversion; - public import dmd.expression; - public import dmd.func; - public import dmd.hdrgen; - public import dmd.init; - public import dmd.initsem; - public import dmd.mtype; - public import dmd.nspace; - public import dmd.statement; - public import dmd.staticassert; - public import dmd.init : Designator; - public import dmd.typesem; - - alias addSTC = dmd.typesem.addSTC; - alias initializerToExpression = dmd.initsem.initializerToExpression; - alias typeToExpression = dmd.mtype.typeToExpression; - alias UserAttributeDeclaration = dmd.attrib.UserAttributeDeclaration; - alias Ensure = dmd.func.Ensure; // workaround for bug in older DMD frontends - alias ErrorExp = dmd.expression.ErrorExp; - alias ArgumentLabel = dmd.expression.ArgumentLabel; - - alias MODFlags = dmd.mtype.MODFlags; - alias Type = dmd.mtype.Type; - alias Parameter = dmd.mtype.Parameter; - alias Tarray = dmd.mtype.Tarray; - alias Taarray = dmd.mtype.Taarray; - alias Tbool = dmd.mtype.Tbool; - alias Tchar = dmd.mtype.Tchar; - alias Tdchar = dmd.mtype.Tdchar; - alias Tdelegate = dmd.mtype.Tdelegate; - alias Tenum = dmd.mtype.Tenum; - alias Terror = dmd.mtype.Terror; - alias Tfloat32 = dmd.mtype.Tfloat32; - alias Tfloat64 = dmd.mtype.Tfloat64; - alias Tfloat80 = dmd.mtype.Tfloat80; - alias Tfunction = dmd.mtype.Tfunction; - alias Tpointer = dmd.mtype.Tpointer; - alias Treference = dmd.mtype.Treference; - alias Tident = dmd.mtype.Tident; - alias Tint8 = dmd.mtype.Tint8; - alias Tint16 = dmd.mtype.Tint16; - alias Tint32 = dmd.mtype.Tint32; - alias Tint64 = dmd.mtype.Tint64; - alias Tsarray = dmd.mtype.Tsarray; - alias Tstruct = dmd.mtype.Tstruct; - alias Tuns8 = dmd.mtype.Tuns8; - alias Tuns16 = dmd.mtype.Tuns16; - alias Tuns32 = dmd.mtype.Tuns32; - alias Tuns64 = dmd.mtype.Tuns64; - alias Tvoid = dmd.mtype.Tvoid; - alias Twchar = dmd.mtype.Twchar; - alias Tnoreturn = dmd.mtype.Tnoreturn; - - alias Timaginary32 = dmd.mtype.Timaginary32; - alias Timaginary64 = dmd.mtype.Timaginary64; - alias Timaginary80 = dmd.mtype.Timaginary80; - alias Tcomplex32 = dmd.mtype.Tcomplex32; - alias Tcomplex64 = dmd.mtype.Tcomplex64; - alias Tcomplex80 = dmd.mtype.Tcomplex80; - - alias ModToStc = dmd.mtype.ModToStc; - alias ParameterList = dmd.mtype.ParameterList; - alias VarArg = dmd.mtype.VarArg; - alias STC = dmd.declaration.STC; - alias Dsymbol = dmd.dsymbol.Dsymbol; - alias Dsymbols = dmd.dsymbol.Dsymbols; - alias Visibility = dmd.dsymbol.Visibility; - - alias stcToBuffer = dmd.hdrgen.stcToBuffer; - alias linkageToChars = dmd.hdrgen.linkageToChars; - alias visibilityToChars = dmd.hdrgen.visibilityToChars; - - alias isType = dmd.dtemplate.isType; - alias isExpression = dmd.dtemplate.isExpression; - alias isTuple = dmd.dtemplate.isTuple; - - alias SearchOpt = dmd.dsymbol.SearchOpt; - alias PASS = dmd.dsymbol.PASS; -} diff --git a/compiler/src/dmd/attribsem.d b/compiler/src/dmd/attribsem.d index 0059884d54fa..312ca55f265a 100644 --- a/compiler/src/dmd/attribsem.d +++ b/compiler/src/dmd/attribsem.d @@ -24,11 +24,12 @@ module dmd.attribsem; +import dmd.ast.attrib; +import dmd.ast.dsymbol; import dmd.arraytypes; -import dmd.attrib; +import dmd.ast.expression; + import dmd.dscope; -import dmd.dsymbol; -import dmd.expression; import dmd.expressionsem; import dmd.location; import dmd.root.array; // for each diff --git a/compiler/src/dmd/blockexit.d b/compiler/src/dmd/blockexit.d index 6f619534d10d..c01b8ecf3173 100644 --- a/compiler/src/dmd/blockexit.d +++ b/compiler/src/dmd/blockexit.d @@ -14,22 +14,23 @@ module dmd.blockexit; import core.stdc.stdio; import dmd.arraytypes; -import dmd.astenums; +import dmd.ast.enums; +import dmd.ast.expression; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.func; +import dmd.ast.mtype; +import dmd.ast.statement; + import dmd.canthrow; -import dmd.dclass; -import dmd.declaration; import dmd.errors; import dmd.errorsink; -import dmd.expression; import dmd.expressionsem : toBool; import dmd.typesem : toBasetype; -import dmd.func; import dmd.globals; import dmd.id; import dmd.identifier; import dmd.location; -import dmd.mtype; -import dmd.statement; import dmd.tokens; /** diff --git a/compiler/src/dmd/builtin.d b/compiler/src/dmd/builtin.d index 167065ccec4d..1b892b190794 100644 --- a/compiler/src/dmd/builtin.d +++ b/compiler/src/dmd/builtin.d @@ -13,16 +13,17 @@ module dmd.builtin; +import dmd.ast.enums; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.mtype; + import dmd.arraytypes; -import dmd.astenums; import dmd.errors; -import dmd.expression; import dmd.expressionsem : toInteger, toReal; import dmd.typesem : isFloating, toBasetype; -import dmd.func; import dmd.location; import dmd.mangle; -import dmd.mtype; import dmd.root.ctfloat; import dmd.tokens; import dmd.id; @@ -177,7 +178,7 @@ Expression eval_unimp(Loc loc, FuncDeclaration fd, Expression[] arguments) Expression eval_ctfeWrite(Loc loc, FuncDeclaration fd, Expression[] arguments) { import core.stdc.stdio: fprintf, stderr; - import dmd.expression: CTFEExp; + import dmd.ast.expression: CTFEExp; import dmd.ctfeexpr: resolveSlice; import dmd.expressionsem : toStringExp; diff --git a/compiler/src/dmd/canthrow.d b/compiler/src/dmd/canthrow.d index 64ec16a16553..8af3fab3ed59 100644 --- a/compiler/src/dmd/canthrow.d +++ b/compiler/src/dmd/canthrow.d @@ -13,18 +13,19 @@ module dmd.canthrow; -import dmd.aggregate; -import dmd.astenums; +import dmd.ast.aggregate; +import dmd.ast.expression; +import dmd.ast.dsymbol; +import dmd.ast.enums; +import dmd.ast.func; +import dmd.ast.mtype; + import dmd.blockexit : BE, checkThrow; -import dmd.dsymbol; import dmd.dsymbolsem : include, toAlias; import dmd.errors; import dmd.errorsink; -import dmd.expression; import dmd.expressionsem; import dmd.typesem; -import dmd.func; -import dmd.mtype; import dmd.tokens; import dmd.visitor; import dmd.visitor.postorder; diff --git a/compiler/src/dmd/chkformat.d b/compiler/src/dmd/chkformat.d index 6a315985fe67..8fea19dd4632 100644 --- a/compiler/src/dmd/chkformat.d +++ b/compiler/src/dmd/chkformat.d @@ -13,15 +13,16 @@ module dmd.chkformat; //import core.stdc.stdio : printf, scanf; import core.stdc.ctype : isdigit; -import dmd.astenums; -import dmd.cond; +import dmd.ast.enums; +import dmd.ast.cond; +import dmd.ast.expression; +import dmd.ast.mtype; + import dmd.errorsink; -import dmd.expression; import dmd.globals; import dmd.hdrgen : toErrMsg; import dmd.identifier; import dmd.location; -import dmd.mtype; import dmd.typesem; import dmd.target; diff --git a/compiler/src/dmd/clone.d b/compiler/src/dmd/clone.d index 5c3b01233e63..d7f0ebe5fd64 100644 --- a/compiler/src/dmd/clone.d +++ b/compiler/src/dmd/clone.d @@ -13,31 +13,33 @@ module dmd.clone; import core.stdc.stdio; -import dmd.aggregate; + +import dmd.ast.aggregate; +import dmd.ast.dstruct; +import dmd.ast.dsymbol; +import dmd.ast.enums; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.init; +import dmd.ast.mtype; +import dmd.ast.statement; + import dmd.arraytypes; -import dmd.astenums; -import dmd.dclass; -import dmd.declaration; import dmd.dscope; -import dmd.dstruct; -import dmd.dsymbol; import dmd.dsymbolsem; -import dmd.dtemplate; +import dmd.ast.dtemplate; import dmd.errors; -import dmd.expression; import dmd.expressionsem; -import dmd.func; import dmd.funcsem; import dmd.globals; import dmd.id; import dmd.identifier; -import dmd.init; import dmd.location; -import dmd.mtype; import dmd.opover; import dmd.semantic2; import dmd.semantic3; -import dmd.statement; import dmd.target; import dmd.typesem; import dmd.tokens; diff --git a/compiler/src/dmd/compiler.d b/compiler/src/dmd/compiler.d index ebc441f86cf9..8fe91005caa5 100644 --- a/compiler/src/dmd/compiler.d +++ b/compiler/src/dmd/compiler.d @@ -13,16 +13,17 @@ module dmd.compiler; import core.stdc.string; -import dmd.astenums; +import dmd.ast.dmodule; +import dmd.ast.enums; +import dmd.ast.expression; +import dmd.ast.mtype; + import dmd.arraytypes; import dmd.ctfeexpr; -import dmd.dmodule; import dmd.errors; -import dmd.expression; import dmd.expressionsem : toInteger, toReal; import dmd.id; import dmd.identifier; -import dmd.mtype; import dmd.typesem; import dmd.root.array; import dmd.root.ctfloat; @@ -155,7 +156,7 @@ extern (C++) struct Compiler version (CallbackAPI) { - import dmd.statement; + import dmd.ast.statement; import dmd.dscope; alias OnStatementSemanticStart = void function(Statement, Scope*); alias OnStatementSemanticDone = void function(Statement, Scope*); diff --git a/compiler/src/dmd/constfold.d b/compiler/src/dmd/constfold.d index 1bac89966d01..d6265eb6d96c 100644 --- a/compiler/src/dmd/constfold.d +++ b/compiler/src/dmd/constfold.d @@ -17,18 +17,20 @@ module dmd.constfold; import core.stdc.string; import core.stdc.stdio; + +import dmd.ast.declaration; +import dmd.ast.enums; +import dmd.ast.expression; +import dmd.ast.mtype; + import dmd.arraytypes; -import dmd.astenums; import dmd.ctfeexpr; import dmd.dcast; -import dmd.declaration; -import dmd.dstruct; +import dmd.ast.dstruct; import dmd.errors; -import dmd.expression; import dmd.expressionsem; import dmd.globals; import dmd.location; -import dmd.mtype; import dmd.root.complex; import dmd.root.ctfloat; import dmd.root.port; diff --git a/compiler/src/dmd/cparse.d b/compiler/src/dmd/cparse.d index 0ca40be20743..599bf1396ed4 100644 --- a/compiler/src/dmd/cparse.d +++ b/compiler/src/dmd/cparse.d @@ -16,7 +16,7 @@ module dmd.cparse; import core.stdc.stdio; import core.stdc.string : memcpy; -import dmd.astenums; +import dmd.ast.enums; import dmd.errors; import dmd.errorsink; import dmd.id; diff --git a/compiler/src/dmd/cpreprocess.d b/compiler/src/dmd/cpreprocess.d index 1716933532ad..86b953830d5b 100644 --- a/compiler/src/dmd/cpreprocess.d +++ b/compiler/src/dmd/cpreprocess.d @@ -17,7 +17,7 @@ import core.stdc.stdio; import core.stdc.stdlib; import core.stdc.string; -import dmd.astenums; +import dmd.ast.enums; import dmd.errors; import dmd.link; import dmd.location; diff --git a/compiler/src/dmd/ctfeexpr.d b/compiler/src/dmd/ctfeexpr.d index 5623a4decfdd..8c59d7259722 100644 --- a/compiler/src/dmd/ctfeexpr.d +++ b/compiler/src/dmd/ctfeexpr.d @@ -13,23 +13,25 @@ module dmd.ctfeexpr; import core.stdc.stdio; import core.stdc.string; + +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.dstruct; +import dmd.ast.dtemplate; +import dmd.ast.enums; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.mtype; + import dmd.arraytypes; -import dmd.astenums; import dmd.constfold; import dmd.compiler; import dmd.dcast : implicitConvTo; -import dmd.dclass; -import dmd.declaration; import dmd.dinterpret; -import dmd.dstruct; -import dmd.dtemplate; import dmd.errors; -import dmd.expression; import dmd.expressionsem; -import dmd.func; import dmd.globals : dinteger_t, sinteger_t, uinteger_t; import dmd.location; -import dmd.mtype; import dmd.root.bitarray; import dmd.root.ctfloat; import dmd.root.port; diff --git a/compiler/src/dmd/cxxfrontend.d b/compiler/src/dmd/cxxfrontend.d index d26ae1a6e7f4..dc4facf30fa2 100644 --- a/compiler/src/dmd/cxxfrontend.d +++ b/compiler/src/dmd/cxxfrontend.d @@ -10,33 +10,34 @@ */ module dmd.cxxfrontend; -import dmd.aggregate : AggregateDeclaration; +import dmd.ast.aggregate : AggregateDeclaration; +import dmd.ast.attrib; +import dmd.ast.dclass : ClassDeclaration, BaseClass; +import dmd.ast.declaration : TypeInfoDeclaration, VarDeclaration, TupleDeclaration; +import dmd.ast.denum : EnumDeclaration; +import dmd.ast.dmodule /*: Module*/; +import dmd.ast.dstruct /*: StructDeclaration*/; +import dmd.ast.dsymbol : Dsymbol, ScopeDsymbol, CAsmDeclaration, SearchOpt, SearchOptFlags; +import dmd.ast.dtemplate /*: TemplateInstance, TemplateParameter, Tuple*/; +import dmd.ast.enums; +import dmd.ast.expression /*: Expression*/; +import dmd.ast.func : FuncDeclaration; +import dmd.ast.init : Initializer, NeedInterpret; +import dmd.ast.mtype /*: Covariant, Type, Parameter, ParameterList*/; +import dmd.ast.statement : Statement, AsmStatement, GccAsmStatement; + import dmd.arraytypes; -import dmd.astenums; -import dmd.attrib; import dmd.common.outbuffer : OutBuffer; -import dmd.dclass : ClassDeclaration, BaseClass; -import dmd.declaration : TypeInfoDeclaration, VarDeclaration, TupleDeclaration; -import dmd.denum : EnumDeclaration; -import dmd.dmodule /*: Module*/; import dmd.dscope : Scope; -import dmd.dstruct /*: StructDeclaration*/; -import dmd.dsymbol : Dsymbol, ScopeDsymbol, CAsmDeclaration, SearchOpt, SearchOptFlags; -import dmd.dtemplate /*: TemplateInstance, TemplateParameter, Tuple*/; import dmd.errorsink : ErrorSink; -import dmd.expression /*: Expression*/; -import dmd.func : FuncDeclaration; import dmd.globals : dinteger_t, uinteger_t, JsonFieldFlags, CppStdRevision; import dmd.identifier : Identifier; -import dmd.init : Initializer, NeedInterpret; import dmd.location : Loc; -import dmd.mtype /*: Covariant, Type, Parameter, ParameterList*/; import dmd.rootobject : RootObject; import dmd.root.optional; import dmd.root.longdouble : real_t = longdouble; import dmd.root.complex; import dmd.semantic3; -import dmd.statement : Statement, AsmStatement, GccAsmStatement; // NB: At some point in the future, we can switch to shortened function syntax. extern (C++, "dmd"): @@ -327,42 +328,42 @@ FuncDeclaration findGetMembers(ScopeDsymbol dsym) */ inout(Expression) isExpression(inout RootObject o) { - return dmd.dtemplate.isExpression(o); + return dmd.ast.dtemplate.isExpression(o); } inout(Dsymbol) isDsymbol(inout RootObject o) { - return dmd.dtemplate.isDsymbol(o); + return dmd.ast.dtemplate.isDsymbol(o); } inout(Type) isType(inout RootObject o) { - return dmd.dtemplate.isType(o); + return dmd.ast.dtemplate.isType(o); } inout(Tuple) isTuple(inout RootObject o) { - return dmd.dtemplate.isTuple(o); + return dmd.ast.dtemplate.isTuple(o); } inout(Parameter) isParameter(inout RootObject o) { - return dmd.dtemplate.isParameter(o); + return dmd.ast.dtemplate.isParameter(o); } inout(TemplateParameter) isTemplateParameter(inout RootObject o) { - return dmd.dtemplate.isTemplateParameter(o); + return dmd.ast.dtemplate.isTemplateParameter(o); } bool isError(const RootObject o) { - return dmd.dtemplate.isError(o); + return dmd.ast.dtemplate.isError(o); } void printTemplateStats(bool listInstances, ErrorSink eSink) { - return dmd.dtemplate.printTemplateStats(listInstances, eSink); + return dmd.ast.dtemplate.printTemplateStats(listInstances, eSink); } void printInstantiationTrace(TemplateInstance ti) diff --git a/compiler/src/dmd/dcast.d b/compiler/src/dmd/dcast.d index 1d1de8dd5ee1..56f7a0a485b0 100644 --- a/compiler/src/dmd/dcast.d +++ b/compiler/src/dmd/dcast.d @@ -13,31 +13,33 @@ module dmd.dcast; import core.stdc.stdio; import core.stdc.string; -import dmd.aggregate; +import dmd.ast.aggregate; + +import dmd.ast.enums; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.denum; +import dmd.ast.dstruct; +import dmd.ast.dsymbol; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.init; +import dmd.ast.mtype; + import dmd.arrayop; import dmd.arraytypes; -import dmd.astenums; -import dmd.dclass; -import dmd.declaration; -import dmd.denum; import dmd.dinterpret; import dmd.dscope; -import dmd.dstruct; -import dmd.dsymbol; import dmd.dsymbolsem; import dmd.errors; -import dmd.expression; import dmd.expressionsem; -import dmd.func; import dmd.funcsem; import dmd.globals; import dmd.hdrgen; import dmd.location; import dmd.impcnvtab; import dmd.importc; -import dmd.init; import dmd.intrange; -import dmd.mtype; import dmd.opover; import dmd.optimize; import dmd.root.ctfloat; diff --git a/compiler/src/dmd/delegatize.d b/compiler/src/dmd/delegatize.d index ff44d5895d6f..4a96a864172b 100644 --- a/compiler/src/dmd/delegatize.d +++ b/compiler/src/dmd/delegatize.d @@ -14,20 +14,21 @@ module dmd.delegatize; import core.stdc.stdio; -import dmd.astenums; -import dmd.declaration; +import dmd.ast.enums; +import dmd.ast.expression; +import dmd.ast.declaration; +import dmd.ast.dsymbol; +import dmd.ast.func; +import dmd.ast.init; +import dmd.ast.mtype; +import dmd.ast.statement; + import dmd.dscope; -import dmd.dsymbol; import dmd.dsymbolsem : toParentP; -import dmd.expression; import dmd.expressionsem; -import dmd.func; import dmd.funcsem : checkNestedReference; -import dmd.init; import dmd.initsem; import dmd.location; -import dmd.mtype; -import dmd.statement; import dmd.tokens; import dmd.visitor; import dmd.visitor.postorder; diff --git a/compiler/src/dmd/deps.d b/compiler/src/dmd/deps.d index e70f5374c08c..363e1056c5a9 100644 --- a/compiler/src/dmd/deps.d +++ b/compiler/src/dmd/deps.d @@ -32,9 +32,9 @@ module dmd.deps; import core.stdc.stdio : printf; import core.stdc.string : strcmp; +import dmd.ast.dimport : Import; +import dmd.ast.dmodule : Module; import dmd.common.outbuffer; -import dmd.dimport : Import; -import dmd.dmodule : Module; import dmd.globals : Param, Output; import dmd.hdrgen : visibilityToBuffer; import dmd.id : Id; diff --git a/compiler/src/dmd/dfa/entry.d b/compiler/src/dmd/dfa/entry.d index d29b9631247d..5021b01daaf6 100644 --- a/compiler/src/dmd/dfa/entry.d +++ b/compiler/src/dmd/dfa/entry.d @@ -22,13 +22,16 @@ * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/dfa/entry.d */ module dmd.dfa.entry; + import dmd.common.outbuffer; -import dmd.func; -import dmd.astenums; + +import dmd.ast.func; +import dmd.ast.enums; +import dmd.ast.dsymbol; + import dmd.globals; import dmd.mangle; import dmd.dscope; -import dmd.dsymbol; import core.stdc.stdio; import core.stdc.string; diff --git a/compiler/src/dmd/dfa/fast/analysis.d b/compiler/src/dmd/dfa/fast/analysis.d index efb89cd948b8..67ffe646c356 100644 --- a/compiler/src/dmd/dfa/fast/analysis.d +++ b/compiler/src/dmd/dfa/fast/analysis.d @@ -23,12 +23,14 @@ module dmd.dfa.fast.analysis; import dmd.dfa.fast.structure; import dmd.dfa.fast.report; import dmd.dfa.utils; + +import dmd.ast.declaration; +import dmd.ast.enums; +import dmd.ast.func; +import dmd.ast.mtype; + import dmd.location; import dmd.identifier; -import dmd.func; -import dmd.declaration; -import dmd.astenums; -import dmd.mtype; import dmd.root.array; import dmd.common.outbuffer; import core.stdc.stdio; diff --git a/compiler/src/dmd/dfa/fast/expression.d b/compiler/src/dmd/dfa/fast/expression.d index 25b3d15453ad..97be04ffd070 100644 --- a/compiler/src/dmd/dfa/fast/expression.d +++ b/compiler/src/dmd/dfa/fast/expression.d @@ -21,21 +21,24 @@ import dmd.dfa.fast.report; import dmd.dfa.fast.statement; import dmd.dfa.fast.structure; import dmd.dfa.utils; + +import dmd.ast.declaration; +import dmd.ast.dsymbol; +import dmd.ast.dtemplate; +import dmd.ast.enums; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.mtype; + import dmd.common.outbuffer; import dmd.location; -import dmd.expression; import dmd.expressionsem; import dmd.typesem; -import dmd.astenums; import dmd.tokens; -import dmd.func; -import dmd.declaration; -import dmd.mtype; -import dmd.dtemplate; import dmd.arraytypes; import dmd.rootobject; import dmd.id; -import dmd.dsymbol; + import core.stdc.stdio; /*********************************************************** diff --git a/compiler/src/dmd/dfa/fast/report.d b/compiler/src/dmd/dfa/fast/report.d index 5257b1ed3399..1a09d54c6103 100644 --- a/compiler/src/dmd/dfa/fast/report.d +++ b/compiler/src/dmd/dfa/fast/report.d @@ -16,11 +16,14 @@ */ module dmd.dfa.fast.report; import dmd.dfa.fast.structure; + +import dmd.ast.declaration; +import dmd.ast.enums; +import dmd.ast.func; + import dmd.location; -import dmd.func; import dmd.errorsink; -import dmd.declaration; -import dmd.astenums; + import core.stdc.stdio; alias Fact = ParameterDFAInfo.Fact; diff --git a/compiler/src/dmd/dfa/fast/statement.d b/compiler/src/dmd/dfa/fast/statement.d index 9d0065a7ef0b..2eaece5b5c56 100644 --- a/compiler/src/dmd/dfa/fast/statement.d +++ b/compiler/src/dmd/dfa/fast/statement.d @@ -21,19 +21,21 @@ import dmd.dfa.fast.report; import dmd.dfa.fast.expression; import dmd.dfa.fast.structure; import dmd.dfa.utils; + +import dmd.ast.declaration; +import dmd.ast.enums; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.mtype; +import dmd.ast.statement; + import dmd.common.outbuffer; import dmd.visitor; import dmd.visitor.foreachvar; import dmd.location; -import dmd.func; import dmd.identifier; -import dmd.statement; -import dmd.expression; import dmd.typesem; import dmd.timetrace; -import dmd.astenums; -import dmd.mtype; -import dmd.declaration; import core.stdc.stdio; /*********************************************************** diff --git a/compiler/src/dmd/dfa/fast/structure.d b/compiler/src/dmd/dfa/fast/structure.d index dee9dd57a0eb..6afb1576ecf7 100644 --- a/compiler/src/dmd/dfa/fast/structure.d +++ b/compiler/src/dmd/dfa/fast/structure.d @@ -10,18 +10,20 @@ */ module dmd.dfa.fast.structure; import dmd.dfa.utils; + +import dmd.ast.declaration; +import dmd.ast.dsymbol; +import dmd.ast.enums; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.mtype; +import dmd.ast.statement; + import dmd.common.outbuffer; -import dmd.declaration; -import dmd.statement; -import dmd.func; -import dmd.mtype; import dmd.typesem; import dmd.identifier; import dmd.globals : dinteger_t; -import dmd.dsymbol; import dmd.location; -import dmd.expression; -import dmd.astenums; import dmd.id; import core.stdc.stdio; diff --git a/compiler/src/dmd/dfa/utils.d b/compiler/src/dmd/dfa/utils.d index 74da0a3e401b..6c5f5f2deff1 100644 --- a/compiler/src/dmd/dfa/utils.d +++ b/compiler/src/dmd/dfa/utils.d @@ -9,12 +9,14 @@ * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/dfa/utils.d */ module dmd.dfa.utils; + +import dmd.ast.enums; +import dmd.ast.mtype; +import dmd.ast.expression; + import dmd.tokens; -import dmd.astenums; -import dmd.mtype; import dmd.visitor; import dmd.identifier; -import dmd.expression; import dmd.typesem : isFloating; /*********************************************************** diff --git a/compiler/src/dmd/dinterpret.d b/compiler/src/dmd/dinterpret.d index 47c887769a42..84c67e848379 100644 --- a/compiler/src/dmd/dinterpret.d +++ b/compiler/src/dmd/dinterpret.d @@ -16,39 +16,41 @@ module dmd.dinterpret; import core.stdc.stdio; import core.stdc.stdlib; import core.stdc.string; + +import dmd.ast.attrib; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.dstruct; +import dmd.ast.dsymbol; +import dmd.ast.dtemplate; +import dmd.ast.enums; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.init; +import dmd.ast.mtype; +import dmd.ast.statement; + import dmd.arraytypes; -import dmd.astenums; -import dmd.attrib; import dmd.builtin; import dmd.constfold; import dmd.ctfeexpr; import dmd.dcast; -import dmd.dclass; -import dmd.declaration; -import dmd.dstruct; -import dmd.dsymbol; import dmd.dsymbolsem; -import dmd.dtemplate; import dmd.errors; -import dmd.expression; import dmd.expressionsem; -import dmd.func; import dmd.funcsem; import dmd.globals; import dmd.hdrgen; import dmd.id; import dmd.identifier; -import dmd.init; import dmd.initsem; import dmd.location; -import dmd.mtype; import dmd.root.rmem; import dmd.root.array; import dmd.root.ctfloat; import dmd.root.region; import dmd.rootobject; import dmd.root.utf; -import dmd.statement; import dmd.semantic2 : findFunc; import dmd.tokens; import dmd.typesem; @@ -5590,7 +5592,7 @@ public: return; // Dtors of Non-extern(D) classes use implicit chaining (like structs) - import dmd.aggregate : ClassKind; + import dmd.ast.aggregate : ClassKind; if (cd.classKind != ClassKind.d) break; } diff --git a/compiler/src/dmd/dmsc.d b/compiler/src/dmd/dmsc.d index e90f39dc18cb..2e0190d2c329 100644 --- a/compiler/src/dmd/dmsc.d +++ b/compiler/src/dmd/dmsc.d @@ -15,12 +15,13 @@ import core.stdc.stdio; import core.stdc.string; import core.stdc.stddef; +import dmd.ast.dclass; +import dmd.ast.dmodule; +import dmd.ast.mtype; + import dmd.globals; -import dmd.dclass; import dmd.dmdparams; -import dmd.dmodule; import dmd.errors : errorBackend; -import dmd.mtype; import dmd.target; import dmd.root.filename; diff --git a/compiler/src/dmd/doc.d b/compiler/src/dmd/doc.d index d5ab1051bcee..b96ac90377c7 100644 --- a/compiler/src/dmd/doc.d +++ b/compiler/src/dmd/doc.d @@ -18,32 +18,34 @@ import core.stdc.stdlib; import core.stdc.stdio; import core.stdc.string; import core.stdc.time; -import dmd.aggregate; + +import dmd.ast.aggregate; +import dmd.ast.enums; +import dmd.ast.attrib; +import dmd.ast.cond; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.denum; +import dmd.ast.dimport; +import dmd.ast.dmodule; +import dmd.ast.dstruct; +import dmd.ast.dsymbol; +import dmd.ast.dtemplate; +import dmd.ast.func; +import dmd.ast.mtype; + import dmd.arraytypes; -import dmd.astenums; -import dmd.attrib; -import dmd.cond; -import dmd.dclass; -import dmd.declaration; -import dmd.denum; -import dmd.dimport; import dmd.dmacro; -import dmd.dmodule; import dmd.dscope; -import dmd.dstruct; -import dmd.dsymbol; import dmd.dsymbolsem; import dmd.templatesem : computeOneMember; -import dmd.dtemplate; import dmd.errorsink; -import dmd.func; import dmd.globals; import dmd.hdrgen; import dmd.id; import dmd.identifier; import dmd.lexer; import dmd.location; -import dmd.mtype; import dmd.root.array; import dmd.common.outbuffer; import dmd.root.port; diff --git a/compiler/src/dmd/dscope.d b/compiler/src/dmd/dscope.d index 9a7f362b8c7a..254d08149507 100644 --- a/compiler/src/dmd/dscope.d +++ b/compiler/src/dmd/dscope.d @@ -15,23 +15,26 @@ module dmd.dscope; import core.stdc.stdio; import core.stdc.string; -import dmd.aggregate; -import dmd.astenums; -import dmd.attrib; + +import dmd.ast.aggregate; +import dmd.ast.enums; +import dmd.ast.attrib; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.dmodule; +import dmd.ast.dstruct; +import dmd.ast.dsymbol; +import dmd.ast.dtemplate; +import dmd.ast.func; +import dmd.ast.statement; + import dmd.ctorflow; -import dmd.dclass; -import dmd.declaration; -import dmd.dmodule; -import dmd.dstruct; -import dmd.dsymbol; -import dmd.dtemplate; import dmd.errorsink; -import dmd.func; import dmd.globals : FeatureState, Param; import dmd.identifier; import dmd.location : Loc; import dmd.root.rmem; -import dmd.statement; + //version=LOGSEARCH; diff --git a/compiler/src/dmd/dsymbolsem.d b/compiler/src/dmd/dsymbolsem.d index d9a9df6d05c0..10c2211e71b9 100644 --- a/compiler/src/dmd/dsymbolsem.d +++ b/compiler/src/dmd/dsymbolsem.d @@ -16,48 +16,51 @@ import core.stdc.stdio; import core.stdc.string; import core.stdc.stdlib; -import dmd.aggregate; -import dmd.aliasthis; +import dmd.ast.aggregate; +import dmd.ast.aliasthis; +import dmd.ast.codegen; +import dmd.ast.enums; +import dmd.ast.attrib; import dmd.arraytypes; -import dmd.astcodegen; -import dmd.astenums; -import dmd.attrib; import dmd.attribsem; +import dmd.ast.cond; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.denum; +import dmd.ast.dimport; +import dmd.ast.dmodule; +import dmd.ast.dstruct; +import dmd.ast.dsymbol; +import dmd.ast.dtemplate; +import dmd.ast.dversion; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.init; +import dmd.ast.mtype; +import dmd.ast.nspace; +import dmd.ast.staticassert; +import dmd.ast.statement; + import dmd.clone; -import dmd.cond; import dmd.timetrace; import dmd.dcast; -import dmd.dclass; -import dmd.declaration; -import dmd.denum; import dmd.deps; -import dmd.dimport; import dmd.dinterpret; -import dmd.dmodule; import dmd.dscope; -import dmd.dstruct; -import dmd.dsymbol; -import dmd.dtemplate; -import dmd.dversion; import dmd.enumsem; import dmd.errors; import dmd.errorsink; -import dmd.expression; import dmd.expressionsem; -import dmd.func; import dmd.funcsem; import dmd.globals; import dmd.id; import dmd.identifier; import dmd.importc; -import dmd.init; import dmd.initsem; import dmd.hdrgen; import dmd.lexer; import dmd.location; -import dmd.mtype; import dmd.mustuse; -import dmd.nspace; import dmd.objc; import dmd.optimize; import dmd.parse; @@ -71,9 +74,7 @@ import dmd.safe; import dmd.semantic2; import dmd.semantic3; import dmd.sideeffect; -import dmd.staticassert; import dmd.tokens; -import dmd.statement; import dmd.statementsem : ready; import dmd.target; import dmd.targetcompiler; @@ -162,7 +163,7 @@ private void fixupInvariantIdent(InvariantDeclaration invd, size_t offset) */ const(char)* search_correct_C(Identifier ident) { - import dmd.astenums : Twchar; + import dmd.ast.enums : Twchar; TOK tok; if (ident == Id.NULL) tok = TOK.null_; @@ -1898,7 +1899,7 @@ Expression resolveAliasThis(Scope* sc, Expression e, bool gag = false, bool find e = null; } - import dmd.dclass : ClassDeclaration; + import dmd.ast.dclass : ClassDeclaration; auto cd = ad.isClassDeclaration(); if ((!e || !ad.aliasthis) && cd && cd.baseClass && cd.baseClass != ClassDeclaration.object) { @@ -4682,7 +4683,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor visitStaticCDtorDeclaration(scd, false); foreachUda(scd, sc, (Expression e) { - import dmd.attrib : isEnumAttribute; + import dmd.ast.attrib : isEnumAttribute; if (!isEnumAttribute(e, Id.udaStandalone)) return 0; @@ -9732,7 +9733,7 @@ bool hasStaticCtorOrDtor(Dsymbol d) private extern(C++) class HasStaticCtorOrDtor : Visitor { - import dmd.mtype : Type; + import dmd.ast.mtype : Type; alias visit = Visitor.visit; bool result; @@ -10369,7 +10370,7 @@ bool hasPointers(Dsymbol d) private extern(C++) class HasPointersVisitor : Visitor { - import dmd.mtype : Type; + import dmd.ast.mtype : Type; alias visit = Visitor.visit; bool result; @@ -10423,8 +10424,8 @@ int _foreach(Scope* sc, Dsymbols* members, scope ForeachDg dg, size_t* pn = null int result = 0; foreach (size_t i; 0 .. members.length) { - import dmd.attrib : AttribDeclaration; - import dmd.dtemplate : TemplateMixin; + import dmd.ast.attrib : AttribDeclaration; + import dmd.ast.dtemplate : TemplateMixin; Dsymbol s = (*members)[i]; if (AttribDeclaration a = s.isAttribDeclaration()) diff --git a/compiler/src/dmd/dtoh.d b/compiler/src/dmd/dtoh.d index 4d854c72ebfe..102cabb761ea 100644 --- a/compiler/src/dmd/dtoh.d +++ b/compiler/src/dmd/dtoh.d @@ -15,8 +15,8 @@ import core.stdc.stdio; import core.stdc.string; import core.stdc.ctype; -import dmd.astcodegen; -import dmd.astenums; +import dmd.ast.codegen; +import dmd.ast.enums; import dmd.arraytypes; import dmd.dsymbolsem; import dmd.templatesem : computeOneMember; @@ -2914,7 +2914,7 @@ public: */ private bool shouldEmit(AST.Dsymbol sym) { - import dmd.aggregate : ClassKind; + import dmd.ast.aggregate : ClassKind; debug (Debug_DtoH) { printf("[shouldEmitAndMarkVisited enter] %s\n", sym.toPrettyChars()); @@ -2989,7 +2989,7 @@ public: } else if (auto ad = sym.isAggregateDeclaration()) { - import dmd.aggregate : ClassKind; + import dmd.ast.aggregate : ClassKind; res = ad.classKind == ClassKind.cpp; } } diff --git a/compiler/src/dmd/enumsem.d b/compiler/src/dmd/enumsem.d index 1710172f54e0..93f1cd264d0e 100644 --- a/compiler/src/dmd/enumsem.d +++ b/compiler/src/dmd/enumsem.d @@ -14,48 +14,52 @@ module dmd.enumsem; import core.stdc.stdio; import core.stdc.string; -import dmd.aggregate; -import dmd.aliasthis; +import dmd.ast.aggregate; +import dmd.ast.aliasthis; +import dmd.ast.codegen; +import dmd.ast.enums; +import dmd.ast.attrib; +import dmd.ast.cond; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.denum; +import dmd.ast.dimport; +import dmd.ast.dmodule; +import dmd.ast.dstruct; +import dmd.ast.dsymbol; +import dmd.ast.dtemplate; +import dmd.ast.dversion; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.init; +import dmd.ast.mtype; +import dmd.ast.nspace; +import dmd.ast.staticassert; +import dmd.ast.statement; + import dmd.arraytypes; -import dmd.astcodegen; -import dmd.astenums; -import dmd.attrib; import dmd.blockexit; import dmd.clone; -import dmd.cond; import dmd.compiler; import dmd.dcast; -import dmd.dclass; -import dmd.declaration; -import dmd.denum; -import dmd.dimport; import dmd.dinterpret; -import dmd.dmodule; import dmd.dscope; -import dmd.dstruct; -import dmd.dsymbol; import dmd.dsymbolsem; -import dmd.dtemplate; -import dmd.dversion; import dmd.errors; import dmd.escape; -import dmd.expression; import dmd.expressionsem; -import dmd.func; import dmd.funcsem; import dmd.globals; import dmd.id; import dmd.identifier; import dmd.importc; -import dmd.init; import dmd.initsem; import dmd.intrange; import dmd.hdrgen; import dmd.location; -import dmd.mtype; import dmd.mustuse; import dmd.nogc; -import dmd.nspace; + import dmd.objc; import dmd.opover; import dmd.optimize; @@ -70,10 +74,8 @@ import dmd.semantic2; import dmd.semantic3; import dmd.sideeffect; import dmd.statementsem; -import dmd.staticassert; import dmd.tokens; import dmd.utils; -import dmd.statement; import dmd.target; import dmd.templateparamsem; import dmd.typesem; diff --git a/compiler/src/dmd/escape.d b/compiler/src/dmd/escape.d index d307ded08b4d..4f7a793101d6 100644 --- a/compiler/src/dmd/escape.d +++ b/compiler/src/dmd/escape.d @@ -17,23 +17,25 @@ import core.stdc.string; import dmd.root.rmem; -import dmd.aggregate; -import dmd.astenums; -import dmd.declaration; +import dmd.ast.aggregate; +import dmd.ast.expression; +import dmd.ast.declaration; +import dmd.ast.dsymbol; +import dmd.ast.enums; +import dmd.ast.func; +import dmd.ast.init; +import dmd.ast.mtype; +import dmd.ast.print; + import dmd.dscope; -import dmd.dsymbol; import dmd.errors; -import dmd.expression; + import dmd.expressionsem; -import dmd.func; import dmd.funcsem; import dmd.globals : FeatureState; import dmd.id; import dmd.identifier; -import dmd.init; import dmd.location; -import dmd.mtype; -import dmd.printast; import dmd.rootobject; import dmd.safe; import dmd.tokens; diff --git a/compiler/src/dmd/expressionsem.d b/compiler/src/dmd/expressionsem.d index 3bf47b420f4c..b142e55485c4 100644 --- a/compiler/src/dmd/expressionsem.d +++ b/compiler/src/dmd/expressionsem.d @@ -15,41 +15,46 @@ module dmd.expressionsem; import core.stdc.stdio; +import dmd.ast.aggregate; +import dmd.ast.aliasthis; +import dmd.ast.attrib; +import dmd.ast.codegen; +import dmd.ast.cond; +import dmd.ast.declaration; +import dmd.ast.dclass; +import dmd.ast.denum; +import dmd.ast.dimport; +import dmd.ast.dmodule; +import dmd.ast.dstruct; +import dmd.ast.dtemplate; +import dmd.ast.dsymbol; +import dmd.ast.enums; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.init; +import dmd.ast.mtype; +import dmd.ast.nspace; +import dmd.ast.print; + import dmd.access; -import dmd.aggregate; -import dmd.aliasthis; import dmd.arrayop; import dmd.arraytypes; -import dmd.attrib; -import dmd.astcodegen; -import dmd.astenums; import dmd.canthrow; import dmd.chkformat; -import dmd.cond; import dmd.ctorflow; import dmd.ctfeexpr : isCtfeReferenceValid; import dmd.dscope; -import dmd.dsymbol; import dmd.dsymbolsem; import dmd.templatesem : computeOneMember; -import dmd.declaration; -import dmd.dclass; import dmd.dcast; import dmd.delegatize; -import dmd.denum; import dmd.deps; -import dmd.dimport; import dmd.dinterpret; -import dmd.dmodule; -import dmd.dstruct; -import dmd.dtemplate; import dmd.errors; import dmd.errorsink; import dmd.enumsem; import dmd.escape; -import dmd.expression; import dmd.file_manager; -import dmd.func; import dmd.funcsem; import dmd.globals; import dmd.hdrgen; @@ -57,21 +62,17 @@ import dmd.id; import dmd.identifier; import dmd.imphint; import dmd.importc; -import dmd.init; import dmd.initsem; import dmd.inline; import dmd.intrange; import dmd.location; import dmd.mangle; -import dmd.mtype; import dmd.mustuse; -import dmd.nspace; import dmd.nogc; import dmd.objc; import dmd.opover; import dmd.optimize; import dmd.parse; -import dmd.printast; import dmd.root.array; import dmd.root.complex; import dmd.root.ctfloat; @@ -3477,7 +3478,7 @@ private bool checkSafety(FuncDeclaration f, ref Loc loc, Scope* sc, Expressions* } else if (!sc.func.safetyViolation) { - import dmd.func : AttributeViolation; + import dmd.ast.func : AttributeViolation; sc.func.safetyViolation = new AttributeViolation(loc, f); } } @@ -19183,7 +19184,7 @@ bool fill(StructDeclaration sd, Loc loc, ref Expressions elements, bool ctorinit */ void lowerNonArrayAggregate(StaticForeach sfe, Scope* sc) { - import dmd.statement; + import dmd.ast.statement; auto nvars = sfe.aggrfe ? sfe.aggrfe.parameters.length : 1; auto aloc = sfe.aggrfe ? sfe.aggrfe.aggr.loc : sfe.rangefe.lwr.loc; @@ -19551,7 +19552,7 @@ private extern(C++) class IncludeVisitor : Visitor { return; } - import dmd.staticcond; + import dmd.ast.staticcond; bool errors; bool local_result = evalStaticCondition(sc, sic.exp, sic.exp, errors); diff --git a/compiler/src/dmd/frontend.d b/compiler/src/dmd/frontend.d index 29804e6c5058..0baf841b9ea1 100644 --- a/compiler/src/dmd/frontend.d +++ b/compiler/src/dmd/frontend.d @@ -10,9 +10,9 @@ */ module dmd.frontend; -import dmd.astcodegen : ASTCodegen; -import dmd.astenums : CHECKENABLE; -import dmd.dmodule : Module; +import dmd.ast.codegen : ASTCodegen; +import dmd.ast.enums : CHECKENABLE; +import dmd.ast.dmodule : Module; import dmd.globals : DiagnosticReporting; import dmd.errors; import dmd.location; @@ -114,15 +114,15 @@ void initDMD( version (CRuntime_Microsoft) import dmd.root.longdouble : initFPU; - import dmd.astenums : CHECKENABLE; - import dmd.cond : VersionCondition; - import dmd.dmodule : Module; + import dmd.ast.enums : CHECKENABLE; + import dmd.ast.cond : VersionCondition; + import dmd.ast.dmodule : Module; + import dmd.ast.expression : Expression; + import dmd.ast.mtype : Type; import dmd.escape : EscapeState; - import dmd.expression : Expression; import dmd.globals : global; import dmd.id : Id; import dmd.identifier : Identifier; - import dmd.mtype : Type; import dmd.objc : Objc; import dmd.target : target, defaultTargetOS, addDefaultVersionIdentifiers; import dmd.typesem : Type_init; @@ -173,14 +173,14 @@ application. */ void deinitializeDMD() { - import dmd.dmodule : Module; - import dmd.dsymbol : Dsymbol; + import dmd.ast.dmodule : Module; + import dmd.ast.dsymbol : Dsymbol; + import dmd.ast.expression : Expression; + import dmd.ast.func : FuncDeclaration; + import dmd.ast.mtype : Type; import dmd.escape : EscapeState; - import dmd.expression : Expression; - import dmd.func : FuncDeclaration; import dmd.globals : global; import dmd.id : Id; - import dmd.mtype : Type; import dmd.objc : Objc; import dmd.target : target; import dmd.dfa.fast.structure : DFAAllocator; diff --git a/compiler/src/dmd/funcsem.d b/compiler/src/dmd/funcsem.d index 76c6ac9ff917..521ec647bc7b 100644 --- a/compiler/src/dmd/funcsem.d +++ b/compiler/src/dmd/funcsem.d @@ -16,34 +16,36 @@ module dmd.funcsem; import core.stdc.stdio; import core.stdc.string; -import dmd.aggregate; +import dmd.ast.aggregate; +import dmd.ast.enums; +import dmd.ast.attrib; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.dmodule; +import dmd.ast.dstruct; +import dmd.ast.dsymbol; +import dmd.ast.dtemplate; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.init; +import dmd.ast.mtype; +import dmd.ast.statement; + import dmd.arraytypes; -import dmd.astenums; -import dmd.attrib; import dmd.blockexit; import dmd.dcast; -import dmd.dclass; -import dmd.declaration; import dmd.delegatize; import dmd.dinterpret; -import dmd.dmodule; import dmd.dscope; -import dmd.dstruct; -import dmd.dsymbol; import dmd.dsymbolsem; -import dmd.dtemplate; import dmd.errors; import dmd.escape; -import dmd.expression; -import dmd.func; import dmd.globals; import dmd.hdrgen; import dmd.id; import dmd.identifier; import dmd.importc; -import dmd.init; import dmd.location; -import dmd.mtype; import dmd.mustuse; import dmd.objc; import dmd.opover; @@ -57,7 +59,6 @@ import dmd.root.stringtable; import dmd.safe; import dmd.semantic2; import dmd.semantic3; -import dmd.statement; import dmd.statementsem; import dmd.target; import dmd.targetcompiler; @@ -2323,7 +2324,7 @@ private void printCandidates(Decl)(Loc loc, Decl declaration, bool showDeprecate } else if (auto td = s.isTemplateDeclaration()) { - import dmd.staticcond; + import dmd.ast.staticcond; if (!print) return true; diff --git a/compiler/src/dmd/globals.d b/compiler/src/dmd/globals.d index 0c4f9eb5417c..66a1e6038204 100644 --- a/compiler/src/dmd/globals.d +++ b/compiler/src/dmd/globals.d @@ -15,7 +15,7 @@ import core.stdc.stdio; import core.stdc.stdint; import core.stdc.string; -import dmd.astenums; +import dmd.ast.enums; import dmd.root.array; import dmd.root.file; import dmd.root.filename; diff --git a/compiler/src/dmd/glue/e2ir.d b/compiler/src/dmd/glue/e2ir.d index 44798a7bcdb6..b9bcbdc203e9 100644 --- a/compiler/src/dmd/glue/e2ir.d +++ b/compiler/src/dmd/glue/e2ir.d @@ -30,35 +30,37 @@ import dmd.glue.toctype; import dmd.glue.toir; import dmd.glue.toobj; -import dmd.aggregate; +import dmd.ast.aggregate; + +import dmd.ast.attrib; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.denum; +import dmd.ast.dmodule; +import dmd.ast.dstruct; +import dmd.ast.dsymbol; +import dmd.ast.dtemplate; +import dmd.ast.enums; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.init; +import dmd.ast.mtype; +import dmd.ast.print; +import dmd.ast.statement; + import dmd.arraytypes; -import dmd.astenums; -import dmd.attrib; import dmd.canthrow; import dmd.ctfeexpr; import dmd.dcast : implicitConvTo; -import dmd.dclass; -import dmd.declaration; -import dmd.denum; import dmd.dmdparams; -import dmd.dmodule; import dmd.dscope; -import dmd.dstruct; -import dmd.dsymbol; import dmd.dsymbolsem : include, _isZeroInit, toAlias, isPOD; -import dmd.dtemplate; -import dmd.expression; import dmd.expressionsem; import dmd.funcsem : isVirtual; -import dmd.func; import dmd.hdrgen; import dmd.id; -import dmd.init; import dmd.location; -import dmd.mtype; -import dmd.printast; import dmd.sideeffect; -import dmd.statement; import dmd.target; import dmd.templatesem; import dmd.tokens; diff --git a/compiler/src/dmd/glue/objc.d b/compiler/src/dmd/glue/objc.d index 3a710a723bdf..22da9c9dfef4 100644 --- a/compiler/src/dmd/glue/objc.d +++ b/compiler/src/dmd/glue/objc.d @@ -17,17 +17,18 @@ import core.stdc.string; import dmd.glue; -import dmd.aggregate; +import dmd.ast.aggregate; +import dmd.ast.enums; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.dmodule; +import dmd.ast.dsymbol; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.mtype; + import dmd.arraytypes; -import dmd.astenums; -import dmd.dclass; -import dmd.declaration; -import dmd.dmodule; -import dmd.dsymbol; -import dmd.expression; -import dmd.func; import dmd.identifier; -import dmd.mtype; import dmd.objc; import dmd.target; diff --git a/compiler/src/dmd/glue/package.d b/compiler/src/dmd/glue/package.d index b53eed25f03b..1c2b133fc867 100644 --- a/compiler/src/dmd/glue/package.d +++ b/compiler/src/dmd/glue/package.d @@ -52,30 +52,32 @@ import dmd.backend.rtlsym; import dmd.backend.symtab; import dmd.backend.ty; import dmd.backend.type; -import dmd.aggregate; + +import dmd.ast.aggregate; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.dmodule; +import dmd.ast.dstruct; +import dmd.ast.dsymbol; +import dmd.ast.dtemplate; +import dmd.ast.enums; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.mtype; +import dmd.ast.statement; + import dmd.arraytypes; -import dmd.astenums; import dmd.blockexit; -import dmd.dclass; -import dmd.declaration; import dmd.dmdparams; -import dmd.dmodule; -import dmd.dstruct; -import dmd.dsymbol; import dmd.dsymbolsem : getLocalClasses, getType, findGetMembers; import dmd.expressionsem : toInteger; -import dmd.dtemplate; import dmd.errors; -import dmd.expression; -import dmd.func; import dmd.funcsem : onlyOneMain, isVirtual; import dmd.globals; import dmd.identifier; import dmd.id; import dmd.lib; import dmd.location; -import dmd.mtype; -import dmd.statement; import dmd.target; import dmd.typesem; import dmd.funcsem : genCfunc; diff --git a/compiler/src/dmd/glue/s2ir.d b/compiler/src/dmd/glue/s2ir.d index 048d0840ab39..8cec195b88ae 100644 --- a/compiler/src/dmd/glue/s2ir.d +++ b/compiler/src/dmd/glue/s2ir.d @@ -27,24 +27,25 @@ import dmd.glue.toctype; import dmd.glue.tocsym; import dmd.glue.toir; -import dmd.aggregate; -import dmd.astenums; -import dmd.dclass; -import dmd.declaration; -import dmd.denum; +import dmd.ast.aggregate; +import dmd.ast.enums; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.denum; +import dmd.ast.dmodule; +import dmd.ast.dsymbol; +import dmd.ast.dstruct; +import dmd.ast.dtemplate; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.init; +import dmd.ast.mtype; +import dmd.ast.statement; + import dmd.dmdparams; -import dmd.dmodule; -import dmd.dsymbol; -import dmd.dstruct; -import dmd.dtemplate; -import dmd.expression; import dmd.expressionsem : getDsymbol, toInteger; -import dmd.func; import dmd.id; -import dmd.init; import dmd.location; -import dmd.mtype; -import dmd.statement; import dmd.stmtstate; import dmd.target; import dmd.tokens; diff --git a/compiler/src/dmd/glue/tocsym.d b/compiler/src/dmd/glue/tocsym.d index 584e55cfb5b0..afcb8058992e 100644 --- a/compiler/src/dmd/glue/tocsym.d +++ b/compiler/src/dmd/glue/tocsym.d @@ -23,31 +23,32 @@ import dmd.glue.toctype; import dmd.glue.todt; import dmd.glue.toir; -import dmd.aggregate; +import dmd.ast.aggregate; +import dmd.ast.declaration; +import dmd.ast.dclass; +import dmd.ast.denum; +import dmd.ast.enums; +import dmd.ast.dmodule; +import dmd.ast.dstruct; +import dmd.ast.dsymbol; +import dmd.ast.dtemplate; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.init; +import dmd.ast.mtype; + import dmd.arraytypes; -import dmd.astenums; import dmd.ctfeexpr; -import dmd.declaration; -import dmd.dclass; -import dmd.denum; import dmd.dmdparams; -import dmd.dmodule; -import dmd.dstruct; -import dmd.dsymbol; import dmd.dsymbolsem : vtblSymbol; -import dmd.dtemplate; import dmd.errors; -import dmd.expression; -import dmd.func; import dmd.funcsem; import dmd.globals; import dmd.glue; import dmd.identifier; import dmd.id; -import dmd.init; import dmd.location; import dmd.mangle; -import dmd.mtype; import dmd.safe : isSafe; import dmd.target; import dmd.tokens; diff --git a/compiler/src/dmd/glue/toctype.d b/compiler/src/dmd/glue/toctype.d index 0a432ec5cb29..1d64c9047b68 100644 --- a/compiler/src/dmd/glue/toctype.d +++ b/compiler/src/dmd/glue/toctype.d @@ -23,15 +23,16 @@ import dmd.root.rmem; import dmd.glue; import dmd.glue.tocvdebug; -import dmd.astenums; -import dmd.declaration; -import dmd.denum; +import dmd.ast.enums; +import dmd.ast.declaration; +import dmd.ast.denum; +import dmd.ast.dstruct; +import dmd.ast.mtype; + import dmd.dmdparams; -import dmd.dstruct; import dmd.dsymbolsem : isPOD; import dmd.expressionsem : toInteger; import dmd.id; -import dmd.mtype; import dmd.typesem; package(dmd.glue): diff --git a/compiler/src/dmd/glue/tocvdebug.d b/compiler/src/dmd/glue/tocvdebug.d index 2d98372cbe01..087dc244b0b6 100644 --- a/compiler/src/dmd/glue/tocvdebug.d +++ b/compiler/src/dmd/glue/tocvdebug.d @@ -22,23 +22,25 @@ import dmd.root.rmem; import dmd.glue.toctype; -import dmd.aggregate; -import dmd.astenums; -import dmd.dclass; -import dmd.declaration; -import dmd.denum; -import dmd.dmodule; -import dmd.dsymbol; +import dmd.ast.aggregate; +import dmd.ast.enums; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.denum; +import dmd.ast.dmodule; +import dmd.ast.dsymbol; +import dmd.ast.dstruct; +import dmd.ast.dtemplate; +import dmd.ast.func; +import dmd.ast.mtype; + import dmd.dsymbolsem : apply; import dmd.expressionsem : toInteger; import dmd.typesem; -import dmd.dstruct; -import dmd.dtemplate; -import dmd.func; import dmd.funcsem; import dmd.globals; import dmd.id; -import dmd.mtype; + import dmd.target; import dmd.visitor; diff --git a/compiler/src/dmd/glue/todt.d b/compiler/src/dmd/glue/todt.d index b44620bdf78c..dcb098925496 100644 --- a/compiler/src/dmd/glue/todt.d +++ b/compiler/src/dmd/glue/todt.d @@ -23,27 +23,29 @@ import dmd.glue; import dmd.glue.tocsym; import dmd.glue.toobj; -import dmd.aggregate; +import dmd.ast.aggregate; +import dmd.ast.enums; +import dmd.ast.dclass; +import dmd.ast.denum; +import dmd.ast.declaration; +import dmd.ast.dstruct; +import dmd.ast.dsymbol; +import dmd.ast.dtemplate; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.init; +import dmd.ast.mtype; + import dmd.arraytypes; -import dmd.astenums; import dmd.backend.type; import dmd.ctfeexpr; -import dmd.declaration; + import dmd.dcast : implicitConvTo; -import dmd.dclass; -import dmd.denum; -import dmd.dstruct; -import dmd.dsymbol; -import dmd.dtemplate; import dmd.errors; -import dmd.expression; import dmd.id; import dmd.expressionsem : toBool, toInteger; -import dmd.func; import dmd.globals; -import dmd.init; import dmd.location; -import dmd.mtype; import dmd.optimize; import dmd.semantic3 : search_toString; import dmd.target; diff --git a/compiler/src/dmd/glue/toir.d b/compiler/src/dmd/glue/toir.d index d393d248e02d..5d08996779c1 100644 --- a/compiler/src/dmd/glue/toir.d +++ b/compiler/src/dmd/glue/toir.d @@ -38,28 +38,29 @@ import dmd.backend.symtab : SYMIDX; import dmd.backend.ty; import dmd.backend.type; -import dmd.aggregate; +import dmd.ast.aggregate; +import dmd.ast.enums; +import dmd.ast.attrib; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.dmodule; +import dmd.ast.dstruct; +import dmd.ast.dsymbol; +import dmd.ast.dtemplate; +import dmd.ast.func; +import dmd.ast.mtype; + import dmd.arraytypes; -import dmd.astenums; -import dmd.attrib; -import dmd.dclass; -import dmd.declaration; import dmd.dmdparams; -import dmd.dmodule; -import dmd.dstruct; -import dmd.dsymbol; import dmd.dsymbolsem : followInstantiationContext, toParentP; import dmd.expressionsem : toInteger; -import dmd.dtemplate; import dmd.errors; import dmd.errorsink; -import dmd.func; import dmd.funcsem; import dmd.globals : Param; import dmd.identifier; import dmd.id; import dmd.location; -import dmd.mtype; import dmd.semantic3 : checkClosure; import dmd.typesem; import dmd.target; diff --git a/compiler/src/dmd/glue/toobj.d b/compiler/src/dmd/glue/toobj.d index 76a2f3cbb12d..d0bffdf3aff2 100644 --- a/compiler/src/dmd/glue/toobj.d +++ b/compiler/src/dmd/glue/toobj.d @@ -29,38 +29,40 @@ import dmd.glue.toctype; import dmd.glue.tocvdebug; import dmd.glue.todt; -import dmd.aggregate; +import dmd.ast.aggregate; + +import dmd.ast.attrib; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.denum; +import dmd.ast.dmodule; +import dmd.ast.dstruct; +import dmd.ast.dsymbol; +import dmd.ast.dtemplate; +import dmd.ast.enums; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.init; +import dmd.ast.mtype; +import dmd.ast.nspace; +import dmd.ast.statement; +import dmd.ast.staticassert; + import dmd.arraytypes; -import dmd.astenums; -import dmd.attrib; import dmd.dcast; -import dmd.dclass; -import dmd.declaration; -import dmd.denum; import dmd.dmdparams; -import dmd.dmodule; import dmd.dscope; -import dmd.dstruct; -import dmd.dsymbol; import dmd.dsymbolsem : hasPointers, hasStaticCtorOrDtor, include, isFuncHidden, isAbstract, toAlias, fillVtbl; -import dmd.dtemplate; import dmd.errors; import dmd.errorsink; -import dmd.expression; import dmd.expressionsem : getDsymbol, toInteger; import dmd.typesem; -import dmd.func; import dmd.funcsem; import dmd.globals; import dmd.hdrgen; import dmd.id; -import dmd.init; import dmd.location; -import dmd.mtype; -import dmd.nspace; -import dmd.statement; -import dmd.staticassert; import dmd.target; import dmd.templatesem; import dmd.tokens; diff --git a/compiler/src/dmd/hdrgen.d b/compiler/src/dmd/hdrgen.d index d4c6d8951500..3dc088494f58 100644 --- a/compiler/src/dmd/hdrgen.d +++ b/compiler/src/dmd/hdrgen.d @@ -16,29 +16,34 @@ module dmd.hdrgen; import core.stdc.ctype; import core.stdc.stdio; import core.stdc.string; -import dmd.aggregate; -import dmd.aliasthis; + +import dmd.ast.aggregate; +import dmd.ast.aliasthis; +import dmd.ast.attrib; +import dmd.ast.cond; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.denum; +import dmd.ast.dimport; +import dmd.ast.dmodule; +import dmd.ast.dstruct; +import dmd.ast.dsymbol; +import dmd.ast.dtemplate; +import dmd.ast.dversion; +import dmd.ast.enums; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.init; +import dmd.ast.mtype; +import dmd.ast.nspace; +import dmd.ast.statement; +import dmd.ast.staticassert; + import dmd.arraytypes; -import dmd.astenums; -import dmd.attrib; -import dmd.cond; -import dmd.dclass; -import dmd.declaration; -import dmd.denum; -import dmd.dimport; -import dmd.dmodule; import dmd.doc; -import dmd.dstruct; -import dmd.dsymbol; -import dmd.dtemplate; -import dmd.dversion; -import dmd.expression; -import dmd.func; + import dmd.id; import dmd.identifier; -import dmd.init; -import dmd.mtype; -import dmd.nspace; import dmd.optimize; import dmd.parse; import dmd.root.complex; @@ -46,8 +51,6 @@ import dmd.root.ctfloat; import dmd.common.outbuffer; import dmd.rootobject; import dmd.root.string; -import dmd.statement; -import dmd.staticassert; import dmd.tokens; import dmd.visitor; diff --git a/compiler/src/dmd/iasm/dmdaarch64.d b/compiler/src/dmd/iasm/dmdaarch64.d index 275bfb2abdcb..c967daa2dcca 100644 --- a/compiler/src/dmd/iasm/dmdaarch64.d +++ b/compiler/src/dmd/iasm/dmdaarch64.d @@ -17,26 +17,27 @@ import core.stdc.stdarg; import core.stdc.stdlib; import core.stdc.string; -import dmd.astenums; -import dmd.astcodegen; -import dmd.declaration; -import dmd.denum; +import dmd.ast.enums; +import dmd.ast.codegen; +import dmd.ast.declaration; +import dmd.ast.denum; +import dmd.ast.dsymbol; +import dmd.ast.expression; +import dmd.ast.init; +import dmd.ast.mtype; +import dmd.ast.statement; + import dmd.dinterpret; import dmd.dmdparams; import dmd.dscope; -import dmd.dsymbol; import dmd.errors; -import dmd.expression; import dmd.expressionsem; import dmd.funcsem : checkNestedReference; import dmd.globals; import dmd.id; import dmd.identifier; -import dmd.init; import dmd.location; -import dmd.mtype; import dmd.parse; -import dmd.statement; import dmd.target; import dmd.tokens; import dmd.typesem : pointerTo, size, isIntegral; diff --git a/compiler/src/dmd/iasm/dmdx86.d b/compiler/src/dmd/iasm/dmdx86.d index 8a66981d7f7c..48d287fe9087 100644 --- a/compiler/src/dmd/iasm/dmdx86.d +++ b/compiler/src/dmd/iasm/dmdx86.d @@ -18,26 +18,27 @@ import core.stdc.stdarg; import core.stdc.stdlib; import core.stdc.string; -import dmd.astenums; -import dmd.declaration; -import dmd.denum; +import dmd.ast.enums; +import dmd.ast.declaration; +import dmd.ast.denum; +import dmd.ast.dsymbol; +import dmd.ast.expression; +import dmd.ast.init; +import dmd.ast.mtype; +import dmd.ast.statement; + import dmd.dinterpret; import dmd.dmdparams; import dmd.dscope; -import dmd.dsymbol; import dmd.dsymbolsem : toAlias, getType, search; import dmd.errors; -import dmd.expression; import dmd.expressionsem; import dmd.funcsem : checkNestedReference; import dmd.globals; import dmd.id; import dmd.identifier; -import dmd.init; import dmd.location; -import dmd.mtype; import dmd.optimize; -import dmd.statement; import dmd.target; import dmd.tokens; import dmd.typesem; diff --git a/compiler/src/dmd/iasm/gcc.d b/compiler/src/dmd/iasm/gcc.d index 2f5d7aaf9f25..b92f364665ae 100644 --- a/compiler/src/dmd/iasm/gcc.d +++ b/compiler/src/dmd/iasm/gcc.d @@ -13,13 +13,15 @@ module dmd.iasm.gcc; import core.stdc.string; +import dmd.ast.codegen; +import dmd.ast.dsymbol; +import dmd.ast.expression; +import dmd.ast.statement; + import dmd.arraytypes; -import dmd.astcodegen; import dmd.dscope; -import dmd.dsymbol; import dmd.errors; import dmd.errorsink; -import dmd.expression; import dmd.expressionsem; import dmd.identifier; import dmd.globals; @@ -28,7 +30,6 @@ import dmd.cparse; import dmd.parse; import dmd.target; import dmd.tokens; -import dmd.statement; import dmd.statementsem; import dmd.typesem; @@ -143,7 +144,7 @@ public void gccAsmSemantic(CAsmDeclaration ad, Scope* sc) ad.code.type = ad.code.type.nextOf().pointerTo(); // Asm definition always needs emitting into the root module. - import dmd.dmodule : Module; + import dmd.ast.dmodule : Module; if (sc._module && sc._module.isRoot()) return; if (Module m = Module.rootModule) @@ -189,7 +190,7 @@ Expression semanticAsmString(Scope* sc, Expression exp, const char *s) { import dmd.dcast : implicitCastTo; import dmd.dsymbolsem : resolveAliasThis; - import dmd.mtype : Type; + import dmd.ast.mtype : Type; import dmd.typesem : isAggregate; exp = expressionSemantic(exp, sc); @@ -554,7 +555,7 @@ GccAsmStatement parseGccAsm(Parser)(Parser p, GccAsmStatement s) unittest { - import dmd.mtype : TypeBasic; + import dmd.ast.mtype : TypeBasic; import dmd.typesem : merge; if (!global.errorSink) diff --git a/compiler/src/dmd/iasm/package.d b/compiler/src/dmd/iasm/package.d index a46e59f71f87..98d10aab5c57 100644 --- a/compiler/src/dmd/iasm/package.d +++ b/compiler/src/dmd/iasm/package.d @@ -15,14 +15,15 @@ module dmd.iasm; import core.stdc.stdio; +import dmd.ast.dsymbol; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.mtype; +import dmd.ast.statement; + import dmd.dscope; -import dmd.dsymbol; -import dmd.expression; -import dmd.func; -import dmd.mtype; import dmd.target; import dmd.tokens; -import dmd.statement; import dmd.statementsem; version (NoBackend) diff --git a/compiler/src/dmd/impcnvtab.d b/compiler/src/dmd/impcnvtab.d index 767b7b239588..d041d0d2d4ff 100644 --- a/compiler/src/dmd/impcnvtab.d +++ b/compiler/src/dmd/impcnvtab.d @@ -16,8 +16,8 @@ module dmd.impcnvtab; -import dmd.astenums; -import dmd.mtype; +import dmd.ast.enums; +import dmd.ast.mtype; pure @nogc nothrow @safe: diff --git a/compiler/src/dmd/importc.d b/compiler/src/dmd/importc.d index f47c637fe1e6..7d3ca672f9be 100644 --- a/compiler/src/dmd/importc.d +++ b/compiler/src/dmd/importc.d @@ -15,22 +15,23 @@ module dmd.importc; import core.stdc.stdio; -import dmd.astenums; +import dmd.ast.denum; +import dmd.ast.enums; +import dmd.ast.declaration; +import dmd.ast.dsymbol; +import dmd.ast.expression; +import dmd.ast.init; +import dmd.ast.mtype; + import dmd.dcast; -import dmd.denum; -import dmd.declaration; import dmd.dscope; -import dmd.dsymbol; import dmd.dsymbolsem; import dmd.dinterpret : ctfeInterpret; import dmd.errors; -import dmd.expression; import dmd.expressionsem; import dmd.identifier; import dmd.id : Id; -import dmd.init; import dmd.intrange : IntRange; -import dmd.mtype; import dmd.optimize : optimize; import dmd.rootobject : DYNCAST; import dmd.tokens; diff --git a/compiler/src/dmd/initsem.d b/compiler/src/dmd/initsem.d index b3cf9933a9df..7f28cd00ebc0 100644 --- a/compiler/src/dmd/initsem.d +++ b/compiler/src/dmd/initsem.d @@ -14,33 +14,34 @@ module dmd.initsem; import core.stdc.stdio; import core.checkedint; +import dmd.ast.enums; +import dmd.ast.declaration; +import dmd.ast.dstruct; +import dmd.ast.dsymbol; +import dmd.ast.dtemplate; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.init; +import dmd.ast.mtype; +import dmd.ast.statement; + import dmd.arraytypes; -import dmd.astenums; import dmd.dcast; -import dmd.declaration; import dmd.dinterpret; import dmd.dscope; -import dmd.dstruct; -import dmd.dsymbol; import dmd.dsymbolsem; -import dmd.dtemplate; import dmd.errors; -import dmd.expression; import dmd.expressionsem; -import dmd.func; import dmd.funcsem; import dmd.globals; import dmd.hdrgen; import dmd.id; import dmd.identifier; import dmd.importc; -import dmd.init; import dmd.location; -import dmd.mtype; import dmd.opover; import dmd.optimize; import dmd.safe : setUnsafe; -import dmd.statement; import dmd.target; import dmd.tokens; import dmd.typesem; diff --git a/compiler/src/dmd/inline.d b/compiler/src/dmd/inline.d index bbb60c982356..5804134b72b0 100644 --- a/compiler/src/dmd/inline.d +++ b/compiler/src/dmd/inline.d @@ -17,34 +17,36 @@ module dmd.inline; import core.stdc.stdio; import core.stdc.string; -import dmd.aggregate; +import dmd.ast.aggregate; + +import dmd.ast.enums; +import dmd.ast.attrib; +import dmd.ast.declaration; +import dmd.ast.dmodule; +import dmd.ast.dstruct; +import dmd.ast.dsymbol; +import dmd.ast.dtemplate; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.init; +import dmd.ast.mtype; +import dmd.ast.print; +import dmd.ast.statement; + import dmd.arraytypes; -import dmd.astenums; -import dmd.attrib; -import dmd.declaration; -import dmd.dmodule; import dmd.dscope; -import dmd.dstruct; -import dmd.dsymbol; import dmd.dsymbolsem; -import dmd.dtemplate; -import dmd.expression; import dmd.expressionsem : canElideCopy, semanticTypeInfo; import dmd.errors; import dmd.errorsink; -import dmd.func; import dmd.funcsem; import dmd.globals; import dmd.hdrgen; import dmd.id; import dmd.identifier; -import dmd.init; import dmd.initsem; import dmd.location; -import dmd.mtype; import dmd.opover; -import dmd.printast; -import dmd.statement; import dmd.tokens; import dmd.typesem; import dmd.visitor; diff --git a/compiler/src/dmd/inlinecost.d b/compiler/src/dmd/inlinecost.d index 95e3bd70ec27..0d7cdfa3ccb4 100644 --- a/compiler/src/dmd/inlinecost.d +++ b/compiler/src/dmd/inlinecost.d @@ -14,26 +14,28 @@ module dmd.inlinecost; import core.stdc.stdio; import core.stdc.string; -import dmd.aggregate; +import dmd.ast.aggregate; + +import dmd.ast.enums; +import dmd.ast.attrib; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.dmodule; +import dmd.ast.dstruct; +import dmd.ast.dsymbol; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.init; +import dmd.ast.mtype; +import dmd.ast.statement; + import dmd.arraytypes; -import dmd.astenums; -import dmd.attrib; -import dmd.dclass; -import dmd.declaration; -import dmd.dmodule; import dmd.dscope; -import dmd.dstruct; -import dmd.dsymbol; import dmd.dsymbolsem : toAlias; -import dmd.expression; -import dmd.func; import dmd.id; import dmd.identifier; -import dmd.init; -import dmd.mtype; import dmd.typesem; import dmd.opover; -import dmd.statement; import dmd.tokens; import dmd.visitor; import dmd.visitor.postorder; diff --git a/compiler/src/dmd/intrange.d b/compiler/src/dmd/intrange.d index cc69373d121d..54595ec046d1 100644 --- a/compiler/src/dmd/intrange.d +++ b/compiler/src/dmd/intrange.d @@ -13,8 +13,8 @@ module dmd.intrange; import core.stdc.stdio; -import dmd.astenums : Tdchar; -import dmd.mtype : Type; +import dmd.ast.enums : Tdchar; +import dmd.ast.mtype : Type; import dmd.globals : uinteger_t; private uinteger_t copySign(uinteger_t x, bool sign) @safe diff --git a/compiler/src/dmd/json.d b/compiler/src/dmd/json.d index e2c3cf056b99..015cda393e6d 100644 --- a/compiler/src/dmd/json.d +++ b/compiler/src/dmd/json.d @@ -13,29 +13,31 @@ module dmd.json; import core.stdc.stdio; import core.stdc.string; -import dmd.aggregate; + +import dmd.ast.aggregate; +import dmd.ast.attrib; +import dmd.ast.cond; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.denum; +import dmd.ast.dimport; +import dmd.ast.dmodule; +import dmd.ast.dsymbol; +import dmd.ast.dtemplate; +import dmd.ast.enums; +import dmd.ast.expression; +import dmd.ast.mtype; + import dmd.arraytypes; -import dmd.astenums; -import dmd.attrib; -import dmd.cond; -import dmd.dclass; -import dmd.declaration; -import dmd.denum; -import dmd.dimport; -import dmd.dmodule; -import dmd.dsymbol; import dmd.dsymbolsem : include; import dmd.templatesem : computeOneMember; -import dmd.dtemplate; import dmd.errors; -import dmd.expression; -import dmd.func; +import dmd.ast.func; import dmd.globals; import dmd.hdrgen; import dmd.id; import dmd.identifier; import dmd.location; -import dmd.mtype; import dmd.common.outbuffer; import dmd.rootobject; import dmd.root.string; diff --git a/compiler/src/dmd/lambdacomp.d b/compiler/src/dmd/lambdacomp.d index 5ee8cc86984d..08ca85eecbbc 100644 --- a/compiler/src/dmd/lambdacomp.d +++ b/compiler/src/dmd/lambdacomp.d @@ -18,23 +18,24 @@ module dmd.lambdacomp; import core.stdc.stdio; import core.stdc.string; -import dmd.astenums; -import dmd.declaration; -import dmd.denum; -import dmd.dsymbol; +import dmd.ast.enums; +import dmd.ast.declaration; +import dmd.ast.denum; +import dmd.ast.dsymbol; +import dmd.ast.dtemplate; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.mtype; +import dmd.ast.statement; + import dmd.dsymbolsem; -import dmd.dtemplate; -import dmd.expression; import dmd.expressionsem : getConstInitializer, toInteger; -import dmd.func; import dmd.hdrgen; import dmd.mangle; -import dmd.mtype; import dmd.common.outbuffer; import dmd.root.rmem; import dmd.root.stringtable; import dmd.dscope; -import dmd.statement; import dmd.tokens; import dmd.visitor; diff --git a/compiler/src/dmd/link.d b/compiler/src/dmd/link.d index e124b05c38d6..8f077b8e0d56 100644 --- a/compiler/src/dmd/link.d +++ b/compiler/src/dmd/link.d @@ -16,7 +16,7 @@ import core.stdc.stdio; import core.stdc.stdlib; import core.stdc.string; -import dmd.astenums; +import dmd.ast.enums; import dmd.compiler : includeImports; import dmd.dmdparams; import dmd.errors; diff --git a/compiler/src/dmd/main.d b/compiler/src/dmd/main.d index f67043e5747c..63d054264c33 100644 --- a/compiler/src/dmd/main.d +++ b/compiler/src/dmd/main.d @@ -23,11 +23,17 @@ import core.stdc.stdio; import core.stdc.stdlib; import core.stdc.string; +import dmd.ast.enums; +import dmd.ast.cond; +import dmd.ast.dtemplate; +import dmd.ast.dmodule; +import dmd.ast.dsymbol; +import dmd.ast.expression; +import dmd.ast.mtype; + import dmd.arraytypes : Modules, Strings; -import dmd.astenums; import dmd.common.outbuffer; import dmd.compiler; -import dmd.cond; import dmd.console; import dmd.cpreprocess; import dmd.deps; @@ -37,15 +43,11 @@ import dmd.dmdparams; import dmd.dsymbolsem; import dmd.errorsink; import dmd.typesem : Type_init; -import dmd.dtemplate; import dmd.dtoh; import dmd.glue : generateCodeAndWrite, ObjcGlue_initialize; -import dmd.dmodule; import dmd.dmsc : backend_init, backend_term; import dmd.doc; -import dmd.dsymbol; import dmd.errors; -import dmd.expression; import dmd.file_manager; import dmd.hdrgen; import dmd.globals; @@ -56,7 +58,6 @@ import dmd.inline; import dmd.link; import dmd.location; import dmd.mars; -import dmd.mtype; import dmd.objc; import dmd.root.env; import dmd.root.file; diff --git a/compiler/src/dmd/mangle/basic.d b/compiler/src/dmd/mangle/basic.d index f50faaa9b5a3..f30f22bc12b2 100644 --- a/compiler/src/dmd/mangle/basic.d +++ b/compiler/src/dmd/mangle/basic.d @@ -9,7 +9,7 @@ */ module dmd.mangle.basic; -import dmd.astenums; +import dmd.ast.enums; import dmd.common.outbuffer : OutBuffer; /// Type mangling mapping for basic, derived and user defined types diff --git a/compiler/src/dmd/mangle/cpp.d b/compiler/src/dmd/mangle/cpp.d index c71c72d6f015..201cdfe78d1f 100644 --- a/compiler/src/dmd/mangle/cpp.d +++ b/compiler/src/dmd/mangle/cpp.d @@ -21,24 +21,25 @@ module dmd.mangle.cpp; import core.stdc.stdio; +import dmd.ast.attrib; +import dmd.ast.declaration; +import dmd.ast.dsymbol; +import dmd.ast.dtemplate; +import dmd.ast.enums; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.mtype; +import dmd.ast.nspace; + import dmd.arraytypes; -import dmd.astenums; -import dmd.attrib; -import dmd.declaration; -import dmd.dsymbol; import dmd.dsymbolsem : isGNUABITag, toAlias, equals; import dmd.expressionsem : toStringExp, toInteger, toUInteger; import dmd.templatesem : computeOneMember; -import dmd.dtemplate; import dmd.errors; -import dmd.expression; -import dmd.func; import dmd.globals; import dmd.id; import dmd.identifier; import dmd.location; -import dmd.mtype; -import dmd.nspace; import dmd.root.array; import dmd.common.outbuffer; import dmd.rootobject; diff --git a/compiler/src/dmd/mangle/cppwin.d b/compiler/src/dmd/mangle/cppwin.d index 8a674dcb0f51..dee6a4fd8cc0 100644 --- a/compiler/src/dmd/mangle/cppwin.d +++ b/compiler/src/dmd/mangle/cppwin.d @@ -13,28 +13,29 @@ module dmd.mangle.cppwin; import core.stdc.stdio; +import dmd.ast.enums; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.denum : isSpecialEnumIdent; +import dmd.ast.dstruct; +import dmd.ast.dsymbol; +import dmd.ast.dtemplate; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.mtype; + import dmd.arraytypes; -import dmd.astenums; -import dmd.dclass; -import dmd.declaration; -import dmd.denum : isSpecialEnumIdent; -import dmd.dstruct; -import dmd.dsymbol; import dmd.dsymbolsem : toAlias; import dmd.expressionsem : toStringExp, toInteger, toUInteger; import dmd.templatesem : computeOneMember; -import dmd.dtemplate; import dmd.errors; import dmd.errorsink; -import dmd.expression; -import dmd.func; import dmd.funcsem; import dmd.globals; import dmd.id; import dmd.identifier; import dmd.location; import dmd.mangle.cpp : isAggregateDtor, isCppOperator, CppOperator; -import dmd.mtype; import dmd.common.outbuffer; import dmd.rootobject; import dmd.target; diff --git a/compiler/src/dmd/mangle/package.d b/compiler/src/dmd/mangle/package.d index 628c679f3b0e..32b118b9d7f4 100644 --- a/compiler/src/dmd/mangle/package.d +++ b/compiler/src/dmd/mangle/package.d @@ -136,26 +136,27 @@ import core.stdc.ctype; import core.stdc.stdio; import core.stdc.string; -import dmd.aggregate; +import dmd.ast.aggregate; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.dmodule; +import dmd.ast.dsymbol; +import dmd.ast.dtemplate; +import dmd.ast.enums; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.mtype; + import dmd.arraytypes; -import dmd.astenums; import dmd.mangle.basic; -import dmd.dclass; -import dmd.declaration; import dmd.dinterpret; -import dmd.dmodule; -import dmd.dsymbol; import dmd.dsymbolsem : toAlias; import dmd.expressionsem : toInteger, toReal, toImaginary; -import dmd.dtemplate; import dmd.errors; -import dmd.expression; -import dmd.func; import dmd.funcsem; import dmd.globals; import dmd.id; import dmd.identifier; -import dmd.mtype; import dmd.root.ctfloat; import dmd.common.outbuffer; import dmd.optimize; diff --git a/compiler/src/dmd/mars.d b/compiler/src/dmd/mars.d index d2dbf640be15..de68b0b7d737 100644 --- a/compiler/src/dmd/mars.d +++ b/compiler/src/dmd/mars.d @@ -19,23 +19,25 @@ import core.stdc.stdio; import core.stdc.stdlib; import core.stdc.string; +import dmd.ast.cond; +import dmd.ast.enums; +import dmd.ast.dmodule; +import dmd.ast.dsymbol; +import dmd.ast.dtemplate; +import dmd.ast.expression; +import dmd.ast.mtype; + import dmd.arraytypes; -import dmd.astenums; -import dmd.cond; import dmd.console; import dmd.compiler; import dmd.cpreprocess; import dmd.dmdparams; import dmd.dinifile; import dmd.dinterpret; -import dmd.dmodule; import dmd.doc; -import dmd.dsymbol; import dmd.dsymbolsem; -import dmd.dtemplate; import dmd.dtoh; import dmd.errorsink; -import dmd.expression; import dmd.globals; import dmd.hdrgen; import dmd.id; @@ -43,7 +45,6 @@ import dmd.identifier; import dmd.inline; import dmd.location; import dmd.json; -import dmd.mtype; import dmd.objc; import dmd.root.array; import dmd.root.file; diff --git a/compiler/src/dmd/mustuse.d b/compiler/src/dmd/mustuse.d index 2125206322ef..78f77edd2295 100644 --- a/compiler/src/dmd/mustuse.d +++ b/compiler/src/dmd/mustuse.d @@ -10,10 +10,11 @@ module dmd.mustuse; +import dmd.ast.dsymbol; +import dmd.ast.expression; + import dmd.dscope; -import dmd.dsymbol; import dmd.errors; -import dmd.expression; import dmd.identifier; import dmd.location; @@ -57,7 +58,7 @@ bool checkMustUse(Expression e, Scope* sc) */ void checkMustUseReserved(Dsymbol sym) { - import dmd.attrib : foreachUdaNoSemantic; + import dmd.ast.attrib : foreachUdaNoSemantic; import dmd.errors : error; import dmd.id : Id; @@ -124,7 +125,7 @@ private bool isAssignmentOpId(Identifier id) */ private bool isIncrementOrDecrement(Expression e) { - import dmd.dtemplate : isExpression; + import dmd.ast.dtemplate : isExpression; import dmd.location; import dmd.id : Id; import dmd.tokens : EXP; @@ -209,7 +210,7 @@ private bool hasMustUseAttribute(Dsymbol sym, Scope* sc) */ private bool isMustUseAttribute(Expression e) { - import dmd.attrib : isEnumAttribute; + import dmd.ast.attrib : isEnumAttribute; import dmd.id : Id; return isEnumAttribute(e, Id.udaMustUse); } diff --git a/compiler/src/dmd/nogc.d b/compiler/src/dmd/nogc.d index 9041df0d8a2a..da3c95865407 100644 --- a/compiler/src/dmd/nogc.d +++ b/compiler/src/dmd/nogc.d @@ -15,28 +15,29 @@ module dmd.nogc; import core.stdc.stdio; -import dmd.aggregate; +import dmd.ast.aggregate; +import dmd.ast.enums; +import dmd.ast.attrib; +import dmd.ast.declaration; +import dmd.ast.dmodule; +import dmd.ast.dsymbol : PASS, Dsymbol; +import dmd.ast.dtemplate : isDsymbol; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.init; +import dmd.ast.mtype; + import dmd.arraytypes; -import dmd.astenums; -import dmd.attrib; import dmd.common.outbuffer; -import dmd.declaration; -import dmd.dmodule; import dmd.dscope; -import dmd.dsymbol : PASS, Dsymbol; -import dmd.dtemplate : isDsymbol; import dmd.errors; import dmd.escape; -import dmd.expression; import dmd.expressionsem; -import dmd.func; import dmd.funcsem : isRootTraitsCompilesScope; import dmd.globals; import dmd.id; import dmd.identifier; -import dmd.init; import dmd.location; -import dmd.mtype; import dmd.rootobject : RootObject, DYNCAST; import dmd.semantic2; import dmd.semantic3; @@ -319,7 +320,7 @@ extern (D) void printGCUsage(FuncDeclaration fd, Loc loc, const(char)* warn) private FuncDeclaration stripHookTraceImpl(FuncDeclaration fd) { import dmd.id : Id; - import dmd.dsymbol : Dsymbol; + import dmd.ast.dsymbol : Dsymbol; if (fd.ident != Id._d_HookTraceImpl) return fd; diff --git a/compiler/src/dmd/ob.d b/compiler/src/dmd/ob.d index fbe8c9b9733a..d3db4cc30785 100644 --- a/compiler/src/dmd/ob.d +++ b/compiler/src/dmd/ob.d @@ -20,25 +20,26 @@ import dmd.root.array; import dmd.rootobject; import dmd.root.rmem; -import dmd.aggregate; +import dmd.ast.aggregate; +import dmd.ast.enums; +import dmd.ast.declaration; +import dmd.ast.dsymbol; +import dmd.ast.dtemplate; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.init; +import dmd.ast.mtype; +import dmd.ast.print; +import dmd.ast.statement; + import dmd.arraytypes; -import dmd.astenums; -import dmd.declaration; import dmd.dscope; -import dmd.dsymbol; import dmd.dsymbolsem : toAlias; -import dmd.dtemplate; import dmd.errors; import dmd.escape; -import dmd.expression; -import dmd.func; import dmd.hdrgen; import dmd.identifier; -import dmd.init; import dmd.location; -import dmd.mtype; -import dmd.printast; -import dmd.statement; import dmd.stmtstate; import dmd.tokens; import dmd.typesem; diff --git a/compiler/src/dmd/objc.d b/compiler/src/dmd/objc.d index 63f2974afee0..a45eb4a239c4 100644 --- a/compiler/src/dmd/objc.d +++ b/compiler/src/dmd/objc.d @@ -13,29 +13,30 @@ module dmd.objc; -import dmd.aggregate; +import dmd.ast.aggregate; +import dmd.ast.attrib; +import dmd.ast.cond; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.denum; +import dmd.ast.dstruct; +import dmd.ast.dsymbol; +import dmd.ast.enums; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.mtype; + import dmd.arraytypes; -import dmd.astenums; -import dmd.attrib; import dmd.attribsem : foreachUda; -import dmd.cond; -import dmd.dclass; -import dmd.declaration; -import dmd.denum; import dmd.dscope; -import dmd.dstruct; -import dmd.dsymbol; import dmd.dsymbolsem; import dmd.errors; -import dmd.expression; import dmd.expressionsem; -import dmd.func; import dmd.hdrgen; import dmd.id; import dmd.identifier; import dmd.location; import dmd.mangle; -import dmd.mtype; import dmd.root.array; import dmd.common.outbuffer; import dmd.root.stringtable; diff --git a/compiler/src/dmd/opover.d b/compiler/src/dmd/opover.d index 9afaa0ba957d..fa2b97ea6b36 100644 --- a/compiler/src/dmd/opover.d +++ b/compiler/src/dmd/opover.d @@ -14,29 +14,30 @@ module dmd.opover; import core.stdc.stdio; -import dmd.aggregate; -import dmd.aliasthis; +import dmd.ast.aggregate; +import dmd.ast.aliasthis; +import dmd.ast.enums; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.dstruct; +import dmd.ast.dsymbol; +import dmd.ast.dtemplate; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.mtype; +import dmd.ast.statement; + import dmd.arraytypes; -import dmd.astenums; -import dmd.dclass; -import dmd.declaration; import dmd.dscope; -import dmd.dstruct; -import dmd.dsymbol; import dmd.dsymbolsem; -import dmd.dtemplate; import dmd.errors; -import dmd.expression; import dmd.expressionsem; -import dmd.func; import dmd.funcsem; import dmd.hdrgen; import dmd.id; import dmd.identifier; import dmd.location; -import dmd.mtype; import dmd.optimize; -import dmd.statement; import dmd.templatesem; import dmd.tokens; import dmd.typesem; diff --git a/compiler/src/dmd/optimize.d b/compiler/src/dmd/optimize.d index 66d3239f6d2a..bee64a174575 100644 --- a/compiler/src/dmd/optimize.d +++ b/compiler/src/dmd/optimize.d @@ -13,23 +13,24 @@ module dmd.optimize; import core.stdc.stdio; -import dmd.astenums; +import dmd.ast.enums; +import dmd.ast.expression; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.dsymbol; +import dmd.ast.init; +import dmd.ast.mtype; +import dmd.ast.print; + import dmd.constfold; import dmd.ctfeexpr; import dmd.dcast; -import dmd.dclass; -import dmd.declaration; -import dmd.dsymbol; import dmd.dsymbolsem; import dmd.errors; -import dmd.expression; import dmd.expressionsem; import dmd.globals; import dmd.hdrgen; -import dmd.init; import dmd.location; -import dmd.mtype; -import dmd.printast; import dmd.root.ctfloat; import dmd.sideeffect; import dmd.tokens; @@ -864,7 +865,7 @@ Expression optimize(Expression e, int result, bool keepLvalue = false) } if (e.type.ty == Tclass && e.e1.type.ty == Tclass) { - import dmd.astenums : Sizeok; + import dmd.ast.enums : Sizeok; // See if we can remove an unnecessary cast ClassDeclaration cdfrom = e.e1.type.isClassHandle(); diff --git a/compiler/src/dmd/parse.d b/compiler/src/dmd/parse.d index ef93b59e3414..1e03d59890f9 100644 --- a/compiler/src/dmd/parse.d +++ b/compiler/src/dmd/parse.d @@ -16,7 +16,9 @@ module dmd.parse; import core.stdc.stdio; import core.stdc.string; -import dmd.astenums; +import dmd.ast.enums; +import dmd.ast.expression; + import dmd.errorsink; import dmd.id; import dmd.identifier; @@ -28,7 +30,6 @@ import dmd.root.rmem; import dmd.rootobject; import dmd.root.string; import dmd.tokens; -import dmd.expression; alias CompileEnv = dmd.lexer.CompileEnv; diff --git a/compiler/src/dmd/pragmasem.d b/compiler/src/dmd/pragmasem.d index 83408a1bb338..540d2209222f 100644 --- a/compiler/src/dmd/pragmasem.d +++ b/compiler/src/dmd/pragmasem.d @@ -16,20 +16,22 @@ module dmd.pragmasem; import core.stdc.stdio; import core.stdc.string; -import dmd.astenums; +import dmd.ast.enums; +import dmd.ast.attrib; +import dmd.ast.dsymbol; +import dmd.ast.expression; +import dmd.ast.statement; + import dmd.arraytypes; -import dmd.attrib; import dmd.dinterpret; import dmd.dscope; -import dmd.dsymbol; import dmd.dsymbolsem : include; import dmd.errors; -import dmd.expression; import dmd.expressionsem; import dmd.globals; import dmd.location; import dmd.id; -import dmd.statement; + /** * Run semantic on `pragma` declaration. @@ -41,7 +43,7 @@ import dmd.statement; void pragmaDeclSemantic(PragmaDeclaration pd, Scope* sc) { import dmd.common.outbuffer; - import dmd.dmodule; + import dmd.ast.dmodule; import dmd.dsymbolsem; import dmd.identifier; import dmd.root.rmem; @@ -452,7 +454,7 @@ private void setPragmaPrintf(Dsymbol s, bool printf) */ private bool pragmaStartAddressSemantic(Loc loc, Scope* sc, Expressions* args) { - import dmd.dtemplate; + import dmd.ast.dtemplate; if (!args || args.length != 1) { @@ -537,7 +539,7 @@ private bool pragmaMangleSemantic(Loc loc, Scope* sc, Expressions* args, Dsymbol foreach (s; (*decls)[]) { - import dmd.aggregate; + import dmd.ast.aggregate; import dmd.common.outbuffer; import dmd.dsymbolsem : dsymbolSemantic; import dmd.hdrgen : arrayObjectsToBuffer; diff --git a/compiler/src/dmd/safe.d b/compiler/src/dmd/safe.d index 145e3dc2259e..e7f4e99bd4a5 100644 --- a/compiler/src/dmd/safe.d +++ b/compiler/src/dmd/safe.d @@ -15,25 +15,26 @@ module dmd.safe; import core.stdc.stdio; -import dmd.aggregate; -import dmd.astenums; +import dmd.ast.aggregate; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.dsymbol; +import dmd.ast.enums; +import dmd.ast.expression; +import dmd.ast.mtype; + import dmd.common.outbuffer; import dmd.dcast : implicitConvTo; -import dmd.dclass; -import dmd.declaration; import dmd.dscope; -import dmd.dsymbol; import dmd.dsymbolsem : determineSize; import dmd.errors; import dmd.errorsink; -import dmd.expression; -import dmd.func; +import dmd.ast.func; import dmd.funcsem : isRootTraitsCompilesScope; import dmd.globals : FeatureState, global; import dmd.id; import dmd.identifier; import dmd.location; -import dmd.mtype; import dmd.rootobject; import dmd.root.string : fTuple; import dmd.target; @@ -576,7 +577,7 @@ bool setUnsafePreview(Scope* sc, FeatureState fs, bool gag, Loc loc, VarDeclarat } else if (!sc.func.safetyViolation) { - import dmd.func : AttributeViolation; + import dmd.ast.func : AttributeViolation; if (scopeVar) sc.func.safetyViolation = new AttributeViolation(loc, format, scopeVar, args); else diff --git a/compiler/src/dmd/semantic2.d b/compiler/src/dmd/semantic2.d index 0a8989f9f472..2478115066bf 100644 --- a/compiler/src/dmd/semantic2.d +++ b/compiler/src/dmd/semantic2.d @@ -14,43 +14,44 @@ module dmd.semantic2; import core.stdc.stdio; import core.stdc.string; -import dmd.aggregate; -import dmd.aliasthis; +import dmd.ast.aggregate; +import dmd.ast.aliasthis; +import dmd.ast.codegen; +import dmd.ast.enums; +import dmd.ast.attrib; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.denum; +import dmd.ast.dimport; +import dmd.ast.dmodule; +import dmd.ast.dstruct; +import dmd.ast.dsymbol; +import dmd.ast.dtemplate; +import dmd.ast.dversion; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.init; +import dmd.ast.mtype; +import dmd.ast.nspace; + import dmd.arraytypes; -import dmd.astcodegen; -import dmd.astenums; -import dmd.attrib; import dmd.blockexit; import dmd.timetrace; import dmd.clone; import dmd.dcast; -import dmd.dclass; -import dmd.declaration; -import dmd.denum; -import dmd.dimport; import dmd.dinterpret; -import dmd.dmodule; import dmd.dscope; -import dmd.dstruct; -import dmd.dsymbol; import dmd.dsymbolsem; -import dmd.dtemplate; -import dmd.dversion; import dmd.errors; import dmd.escape; -import dmd.expression; import dmd.expressionsem; -import dmd.func; import dmd.funcsem; import dmd.globals; import dmd.id; import dmd.identifier; -import dmd.init; import dmd.initsem; import dmd.hdrgen; -import dmd.mtype; import dmd.nogc; -import dmd.nspace; import dmd.objc; import dmd.opover; import dmd.parse; @@ -62,9 +63,9 @@ import dmd.rootobject; import dmd.root.utf; import dmd.sideeffect; import dmd.statementsem; -import dmd.staticassert; +import dmd.ast.staticassert; import dmd.tokens; -import dmd.statement; +import dmd.ast.statement; import dmd.target; import dmd.templateparamsem; import dmd.typesem; @@ -108,7 +109,7 @@ private extern(C++) final class Semantic2Visitor : Visitor sc.tinst = null; sc.minst = null; - import dmd.staticcond; + import dmd.ast.staticcond; bool errors; bool result = evalStaticCondition(sc, sa.exp, sa.exp, errors); sc = sc.pop(); diff --git a/compiler/src/dmd/semantic3.d b/compiler/src/dmd/semantic3.d index d6fc77660a72..9b4145f4112b 100644 --- a/compiler/src/dmd/semantic3.d +++ b/compiler/src/dmd/semantic3.d @@ -16,44 +16,47 @@ module dmd.semantic3; import core.stdc.stdio; import core.stdc.string; -import dmd.aggregate; -import dmd.aliasthis; +import dmd.ast.aggregate; +import dmd.ast.aliasthis; +import dmd.ast.codegen; +import dmd.ast.enums; +import dmd.ast.attrib; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.denum; +import dmd.ast.dimport; +import dmd.ast.dmodule; +import dmd.ast.dstruct; +import dmd.ast.dsymbol; +import dmd.ast.dtemplate; +import dmd.ast.dversion; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.init; +import dmd.ast.mtype; +import dmd.ast.nspace; +import dmd.ast.statement; +import dmd.ast.staticassert; + import dmd.arraytypes; -import dmd.astcodegen; -import dmd.astenums; -import dmd.attrib; import dmd.blockexit; import dmd.clone; import dmd.ctorflow; import dmd.dcast; -import dmd.dclass; -import dmd.declaration; -import dmd.denum; -import dmd.dimport; import dmd.dinterpret; -import dmd.dmodule; import dmd.dscope; -import dmd.dstruct; -import dmd.dsymbol; import dmd.dsymbolsem; -import dmd.dtemplate; -import dmd.dversion; import dmd.errors; import dmd.escape; -import dmd.expression; import dmd.expressionsem; -import dmd.func; import dmd.funcsem; import dmd.globals; import dmd.id; import dmd.identifier; -import dmd.init; import dmd.initsem; import dmd.hdrgen; import dmd.location; -import dmd.mtype; import dmd.nogc; -import dmd.nspace; import dmd.ob; import dmd.objc; import dmd.opover; @@ -66,11 +69,9 @@ import dmd.root.rmem; import dmd.rootobject; import dmd.root.utf; import dmd.sideeffect; -import dmd.statementsem; -import dmd.staticassert; import dmd.tokens; import dmd.semantic2; -import dmd.statement; +import dmd.statementsem; import dmd.target; import dmd.targetcompiler; import dmd.templateparamsem; diff --git a/compiler/src/dmd/sideeffect.d b/compiler/src/dmd/sideeffect.d index 5c5aadfa3a4d..c4cb003ffd17 100644 --- a/compiler/src/dmd/sideeffect.d +++ b/compiler/src/dmd/sideeffect.d @@ -11,19 +11,20 @@ module dmd.sideeffect; -import dmd.astenums; -import dmd.declaration; +import dmd.ast.enums; +import dmd.ast.declaration; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.init; +import dmd.ast.mtype; + import dmd.dscope; import dmd.errors; -import dmd.expression; import dmd.expressionsem; -import dmd.func; import dmd.funcsem; import dmd.hdrgen; import dmd.id; import dmd.identifier; -import dmd.init; -import dmd.mtype; import dmd.tokens; import dmd.typesem; import dmd.visitor; diff --git a/compiler/src/dmd/statementsem.d b/compiler/src/dmd/statementsem.d index dbaf9023f8b1..ee9aaabd5145 100644 --- a/compiler/src/dmd/statementsem.d +++ b/compiler/src/dmd/statementsem.d @@ -15,40 +15,42 @@ module dmd.statementsem; import core.stdc.stdio; -import dmd.aggregate; +import dmd.ast.aggregate; +import dmd.ast.codegen; +import dmd.ast.enums; +import dmd.ast.cond; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.denum; +import dmd.ast.dimport; +import dmd.ast.dmodule; +import dmd.ast.dsymbol; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.init; +import dmd.ast.mtype; +import dmd.ast.statement; + import dmd.arrayop; import dmd.arraytypes; -import dmd.astcodegen; -import dmd.astenums; import dmd.blockexit; import dmd.clone; -import dmd.cond; import dmd.ctorflow; import dmd.dcast; -import dmd.dclass; -import dmd.declaration; -import dmd.denum; -import dmd.dimport; import dmd.dinterpret; -import dmd.dmodule; import dmd.dscope; -import dmd.dsymbol; import dmd.dsymbolsem; import dmd.errors; import dmd.escape; -import dmd.expression; import dmd.expressionsem; -import dmd.func; import dmd.funcsem; import dmd.globals; import dmd.hdrgen; import dmd.id; import dmd.identifier; import dmd.importc; -import dmd.init; import dmd.intrange; import dmd.location; -import dmd.mtype; import dmd.mustuse; import dmd.nogc; import dmd.optimize; @@ -59,7 +61,6 @@ import dmd.root.string; import dmd.safe : isSafe, isSaferD, setUnsafe; import dmd.semantic2; import dmd.sideeffect; -import dmd.statement; import dmd.target; import dmd.targetcompiler; import dmd.tokens; @@ -4763,7 +4764,7 @@ public auto makeTupleForeach(Scope* sc, bool isStatic, bool isDecl, ForeachState assert(e && !t); auto ident = Identifier.generateId("__value"); declareVariable(STC.none, e.type, ident, e, null); - import dmd.cond: StaticForeach; + import dmd.ast.cond: StaticForeach; auto field = Identifier.idPool(StaticForeach.tupleFieldName.ptr,StaticForeach.tupleFieldName.length); Expression access = new DotIdExp(loc, e, field); access = expressionSemantic(access, sc); @@ -4797,7 +4798,7 @@ public auto makeTupleForeach(Scope* sc, bool isStatic, bool isDecl, ForeachState } else if (isDecl) { - import dmd.attrib: ForwardingAttribDeclaration; + import dmd.ast.attrib: ForwardingAttribDeclaration; d = new ForwardingAttribDeclaration(decls); } else diff --git a/compiler/src/dmd/stmtstate.d b/compiler/src/dmd/stmtstate.d index d75538e53e9f..2246e38634bc 100644 --- a/compiler/src/dmd/stmtstate.d +++ b/compiler/src/dmd/stmtstate.d @@ -11,8 +11,8 @@ module dmd.stmtstate; +import dmd.ast.statement; import dmd.identifier; -import dmd.statement; /************************************************ diff --git a/compiler/src/dmd/target.d b/compiler/src/dmd/target.d index bc281fb864f0..05bec2bc9b9c 100644 --- a/compiler/src/dmd/target.d +++ b/compiler/src/dmd/target.d @@ -27,7 +27,7 @@ module dmd.target; import core.stdc.stdio; -import dmd.astenums : CHECKENABLE; +import dmd.ast.enums : CHECKENABLE; import dmd.globals : Param; enum CPU : ubyte @@ -108,7 +108,7 @@ ubyte defaultTargetOSMajor() @safe public void addDefaultVersionIdentifiers(const ref Param params, const ref Target tgt) { - import dmd.cond : VersionCondition; + import dmd.ast.cond : VersionCondition; import dmd.dmdparams : driverParams, PIC; VersionCondition.addPredefinedGlobalIdent("DigitalMars"); @@ -168,7 +168,7 @@ void addDefaultVersionIdentifiers(const ref Param params, const ref Target tgt) private void addPredefinedGlobalIdentifiers(const ref Target tgt) { - import dmd.cond : VersionCondition; + import dmd.ast.cond : VersionCondition; alias predef = VersionCondition.addPredefinedGlobalIdent; if ((tgt.isX86_64 || tgt.isX86) && tgt.cpu >= CPU.sse2) @@ -253,7 +253,7 @@ void addPredefinedGlobalIdentifiers(const ref Target tgt) private void addCRuntimePredefinedGlobalIdent(const ref TargetC c) { - import dmd.cond : VersionCondition; + import dmd.ast.cond : VersionCondition; alias predef = VersionCondition.addPredefinedGlobalIdent; with (TargetC.Runtime) switch (c.runtime) @@ -273,7 +273,7 @@ void addCRuntimePredefinedGlobalIdent(const ref TargetC c) private void addCppRuntimePredefinedGlobalIdent(const ref TargetCPP cpp) { - import dmd.cond : VersionCondition; + import dmd.ast.cond : VersionCondition; alias predef = VersionCondition.addPredefinedGlobalIdent; with (TargetCPP.Runtime) switch (cpp.runtime) @@ -310,15 +310,16 @@ void addCppRuntimePredefinedGlobalIdent(const ref TargetCPP cpp) */ extern (C++) struct Target { + import dmd.ast.expression : Expression; + import dmd.ast.func : FuncDeclaration; + import dmd.ast.enums : LINK, TY; + import dmd.ast.mtype : Type, TypeFunction, TypeTuple; + import dmd.ast.statement : Statement; + import dmd.dscope : Scope; - import dmd.expression : Expression; - import dmd.func : FuncDeclaration; import dmd.location; - import dmd.astenums : LINK, TY; - import dmd.mtype : Type, TypeFunction, TypeTuple; import dmd.typesem; import dmd.root.ctfloat : real_t; - import dmd.statement : Statement; import dmd.tokens : EXP; /// Bit decoding of the Target.OS @@ -661,7 +662,7 @@ extern (C++) struct Target if (isX86_64 || isAArch64) { import dmd.identifier : Identifier; - import dmd.mtype : TypeIdentifier; + import dmd.ast.mtype : TypeIdentifier; import dmd.typesem : typeSemantic; tvalist = new TypeIdentifier(Loc.initial, Identifier.idPool("__va_list_tag")).pointerTo(); tvalist = typeSemantic(tvalist, loc, sc); @@ -1248,7 +1249,7 @@ extern (C++) struct Target TypeTuple getArgTypes() { - import dmd.astenums : Sizeok; + import dmd.ast.enums : Sizeok; if (auto ts = t.toBasetype().isTypeStruct()) { auto sd = ts.sym; @@ -1291,7 +1292,7 @@ extern (C++) struct Target extern (C++) Expression getTargetInfo(const(char)* name, Loc loc) { import dmd.dmdparams : driverParams; - import dmd.expression : IntegerExp, StringExp; + import dmd.ast.expression : IntegerExp, StringExp; import dmd.root.string : toDString; StringExp stringExp(const(char)[] sval) @@ -1419,7 +1420,7 @@ extern (C++) struct Target */ struct TargetC { - import dmd.declaration : BitFieldDeclaration; + import dmd.ast.declaration : BitFieldDeclaration; enum Runtime : ubyte { @@ -1536,10 +1537,10 @@ struct TargetC */ struct TargetCPP { - import dmd.dsymbol : Dsymbol; - import dmd.dclass : ClassDeclaration; - import dmd.func : FuncDeclaration; - import dmd.mtype : Type; + import dmd.ast.dsymbol : Dsymbol; + import dmd.ast.dclass : ClassDeclaration; + import dmd.ast.func : FuncDeclaration; + import dmd.ast.mtype : Type; enum Runtime : ubyte { diff --git a/compiler/src/dmd/templateparamsem.d b/compiler/src/dmd/templateparamsem.d index 6b90f5aed68d..4adbccf31f36 100644 --- a/compiler/src/dmd/templateparamsem.d +++ b/compiler/src/dmd/templateparamsem.d @@ -11,17 +11,18 @@ module dmd.templateparamsem; +import dmd.ast.dsymbol; +import dmd.ast.dtemplate; +import dmd.ast.mtype; + import dmd.arraytypes; import dmd.dinterpret; -import dmd.dsymbol; +import dmd.ast.expression; import dmd.dscope; -import dmd.dtemplate; import dmd.location; -import dmd.expression; import dmd.expressionsem; import dmd.templatesem; import dmd.rootobject; -import dmd.mtype; import dmd.typesem; import dmd.visitor; diff --git a/compiler/src/dmd/templatesem.d b/compiler/src/dmd/templatesem.d index 8221c2bed6fd..e8a16aef8678 100644 --- a/compiler/src/dmd/templatesem.d +++ b/compiler/src/dmd/templatesem.d @@ -13,37 +13,39 @@ module dmd.templatesem; import core.stdc.stdio; import core.stdc.string; -import dmd.aggregate; -import dmd.aliasthis; + +import dmd.ast.aggregate; +import dmd.ast.aliasthis; +import dmd.ast.enums; +import dmd.ast.node; +import dmd.ast.attrib; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.dinterpret; +import dmd.ast.dmodule; +import dmd.ast.dstruct; +import dmd.ast.dsymbol; +import dmd.ast.dtemplate; +import dmd.ast.expression; +import dmd.ast.init; + import dmd.arraytypes; -import dmd.astenums; -import dmd.ast_node; -import dmd.attrib; import dmd.dcast; -import dmd.dclass; -import dmd.declaration; -import dmd.dinterpret; -import dmd.dmodule; import dmd.dscope; -import dmd.dstruct; -import dmd.dsymbol; import dmd.dsymbolsem; -import dmd.dtemplate; import dmd.errors; import dmd.errorsink; -import dmd.expression; import dmd.expressionsem; -import dmd.func; +import dmd.ast.func; import dmd.funcsem; import dmd.globals; import dmd.hdrgen; import dmd.id; import dmd.identifier; import dmd.impcnvtab; -import dmd.init; import dmd.initsem; import dmd.location; -import dmd.mtype; +import dmd.ast.mtype; import dmd.opover; import dmd.optimize; import dmd.root.array; @@ -3584,7 +3586,7 @@ private bool evaluateConstraint(TemplateDeclaration td, TemplateInstance ti, Sco td.lastConstraintTiargs = ti.tiargs; td.lastConstraintNegs.setDim(0); - import dmd.staticcond; + import dmd.ast.staticcond; assert(ti.inst is null); ti.inst = ti; // temporary instantiation to enable genIdent() @@ -3613,7 +3615,7 @@ private bool evaluateConstraint(TemplateDeclaration td, TemplateInstance ti, Sco */ const(char)* getConstraintEvalError(TemplateDeclaration td, ref const(char)* tip) { - import dmd.staticcond; + import dmd.ast.staticcond; // there will be a full tree view in verbose mode, and more compact list in the usual const full = global.params.v.verbose; uint count; diff --git a/compiler/src/dmd/timetrace.d b/compiler/src/dmd/timetrace.d index 26b5ee92d4e5..c74f423cbd8a 100644 --- a/compiler/src/dmd/timetrace.d +++ b/compiler/src/dmd/timetrace.d @@ -15,9 +15,10 @@ Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/timetra */ module dmd.timetrace; +import dmd.ast.dsymbol; +import dmd.ast.expression; + import dmd.location; -import dmd.dsymbol; -import dmd.expression; import dmd.root.array; import dmd.common.outbuffer; import dmd.root.string : toDString; diff --git a/compiler/src/dmd/traits.d b/compiler/src/dmd/traits.d index c4ac8c06ca8d..686d48dc1c8f 100644 --- a/compiler/src/dmd/traits.d +++ b/compiler/src/dmd/traits.d @@ -15,25 +15,27 @@ module dmd.traits; import core.stdc.stdio; -import dmd.aggregate; +import dmd.ast.aggregate; +import dmd.ast.enums; +import dmd.ast.attrib; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.dmodule; +import dmd.ast.dsymbol; +import dmd.ast.dtemplate; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.mtype; + import dmd.arraytypes; -import dmd.astenums; -import dmd.attrib; import dmd.attribsem; import dmd.canthrow; -import dmd.dclass; -import dmd.declaration; import dmd.dinterpret; -import dmd.dmodule; import dmd.dscope; -import dmd.dsymbol; import dmd.dsymbolsem; -import dmd.dtemplate; import dmd.errors; import dmd.errorsink; -import dmd.expression; import dmd.expressionsem; -import dmd.func; import dmd.funcsem; import dmd.globals; import dmd.hdrgen; @@ -41,7 +43,6 @@ import dmd.id; import dmd.identifier; import dmd.location; import dmd.mangle : decoToType; -import dmd.mtype; import dmd.nogc; import dmd.optimize; import dmd.root.array; diff --git a/compiler/src/dmd/typesem.d b/compiler/src/dmd/typesem.d index 62d13b92d3c8..0081a1504348 100644 --- a/compiler/src/dmd/typesem.d +++ b/compiler/src/dmd/typesem.d @@ -15,29 +15,32 @@ import core.checkedint; import core.stdc.string; import core.stdc.stdio; +import dmd.ast.aggregate; +import dmd.ast.codegen; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.denum; +import dmd.ast.enums; +import dmd.ast.dmodule; +import dmd.ast.dstruct; +import dmd.ast.dsymbol; +import dmd.ast.dtemplate; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.init; +import dmd.ast.mtype; + import dmd.access; -import dmd.aggregate; import dmd.arrayop; import dmd.arraytypes; -import dmd.astcodegen; -import dmd.astenums; import dmd.dcast; -import dmd.dclass; -import dmd.declaration; -import dmd.denum; import dmd.dinterpret; -import dmd.dmodule; import dmd.dscope; -import dmd.dstruct; -import dmd.dsymbol; import dmd.dsymbolsem; import dmd.templatesem : computeOneMember; -import dmd.dtemplate; import dmd.enumsem; import dmd.errors; -import dmd.expression; import dmd.expressionsem; -import dmd.func; import dmd.funcsem; import dmd.globals; import dmd.hdrgen; @@ -45,10 +48,8 @@ import dmd.id; import dmd.identifier; import dmd.imphint; import dmd.importc; -import dmd.init; import dmd.initsem; import dmd.location; -import dmd.mtype; import dmd.mangle; import dmd.nogc; import dmd.objc; diff --git a/compiler/src/dmd/typinf.d b/compiler/src/dmd/typinf.d index 2353e03406d4..5a44e4d04d55 100644 --- a/compiler/src/dmd/typinf.d +++ b/compiler/src/dmd/typinf.d @@ -11,16 +11,17 @@ module dmd.typinf; -import dmd.astenums; -import dmd.declaration; -import dmd.dmodule; +import dmd.ast.declaration; +import dmd.ast.dmodule; +import dmd.ast.dclass; +import dmd.ast.dstruct; +import dmd.ast.enums; +import dmd.ast.expression; +import dmd.ast.mtype; + import dmd.dscope; -import dmd.dclass; -import dmd.dstruct; import dmd.errors; -import dmd.expression; import dmd.location; -import dmd.mtype; import dmd.templatesem; import dmd.typesem; import dmd.dsymbolsem : addDeferredSemantic3; diff --git a/compiler/src/dmd/visitor/foreachvar.d b/compiler/src/dmd/visitor/foreachvar.d index 4cedf04906a4..3d9c4ff95512 100644 --- a/compiler/src/dmd/visitor/foreachvar.d +++ b/compiler/src/dmd/visitor/foreachvar.d @@ -15,26 +15,27 @@ import core.stdc.stdio; import core.stdc.stdlib; import core.stdc.string; +import dmd.ast.enums; +import dmd.ast.attrib; +import dmd.ast.dclass; +import dmd.ast.declaration; +import dmd.ast.dstruct; +import dmd.ast.dsymbol; +import dmd.ast.dtemplate; +import dmd.ast.expression; +import dmd.ast.func; +import dmd.ast.init; +import dmd.ast.mtype; +import dmd.ast.print; +import dmd.ast.statement; + import dmd.arraytypes; -import dmd.astenums; -import dmd.attrib; -import dmd.dclass; -import dmd.declaration; -import dmd.dstruct; -import dmd.dsymbol; import dmd.dsymbolsem; -import dmd.dtemplate; -import dmd.expression; -import dmd.func; import dmd.id; import dmd.identifier; -import dmd.init; import dmd.initsem; -import dmd.mtype; -import dmd.printast; import dmd.root.array; import dmd.rootobject; -import dmd.statement; import dmd.tokens; import dmd.visitor; import dmd.visitor.postorder; diff --git a/compiler/src/dmd/visitor/package.d b/compiler/src/dmd/visitor/package.d index 2f2e31beec71..9dc2169d89c9 100644 --- a/compiler/src/dmd/visitor/package.d +++ b/compiler/src/dmd/visitor/package.d @@ -11,7 +11,7 @@ module dmd.visitor; -import dmd.astcodegen; +import dmd.ast.codegen; import dmd.tokens; import dmd.rootobject; import dmd.visitor.parsetime; diff --git a/compiler/src/dmd/visitor/postorder.d b/compiler/src/dmd/visitor/postorder.d index 1a45e61d5655..2c7b50369c7e 100644 --- a/compiler/src/dmd/visitor/postorder.d +++ b/compiler/src/dmd/visitor/postorder.d @@ -11,11 +11,11 @@ module dmd.visitor.postorder; -import dmd.dtemplate; -import dmd.expression; -import dmd.root.array; -import dmd.statement; import dmd.visitor; +import dmd.ast.dtemplate; +import dmd.ast.expression; +import dmd.ast.statement; +import dmd.root.array; bool walkPostorder(Expression e, StoppableVisitor v) { diff --git a/compiler/src/dmd/visitor/statement_rewrite_walker.d b/compiler/src/dmd/visitor/statement_rewrite_walker.d index 31fd7ff0ae6a..84990ec56af5 100644 --- a/compiler/src/dmd/visitor/statement_rewrite_walker.d +++ b/compiler/src/dmd/visitor/statement_rewrite_walker.d @@ -13,7 +13,7 @@ module dmd.visitor.statement_rewrite_walker; import core.stdc.stdio; -import dmd.statement; +import dmd.ast.statement; import dmd.visitor; diff --git a/compiler/src/dmd/visitor/transitive.d b/compiler/src/dmd/visitor/transitive.d index 82de9c5e50ef..9d66da243a01 100644 --- a/compiler/src/dmd/visitor/transitive.d +++ b/compiler/src/dmd/visitor/transitive.d @@ -5,7 +5,7 @@ module dmd.visitor.transitive; -import dmd.astenums; +import dmd.ast.enums; import dmd.visitor.permissive; import dmd.tokens; import dmd.rootobject; diff --git a/compiler/test/dub_package/avg.d b/compiler/test/dub_package/avg.d index 13b1495ec101..09c135e4328e 100755 --- a/compiler/test/dub_package/avg.d +++ b/compiler/test/dub_package/avg.d @@ -9,7 +9,7 @@ dependency "dmd" path="../../.." module examples.avg; -import dmd.astbase; +import dmd.ast.base; import dmd.errorsink; import dmd.parse; import dmd.target; diff --git a/compiler/test/dub_package/impvisitor.d b/compiler/test/dub_package/impvisitor.d index a578deaf7777..bb38fdc12303 100755 --- a/compiler/test/dub_package/impvisitor.d +++ b/compiler/test/dub_package/impvisitor.d @@ -77,7 +77,7 @@ void main() import std.path : buildPath, dirName; import dmd.parse; - import dmd.astbase; + import dmd.ast.base; import dmd.id; import dmd.globals; diff --git a/compiler/test/unit/compilable/searching.d b/compiler/test/unit/compilable/searching.d index 5add95dfc8fd..96bf3413be80 100644 --- a/compiler/test/unit/compilable/searching.d +++ b/compiler/test/unit/compilable/searching.d @@ -7,11 +7,11 @@ module compilable.searching; import support : afterEach, beforeEach, compiles; -import dmd.dsymbol; +import dmd.ast.dsymbol; import dmd.dsymbolsem; -import dmd.dclass : ClassDeclaration; -import dmd.declaration : VarDeclaration; -import dmd.dtemplate : TemplateDeclaration; +import dmd.ast.dclass : ClassDeclaration; +import dmd.ast.declaration : VarDeclaration; +import dmd.ast.dtemplate : TemplateDeclaration; import dmd.globals : global; import dmd.identifier : Identifier; import dmd.location; diff --git a/compiler/test/unit/deinitialization.d b/compiler/test/unit/deinitialization.d index 9196b811af8b..4114c3bb7fa3 100644 --- a/compiler/test/unit/deinitialization.d +++ b/compiler/test/unit/deinitialization.d @@ -34,7 +34,7 @@ unittest unittest { import dmd.target : addDefaultVersionIdentifiers; - import dmd.mtype : Type; + import dmd.ast.mtype : Type; import dmd.globals : global; import dmd.typesem : Type_init; @@ -75,7 +75,7 @@ unittest @("Module.deinitialize") unittest { - import dmd.dmodule : Module; + import dmd.ast.dmodule : Module; assert(Module.modules is Module.modules.init); @@ -126,7 +126,7 @@ unittest @("Expression.deinitialize") unittest { - import dmd.expression : Expression, CTFEExp; + import dmd.ast.expression : Expression, CTFEExp; static void assertInitialState() { diff --git a/compiler/test/unit/frontend.d b/compiler/test/unit/frontend.d index 29d109e58aa5..28b5acbd73ec 100644 --- a/compiler/test/unit/frontend.d +++ b/compiler/test/unit/frontend.d @@ -15,8 +15,8 @@ unittest { import std.algorithm : each; - import dmd.astcodegen : ASTCodegen; - import dmd.dclass : ClassDeclaration; + import dmd.ast.codegen : ASTCodegen; + import dmd.ast.dclass : ClassDeclaration; import dmd.frontend; import dmd.visitor : SemanticTimeTransitiveVisitor; diff --git a/compiler/test/unit/parser/aliasdeclaration_location.d b/compiler/test/unit/parser/aliasdeclaration_location.d index 987579b2fbde..147a5a9789b1 100644 --- a/compiler/test/unit/parser/aliasdeclaration_location.d +++ b/compiler/test/unit/parser/aliasdeclaration_location.d @@ -2,7 +2,7 @@ module parser.aliasdeclaration_location; import dmd.frontend : parseModule; import support : afterEach, beforeEach; -import dmd.declaration : AliasDeclaration; +import dmd.ast.declaration : AliasDeclaration; import dmd.location; import dmd.visitor : SemanticTimeTransitiveVisitor; diff --git a/compiler/test/unit/parser/conditionalcompilation_location.d b/compiler/test/unit/parser/conditionalcompilation_location.d index 1bc769e6fbf7..42eb96423745 100644 --- a/compiler/test/unit/parser/conditionalcompilation_location.d +++ b/compiler/test/unit/parser/conditionalcompilation_location.d @@ -2,7 +2,7 @@ module parser.conditionalcompilation_location; import dmd.frontend : parseModule; import support : afterEach, beforeEach; -import dmd.attrib : ConditionalDeclaration, StaticIfDeclaration, StaticForeachDeclaration; +import dmd.ast.attrib : ConditionalDeclaration, StaticIfDeclaration, StaticForeachDeclaration; import dmd.location; import dmd.visitor : SemanticTimeTransitiveVisitor; diff --git a/compiler/test/unit/parser/dvcondition_location.d b/compiler/test/unit/parser/dvcondition_location.d index 0f902c4d6428..2dcf4289276c 100644 --- a/compiler/test/unit/parser/dvcondition_location.d +++ b/compiler/test/unit/parser/dvcondition_location.d @@ -2,7 +2,7 @@ module parser.dvcondition_location; import dmd.frontend : parseModule; import support : afterEach, beforeEach; -import dmd.cond : VersionCondition, DebugCondition; +import dmd.ast.cond : VersionCondition, DebugCondition; import dmd.location; import dmd.visitor : SemanticTimeTransitiveVisitor; diff --git a/compiler/test/unit/parser/linkage_location.d b/compiler/test/unit/parser/linkage_location.d index c167a6bec55b..88efeb55d1ff 100644 --- a/compiler/test/unit/parser/linkage_location.d +++ b/compiler/test/unit/parser/linkage_location.d @@ -1,7 +1,7 @@ module parser.linkage_location; import dmd.frontend : parseModule, initDMD, deinitializeDMD; -import dmd.attrib : CPPMangleDeclaration, CPPNamespaceDeclaration, LinkDeclaration; +import dmd.ast.attrib : CPPMangleDeclaration, CPPNamespaceDeclaration, LinkDeclaration; import dmd.location; import dmd.visitor : SemanticTimeTransitiveVisitor; diff --git a/compiler/test/unit/parser/test_astbase.d b/compiler/test/unit/parser/test_astbase.d index a842643d77f6..ddb0243d0504 100644 --- a/compiler/test/unit/parser/test_astbase.d +++ b/compiler/test/unit/parser/test_astbase.d @@ -5,7 +5,7 @@ module parser.test_astbase; void main() { - import dmd.astbase; + import dmd.ast.base; import dmd.globals; import dmd.parse; import dmd.errorsink; diff --git a/compiler/test/unit/parser/visibilitydeclaration_location.d b/compiler/test/unit/parser/visibilitydeclaration_location.d index 7eac497a9035..ccaae418fe3c 100644 --- a/compiler/test/unit/parser/visibilitydeclaration_location.d +++ b/compiler/test/unit/parser/visibilitydeclaration_location.d @@ -2,7 +2,7 @@ module parser.visibilitydeclaration_location; import dmd.frontend : parseModule; import support : afterEach, beforeEach; -import dmd.attrib : VisibilityDeclaration; +import dmd.ast.attrib : VisibilityDeclaration; import dmd.location; import dmd.visitor : SemanticTimeTransitiveVisitor; diff --git a/compiler/test/unit/semantic/control_flow.d b/compiler/test/unit/semantic/control_flow.d index 384376f512a4..1cdccdd133af 100644 --- a/compiler/test/unit/semantic/control_flow.d +++ b/compiler/test/unit/semantic/control_flow.d @@ -5,8 +5,8 @@ module semantic.control_flow; import dmd.blockexit : BE; -import dmd.func : FuncDeclaration; -import dmd.statement : Statement; +import dmd.ast.func : FuncDeclaration; +import dmd.ast.statement : Statement; import dmd.visitor : Visitor; import support; diff --git a/compiler/test/unit/semantic/covariance.d b/compiler/test/unit/semantic/covariance.d index 52787be66a74..00e830debb8b 100644 --- a/compiler/test/unit/semantic/covariance.d +++ b/compiler/test/unit/semantic/covariance.d @@ -4,9 +4,9 @@ module semantic.covariance; -import dmd.astenums : STC, StorageClass; -import dmd.func : FuncDeclaration; -import dmd.mtype : Covariant, Type; +import dmd.ast.enums : STC, StorageClass; +import dmd.ast.func : FuncDeclaration; +import dmd.ast.mtype : Covariant, Type; import dmd.typesem : covariant; import support; @@ -808,7 +808,7 @@ struct Config +/ Config extractFunctions(const string code, const size_t line) { - import dmd.func : FuncDeclaration; + import dmd.ast.func : FuncDeclaration; import dmd.visitor : SemanticTimeTransitiveVisitor; auto result = compiles(code); diff --git a/compiler/test/unit/semantic/imports.d b/compiler/test/unit/semantic/imports.d index 2de5c026d275..3dea12a7194d 100644 --- a/compiler/test/unit/semantic/imports.d +++ b/compiler/test/unit/semantic/imports.d @@ -4,8 +4,8 @@ import std.algorithm; import std.typecons; import dmd.frontend; -import dmd.dsymbol; -import dmd.astcodegen; +import dmd.ast.dsymbol; +import dmd.ast.codegen; import dmd.common.outbuffer; import support; diff --git a/compiler/test/unit/support.d b/compiler/test/unit/support.d index 65e7e8e47167..d7ed6fc5d89d 100644 --- a/compiler/test/unit/support.d +++ b/compiler/test/unit/support.d @@ -54,7 +54,7 @@ string stripDelimited(string str) const struct CompilationResult { - import dmd.dmodule : Module; + import dmd.ast.dmodule : Module; Diagnostic[] diagnostics; Module module_; diff --git a/compiler/tools/gen_cpp_layout_test.py b/compiler/tools/gen_cpp_layout_test.py index 4d29c6bc429e..4eb6f8fe3568 100644 --- a/compiler/tools/gen_cpp_layout_test.py +++ b/compiler/tools/gen_cpp_layout_test.py @@ -92,15 +92,14 @@ # All D imports needed to check all definitions from include/*.h D_IMPORTS = """\ -import dmd.aggregate, dmd.aliasthis, dmd.arraytypes, dmd.ast_node, - dmd.attrib, dmd.compiler, dmd.cond, dmd.ctfeexpr, dmd.cxxfrontend, dmd.declaration, - dmd.denum, dmd.dimport, dmd.dmodule, dmd.dscope, dmd.dstruct, - dmd.dsymbol, dmd.dtemplate, dmd.dversion, dmd.errors, - dmd.astenums, dmd.ctorflow, dmd.dclass, dmd.dmacro, dmd.dsymbolsem, dmd.errorsink, dmd.expression, dmd.func, +import dmd.arraytypes, dmd.ast, + dmd.compiler, dmd.ctfeexpr, dmd.cxxfrontend, + dmd.dscope, dmd.errors, + dmd.ctorflow, dmd.dmacro, dmd.dsymbolsem, dmd.errorsink, dmd.globals, dmd.hdrgen, dmd.lexer, - dmd.id, dmd.identifier, dmd.init, dmd.json, dmd.location, - dmd.mangle, dmd.mtype, dmd.nspace, dmd.objc, dmd.rootobject, - dmd.statement, dmd.staticassert, dmd.target, dmd.tokens, dmd.typinf, + dmd.id, dmd.identifier, dmd.json, dmd.location, + dmd.mangle, dmd.objc, dmd.rootobject, + dmd.target, dmd.tokens, dmd.typinf, dmd.visitor, dmd.vsoptions, dmd.root.array, dmd.root.bitarray, dmd.root.complex, dmd.root.ctfloat, dmd.root.filename, dmd.root.longdouble, diff --git a/dub.sdl b/dub.sdl index 7fd1a55fa563..458b550f8e9d 100644 --- a/dub.sdl +++ b/dub.sdl @@ -34,7 +34,7 @@ subPackage { sourcePaths sourceFiles \ - "compiler/src/dmd/astenums.d" \ + "compiler/src/dmd/ast/enums.d" \ "compiler/src/dmd/console.d" \ "compiler/src/dmd/entity.d" \ "compiler/src/dmd/errors.d" \ @@ -71,7 +71,7 @@ subPackage { sourcePaths sourceFiles \ - "compiler/src/dmd/astbase.d" \ + "compiler/src/dmd/ast/base.d" \ "compiler/src/dmd/parse.d" \ "compiler/src/dmd/visitor/transitive.d" \ "compiler/src/dmd/visitor/permissive.d" \ @@ -102,8 +102,8 @@ subPackage { excludedSourceFiles "compiler/src/dmd/lib/*" excludedSourceFiles "compiler/src/dmd/irgen/*" excludedSourceFiles "compiler/src/dmd/{\ - astenums,\ - astbase,\ + ast/enums,\ + ast/base,\ console,\ entity,\ errors,\