diff options
Diffstat (limited to 'tests/manual/cplusplus/main.cpp')
-rw-r--r-- | tests/manual/cplusplus/main.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/tests/manual/cplusplus/main.cpp b/tests/manual/cplusplus/main.cpp new file mode 100644 index 0000000000..18b89137a5 --- /dev/null +++ b/tests/manual/cplusplus/main.cpp @@ -0,0 +1,37 @@ + +#include <QFile> + +#include <cstdio> +#include <cstdlib> + +#include <TranslationUnit.h> +#include <Control.h> +#include <AST.h> +#include <Semantic.h> +#include <Scope.h> + +int main(int, char *[]) +{ + Control control; + StringLiteral *fileId = control.findOrInsertFileName("<stdin>"); + + QFile in; + if (! in.open(stdin, QFile::ReadOnly)) + return EXIT_FAILURE; + + const QByteArray source = in.readAll(); + + TranslationUnit unit(&control, fileId); + unit.setSource(source.constData(), source.size()); + unit.parse(); + + if (TranslationUnitAST *ast = unit.ast()) { + Scope globalScope; + Semantic sem(&control); + for (DeclarationAST *decl = ast->declarations; decl; decl = decl->next) { + sem.check(decl, &globalScope); + } + } + + return EXIT_SUCCESS; +} |