diff options
author | Karen Arutyunov <karen@codesynthesis.com> | 2019-03-06 23:06:30 +0300 |
---|---|---|
committer | Karen Arutyunov <karen@codesynthesis.com> | 2019-03-08 16:42:31 +0300 |
commit | 77410b0cdde47219d6c6a36533fcb9354f17c3dd (patch) | |
tree | 703c39f3bc81792fabaf81769035f01a08cf6a2f /build2/cc/parser.test.cxx | |
parent | 8ca10194e206a181797ffb7a73dd2deee12ac753 (diff) |
Use new setup for unit tests
Diffstat (limited to 'build2/cc/parser.test.cxx')
-rw-r--r-- | build2/cc/parser.test.cxx | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/build2/cc/parser.test.cxx b/build2/cc/parser.test.cxx new file mode 100644 index 0000000..ab42e31 --- /dev/null +++ b/build2/cc/parser.test.cxx @@ -0,0 +1,66 @@ +// file : build2/cc/parser.test.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); +} |