diff options
author | Roberto Raggi <qtc-committer@nokia.com> | 2008-12-03 11:34:46 +0100 |
---|---|---|
committer | Roberto Raggi <qtc-committer@nokia.com> | 2008-12-03 11:35:15 +0100 |
commit | 27f866687cd4d810372ba8b8776650d314ea40ba (patch) | |
tree | ba69fc136bf0960aeb37dc6b58bc05350ffc9fe0 /tests/manual/cplusplus | |
parent | 56f788ccefc9b5a0a8fad88e53439fd08bb18263 (diff) | |
download | qt-creator-27f866687cd4d810372ba8b8776650d314ea40ba.tar.gz |
Added a simple auto test for our C++ front-end.
Diffstat (limited to 'tests/manual/cplusplus')
-rwxr-xr-x | tests/manual/cplusplus/c++ | 3 | ||||
-rw-r--r-- | tests/manual/cplusplus/conf.c++ | 7 | ||||
-rw-r--r-- | tests/manual/cplusplus/cplusplus.pro | 19 | ||||
-rw-r--r-- | tests/manual/cplusplus/main.cpp | 37 |
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; +} |