diff --git a/dub.sdl b/dub.sdl index feeb263728..2eac444644 100644 --- a/dub.sdl +++ b/dub.sdl @@ -5,7 +5,7 @@ copyright "Copyright © 1999-2017, The D Language Foundation" license "BSL-1.0" targetType "none" -dependency ":parser" version="*" +dependency ":frontend" version="*" subPackage { name "root" @@ -49,3 +49,104 @@ subPackage { dependency "dmd:lexer" version="*" } + +subPackage { + name "frontend" + targetType "library" + stringImportPaths "res" + versions "NoBackend" + versions "GC" + versions "NoMain" + sourcePaths + + sourceFiles \ + "src/dmd/access.d" \ + "src/dmd/aggregate.d" \ + "src/dmd/aliasthis.d" \ + "src/dmd/apply.d" \ + "src/dmd/argtypes.d" \ + "src/dmd/arrayop.d" \ + "src/dmd/arraytypes.d" \ + "src/dmd/astcodegen.d" \ + "src/dmd/attrib.d" \ + "src/dmd/blockexit.d" \ + "src/dmd/builtin.d" \ + "src/dmd/canthrow.d" \ + "src/dmd/clone.d" \ + "src/dmd/complex.d" \ + "src/dmd/cond.d" \ + "src/dmd/constfold.d" \ + "src/dmd/cppmangle.d" \ + "src/dmd/cppmanglewin.d" \ + "src/dmd/ctfeexpr.d" \ + "src/dmd/dcast.d" \ + "src/dmd/dclass.d" \ + "src/dmd/declaration.d" \ + "src/dmd/delegatize.d" \ + "src/dmd/denum.d" \ + "src/dmd/dimport.d" \ + "src/dmd/dinifile.d" \ + "src/dmd/dinterpret.d" \ + "src/dmd/dmacro.d" \ + "src/dmd/dmangle.d" \ + "src/dmd/dmodule.d" \ + "src/dmd/doc.d" \ + "src/dmd/dscope.d" \ + "src/dmd/dstruct.d" \ + "src/dmd/dsymbol.d" \ + "src/dmd/dsymbolsem.d" \ + "src/dmd/dtemplate.d" \ + "src/dmd/dversion.d" \ + "src/dmd/escape.d" \ + "src/dmd/expression.d" \ + "src/dmd/expressionsem.d" \ + "src/dmd/func.d" \ + "src/dmd/gluelayer.d" \ + "src/dmd/hdrgen.d" \ + "src/dmd/id.d" \ + "src/dmd/impcnvtab.d" \ + "src/dmd/imphint.d" \ + "src/dmd/init.d" \ + "src/dmd/initsem.d" \ + "src/dmd/inline.d" \ + "src/dmd/inlinecost.d" \ + "src/dmd/intrange.d" \ + "src/dmd/json.d" \ + "src/dmd/lib.d" \ + "src/dmd/link.d" \ + "src/dmd/mars.d" \ + "src/dmd/mtype.d" \ + "src/dmd/nogc.d" \ + "src/dmd/nspace.d" \ + "src/dmd/objc.d" \ + "src/dmd/opover.d" \ + "src/dmd/optimize.d" \ + "src/dmd/parse.d" \ + "src/dmd/parsetimevisitor.d" \ + "src/dmd/printast.d" \ + "src/dmd/safe.d" \ + "src/dmd/sapply.d" \ + "src/dmd/semantic.d" \ + "src/dmd/sideeffect.d" \ + "src/dmd/statement.d" \ + "src/dmd/statement_rewrite_walker.d" \ + "src/dmd/statementsem.d" \ + "src/dmd/staticassert.d" \ + "src/dmd/staticcond.d" \ + "src/dmd/target.d" \ + "src/dmd/templateparamsem.d" \ + "src/dmd/traits.d" \ + "src/dmd/typesem.d" \ + "src/dmd/typinf.d" \ + "src/dmd/utils.d" \ + "src/dmd/visitor.d" + + sourceFiles "src/dmd/scanelf.d" \ + "src/dmd/libelf.d" platform="linux" + + sourceFiles "src/dmd/scanmach.d" \ + "src/dmd/libmach.d" platform="osx" + + dependency "dmd:parser" version="*" + dependency "dmd:lexer" version="*" +} diff --git a/test/dub_package/README.md b/test/dub_package/README.md new file mode 100644 index 0000000000..e885fd33d4 --- /dev/null +++ b/test/dub_package/README.md @@ -0,0 +1,21 @@ +DMD as a library +================ + +The tests in this module are high-level and mostly indented to make sure all +necessary modules are included in the Dub package. + +The tests are executable single-file packages for the D's package manager `dub` +and can be directly executed: + +```bash +./lexer.d +``` + +If you want to see the log output or want to pass additional options, use `--single`: + +```bash +dub --single -v lexer.d +``` + +If you don't have `dub` installed on your system, +[install an official release](https://dlang.org/download.html). diff --git a/test/dub_package/lexer.d b/test/dub_package/lexer.d new file mode 100755 index 0000000000..68f70d165f --- /dev/null +++ b/test/dub_package/lexer.d @@ -0,0 +1,31 @@ +#!/usr/bin/env dub +/+dub.sdl: +dependency "dmd" path="../.." ++/ +void main() +{ + import dmd.lexer; + import dmd.tokens; + + immutable expected = [ + TOKvoid, + TOKidentifier, + TOKlparen, + TOKrparen, + TOKlcurly, + TOKrcurly + ]; + + immutable sourceCode = "void test() {} // foobar"; + scope lexer = new Lexer("test", sourceCode.ptr, 0, sourceCode.length, 0, 0); + lexer.nextToken; + + TOK[] result; + + do + { + result ~= lexer.token.value; + } while (lexer.nextToken != TOKeof); + + assert(result == expected); +} diff --git a/test/dub_package/parser.d b/test/dub_package/parser.d old mode 100644 new mode 100755 index 7d8c77ed7e..b997724dde --- a/test/dub_package/parser.d +++ b/test/dub_package/parser.d @@ -1,44 +1,8 @@ +#!/usr/bin/env dub /+dub.sdl: dependency "dmd" path="../.." +/ -// The tests in this module are highlevel and mostly indented to make sure all -// necessary modules are included in the Dub package. - void main() -{ -} - -// lexer -unittest -{ - import dmd.lexer; - import dmd.tokens; - - immutable expected = [ - TOKvoid, - TOKidentifier, - TOKlparen, - TOKrparen, - TOKlcurly, - TOKrcurly - ]; - - immutable sourceCode = "void test() {} // foobar"; - scope lexer = new Lexer("test", sourceCode.ptr, 0, sourceCode.length, 0, 0); - lexer.nextToken; - - TOK[] result; - - do - { - result ~= lexer.token.value; - } while (lexer.nextToken != TOKeof); - - assert(result == expected); -} - -// parser -unittest { import dmd.astbase; import dmd.parse;