aboutsummaryrefslogtreecommitdiff
path: root/unit-tests/cc
diff options
context:
space:
mode:
Diffstat (limited to 'unit-tests/cc')
-rw-r--r--unit-tests/cc/lexer/buildfile6
-rw-r--r--unit-tests/cc/lexer/char-literal.testscript67
-rw-r--r--unit-tests/cc/lexer/comment.testscript88
-rw-r--r--unit-tests/cc/lexer/driver.cxx80
-rw-r--r--unit-tests/cc/lexer/line.testscript67
-rw-r--r--unit-tests/cc/lexer/number.testscript48
-rw-r--r--unit-tests/cc/lexer/preprocessor.testscript73
-rw-r--r--unit-tests/cc/lexer/raw-string-literal.testscript90
-rw-r--r--unit-tests/cc/lexer/string-literal.testscript65
-rw-r--r--unit-tests/cc/parser/buildfile6
-rw-r--r--unit-tests/cc/parser/driver.cxx66
-rw-r--r--unit-tests/cc/parser/module.testscript149
12 files changed, 0 insertions, 805 deletions
diff --git a/unit-tests/cc/lexer/buildfile b/unit-tests/cc/lexer/buildfile
deleted file mode 100644
index 4eaef44..0000000
--- a/unit-tests/cc/lexer/buildfile
+++ /dev/null
@@ -1,6 +0,0 @@
-# file : unit-tests/cc/lexer/buildfile
-# copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
-# license : MIT; see accompanying LICENSE file
-
-include ../../../build2/
-exe{driver}: {hxx cxx}{*} ../../../build2/libue{b} testscript{*}
diff --git a/unit-tests/cc/lexer/char-literal.testscript b/unit-tests/cc/lexer/char-literal.testscript
deleted file mode 100644
index cbcb462..0000000
--- a/unit-tests/cc/lexer/char-literal.testscript
+++ /dev/null
@@ -1,67 +0,0 @@
-# file : unit-tests/cc/lexer/char-literal.testscript
-# copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
-# license : MIT; see accompanying LICENSE file
-
-# Test character literals.
-#
-
-: normal
-:
-$* <<EOI >>EOO
-'a'
-'aa'
-'"'
-EOI
-<char literal>
-<char literal>
-<char literal>
-EOO
-
-: prefix
-:
-$* <<EOI >>EOO
-L'a'
-U'a'
-u'a'
-u8'a'
-u8R'a'
-EOI
-<char literal>
-<char literal>
-<char literal>
-<char literal>
-'u8R'
-<char literal>
-EOO
-
-: suffix
-:
-$* <<EOI >>EOO
-'a'x
-'a'_X123
-EOI
-<char literal>
-<char literal>
-EOO
-
-: escape
-:
-$* <<EOI >>EOO
-'\''
-'\\'
-'\\\''
-'\n'
-U'\U0001f34c'
-EOI
-<char literal>
-<char literal>
-<char literal>
-<char literal>
-<char literal>
-EOO
-
-: unterminated
-:
-$* <"'a" 2>>EOE != 0
-stdin:1:1: error: unterminated character literal
-EOE
diff --git a/unit-tests/cc/lexer/comment.testscript b/unit-tests/cc/lexer/comment.testscript
deleted file mode 100644
index 347c2e7..0000000
--- a/unit-tests/cc/lexer/comment.testscript
+++ /dev/null
@@ -1,88 +0,0 @@
-# file : unit-tests/cc/lexer/comment.testscript
-# copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
-# license : MIT; see accompanying LICENSE file
-
-# Test C and C++ comments.
-#
-
-: c-comment
-:
-$* <<EOI
-/* 'one' */
-/* "two" // three
-*/
-/**
-four
-// five */
-/**
-six /*
-*/
-EOI
-
-: cxx-comment
-:
-$* <<EOI
-// 'one'
-// "two" // three
-// four /* five */
-EOI
-
-: commented-out
-:
-$* <<EOI >"';'"
-// /*
-;
-// */
-EOI
-
-: c-unterminated
-:
-$* <<EOI 2>>EOE != 0
-/*
-comment
-EOI
-stdin:1:2: error: unterminated comment
-EOE
-
-: cxx-unterminated
-:
-$* <<:EOI
-// comment
-EOI
-
-: in-char-literal
-:
-$* <<EOI >>EOO
-'//'
-'/*'*/
-EOI
-<char literal>
-<char literal>
-<punctuation>
-<punctuation>
-EOO
-
-: in-string-literal
-:
-$* <<EOI >>EOO
-"//foo"
-"/*"*/
-EOI
-<string literal>
-<string literal>
-<punctuation>
-<punctuation>
-EOO
-
-: in-raw-string-literal
-:
-$* <<EOI >>EOO
-R"X(
-// foo
-/* bar
-)X"*/
-EOI
-<string literal>
-<punctuation>
-<punctuation>
-EOO
diff --git a/unit-tests/cc/lexer/driver.cxx b/unit-tests/cc/lexer/driver.cxx
deleted file mode 100644
index ebbb9ab..0000000
--- a/unit-tests/cc/lexer/driver.cxx
+++ /dev/null
@@ -1,80 +0,0 @@
-// file : unit-tests/cc/lexer/driver.cxx -*- C++ -*-
-// copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
-// license : MIT; see accompanying LICENSE file
-
-#include <cassert>
-#include <iostream>
-
-#include <build2/types.hxx>
-#include <build2/utility.hxx>
-
-#include <build2/cc/lexer.hxx>
-
-using namespace std;
-using namespace butl;
-
-namespace build2
-{
- namespace cc
- {
- // Usage: argv[0] [-l] [<file>]
- //
- int
- main (int argc, char* argv[])
- {
- bool loc (false);
- const char* file (nullptr);
-
- for (int i (1); i != argc; ++i)
- {
- string a (argv[i]);
-
- if (a == "-l")
- loc = true;
- else
- {
- file = argv[i];
- break;
- }
- }
-
- try
- {
- ifdstream is;
- if (file != nullptr)
- is.open (file);
- else
- {
- file = "stdin";
- is.open (fddup (stdin_fd ()));
- }
-
- lexer l (is, path (file));
-
- // No use printing eos since we will either get it or loop forever.
- //
- for (token t; l.next (t) != token_type::eos; )
- {
- cout << t;
-
- if (loc)
- cout << ' ' << t.file << ':' << t.line << ':' << t.column;
-
- cout << endl;
- }
- }
- catch (const failed&)
- {
- return 1;
- }
-
- return 0;
- }
- }
-}
-
-int
-main (int argc, char* argv[])
-{
- return build2::cc::main (argc, argv);
-}
diff --git a/unit-tests/cc/lexer/line.testscript b/unit-tests/cc/lexer/line.testscript
deleted file mode 100644
index 9dcd7e3..0000000
--- a/unit-tests/cc/lexer/line.testscript
+++ /dev/null
@@ -1,67 +0,0 @@
-# file : unit-tests/cc/lexer/line.testscript
-# copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
-# license : MIT; see accompanying LICENSE file
-
-# Test line continuations.
-#
-
-: identifier
-:
-$* <<EOI >"'foo123'"
-fo\
-o\
-1\
-2\
-3
-EOI
-
-: punctuation
-:
-$* <<EOI >'<punctuation>'
-.\
-.\
-.
-EOI
-
-: c-comment
-:
-$* <<EOI
-/\
-*
-comment
-*\
-/\
-
-EOI
-
-: cxx-comment
-:
-$* <<EOI
-/\
-/ comment\
-more\
-more
-EOI
-
-: other
-:
-$* <<EOI >>EOO
-\abc
-EOI
-<punctuation>
-'abc'
-EOO
-
-: multiple
-:
-$* <<EOI >>EOO
-\\
-EOI
-<punctuation>
-EOO
-
-: unterminated
-:
-$* <<:EOI >'<punctuation>'
-\
-EOI
diff --git a/unit-tests/cc/lexer/number.testscript b/unit-tests/cc/lexer/number.testscript
deleted file mode 100644
index 0b4c888..0000000
--- a/unit-tests/cc/lexer/number.testscript
+++ /dev/null
@@ -1,48 +0,0 @@
-# file : unit-tests/cc/lexer/number.testscript
-# copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
-# license : MIT; see accompanying LICENSE file
-
-# Test numbers.
-#
-
-$* <'1' >'<number literal>'
-$* <'.1' >'<number literal>'
-$* <'1.' >'<number literal>'
-
-$* <'0b101' >'<number literal>'
-$* <'0123' >'<number literal>'
-$* <'0X12AB' >'<number literal>'
-
-$* <'1e10' >'<number literal>'
-$* <'1E+10' >'<number literal>'
-$* <'0x1.p10' >'<number literal>'
-$* <'0x1.P-10' >'<number literal>'
-
-$* <"123'456" >'<number literal>'
-$* <"0xff00'00ff" >'<number literal>'
-
-$* <'123f' >'<number literal>'
-$* <'123UL' >'<number literal>'
-$* <'123_X' >'<number literal>'
-
-: separate-punctuation
-:
-$* <'123;' >>EOO
-<number literal>
-';'
-EOO
-
-: separate-plus-minus
-:
-$* <'1.0_a+2.0' >>EOO
-<number literal>
-<punctuation>
-<number literal>
-EOO
-
-: separate-whitespace
-:
-$* <'123 abc' >>EOO
-<number literal>
-'abc'
-EOO
diff --git a/unit-tests/cc/lexer/preprocessor.testscript b/unit-tests/cc/lexer/preprocessor.testscript
deleted file mode 100644
index e826144..0000000
--- a/unit-tests/cc/lexer/preprocessor.testscript
+++ /dev/null
@@ -1,73 +0,0 @@
-# file : unit-tests/cc/lexer/preprocessor.testscript
-# copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
-# license : MIT; see accompanying LICENSE file
-
-# Test preprocessor lines.
-#
-
-: normal
-:
-$* <<EOI
-#pragma message("abc")
-EOI
-
-: multiline
-:
-$* <<EOI
-#pragma message \
-( \
-"abc" \
-)
-EOI
-
-: comment
-:
-$* <<EOI
-#pragma foo /*
-bar
-baz
-*/
-#pragma foo // bar baz
-EOI
-
-: line
-:
-$* -l <<EOI >>EOO
-;
-# 1 "test.cxx" 2
-;
- ;
-# 4
-;
-#line 8 "z:\\tmp\\test.hxx"
-;
-#line 10
-;
-# 5 "test.cxx"
-;
-EOI
-';' stdin:1:1
-';' test.cxx:1:1
-';' test.cxx:2:3
-';' test.cxx:4:1
-';' z:\tmp\test.hxx:8:1
-';' z:\tmp\test.hxx:10:1
-';' test.cxx:5:1
-EOO
-
-: include
-:
-$* <<EOI 2>>EOE != 0
-#include <foo/bar>
-EOI
-stdin:1:1: error: unexpected #include directive
-EOE
-
-: nested
-:
-$* <<EOI >>EOO
-#define FOO(x) #y
-;
-EOI
-';'
-EOO
diff --git a/unit-tests/cc/lexer/raw-string-literal.testscript b/unit-tests/cc/lexer/raw-string-literal.testscript
deleted file mode 100644
index 4ab08f7..0000000
--- a/unit-tests/cc/lexer/raw-string-literal.testscript
+++ /dev/null
@@ -1,90 +0,0 @@
-# file : unit-tests/cc/lexer/raw-string-literal.testscript
-# copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
-# license : MIT; see accompanying LICENSE file
-
-# Test raw string literals.
-#
-
-: normal
-:
-$* <<EOI >>EOO
-R"()"
-R"(ab)"
-R"(a"b)"
-R"(a)b)"
-R"%(a%)b)%"
-R"X(a
- b)X"
-R"X(a\
- b)X"
-EOI
-<string literal>
-<string literal>
-<string literal>
-<string literal>
-<string literal>
-<string literal>
-<string literal>
-EOO
-
-: prefix
-:
-$* <<EOI >>EOO
-LR"(ab)"
-UR"(ab)"
-uR"(ab)"
-u8R"(ab)"
-EOI
-<string literal>
-<string literal>
-<string literal>
-<string literal>
-EOO
-
-: suffix
-:
-$* <<EOI >>EOO
-R"(ab)"x
-R"(ab)"_X123
-EOI
-<string literal>
-<string literal>
-EOO
-
-: escape
-:
-$* <<EOI >>EOO
-R"(\)"
-EOI
-<string literal>
-EOO
-
-: invalid-no-paren
-:
-$* <'R"a"' 2>>EOE != 0
-stdin:1:2: error: invalid raw string literal
-EOE
-
-: invalid-paren
-:
-$* <'R")()("' 2>>EOE != 0
-stdin:1:2: error: invalid raw string literal
-EOE
-
-: invalid-unterminated-paren
-:
-$* <'R"(abc"' 2>>EOE != 0
-stdin:1:2: error: invalid raw string literal
-EOE
-
-: invalid-unterminated-delimiter
-:
-$* <'R"X(abc)"' 2>>EOE != 0
-stdin:1:2: error: invalid raw string literal
-EOE
-
-: invalid-unterminated-quote
-:
-$* <'R"X(abc)X' 2>>EOE != 0
-stdin:1:2: error: invalid raw string literal
-EOE
diff --git a/unit-tests/cc/lexer/string-literal.testscript b/unit-tests/cc/lexer/string-literal.testscript
deleted file mode 100644
index db3798f..0000000
--- a/unit-tests/cc/lexer/string-literal.testscript
+++ /dev/null
@@ -1,65 +0,0 @@
-# file : unit-tests/cc/lexer/string-literal.testscript
-# copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
-# license : MIT; see accompanying LICENSE file
-
-# Test string literals (except raw).
-#
-
-: normal
-:
-$* <<EOI >>EOO
-"aa"
-"'"
-"a""b"
-EOI
-<string literal>
-<string literal>
-<string literal>
-<string literal>
-EOO
-
-: prefix
-:
-$* <<EOI >>EOO
-L"ab"
-U"ab"
-u"ab"
-u8"ab"
-EOI
-<string literal>
-<string literal>
-<string literal>
-<string literal>
-EOO
-
-: suffix
-:
-$* <<EOI >>EOO
-"ab"x
-"ab"_X123
-EOI
-<string literal>
-<string literal>
-EOO
-
-: escape
-:
-$* <<EOI >>EOO
-"\"\""
-"\\\\"
-"\\\"\\"
-"\n\t"
-U"a\U0001f34c"
-EOI
-<string literal>
-<string literal>
-<string literal>
-<string literal>
-<string literal>
-EOO
-
-: unterminated
-:
-$* <'"ab' 2>>EOE != 0
-stdin:1:1: error: unterminated string literal
-EOE
diff --git a/unit-tests/cc/parser/buildfile b/unit-tests/cc/parser/buildfile
deleted file mode 100644
index d9e3e28..0000000
--- a/unit-tests/cc/parser/buildfile
+++ /dev/null
@@ -1,6 +0,0 @@
-# file : unit-tests/cc/parser/buildfile
-# copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
-# license : MIT; see accompanying LICENSE file
-
-include ../../../build2/
-exe{driver}: {hxx cxx}{*} ../../../build2/libue{b} testscript{*}
diff --git a/unit-tests/cc/parser/driver.cxx b/unit-tests/cc/parser/driver.cxx
deleted file mode 100644
index 19a2133..0000000
--- a/unit-tests/cc/parser/driver.cxx
+++ /dev/null
@@ -1,66 +0,0 @@
-// file : unit-tests/cc/parser/driver.cxx -*- C++ -*-
-// copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
-// license : MIT; see accompanying LICENSE file
-
-#include <cassert>
-#include <iostream>
-
-#include <build2/types.hxx>
-#include <build2/utility.hxx>
-
-#include <build2/cc/parser.hxx>
-
-using namespace std;
-using namespace butl;
-
-namespace build2
-{
- namespace cc
- {
- // Usage: argv[0] [<file>]
- //
- int
- main (int argc, char* argv[])
- {
- try
- {
- const char* file;
-
- ifdstream is;
- if (argc > 1)
- {
- file = argv[1];
- is.open (file);
- }
- else
- {
- file = "stdin";
- is.open (fddup (stdin_fd ()));
- }
-
- parser p;
- translation_unit u (p.parse (is, path (file)));
-
- for (const module_import& m: u.mod.imports)
- cout << (m.exported ? "export " : "")
- << "import " << m.name << ';' << endl;
-
- if (!u.mod.name.empty ())
- cout << (u.mod.iface ? "export " : "")
- << "module " << u.mod.name << ';' << endl;
- }
- catch (const failed&)
- {
- return 1;
- }
-
- return 0;
- }
- }
-}
-
-int
-main (int argc, char* argv[])
-{
- return build2::cc::main (argc, argv);
-}
diff --git a/unit-tests/cc/parser/module.testscript b/unit-tests/cc/parser/module.testscript
deleted file mode 100644
index dc7f3e4..0000000
--- a/unit-tests/cc/parser/module.testscript
+++ /dev/null
@@ -1,149 +0,0 @@
-# file : unit-tests/cc/parser/module.testscript
-# copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
-# license : MIT; see accompanying LICENSE file
-
-# Test C++ module constructs.
-#
-
-: import
-:
-$* <<EOI >>EOI
-import foo;
-import foo.bar;
-import foo.bar.baz;
-EOI
-
-: module-implementation
-:
-$* <<EOI >>EOI
-module foo;
-EOI
-
-: module-interface
-:
-$* <<EOI >>EOI
-export module foo;
-EOI
-
-: export-imported
-:
-$* <<EOI >>EOO
-export import foo;
-EOI
-export import foo;
-EOO
-
-: export-imported-block
-:
-$* <<EOI >>EOO
-import bar;
-
-export {import foo;}
-
-export
-{
- namespace foo
- {
- class c {};
- }
-
- template <typename T> int f ();
-
- import bar;
-}
-EOI
-export import bar;
-export import foo;
-EOO
-
-: non-module
-:
-$* <<EOI
-#pragma import module foo;
-#pragma export module foo;
-#pragma module foo;
-extern module foo: int foo ();
-export namespace bar {int fox ();}
-EOI
-
-: attribute
-:
-$* <<EOI >>EOO
-import foo [[export({import})]];
-module bar [[module({module})]];
-EOI
-import foo;
-module bar;
-EOO
-
-: import-duplicate
-:
-$* <<EOI >>EOO
-import foo;
-import bar.baz;
-import foo;
-import bar . baz;
-EOI
-import foo;
-import bar.baz;
-EOO
-
-: brace-missing
-:
-$* <<EOI 2>>EOE != 0
-export
-{
- class foo
- {
- //};
- module foo;
-}
-EOI
-stdin:8:1: error: {}-imbalance detected
-EOE
-
-: brace-stray
-:
-$* <<EOI 2>>EOE != 0
-export
-{
- class foo
- {
- };}
-}
-module foo;
-EOI
-stdin:6:1: error: {}-imbalance detected
-EOE
-
-: import-missing-name
-:
-$* <<EOI 2>>EOE != 0
-import ;
-EOI
-stdin:1:8: error: module name expected instead of ';'
-EOE
-
-: module-missing-name
-:
-$* <<EOI 2>>EOE != 0
-module ;
-EOI
-stdin:1:1: error: module declaration expected after leading module marker
-EOE
-
-: import-missing-semi
-:
-$* <<EOI 2>>EOE != 0
-import foo
-EOI
-stdin:2:1: error: ';' expected instead of <end of file>
-EOE
-
-: module-missing-semi
-:
-$* <<EOI 2>>EOE != 0
-export module foo
-EOI
-stdin:2:1: error: ';' expected instead of <end of file>
-EOE