diff options
author | Nathan Sidwell <nathan@acm.org> | 2019-05-31 13:25:46 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2019-05-31 13:25:46 +0000 |
commit | ca3edeaed691cf971ebdf7768f5d73b182c1aa07 (patch) | |
tree | 70d2c9af2fdf1addd53538a38013476747599eca /gcc/cp/error.c | |
parent | 929c046d575c273e80000310b88c24af94cc4cf8 (diff) | |
download | gcc-ca3edeaed691cf971ebdf7768f5d73b182c1aa07.zip gcc-ca3edeaed691cf971ebdf7768f5d73b182c1aa07.tar.gz gcc-ca3edeaed691cf971ebdf7768f5d73b182c1aa07.tar.bz2 |
[C++PATCH] Lambda names are anonymous
https://gcc.gnu.org/ml/gcc-patches/2019-05/msg02126.html
* cp-tree.h (IDENTIFIER_LAMBDA_P): New.
(TYPE_ANON_P): New.
(LAMBDA_TYPE_P, TYPE_UNNAMED_P): Likewise.
(LAMBDANAME_PREFIX, LAMBDANAME_FORMAT): Delete.
(make_lambda_name): Don't declare.
* error.c (dump_aggr_type): Check for lambdas before other
anonymous names.
* lambda.c (begin_lambda_type): Use make_anon_name.
* cp-lang.c (cxx_dwarf_name): Lambda names smell anonymous.
* mangle.c (write_local_name): Likewise.
* name-lookup.c (lambda_cnt, make_lambda_name): Delete.
From-SVN: r271811
Diffstat (limited to 'gcc/cp/error.c')
-rw-r--r-- | gcc/cp/error.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/gcc/cp/error.c b/gcc/cp/error.c index 5e7c36d..d94f5a3 100644 --- a/gcc/cp/error.c +++ b/gcc/cp/error.c @@ -738,14 +738,7 @@ dump_aggr_type (cxx_pretty_printer *pp, tree t, int flags) name = DECL_NAME (name); } - if (!name || IDENTIFIER_ANON_P (name)) - { - if (flags & TFF_CLASS_KEY_OR_ENUM) - pp_string (pp, M_("<unnamed>")); - else - pp_printf (pp, M_("<unnamed %s>"), variety); - } - else if (LAMBDA_TYPE_P (t)) + if (LAMBDA_TYPE_P (t)) { /* A lambda's "type" is essentially its signature. */ pp_string (pp, M_("<lambda")); @@ -755,8 +748,16 @@ dump_aggr_type (cxx_pretty_printer *pp, tree t, int flags) flags); pp_greater (pp); } + else if (!name || IDENTIFIER_ANON_P (name)) + { + if (flags & TFF_CLASS_KEY_OR_ENUM) + pp_string (pp, M_("<unnamed>")); + else + pp_printf (pp, M_("<unnamed %s>"), variety); + } else pp_cxx_tree_identifier (pp, name); + if (tmplate) dump_template_parms (pp, TYPE_TEMPLATE_INFO (t), !CLASSTYPE_USE_TEMPLATE (t), |