From 27f866687cd4d810372ba8b8776650d314ea40ba Mon Sep 17 00:00:00 2001
From: Roberto Raggi <qtc-committer@nokia.com>
Date: Wed, 3 Dec 2008 11:34:46 +0100
Subject: [PATCH] Added a simple auto test for our C++ front-end.

---
 tests/manual/cplusplus/c++           |  3 +++
 tests/manual/cplusplus/conf.c++      |  7 ++++++
 tests/manual/cplusplus/cplusplus.pro | 19 ++++++++++++++
 tests/manual/cplusplus/main.cpp      | 37 ++++++++++++++++++++++++++++
 4 files changed, 66 insertions(+)
 create mode 100755 tests/manual/cplusplus/c++
 create mode 100644 tests/manual/cplusplus/conf.c++
 create mode 100644 tests/manual/cplusplus/cplusplus.pro
 create mode 100644 tests/manual/cplusplus/main.cpp

diff --git a/tests/manual/cplusplus/c++ b/tests/manual/cplusplus/c++
new file mode 100755
index 00000000000..f4cbb4fe5ca
--- /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 00000000000..fbfad57a4bc
--- /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 00000000000..0d965b8ed0a
--- /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 00000000000..18b89137a58
--- /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;
+}
-- 
GitLab