re PR c++/48530 ([C++0x][SFINAE] Hard errors with deleted d'tors)

/cp
2011-04-28  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/48530
	* tree.c (build_cplus_new): Check build_target_expr return
	value for error_mark_node.

/testsuite
2011-04-28  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/48530
	* g++.dg/cpp0x/sfinae18.C: New.

From-SVN: r173063
This commit is contained in:
Paolo Carlini 2011-04-28 09:54:04 +00:00 committed by Paolo Carlini
parent 83b6b866e6
commit a6343f618b
4 changed files with 32 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2011-04-28 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/48530
* tree.c (build_cplus_new): Check build_target_expr return
value for error_mark_node.
2011-04-28 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/48771

View File

@ -1,6 +1,6 @@
/* Language-dependent node constructors for parse phase of GNU compiler.
Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010
1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011
Free Software Foundation, Inc.
Hacked by Michael Tiemann (tiemann@cygnus.com)
@ -456,7 +456,9 @@ build_cplus_new (tree type, tree init, tsubst_flags_t complain)
return rval;
rval = build_target_expr (slot, rval, complain);
TARGET_EXPR_IMPLICIT_P (rval) = 1;
if (rval != error_mark_node)
TARGET_EXPR_IMPLICIT_P (rval) = 1;
return rval;
}

View File

@ -1,3 +1,8 @@
2011-04-28 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/48530
* g++.dg/cpp0x/sfinae18.C: New.
2011-04-28 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/48771

View File

@ -0,0 +1,17 @@
// PR c++/48530
// { dg-options -std=c++0x }
template<class T,
class = decltype(T())
>
char f(int);
template<class>
char (&f(...))[2];
struct DelDtor {
DelDtor() = default;
~DelDtor() = delete;
};
static_assert(sizeof(f<DelDtor>(0)) != 1, "Error");