c++: Fix ENABLE_SCOPE_CHECKING printing
The lists of scope kinds used by ENABLE_SCOPE_CHECKING don't seem to have been updated in a long while, causing ICEs and confusing output. This patch brings the list into line. Additionally, the comment on 'explicit_spec_p' says that the flag is only valid if kind is 'sk_template_parms', so we rewrite the condition to be more obviously correct here. gcc/cp/ChangeLog: * name-lookup.h (enum scope_kind): Add 'sk_count'. * name-lookup.cc (cp_binding_level_descriptor): Add missing scope kinds. Add assertion that the list is up to date. Fix handling of explicit_spec_p. Signed-off-by: Nathaniel Shead <nathanieloshead@gmail.com>
This commit is contained in:
parent
7d39726975
commit
fe1649eea7
2 changed files with 14 additions and 4 deletions
|
@ -4464,14 +4464,23 @@ cp_binding_level_descriptor (cp_binding_level *scope)
|
|||
"try-scope",
|
||||
"catch-scope",
|
||||
"for-scope",
|
||||
"cond-init-scope",
|
||||
"stmt-expr-scope",
|
||||
"function-parameter-scope",
|
||||
"class-scope",
|
||||
"enum-scope",
|
||||
"namespace-scope",
|
||||
"template-parameter-scope",
|
||||
"template-explicit-spec-scope"
|
||||
"template-explicit-spec-scope",
|
||||
"transaction-scope",
|
||||
"openmp-scope"
|
||||
};
|
||||
const scope_kind kind = scope->explicit_spec_p
|
||||
? sk_template_spec : scope->kind;
|
||||
static_assert (ARRAY_SIZE (scope_kind_names) == sk_count,
|
||||
"must keep names aligned with scope_kind enum");
|
||||
|
||||
scope_kind kind = scope->kind;
|
||||
if (kind == sk_template_parms && scope->explicit_spec_p)
|
||||
kind = sk_template_spec;
|
||||
|
||||
return scope_kind_names[kind];
|
||||
}
|
||||
|
|
|
@ -213,7 +213,8 @@ enum scope_kind {
|
|||
explicit specialization is introduced by
|
||||
"template <>", this scope is always empty. */
|
||||
sk_transaction, /* A synchronized or atomic statement. */
|
||||
sk_omp /* An OpenMP structured block. */
|
||||
sk_omp, /* An OpenMP structured block. */
|
||||
sk_count /* Number of scope_kind enumerations. */
|
||||
};
|
||||
|
||||
struct GTY(()) cp_class_binding {
|
||||
|
|
Loading…
Add table
Reference in a new issue