Commit fdf03377 by Jason Merrill Committed by Jason Merrill

re PR c++/50075 ([C++0x] ICE related to parameter deduction and initializer_list)

	PR c++/50075
	* name-lookup.c (local_bindings_p): New.
	* name-lookup.h: Declare it.
	* lex.c (unqualified_name_lookup_error): Use it.

From-SVN: r177743
parent b23903f7
2011-08-13 Jason Merrill <jason@redhat.com>
PR c++/50075
* name-lookup.c (local_bindings_p): New.
* name-lookup.h: Declare it.
* lex.c (unqualified_name_lookup_error): Use it.
PR c++/50059
* error.c (dump_expr): Handle MODIFY_EXPR properly.
......
......@@ -456,7 +456,7 @@ unqualified_name_lookup_error (tree name)
}
/* Prevent repeated error messages by creating a VAR_DECL with
this NAME in the innermost block scope. */
if (current_function_decl)
if (local_bindings_p ())
{
tree decl;
decl = build_decl (input_location,
......
......@@ -1608,6 +1608,15 @@ namespace_bindings_p (void)
return b->kind == sk_namespace;
}
/* True if the innermost non-class scope is a block scope. */
bool
local_bindings_p (void)
{
cp_binding_level *b = innermost_nonclass_level ();
return b->kind < sk_function_parms || b->kind == sk_omp;
}
/* True if the current level needs to have a BLOCK made. */
bool
......
......@@ -292,6 +292,7 @@ extern bool kept_level_p (void);
extern bool global_bindings_p (void);
extern bool toplevel_bindings_p (void);
extern bool namespace_bindings_p (void);
extern bool local_bindings_p (void);
extern bool template_parm_scope_p (void);
extern scope_kind innermost_scope_kind (void);
extern cp_binding_level *begin_scope (scope_kind, tree);
......
2011-08-13 Jason Merrill <jason@redhat.com>
PR c++/50075
* g++.dg/cpp0x/decltype32.C: New.
PR c++/50059
* g++.dg/diagnostic/expr1.C: New.
......
// PR c++/50075
// { dg-options -std=c++0x }
template <typename T>
auto make_array(const T& il) -> // { dg-error "not declared" }
decltype(make_array(il))
{ }
int main()
{
int z = make_array(1); // { dg-error "no match" }
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment