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