Subject: Re: bug#24246: 25.0.95; (c++-mode) custom/extra types not getting highlighted (as a type) after a wrapper::type argument.

From: Arash <[email-masked]>
Date: Thu, 08 Sep 2016 19:48:12 +0430

Alan Mackenzie wrote:

> Hello again, Arash.
>
> On Wed, Aug 17, 2016 at 01:24:17AM +0430, Arash wrote:
>> $ emacs -Q ab.cc
>
>> typedef int int32;
>
>> namespace wrapper {
>>     enum type { a, b, c };
>> }
>
>> // int32 doesn't get highlighted as a type.
>> void test(wrapper::type A, int32 B);
>
>
>> typedef wrapper::type wtype;
>
>> // here it works, so double colon is the problem?
>> void test(wtype A, int32 B);
>
> Thanks indeed for this bug report, and thanks even more for cutting it
> down to a nice, crisp, manageable file.
>
> The fontification code was not handling "::" in declarations correctly.
> I think I have corrected this, and I have committed it to our master
> branch at savannah.
>
> I see you're on the emacs-25 branch.  Could you please patch your Emacs
> with the following patch (the file is in directory .../lisp/progmodes),
> rebuild CC Mode (a single $ emacs -Q -batch -f batch-byte-compile
> .../lisp/progmodes/cc-engine.el should suffice), reload CC Mode into
> your Emacs (or restart Emacs), then try out the new system on your real
> code.
>
> Then please let me know whether the problem has been truly fixed, and
> if not, what is still wrong.  If everything is OK, I will close the bug.

Hi Alan. This is a bit late, sry.

// Here, first double colon causes the same problem.
void test(::base::string S, int32 test)
{ }

// and here, even "string" doesn't get highlighted.
void test(::base::string &S)
{ }