summaryrefslogtreecommitdiff
path: root/gcc/cp/parser.c
diff options
context:
space:
mode:
authorNicola Pero <nicola.pero@meta-innovation.com>2010-10-07 22:34:50 +0000
committerNicola Pero <nicola@gcc.gnu.org>2010-10-07 22:34:50 +0000
commitc154b3d8a1df6b4ae78e8388fc0a8bd1dbf48120 (patch)
tree455473998e5c9ec7c9dd8fd1ad23718ce9ad8d9b /gcc/cp/parser.c
parent2fb996b6d25fc277bc585e1a635c6e6c84492737 (diff)
downloadgcc-c154b3d8a1df6b4ae78e8388fc0a8bd1dbf48120.tar.gz
In gcc/testsuite/: 2010-10-07 Nicola Pero <nicola.pero@meta-innovation.com>
In gcc/testsuite/: 2010-10-07 Nicola Pero <nicola.pero@meta-innovation.com> * obj-c++.dg/encode-10.mm: New testcase. In gcc/cp/: 2010-10-07 Nicola Pero <nicola.pero@meta-innovation.com> * cp-tree.def: Changed type of AT_ENCODE_EXPR from tcc_unary to tcc_expression. * cxx-pretty-print.c (pp_cxx_unary_expression): Added case for AT_ENCODE_EXPR. * error.c (dump_expr): Added case for AT_ENCODE_EXPR. * pt.c (tsubst_copy): Added case for AT_ENCODE_EXPR. (value_dependent_expression_p): Added case for AT_ENCODE_EXPR. (type_dependent_expression_p): Added case for AT_ENCODE_EXPR. * parser.c (cp_parser_objc_encode_expression): Updated comment. From-SVN: r165138
Diffstat (limited to 'gcc/cp/parser.c')
-rw-r--r--gcc/cp/parser.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index f5fa793da4a..f5f4521a2d0 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -21128,6 +21128,12 @@ cp_parser_objc_encode_expression (cp_parser* parser)
return error_mark_node;
}
+ /* This happens if we find @encode(T) (where T is a template
+ typename or something dependent on a template typename) when
+ parsing a template. In that case, we can't compile it
+ immediately, but we rather create an AT_ENCODE_EXPR which will
+ need to be instantiated when the template is used.
+ */
if (dependent_type_p (type))
{
tree value = build_min (AT_ENCODE_EXPR, size_type_node, type);