aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/error.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/cp/error.c')
-rw-r--r--gcc/cp/error.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/gcc/cp/error.c b/gcc/cp/error.c
index b811df2..4f85751 100644
--- a/gcc/cp/error.c
+++ b/gcc/cp/error.c
@@ -1333,6 +1333,15 @@ dump_template_decl (cxx_pretty_printer *pp, tree t, int flags)
}
}
+ if (flag_concepts)
+ if (tree ci = get_constraints (t))
+ if (check_constraint_info (ci))
+ if (tree reqs = CI_TEMPLATE_REQS (ci))
+ {
+ pp_cxx_requires_clause (pp, reqs);
+ pp_cxx_whitespace (pp);
+ }
+
if (DECL_CLASS_TEMPLATE_P (t))
dump_type (pp, TREE_TYPE (t),
((flags & ~TFF_CLASS_KEY_OR_ENUM) | TFF_TEMPLATE_NAME
@@ -1564,6 +1573,11 @@ dump_function_decl (cxx_pretty_printer *pp, tree t, int flags)
if (show_return)
dump_type_suffix (pp, TREE_TYPE (fntype), flags);
+ if (flag_concepts)
+ if (tree ci = get_constraints (t))
+ if (tree reqs = CI_DECLARATOR_REQS (ci))
+ pp_cxx_requires_clause (pp, reqs);
+
dump_substitution (pp, t, template_parms, template_args, flags);
}
else if (template_args)
@@ -2689,6 +2703,38 @@ dump_expr (cxx_pretty_printer *pp, tree t, int flags)
pp_cxx_right_paren (pp);
break;
+ case REQUIRES_EXPR:
+ pp_cxx_requires_expr (cxx_pp, t);
+ break;
+
+ case SIMPLE_REQ:
+ pp_cxx_simple_requirement (cxx_pp, t);
+ break;
+
+ case TYPE_REQ:
+ pp_cxx_type_requirement (cxx_pp, t);
+ break;
+
+ case COMPOUND_REQ:
+ pp_cxx_compound_requirement (cxx_pp, t);
+ break;
+
+ case NESTED_REQ:
+ pp_cxx_nested_requirement (cxx_pp, t);
+ break;
+
+ case PRED_CONSTR:
+ case EXPR_CONSTR:
+ case TYPE_CONSTR:
+ case ICONV_CONSTR:
+ case DEDUCT_CONSTR:
+ case EXCEPT_CONSTR:
+ case PARM_CONSTR:
+ case CONJ_CONSTR:
+ case DISJ_CONSTR:
+ pp_cxx_constraint (cxx_pp, t);
+ break;
+
case PLACEHOLDER_EXPR:
pp_string (pp, M_("*this"));
break;