GNU bug report logs - #61482
30.0.50; tree-sitter-c doesn't support _Generic

Previous Next

Package: emacs;

Reported by: Po Lu <luangruo <at> yahoo.com>

Date: Mon, 13 Feb 2023 15:34:01 UTC

Severity: normal

Found in version 30.0.50

To reply to this bug, email your comments to 61482 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#61482; Package emacs. (Mon, 13 Feb 2023 15:34:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Po Lu <luangruo <at> yahoo.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Mon, 13 Feb 2023 15:34:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Po Lu <luangruo <at> yahoo.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 30.0.50; tree-sitter-c doesn't support _Generic
Date: Mon, 13 Feb 2023 23:30:25 +0800
2011 Standard C has a feature that works like `switch', except it
switches upon the type of an expression at compile time.

This does not seem to be supported at all with c-ts-mode:

{
  const char *typename = _Generic ((expr),
				   const char *:
				     "const char *",
				   int:
				     "int",
				   unsigned long:
				     "unsigned long",
				   default:
				     NULL);
}

here, none of the types are fontified (which fares worse than CC Mode),
nor is _Generic fontified as a keyword.  Indenting anywhere inside the
_Generic expression also results in nothing happening.


In GNU Emacs 30.0.50 (build 72, x86_64-pc-linux-gnu) of 2023-02-13 built
 on trinity
Repository revision: e0b60120a1c3433fe332bff56b5b7483b0424d5c
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12101099
System Description: Fedora Linux 37 (Workstation Edition)

Configured using:
 'configure --with-x --with-x-toolkit=no --without-cairo
 --with-dumping=unexec --cache-file=/tmp/ccache'

Configured features:
ACL DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON LCMS2
LIBSELINUX LIBSYSTEMD LIBXML2 MODULES NOTIFY INOTIFY OLDXMENU PNG RSVG
SECCOMP SOUND SQLITE3 THREADS TIFF TREE_SITTER UNEXEC WEBP X11 XDBE XFT
XIM XINPUT2 XPM ZLIB

Important settings:
  value of $LANG: en_GB.utf8
  value of $XMODIFIERS: @im=none
  locale-coding-system: utf-8-unix

Major mode: C

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-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
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message mailcap yank-media puny dired
dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg rfc6068
epg-config gnus-util text-property-search time-date subr-x mm-decode
mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader
sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils
display-line-numbers c-ts-mode cl-extra help-mode warnings icons
c-ts-common treesit cl-seq cl-loaddefs cl-lib rmc iso-transl tooltip
cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type
elisp-mode 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 lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow
isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax
font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic
indonesian philippine 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 emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
theme-loaddefs faces cus-face macroexp files window text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads dbusbind inotify lcms2
dynamic-setting system-font-setting font-render-setting xinput2 x
multi-tty make-network-process emacs)

Memory information:
((conses 16 110475 7691)
 (symbols 48 21846 0)
 (strings 32 31362 1808)
 (string-bytes 1 774600)
 (vectors 16 18868)
 (vector-slots 8 795767 66178)
 (floats 8 67 68)
 (intervals 56 441 2)
 (buffers 984 15))




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#61482; Package emacs. (Tue, 21 Feb 2023 08:58:02 GMT) Full text and rfc822 format available.

Message #8 received at 61482 <at> debbugs.gnu.org (full text, mbox):

From: Yuan Fu <casouri <at> gmail.com>
To: Po Lu <luangruo <at> yahoo.com>
Cc: 61482 <at> debbugs.gnu.org
Subject: Re: bug#61482: 30.0.50; tree-sitter-c doesn't support _Generic
Date: Tue, 21 Feb 2023 00:56:40 -0800
Po Lu <luangruo <at> yahoo.com> writes:

> 2011 Standard C has a feature that works like `switch', except it
> switches upon the type of an expression at compile time.
>
> This does not seem to be supported at all with c-ts-mode:
>
> {
>   const char *typename = _Generic ((expr),
> 				   const char *:
> 				     "const char *",
> 				   int:
> 				     "int",
> 				   unsigned long:
> 				     "unsigned long",
> 				   default:
> 				     NULL);
> }
>
> here, none of the types are fontified (which fares worse than CC Mode),
> nor is _Generic fontified as a keyword.  Indenting anywhere inside the
> _Generic expression also results in nothing happening.

That’s the same as _Noreturn, tree-sitter-c doesn’t support it now. See
https://github.com/tree-sitter/tree-sitter-c/issues/124, I opened an
issue requesting for _Generic and _Noreturn. But I don’t really know
much about these features, please see if I described it correctly.

Yuan




This bug report was last modified 1 year and 36 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.