summaryrefslogtreecommitdiff
path: root/tests/manual/cplusplus
diff options
context:
space:
mode:
authorRoberto Raggi <qtc-committer@nokia.com>2008-12-03 11:34:46 +0100
committerRoberto Raggi <qtc-committer@nokia.com>2008-12-03 11:35:15 +0100
commit27f866687cd4d810372ba8b8776650d314ea40ba (patch)
treeba69fc136bf0960aeb37dc6b58bc05350ffc9fe0 /tests/manual/cplusplus
parent56f788ccefc9b5a0a8fad88e53439fd08bb18263 (diff)
downloadqt-creator-27f866687cd4d810372ba8b8776650d314ea40ba.tar.gz
Added a simple auto test for our C++ front-end.
Diffstat (limited to 'tests/manual/cplusplus')
-rwxr-xr-xtests/manual/cplusplus/c++3
-rw-r--r--tests/manual/cplusplus/conf.c++7
-rw-r--r--tests/manual/cplusplus/cplusplus.pro19
-rw-r--r--tests/manual/cplusplus/main.cpp37
4 files changed, 66 insertions, 0 deletions
diff --git a/tests/manual/cplusplus/c++ b/tests/manual/cplusplus/c++
new file mode 100755
index 0000000000..f4cbb4fe5c
--- /dev/null
+++ b/tests/manual/cplusplus/c++
@@ -0,0 +1,3 @@
+#!/bin/sh
+me=$(dirname $0)
+${CPP-gcc} -xc++ -E -include $me/conf.c++ $* | $me/cplusplus0
diff --git a/tests/manual/cplusplus/conf.c++ b/tests/manual/cplusplus/conf.c++
new file mode 100644
index 0000000000..fbfad57a4b
--- /dev/null
+++ b/tests/manual/cplusplus/conf.c++
@@ -0,0 +1,7 @@
+#define __extension__
+#define __context__
+#define __range__
+#define __asm(a...)
+#define __asm__(a...)
+#define restrict
+#define __restrict
diff --git a/tests/manual/cplusplus/cplusplus.pro b/tests/manual/cplusplus/cplusplus.pro
new file mode 100644
index 0000000000..0d965b8ed0
--- /dev/null
+++ b/tests/manual/cplusplus/cplusplus.pro
@@ -0,0 +1,19 @@
+QT = core
+macx:CONFIG -= app_bundle
+TARGET = cplusplus0
+
+include(../../../shared/cplusplus/cplusplus.pri)
+
+# Input
+SOURCES += main.cpp
+
+unix {
+ debug:OBJECTS_DIR = $${OUT_PWD}/.obj/debug-shared
+ release:OBJECTS_DIR = $${OUT_PWD}/.obj/release-shared
+
+ debug:MOC_DIR = $${OUT_PWD}/.moc/debug-shared
+ release:MOC_DIR = $${OUT_PWD}/.moc/release-shared
+
+ RCC_DIR = $${OUT_PWD}/.rcc/
+ UI_DIR = $${OUT_PWD}/.uic/
+}
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;
+}