aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely.gcc@gmail.com>2011-05-15 23:04:04 +0000
committerJonathan Wakely <redi@gcc.gnu.org>2011-05-16 00:04:04 +0100
commit5bef11c8e7138b24f9f30bb778218d5151df65cb (patch)
treee83a8318135245467cecdb74fe345cc1e99e90ac /gcc
parentdfb737fcca4b3bed9984d5136e58c919e1e1bb5d (diff)
downloadgcc-5bef11c8e7138b24f9f30bb778218d5151df65cb.zip
gcc-5bef11c8e7138b24f9f30bb778218d5151df65cb.tar.gz
gcc-5bef11c8e7138b24f9f30bb778218d5151df65cb.tar.bz2
re PR c++/48994 ([C++0x] error for trivial use of range-based 'for')
PR c++/48994 * parser.c (cp_parser_perform_range_for_lookup): Call complete_type. From-SVN: r173778
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/parser.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/range-for18.C17
4 files changed, 28 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index f0371ad..a425e75 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2011-05-15 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR c++/48994
+ * parser.c (cp_parser_perform_range_for_lookup): Call complete_type.
+
2011-05-13 Ville Voutilainen <ville.voutilainen@gmail.com>
Implement final on class.
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index a77d4ff..4e085ab 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -8682,7 +8682,7 @@ cp_convert_range_for (tree statement, tree range_decl, tree range_expr)
static tree
cp_parser_perform_range_for_lookup (tree range, tree *begin, tree *end)
{
- if (!COMPLETE_TYPE_P (TREE_TYPE (range)))
+ if (!COMPLETE_TYPE_P (complete_type (TREE_TYPE (range))))
{
error ("range-based %<for%> expression of type %qT "
"has incomplete type", TREE_TYPE (range));
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 94fa474..7065ec9 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2011-05-15 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR c++/48994
+ * g++.dg/cpp0x/range-for18.C: New.
+
2011-05-15 Tobias Burnus <burnus@net-b.de>
PR fortran/18918
diff --git a/gcc/testsuite/g++.dg/cpp0x/range-for18.C b/gcc/testsuite/g++.dg/cpp0x/range-for18.C
new file mode 100644
index 0000000..386d73d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/range-for18.C
@@ -0,0 +1,17 @@
+// PR c++/48994
+
+// { dg-do compile }
+// { dg-options "-std=c++0x" }
+
+template <typename T>
+struct myvec
+{
+ T* begin() const;
+ T* end() const;
+};
+
+void f(const myvec<int>& v)
+{
+ for (int i : v)
+ ;
+}