From b5e6ed443db8246e98beec64f55f7717dbe45989 Mon Sep 17 00:00:00 2001 From: Jacob Carlborg Date: Mon, 8 May 2017 21:54:22 +0200 Subject: [PATCH] Fix issue 17392 - Add Dub file for the lexer and parser The Dub file is intended to make the the compiler available as a library through Dub. --- dub.sdl | 50 +++++++++++++++++++++++++++++++++++ test/dub_package/.gitignore | 5 ++++ test/dub_package/dub.sdl | 5 ++++ test/dub_package/source/app.d | 45 +++++++++++++++++++++++++++++++ travis.sh | 8 ++++++ 5 files changed, 113 insertions(+) create mode 100644 dub.sdl create mode 100644 test/dub_package/.gitignore create mode 100644 test/dub_package/dub.sdl create mode 100644 test/dub_package/source/app.d diff --git a/dub.sdl b/dub.sdl new file mode 100644 index 000000000000..811cde6fb83e --- /dev/null +++ b/dub.sdl @@ -0,0 +1,50 @@ +name "dmd" +description "The DMD compiler" +authors "Walter Bright" +copyright "Copyright © 1999-2017, Digital Mars" +license "BSL-1.0" + +targetType "none" +dependency ":parser" version="*" + +subPackage { + name "root" + targetType "library" + sourcePaths "src/ddmd/root" +} + +subPackage { + name "lexer" + targetType "library" + sourcePaths + + sourceFiles \ + "src/ddmd/console.d" \ + "src/ddmd/entity.d" \ + "src/ddmd/errors.d" \ + "src/ddmd/globals.d" \ + "src/ddmd/id.d" \ + "src/ddmd/identifier.d" \ + "src/ddmd/lexer.d" \ + "src/ddmd/tokens.d" \ + "src/ddmd/utf.d" + + // stringImportPaths cannot be used because it will make Dub extremely slow + // https://github.com/dlang/dub/issues/1199 + dflags "-J$PACKAGE_DIR" + + dependency "dmd:root" version="*" +} + +subPackage { + name "parser" + targetType "library" + sourcePaths + + sourceFiles \ + "src/ddmd/astbase.d" \ + "src/ddmd/astbasevisitor.d" \ + "src/ddmd/parse.d" + + dependency "dmd:lexer" version="*" +} diff --git a/test/dub_package/.gitignore b/test/dub_package/.gitignore new file mode 100644 index 000000000000..433d26664af8 --- /dev/null +++ b/test/dub_package/.gitignore @@ -0,0 +1,5 @@ +.dub +docs.json +__dummy.html +*.o +*.obj diff --git a/test/dub_package/dub.sdl b/test/dub_package/dub.sdl new file mode 100644 index 000000000000..9b6083cbf468 --- /dev/null +++ b/test/dub_package/dub.sdl @@ -0,0 +1,5 @@ +name "dmd-dub-test" +description "Test of the DMD Dub package" +license "BSL 1.0" + +dependency "dmd" path="../../" diff --git a/test/dub_package/source/app.d b/test/dub_package/source/app.d new file mode 100644 index 000000000000..4cff4c5633c7 --- /dev/null +++ b/test/dub_package/source/app.d @@ -0,0 +1,45 @@ +// 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 ddmd.lexer; + import ddmd.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 ddmd.astbase; + import ddmd.parse; + + scope parser = new Parser!ASTBase(null, null, false); + assert(parser !is null); +} diff --git a/travis.sh b/travis.sh index 37ba62eced17..a633f23eb868 100755 --- a/travis.sh +++ b/travis.sh @@ -54,6 +54,7 @@ rebuild() { # test druntime, phobos, dmd test() { + test_dub_package make -j$N -C ../druntime -f posix.mak MODEL=$MODEL unittest make -j$N -C ../phobos -f posix.mak MODEL=$MODEL unittest test_dmd @@ -69,6 +70,13 @@ test_dmd() { fi } +# test dub package +test_dub_package() { + pushd test/dub_package + dub test + popd +} + for proj in druntime phobos; do if [ $TRAVIS_BRANCH != master ] && [ $TRAVIS_BRANCH != stable ] && ! git ls-remote --exit-code --heads https://github.com/dlang/$proj.git $TRAVIS_BRANCH > /dev/null; then