aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/template
diff options
context:
space:
mode:
authordberlin <dberlin@138bc75d-0d04-0410-961f-82ee72b054a4>2006-04-24 21:54:38 +0000
committerdberlin <dberlin@138bc75d-0d04-0410-961f-82ee72b054a4>2006-04-24 21:54:38 +0000
commit55698a19bb5efff72e4fa777e542b44e1a4a0c86 (patch)
tree59ad3abfd2f56dfe9900ab3eb2b0a1f90c0f49df /gcc/testsuite/g++.dg/template
parent21976b9f3a3a0777077e82956495336c0fff935c (diff)
Merge from mainline
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/dataflow-branch@113230 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite/g++.dg/template')
-rw-r--r--gcc/testsuite/g++.dg/template/crash35.C2
-rw-r--r--gcc/testsuite/g++.dg/template/crash45.C13
-rw-r--r--gcc/testsuite/g++.dg/template/crash46.C5
-rw-r--r--gcc/testsuite/g++.dg/template/friend41.C11
-rw-r--r--gcc/testsuite/g++.dg/template/new3.C17
-rw-r--r--gcc/testsuite/g++.dg/template/pure1.C6
6 files changed, 53 insertions, 1 deletions
diff --git a/gcc/testsuite/g++.dg/template/crash35.C b/gcc/testsuite/g++.dg/template/crash35.C
index dd8aa2f0906..348d91d0caf 100644
--- a/gcc/testsuite/g++.dg/template/crash35.C
+++ b/gcc/testsuite/g++.dg/template/crash35.C
@@ -5,5 +5,5 @@ template <typename T> struct C; // { dg-error "declaration" }
template <typename T> void C<T>::f() // { dg-error "invalid|template" }
{
- const foo bar; // { dg-error "name a type" }
+ const foo bar;
}
diff --git a/gcc/testsuite/g++.dg/template/crash45.C b/gcc/testsuite/g++.dg/template/crash45.C
new file mode 100644
index 00000000000..f138e3d6169
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/crash45.C
@@ -0,0 +1,13 @@
+// PR c++/26365
+
+struct A {};
+
+namespace N
+{
+ template<int> void foo();
+}
+
+void bar(A *p)
+{
+ p->N::foo<0>; // { dg-error "not a member" }
+}
diff --git a/gcc/testsuite/g++.dg/template/crash46.C b/gcc/testsuite/g++.dg/template/crash46.C
new file mode 100644
index 00000000000..6fbda7c0767
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/crash46.C
@@ -0,0 +1,5 @@
+// PR c++/27102
+
+template <class T>
+void T::foo() {} // { dg-error "invalid" }
+
diff --git a/gcc/testsuite/g++.dg/template/friend41.C b/gcc/testsuite/g++.dg/template/friend41.C
new file mode 100644
index 00000000000..6d686019d9a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/friend41.C
@@ -0,0 +1,11 @@
+// PR c++/26912
+
+struct Foo {
+ template<class T> int func() const;
+};
+
+class Bar {
+ friend int Foo::func<int>() const;
+};
+
+
diff --git a/gcc/testsuite/g++.dg/template/new3.C b/gcc/testsuite/g++.dg/template/new3.C
new file mode 100644
index 00000000000..c6c108903e1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/new3.C
@@ -0,0 +1,17 @@
+extern void *operator new(__SIZE_TYPE__); // { dg-error "candidate" }
+
+template <class T >
+struct C
+{
+ void f() {
+ int* node;
+ new (&node) int(0); // { dg-error "new" }
+ }
+};
+
+void* operator new(__SIZE_TYPE__, void* __p);
+
+void g() {
+ C<int> c;
+ c.f();
+}
diff --git a/gcc/testsuite/g++.dg/template/pure1.C b/gcc/testsuite/g++.dg/template/pure1.C
new file mode 100644
index 00000000000..ca9b94e00b7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/pure1.C
@@ -0,0 +1,6 @@
+// PR c++/26122
+
+struct A
+{
+ template<int> void foo() = 1; // { dg-error "pure" }
+};