OSDN Git Service

PR c++/48994
authorredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 15 May 2011 23:04:04 +0000 (23:04 +0000)
committerredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 15 May 2011 23:04:04 +0000 (23:04 +0000)
* parser.c (cp_parser_perform_range_for_lookup): Call complete_type.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@173778 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/parser.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/range-for18.C [new file with mode: 0644]

index f0371ad..a425e75 100644 (file)
@@ -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.
index a77d4ff..4e085ab 100644 (file)
@@ -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));
index 94fa474..7065ec9 100644 (file)
@@ -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 (file)
index 0000000..386d73d
--- /dev/null
@@ -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)
+        ;
+}