GNU bug report logs -
#59671
CC Mode 5.35.2 (C/*l); More incorrect type recognition
Previous Next
Reported by: Po Lu <luangruo <at> yahoo.com>
Date: Tue, 29 Nov 2022 07:09:02 UTC
Severity: normal
Done: Alan Mackenzie <acm <at> muc.de>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 59671 in the body.
You can then email your comments to 59671 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-cc-mode <at> gnu.org
:
bug#59671
; Package
cc-mode
.
(Tue, 29 Nov 2022 07:09:02 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-cc-mode <at> gnu.org
.
(Tue, 29 Nov 2022 07:09:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
Package: cc-mode
Insert the following code in a buffer:
/* fns.c -- generic utility functions. */
/* Allocate a scratch buffer with the given size. The buffer must be
used before the next call to allocscratch. */
static void *
allocscratch (size_t size)
{
}
now, on the line below the first comment, type:
typedef struct foo
then pause for a second, and type:
bar;
c-found-types will then contain "allocscratch"!.
Emacs : GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu)
of 2022-11-29
Package: CC Mode 5.35.2 (C/*l)
Buffer Style: gnu
c-emacs-features: (pps-extended-state col-0-paren posix-char-classes gen-string-delim gen-comment-delim syntax-properties category-properties 1-bit)
current state:
==============
(setq
c-basic-offset 2
c-comment-only-line-offset '(0 . 0)
c-indent-comment-alist '((anchored-comment column . 0) (end-block space . 1)
(cpp-end-block space . 2))
c-indent-comments-syntactically-p nil
c-block-comment-prefix ""
c-comment-prefix-regexp '((pike-mode . "//+!?\\|\\**") (awk-mode . "#+")
(other . "//+\\|\\**"))
c-doc-comment-style '((java-mode . javadoc) (pike-mode . autodoc)
(c-mode . gtkdoc) (c++-mode . gtkdoc))
c-cleanup-list '(scope-operator)
c-hanging-braces-alist '((substatement-open before after)
(arglist-cont-nonempty))
c-hanging-colons-alist nil
c-hanging-semi&comma-criteria '(c-semi&comma-inside-parenlist)
c-backslash-column 48
c-backslash-max-column 72
c-special-indent-hook '(t c-gnu-impose-minimum)
c-label-minimum-indentation 1
c-offsets-alist '((inexpr-class . +)
(inexpr-statement . +)
(lambda-intro-cont . +)
(inlambda . 0)
(template-args-cont c-lineup-template-args +)
(incomposition . +)
(inmodule . +)
(innamespace . +)
(inextern-lang . +)
(composition-close . 0)
(module-close . 0)
(namespace-close . 0)
(extern-lang-close . 0)
(composition-open . 0)
(module-open . 0)
(namespace-open . 0)
(extern-lang-open . 0)
(objc-method-call-cont
c-lineup-ObjC-method-call-colons
c-lineup-ObjC-method-call
+
)
(objc-method-args-cont . c-lineup-ObjC-method-args)
(objc-method-intro . [0])
(friend . 0)
(cpp-define-intro c-lineup-cpp-define +)
(cpp-macro-cont . +)
(cpp-macro . [0])
(inclass . +)
(stream-op . c-lineup-streamop)
(arglist-cont-nonempty
c-lineup-gcc-asm-reg
c-lineup-arglist
)
(arglist-cont c-lineup-gcc-asm-reg 0)
(comment-intro
c-lineup-knr-region-comment
c-lineup-comment
)
(catch-clause . 0)
(else-clause . 0)
(do-while-closure . 0)
(access-label . -)
(case-label . 0)
(substatement . +)
(statement-case-intro . +)
(statement . 0)
(brace-entry-open . 0)
(brace-list-entry . 0)
(brace-list-close . 0)
(block-close . 0)
(block-open . 0)
(inher-cont . c-lineup-multi-inher)
(inher-intro . +)
(member-init-cont . c-lineup-multi-inher)
(member-init-intro . +)
(annotation-var-cont . +)
(annotation-top-cont . 0)
(topmost-intro . 0)
(knr-argdecl . 0)
(func-decl-cont . +)
(inline-close . 0)
(class-close . 0)
(class-open . 0)
(defun-block-intro . +)
(defun-close . 0)
(defun-open . 0)
(c . c-lineup-C-comments)
(string . c-lineup-dont-change)
(topmost-intro-cont
first
c-lineup-topmost-intro-cont
c-lineup-gnu-DEFUN-intro-cont
)
(brace-list-intro
first
c-lineup-2nd-brace-entry-in-arglist
c-lineup-class-decl-init-+
+
)
(brace-list-open . +)
(inline-open . 0)
(arglist-close . c-lineup-arglist)
(arglist-intro . c-lineup-arglist-intro-after-paren)
(statement-cont . +)
(statement-case-open . +)
(label . 0)
(substatement-label . 0)
(substatement-open . +)
(knr-argdecl-intro . 5)
(statement-block-intro . +)
)
c-buffer-is-cc-mode 'c-mode
c-tab-always-indent t
c-syntactic-indentation t
c-syntactic-indentation-in-macros t
c-ignore-auto-fill '(string cpp code)
c-auto-align-backslashes t
c-backspace-function 'backward-delete-char-untabify
c-delete-function 'delete-char
c-electric-pound-behavior nil
c-default-style '((java-mode . "java") (awk-mode . "awk") (other . "gnu"))
c-enable-xemacs-performance-kludge-p nil
c-old-style-variable-behavior nil
defun-prompt-regexp nil
tab-width 8
comment-column 32
parse-sexp-ignore-comments t
parse-sexp-lookup-properties t
auto-fill-function nil
comment-multi-line t
comment-start-skip "\\(?://+\\|/\\*+\\)\\s *"
fill-prefix nil
fill-column 70
paragraph-start "[ ]*\\(//+\\|\\**\\)[ ]*$\\|^\f"
adaptive-fill-mode t
adaptive-fill-regexp "[ ]*\\(//+\\|\\**\\)[ ]*\\([ ]*\\([-–!|#%;>*·•‣⁃◦]+[ ]*\\)*\\)"
)
Information forwarded
to
bug-cc-mode <at> gnu.org
:
bug#59671
; Package
cc-mode
.
(Thu, 08 Dec 2022 19:01:02 GMT)
Full text and
rfc822 format available.
Message #8 received at 59671 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Hello, Po.
On Tue, Nov 29, 2022 at 15:08:15 +0800, Po Lu via CC-Mode-help wrote:
> Package: cc-mode
> Insert the following code in a buffer:
> /* fns.c -- generic utility functions. */
> /* Allocate a scratch buffer with the given size. The buffer must be
> used before the next call to allocscratch. */
> static void *
> allocscratch (size_t size)
> {
> }
> now, on the line below the first comment, type:
> typedef struct foo
> then pause for a second, and type:
> bar;
> c-found-types will then contain "allocscratch"!.
Yes. This is not good. Please try out the attached patch which applies
cleanly to the release branch (and almost certainly to the master branch
too). This should fix the problem, in that although "allocscratch" gets
entered into c-found-types, it gets removed again as soon as a type and
declarator are typed in after the typedef.
> Emacs : GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu)
> of 2022-11-29
> Package: CC Mode 5.35.2 (C/*l)
> Buffer Style: gnu
> c-emacs-features: (pps-extended-state col-0-paren posix-char-classes gen-string-delim gen-comment-delim syntax-properties category-properties 1-bit)
[ .... ]
--
Alan Mackenzie (Nuremberg, Germany).
[diff.20221208.diff (text/plain, attachment)]
Information forwarded
to
bug-cc-mode <at> gnu.org
:
bug#59671
; Package
cc-mode
.
(Fri, 09 Dec 2022 01:06:02 GMT)
Full text and
rfc822 format available.
Message #11 received at 59671 <at> debbugs.gnu.org (full text, mbox):
Alan Mackenzie <acm <at> muc.de> writes:
> Yes. This is not good. Please try out the attached patch which applies
> cleanly to the release branch (and almost certainly to the master branch
> too). This should fix the problem, in that although "allocscratch" gets
> entered into c-found-types, it gets removed again as soon as a type and
> declarator are typed in after the typedef.
This works for my example but I've yet to use the patch in the real
world. Thanks.
Reply sent
to
Alan Mackenzie <acm <at> muc.de>
:
You have taken responsibility.
(Tue, 17 Jan 2023 18:27:02 GMT)
Full text and
rfc822 format available.
Notification sent
to
Po Lu <luangruo <at> yahoo.com>
:
bug acknowledged by developer.
(Tue, 17 Jan 2023 18:27:02 GMT)
Full text and
rfc822 format available.
Message #16 received at 59671-done <at> debbugs.gnu.org (full text, mbox):
Hello, Po.
On Fri, Dec 09, 2022 at 09:05:35 +0800, Po Lu wrote:
> Alan Mackenzie <acm <at> muc.de> writes:
> > Yes. This is not good. Please try out the attached patch which applies
> > cleanly to the release branch (and almost certainly to the master branch
> > too). This should fix the problem, in that although "allocscratch" gets
> > entered into c-found-types, it gets removed again as soon as a type and
> > declarator are typed in after the typedef.
> This works for my example but I've yet to use the patch in the real
> world. Thanks.
I've committed the patch and I'm closing the bug with this post.
--
Alan Mackenzie (Nuremberg, Germany).
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Wed, 15 Feb 2023 12:24:10 GMT)
Full text and
rfc822 format available.
This bug report was last modified 1 year and 68 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.