bug#32403: 27.0.50; cc mode: c-display-defun-name doesn't work when return type is a pointer

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

bug#32403: 27.0.50; cc mode: c-display-defun-name doesn't work when return type is a pointer

Mauro Aranda
Hello. I'm sending this report here because I tested in GNU Emacs 26.1.50 and the problem is not present. If it belongs to the CC Mode mailing list, please let me know.


I run: emacs -Q and visit a C file.

Inside a function that doesn't return a pointer, c-display-defun-name works just fine. Example:

int
dummy_returnint(int ret)
{
  return ret;
}

Minibuffer displays: dummy_returnint


But when the function returns a pointer, c-display-defun-name fails to display the function name in the minibuffer. Example:

int *
dummy_returnpointertoint(int *ret)
{
  return ret;
}

Minibuffer displays nothing


CC mode version is 5.33.1 in both.


In GNU Emacs 27.0.50 (build 2, i686-pc-linux-gnu, GTK+ Version 3.18.9)
 of 2018-08-08 built on the-blackbeard
Repository revision: c85ff212dcd0817b833032650f1d52850e8a3c2e
Windowing system distributor 'The X.Org Foundation', version 11.0.11906000
System Description: Ubuntu 16.04.5 LTS

Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS NOTIFY
ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB
TOOLKIT_SCROLL_BARS GTK3 X11 THREADS LCMS2

Important settings:
  value of $LANG: es_AR.UTF-8
  value of $XMODIFIERS:
  locale-coding-system: utf-8-unix

Major mode: C/*l

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t
  abbrev-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr help-fns radix-tree help-mode emacsbug message
rmc puny seq byte-opt gv bytecomp byte-compile cconv dired
dired-loaddefs format-spec rfc822 mml mml-sec password-cache epa derived
epg epg-config gnus-util rmail rmail-loaddefs mm-decode mm-bodies
mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail
rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils cc-mode
cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars
cc-defs cl-loaddefs cl-lib misearch multi-isearch jka-compr info
easymenu elec-pair time-date mule-util tooltip eldoc electric uniquify
ediff-hook vc-hooks lisp-float-type mwheel term/x-win x-win
term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode elisp-mode lisp-mode
prog-mode register page menu-bar rfn-eshadow isearch timer select
scroll-bar mouse jit-lock font-lock syntax facemenu font-core
term/tty-colors frame cl-generic cham georgian utf-8-lang misc-lang
vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932
hebrew greek romanian slovak czech european ethiopic indian cyrillic
chinese composite charscript charprop case-table epa-hook jka-cmpr-hook
help simple abbrev obarray minibuffer cl-preloaded nadvice loaddefs
button faces cus-face macroexp files text-properties overlay sha1 md5
base64 format env code-pages mule custom widget hashtable-print-readable
backquote threads dbusbind inotify lcms2 dynamic-setting
system-font-setting font-render-setting move-toolbar gtk x-toolkit x
multi-tty make-network-process emacs)

Memory information:
((conses 8 144019 19238)
 (symbols 24 22989 1)
 (miscs 20 89 398)
 (strings 16 39537 2547)
 (string-bytes 1 1168068)
 (vectors 12 17763)
 (vector-slots 4 584268 27730)
 (floats 8 66 344)
 (intervals 28 4892 66)
 (buffers 536 16)
 (heap 1024 29018 999))

Reply | Threaded
Open this post in threaded view
|

bug#32403: 27.0.50; cc mode: c-display-defun-name doesn't work when return type is a pointer

Eli Zaretskii
> From: Mauro Aranda <[hidden email]>
> Date: Wed, 8 Aug 2018 17:18:58 -0300
>
> Hello. I'm sending this report here because I tested in GNU Emacs 26.1.50 and the problem is not present. If
> it belongs to the CC Mode mailing list, please let me know.
>
> I run: emacs -Q and visit a C file.
>
> Inside a function that doesn't return a pointer, c-display-defun-name works just fine. Example:
>
> int
> dummy_returnint(int ret)
> {
>   return ret;
> }
>
> Minibuffer displays: dummy_returnint
>
> But when the function returns a pointer, c-display-defun-name fails to display the function name in the
> minibuffer. Example:
>
> int *
> dummy_returnpointertoint(int *ret)
> {
>   return ret;
> }
>
> Minibuffer displays nothing

Confirmed.  Alan, could you please take a look at this?



Reply | Threaded
Open this post in threaded view
|

bug#32403: 27.0.50; cc mode: c-display-defun-name doesn't work when return type is a pointer

Alan Mackenzie
Hello, Eli.

On Fri, Aug 17, 2018 at 12:24:50 +0300, Eli Zaretskii wrote:
> > From: Mauro Aranda <[hidden email]>
> > Date: Wed, 8 Aug 2018 17:18:58 -0300

> > Hello. I'm sending this report here because I tested in GNU Emacs 26.1.50 and the problem is not present. If
> > it belongs to the CC Mode mailing list, please let me know.

> > I run: emacs -Q and visit a C file.

> > Inside a function that doesn't return a pointer, c-display-defun-name works just fine. Example:

> > int
> > dummy_returnint(int ret)
> > {
> >   return ret;
> > }

> > Minibuffer displays: dummy_returnint

> > But when the function returns a pointer, c-display-defun-name fails to display the function name in the
> > minibuffer. Example:

> > int *
> > dummy_returnpointertoint(int *ret)
> > {
> >   return ret;
> > }

> > Minibuffer displays nothing

> Confirmed.  Alan, could you please take a look at this?

Yes, certainly.  I've worked out a patch for Mauro's failure case (with
the function's type being a pointer).

Additionally, I've found a couple of edge cases which currently aren't
working right:

    struct foo bar = {0, 0};

returns "struct foo" on C-c C-z.  It ought to return "bar";

    struct foo {int a; int b} bar = {0, 0};

also ought to return "bar".

It shouldn't be too much work to fix these two, too.  I hope to have this
done by tomorrow (European time) or, at the latest, on Sunday.

--
Alan Mackenzie (Nuremberg, Germany).



Reply | Threaded
Open this post in threaded view
|

bug#32403: 27.0.50; cc mode: c-display-defun-name doesn't work when return type is a pointer

Alan Mackenzie
Hello, Mauro, hello, Eli.

On Fri, Aug 17, 2018 at 20:37:07 +0000, Alan Mackenzie wrote:
> On Fri, Aug 17, 2018 at 12:24:50 +0300, Eli Zaretskii wrote:
> > > From: Mauro Aranda <[hidden email]>
> > > Date: Wed, 8 Aug 2018 17:18:58 -0300

> > > Hello. I'm sending this report here because I tested in GNU Emacs 26.1.50 and the problem is not present. If
> > > it belongs to the CC Mode mailing list, please let me know.

> > > I run: emacs -Q and visit a C file.

> > > Inside a function that doesn't return a pointer, c-display-defun-name works just fine. Example:

> > > int
> > > dummy_returnint(int ret)
> > > {
> > >   return ret;
> > > }

> > > Minibuffer displays: dummy_returnint

> > > But when the function returns a pointer, c-display-defun-name fails to display the function name in the
> > > minibuffer. Example:

> > > int *
> > > dummy_returnpointertoint(int *ret)
> > > {
> > >   return ret;
> > > }

> > > Minibuffer displays nothing

> > Confirmed.  Alan, could you please take a look at this?

> Yes, certainly.  I've worked out a patch for Mauro's failure case (with
> the function's type being a pointer).

> Additionally, I've found a couple of edge cases which currently aren't
> working right:

>     struct foo bar = {0, 0};

> returns "struct foo" on C-c C-z.  It ought to return "bar";

>     struct foo {int a; int b} bar = {0, 0};

> also ought to return "bar".

> It shouldn't be too much work to fix these two, too.  I hope to have this
> done by tomorrow (European time) or, at the latest, on Sunday.

I've committed a fix for this to master.  It was a bit trickier than I'd
anticipated.

Mauro, would you please test the fix with your real source code and
either confirm to me that the problem has indeed been fixed, or tell me
where it's still failing.  Thanks!

--
Alan Mackenzie (Nuremberg, Germany).



Reply | Threaded
Open this post in threaded view
|

bug#32403: 27.0.50; cc mode: c-display-defun-name doesn't work when return type is a pointer

Mauro Aranda
Hi Alan,

The fix works great.  Thank you!



2018-08-26 8:25 GMT-03:00 Alan Mackenzie <[hidden email]>:
Hello, Mauro, hello, Eli.

On Fri, Aug 17, 2018 at 20:37:07 +0000, Alan Mackenzie wrote:
> On Fri, Aug 17, 2018 at 12:24:50 +0300, Eli Zaretskii wrote:
> > > From: Mauro Aranda <[hidden email]>
> > > Date: Wed, 8 Aug 2018 17:18:58 -0300

> > > Hello. I'm sending this report here because I tested in GNU Emacs 26.1.50 and the problem is not present. If
> > > it belongs to the CC Mode mailing list, please let me know.

> > > I run: emacs -Q and visit a C file.

> > > Inside a function that doesn't return a pointer, c-display-defun-name works just fine. Example:

> > > int
> > > dummy_returnint(int ret)
> > > {
> > >   return ret;
> > > }

> > > Minibuffer displays: dummy_returnint

> > > But when the function returns a pointer, c-display-defun-name fails to display the function name in the
> > > minibuffer. Example:

> > > int *
> > > dummy_returnpointertoint(int *ret)
> > > {
> > >   return ret;
> > > }

> > > Minibuffer displays nothing

> > Confirmed.  Alan, could you please take a look at this?

> Yes, certainly.  I've worked out a patch for Mauro's failure case (with
> the function's type being a pointer).

> Additionally, I've found a couple of edge cases which currently aren't
> working right:

>     struct foo bar = {0, 0};

> returns "struct foo" on C-c C-z.  It ought to return "bar";

>     struct foo {int a; int b} bar = {0, 0};

> also ought to return "bar".

> It shouldn't be too much work to fix these two, too.  I hope to have this
> done by tomorrow (European time) or, at the latest, on Sunday.

I've committed a fix for this to master.  It was a bit trickier than I'd
anticipated.

Mauro, would you please test the fix with your real source code and
either confirm to me that the problem has indeed been fixed, or tell me
where it's still failing.  Thanks!

--
Alan Mackenzie (Nuremberg, Germany).

Reply | Threaded
Open this post in threaded view
|

bug#32403: 27.0.50; cc mode: c-display-defun-name doesn't work when return type is a pointer

Alan Mackenzie
Hello, Mauro.

On Sun, Aug 26, 2018 at 11:40:38 -0300, Mauro Aranda wrote:
> Hi Alan,

> The fix works great.  Thank you!

Thanks for the testing!  I'm closing the bug.

--
Alan Mackenzie (Nuremberg, Germany).