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
This commit is contained in:
Jonathan Wakely 2011-05-15 23:04:04 +00:00 committed by Jonathan Wakely
parent dfb737fcca
commit 5bef11c8e7
4 changed files with 28 additions and 1 deletions

View 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.

View 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));

View 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

View File

@ -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)
;
}