From 8711c3cff5b2b8a8f9feb5eaebd55b473bcf6c8d Mon Sep 17 00:00:00 2001 From: cxl Date: Sat, 25 Jul 2015 10:39:37 +0000 Subject: [PATCH] .autotest git-svn-id: svn://ultimatepp.org/upp/trunk@8746 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- autotest/CppParser/CppParser.upp | 4 +- autotest/CppParser/test32.in | 4 ++ autotest/CppParser/test32.out | 66 ++++++++++++++++---------------- autotest/CppParser/test33.in | 11 ++++++ autotest/CppParser/test33.out | 9 +++++ 5 files changed, 60 insertions(+), 34 deletions(-) create mode 100644 autotest/CppParser/test33.in create mode 100644 autotest/CppParser/test33.out diff --git a/autotest/CppParser/CppParser.upp b/autotest/CppParser/CppParser.upp index 453a5b903..ca8bf2244 100644 --- a/autotest/CppParser/CppParser.upp +++ b/autotest/CppParser/CppParser.upp @@ -69,7 +69,9 @@ file test31.in, test31.out, test32.in, - test32.out; + test32.out, + test33.in, + test33.out; mainconfig "" = "", diff --git a/autotest/CppParser/test32.in b/autotest/CppParser/test32.in index 6f4509060..837861a23 100644 --- a/autotest/CppParser/test32.in +++ b/autotest/CppParser/test32.in @@ -1,7 +1,10 @@ // This is a test of minor C++11 features +static_assert(sizeof(long)>=8, "64-bit code generation required for this library."); + template class Test { + static_assert(sizeof(long)>=8, "64-bit code generation required for this library."); T a = 10; U b{123}; }; @@ -44,6 +47,7 @@ thread_local int ThreadLocal; void Fn() { + static_assert(sizeof(long)>=8, "64-bit code generation required for this library."); Test< Test< Test >, Point> x; Test>, Point> y; int x{7}; diff --git a/autotest/CppParser/test32.out b/autotest/CppParser/test32.out index 033f0c47d..5bb4e8528 100644 --- a/autotest/CppParser/test32.out +++ b/autotest/CppParser/test32.out @@ -1,49 +1,49 @@ Test { - STRUCTTEMPLATE, name: Test, qitem: class, qtype: Test, qptype: , natural: template class Test, line 3, using - INSTANCEVARIABLE, name: a, qitem: a, qtype: 0, qptype: , natural: T a, line 5, using - INSTANCEVARIABLE, name: b, qitem: b, qtype: 1, qptype: , natural: U b, line 6, using + STRUCTTEMPLATE, name: Test, qitem: class, qtype: Test, qptype: , natural: template class Test, line 5, using + INSTANCEVARIABLE, name: a, qitem: a, qtype: 0, qptype: , natural: T a, line 8, using + INSTANCEVARIABLE, name: b, qitem: b, qtype: 1, qptype: , natural: U b, line 9, using } Y { - STRUCT, name: Y, qitem: class, qtype: Y, qptype: , natural: class Y, line 9, using - INSTANCEFUNCTION, name: operator=, qitem: operator=(const Y&), qtype: Y, qptype: Y, natural: Y& operator=(const Y&) = default, line 10, using - CONSTRUCTOR, name: Y, qitem: Y(const Y&), qtype: , qptype: Y, natural: Y(const Y&) = default, line 11, using + STRUCT, name: Y, qitem: class, qtype: Y, qptype: , natural: class Y, line 12, using + INSTANCEFUNCTION, name: operator=, qitem: operator=(const Y&), qtype: Y, qptype: Y, natural: Y& operator=(const Y&) = default, line 13, using + CONSTRUCTOR, name: Y, qitem: Y(const Y&), qtype: , qptype: Y, natural: Y(const Y&) = default, line 14, using } { - FUNCTION, name: operator|, qitem: operator|(Flags,Flags), qtype: , qptype: Flags;Flags, natural: constexpr int operator|(Flags f1, Flags f2), line 14, using - VARIABLE, name: aligned_array, qitem: aligned_array, qtype: , qptype: , natural: alignas(double) unsigned char aligned_array[1024], line 31, using , pointer - FUNCTION, name: foo, qitem: foo(double)noexcept, qtype: , qptype: , natural: double foo(double) noexcept, line 33, using - VARIABLE, name: override, qitem: override, qtype: , qptype: , natural: int override, line 40, using - VARIABLE, name: final, qitem: final, qtype: , qptype: , natural: int final, line 41, using - VARIABLE, name: ThreadLocal, qitem: ThreadLocal, qtype: , qptype: , natural: thread_local int ThreadLocal, line 43, using - FUNCTION, name: Fn, qitem: Fn(), qtype: , qptype: , natural: void Fn(), line 45, using + FUNCTION, name: operator|, qitem: operator|(Flags,Flags), qtype: , qptype: Flags;Flags, natural: constexpr int operator|(Flags f1, Flags f2), line 17, using + VARIABLE, name: aligned_array, qitem: aligned_array, qtype: , qptype: , natural: alignas(double) unsigned char aligned_array[1024], line 34, using , pointer + FUNCTION, name: foo, qitem: foo(double)noexcept, qtype: , qptype: , natural: double foo(double) noexcept, line 36, using + VARIABLE, name: override, qitem: override, qtype: , qptype: , natural: int override, line 43, using + VARIABLE, name: final, qitem: final, qtype: , qptype: , natural: int final, line 44, using + VARIABLE, name: ThreadLocal, qitem: ThreadLocal, qtype: , qptype: , natural: thread_local int ThreadLocal, line 46, using + FUNCTION, name: Fn, qitem: Fn(), qtype: , qptype: , natural: void Fn(), line 48, using } X { - STRUCT, name: X, qitem: class, qtype: X, qptype: , natural: class X, line 16, using - CONSTRUCTOR, name: X, qitem: X(int), qtype: , qptype: , natural: X(int x), line 17, using - CONSTRUCTOR, name: X, qitem: X(), qtype: , qptype: , natural: X(), line 18, using - CONSTRUCTOR, name: X, qitem: X(string), qtype: , qptype: string, natural: X(string s), line 19, using + STRUCT, name: X, qitem: class, qtype: X, qptype: , natural: class X, line 19, using + CONSTRUCTOR, name: X, qitem: X(int), qtype: , qptype: , natural: X(int x), line 20, using + CONSTRUCTOR, name: X, qitem: X(), qtype: , qptype: , natural: X(), line 21, using + CONSTRUCTOR, name: X, qitem: X(string), qtype: , qptype: string, natural: X(string s), line 22, using } Point { - STRUCT, name: Point, qitem: struct, qtype: Point, qptype: , natural: struct Point, line 23, using - INSTANCEVARIABLE, name: x, qitem: x, qtype: , qptype: , natural: int x, line 23, using - INSTANCEVARIABLE, name: y, qitem: y, qtype: , qptype: , natural: int y, line 23, using + STRUCT, name: Point, qitem: struct, qtype: Point, qptype: , natural: struct Point, line 26, using + INSTANCEVARIABLE, name: x, qitem: x, qtype: , qptype: , natural: int x, line 26, using + INSTANCEVARIABLE, name: y, qitem: y, qtype: , qptype: , natural: int y, line 26, using } U1 { - STRUCT, name: U1, qitem: union, qtype: U1, qptype: , natural: union U1, line 25, using - INSTANCEVARIABLE, name: m1, qitem: m1, qtype: , qptype: , natural: int m1, line 26, using - INSTANCEVARIABLE, name: m2, qitem: m2, qtype: complex, qptype: , natural: complex m2, line 27, using - INSTANCEVARIABLE, name: m3, qitem: m3, qtype: string, qptype: , natural: string m3, line 28, using + STRUCT, name: U1, qitem: union, qtype: U1, qptype: , natural: union U1, line 28, using + INSTANCEVARIABLE, name: m1, qitem: m1, qtype: , qptype: , natural: int m1, line 29, using + INSTANCEVARIABLE, name: m2, qitem: m2, qtype: complex, qptype: , natural: complex m2, line 30, using + INSTANCEVARIABLE, name: m3, qitem: m3, qtype: string, qptype: , natural: string m3, line 31, using } OverrideFinal { - STRUCT, name: OverrideFinal, qitem: struct, qtype: OverrideFinal, qptype: , natural: struct OverrideFinal, line 35, using - INSTANCEFUNCTION, name: Foo, qitem: Foo()final, qtype: , qptype: , natural: void Foo() final, line 36, using - INSTANCEFUNCTION, name: Bar, qitem: Bar()override, qtype: , qptype: , natural: void Bar() override, line 37, using + STRUCT, name: OverrideFinal, qitem: struct, qtype: OverrideFinal, qptype: , natural: struct OverrideFinal, line 38, using + INSTANCEFUNCTION, name: Foo, qitem: Foo()final, qtype: , qptype: , natural: void Foo() final, line 39, using + INSTANCEFUNCTION, name: Bar, qitem: Bar()override, qtype: , qptype: , natural: void Bar() override, line 40, using } { -x Test>,Point>, line: 47 -y Test>,Point>, line: 48 -x , line: 49 -y , line: 51 -ll , line: 52 -p pointer, line: 53 +x Test>,Point>, line: 51 +y Test>,Point>, line: 52 +x , line: 53 +y , line: 55 +ll , line: 56 +p pointer, line: 57 } \ No newline at end of file diff --git a/autotest/CppParser/test33.in b/autotest/CppParser/test33.in new file mode 100644 index 000000000..817522ba9 --- /dev/null +++ b/autotest/CppParser/test33.in @@ -0,0 +1,11 @@ +auto Foo(int x) -> String; + +template +decltype(function(T) + v) Test(); + +auto Bar(int x, int y) -> decltype(x + y); + +template +void Body() +{ + decltype(H + H) hh; diff --git a/autotest/CppParser/test33.out b/autotest/CppParser/test33.out new file mode 100644 index 000000000..ce82cd44e --- /dev/null +++ b/autotest/CppParser/test33.out @@ -0,0 +1,9 @@ + { + FUNCTION, name: Foo, qitem: Foo(int), qtype: String, qptype: , natural: auto Foo(int x) -> String, line 1, using + FUNCTIONTEMPLATE, name: Test, qitem: Test(), qtype: @function(T)+v, qptype: , natural: template decltype(function(T) + v) Test(), line 3, using + FUNCTION, name: Bar, qitem: Bar(int,int), qtype: @x+y, qptype: ;, natural: auto Bar(int x, int y) -> decltype(x + y), line 6, using + FUNCTIONTEMPLATE, name: Body, qitem: Body(), qtype: , qptype: , natural: template void Body(), line 8, using +} + { +hh @H + H, line: 11 +} \ No newline at end of file