Gabriel Dos Reis <g...@integrable-solutions.net> writes:

[...]

>> --- a/gcc/cp/parser.c
>> +++ b/gcc/cp/parser.c
>> @@ -22520,10 +22520,14 @@ static void
>>  cp_parser_check_class_key (enum tag_types class_key, tree type)
>>  {
>>   if ((TREE_CODE (type) == UNION_TYPE) != (class_key == union_type))
>> -    permerror (input_location, "%qs tag used in naming %q#T",
>> -           class_key == union_type ? "union"
>> -            : class_key == record_type ? "struct" : "class",
>> -            type);
>> +    {
>> +      permerror (input_location, "%qs tag used in naming %q#T",
>> +                class_key == union_type ? "union"
>> +                : class_key == record_type ? "struct" : "class",
>> +                type);
>> +      inform (DECL_SOURCE_LOCATION (TYPE_NAME (type)),
>> +             "%q#T was previously declared here", type);
>> +    }
>>  }
>
> Hmm, I am wondering if we shouldn't remove the permerror and make it
> an unconditional error.

Just curious, do we have a rule about when to turn permerrors into
unconditional errors and thus stop providing legacy code bases with a
smooth migration path?

-- 
                Dodji

Reply via email to