summaryrefslogtreecommitdiff
path: root/tests/manual/cplusplus/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/manual/cplusplus/main.cpp')
-rw-r--r--tests/manual/cplusplus/main.cpp37
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;
+}