mirror of
https://github.com/dlang/dmd.git
synced 2025-04-28 22:20:37 +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 druntime, phobos, dmd
|
||||||
test() {
|
test() {
|
||||||
|
test_dub_package
|
||||||
make -j$N -C ../druntime -f posix.mak MODEL=$MODEL unittest
|
make -j$N -C ../druntime -f posix.mak MODEL=$MODEL unittest
|
||||||
make -j$N -C ../phobos -f posix.mak MODEL=$MODEL unittest
|
make -j$N -C ../phobos -f posix.mak MODEL=$MODEL unittest
|
||||||
test_dmd
|
test_dmd
|
||||||
|
@ -69,6 +70,13 @@ test_dmd() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# test dub package
|
||||||
|
test_dub_package() {
|
||||||
|
pushd test/dub_package
|
||||||
|
dub test
|
||||||
|
popd
|
||||||
|
}
|
||||||
|
|
||||||
for proj in druntime phobos; do
|
for proj in druntime phobos; do
|
||||||
if [ $TRAVIS_BRANCH != master ] && [ $TRAVIS_BRANCH != stable ] &&
|
if [ $TRAVIS_BRANCH != master ] && [ $TRAVIS_BRANCH != stable ] &&
|
||||||
! git ls-remote --exit-code --heads https://github.com/dlang/$proj.git $TRAVIS_BRANCH > /dev/null; then
|
! 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