mirror of
https://github.com/dlang/dmd.git
synced 2025-04-25 20:50:41 +03:00
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.
This commit is contained in:
parent
832186a773
commit
b5e6ed443d
5 changed files with 113 additions and 0 deletions
50
dub.sdl
Normal file
50
dub.sdl
Normal file
|
@ -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="*"
|
||||
}
|
5
test/dub_package/.gitignore
vendored
Normal file
5
test/dub_package/.gitignore
vendored
Normal file
|
@ -0,0 +1,5 @@
|
|||
.dub
|
||||
docs.json
|
||||
__dummy.html
|
||||
*.o
|
||||
*.obj
|
5
test/dub_package/dub.sdl
Normal file
5
test/dub_package/dub.sdl
Normal file
|
@ -0,0 +1,5 @@
|
|||
name "dmd-dub-test"
|
||||
description "Test of the DMD Dub package"
|
||||
license "BSL 1.0"
|
||||
|
||||
dependency "dmd" path="../../"
|
45
test/dub_package/source/app.d
Normal file
45
test/dub_package/source/app.d
Normal file
|
@ -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);
|
||||
}
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue