Hi,
On 12/01/2014 09:59 PM, Jason Merrill wrote:
On 12/01/2014 07:01 AM, Fabien ChĂȘne wrote:
2014-11-03 21:18 GMT+01:00 Fabien ChĂȘne <fabien.ch...@gmail.com>:
2014-10-09 15:34 GMT+02:00 Jason Merrill <ja...@redhat.com>:
[...]
If the USING_DECL is returned, the code below will be rejected as
expected, but the error message will not mention the line where the
USING_DECL appears as the previous definition, but at the target
declaration of the USING_DECL instead.
I think that's what happens if you strip the USING_DECL and return
what it
points to; if you return the USING_DECL itself that shouldn't
happen (though
then the caller needs to be able to deal with getting a USING_DECL).
[Sorry for the delay] Humm, l_a_c_t returns a TYPE upon success, shall
I change it and return a DECL instead ?
Ping. Before I made the change, I'd like to be sure this is what you
have in mind.
I think that makes sense.
Today I was having a look to this pending issue and went astray due to
the broken thread: I wondered if, basing on Fabien' first try and the
comments accompanying tag_scope, it would make sense to use
strip_using_decl only when the scope is ts_global (or maybe !=
ts_current)?!? The below certainly passes testing. Unless of course
Fabien has the above implemented and ready (I don't, I miss the correct
changes to the lookup_and_check_tag callers)
Thanks,
Paolo.
/////////////////
Index: decl.c
===================================================================
--- decl.c (revision 220611)
+++ decl.c (working copy)
@@ -12207,6 +12207,9 @@ lookup_and_check_tag (enum tag_types tag_code, tre
&& DECL_TEMPLATE_TEMPLATE_PARM_P (decl))))
decl = DECL_TEMPLATE_RESULT (decl);
+ if (scope == ts_global)
+ decl = strip_using_decl (decl);
+
if (decl && TREE_CODE (decl) == TYPE_DECL)
{
/* Look for invalid nested type: