GNU bug report logs - #60765
CC Mode 5.35.2 (Java//l); Java incorrect type recognition

Previous Next

Package: cc-mode;

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

Date: Fri, 13 Jan 2023 01:33: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 60765 in the body.
You can then email your comments to 60765 AT debbugs.gnu.org in the normal way.

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-cc-mode <at> gnu.org:
bug#60765; Package cc-mode. (Fri, 13 Jan 2023 01:33: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. (Fri, 13 Jan 2023 01:33: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: CC Mode 5.35.2 (Java//l); Java incorrect type recognition
Date: Fri, 13 Jan 2023 09:31:53 +0800
Package: cc-mode

I thought this was only a problem in C Mode, but apparently I'm
mistaken.

Insert the following text into a Java mode buffer:

class Foo
{
  public void
  viewLayout (int left, int top, int right, int bottom)
  {
    int rectWidth, rectHeight;

    synchronized (this)
      {
	rect.left = left;
	rect.top = top;
	rect.right = right;
	rect.bottom = bottom;
      }


    EmacsNative.sendConfigureNotify (this.handle,
				     System.currentTimeMillis (),
				     left, top, rectWidth,
				     rectHeight);
  }
}

go to the line immediately above EmacsNative.sendConfigureNotify.  Then,
type:

  TAB r e c t W i d t h;

`rectHeight' and `viewLayout' will appear in c-found-types.  Thanks.

Emacs  : GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu)
 of 2023-01-13
Package: CC Mode 5.35.2 (Java//l)
Buffer Style: java
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 4
 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 '((brace-list-open) (brace-entry-open)
			  (statement-cont) (substatement-open after)
			  (block-close . c-snug-do-while)
			  (extern-lang-open after) (namespace-open after)
			  (module-open after) (composition-open after)
			  (inexpr-class-open after)
			  (inexpr-class-close before) (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 nil
 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)
		   (case-label . 0)
		   (substatement . +)
		   (statement-case-intro . +)
		   (statement . 0)
		   (brace-entry-open . 0)
		   (brace-list-entry . 0)
		   (brace-list-close . 0)
		   (brace-list-open . 0)
		   (block-close . 0)
		   (block-open . 0)
		   (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)
		   (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)
		   (func-decl-cont . c-lineup-java-throws)
		   (inher-cont . c-lineup-java-inher)
		   (access-label . 0)
		   (brace-list-intro
		    first
		    c-lineup-2nd-brace-entry-in-arglist
		    c-lineup-class-decl-init-+
		    +
		    )
		   (arglist-close . c-lineup-arglist)
		   (arglist-intro . c-lineup-arglist-intro-after-paren)
		   (statement-cont . +)
		   (statement-case-open . +)
		   (label . +)
		   (substatement-label . +)
		   (substatement-open . +)
		   (knr-argdecl-intro . 5)
		   (statement-block-intro . +)
		   (topmost-intro-cont . +)
		   (inline-open . 0)
		   )
 c-buffer-is-cc-mode 'java-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 "[ 	]*\\(//+\\|\\**\\)[ 	]*\\(@[a-zA-Z]+\\>\\|$\\)\\|^\f"
 adaptive-fill-mode t
 adaptive-fill-regexp "[ 	]*\\(//+\\|\\**\\)[ 	]*\\([ 	]*\\([-–!|#%;>*·•‣⁃◦]+[ 	]*\\)*\\)"
 )




Information forwarded to bug-cc-mode <at> gnu.org:
bug#60765; Package cc-mode. (Mon, 16 Jan 2023 17:57:02 GMT) Full text and rfc822 format available.

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

From: Alan Mackenzie <acm <at> muc.de>
To: Po Lu <luangruo <at> yahoo.com>
Cc: 60765 <at> debbugs.gnu.org
Subject: Re: bug#60765: CC Mode 5.35.2 (Java//l); Java incorrect type
 recognition
Date: Mon, 16 Jan 2023 17:56:40 +0000
Hello, Po.

On Fri, Jan 13, 2023 at 09:31:53 +0800, Po Lu via CC-Mode-help wrote:
> Package: cc-mode

> I thought this was only a problem in C Mode, but apparently I'm
> mistaken.

All the modes use the same underlying engine.  ;-)

> Insert the following text into a Java mode buffer:

> class Foo
> {
>   public void
>   viewLayout (int left, int top, int right, int bottom)
>   {
>     int rectWidth, rectHeight;

>     synchronized (this)
>       {
> 	rect.left = left;
> 	rect.top = top;
> 	rect.right = right;
> 	rect.bottom = bottom;
>       }


>     EmacsNative.sendConfigureNotify (this.handle,
> 				     System.currentTimeMillis (),
> 				     left, top, rectWidth,
> 				     rectHeight);
>   }
> }

> go to the line immediately above EmacsNative.sendConfigureNotify.  Then,
> type:

>   TAB r e c t W i d t h;

> `rectHeight' and `viewLayout' will appear in c-found-types.  Thanks.

Yes.  With the "unsafe-maybe" mechanism added to CC Mode late last year,
this was a fairly simple bug to fix.  I've taken the liberty of
committing the fix to the emacs-29 branch with:

commit c1d32d9a20dc94d403725c288d168451b916c034 (HEAD -> emacs-29, origin/emacs-29, origin/HEAD)
Author: Alan Mackenzie <acm <at> muc.de>
Date:   Mon Jan 16 17:44:44 2023 +0000

    CC Mode: Prevent ids in temporary "declarators" getting into c-found-types

, though I haven't yet closed the bug.  I'd be grateful if you could
update your emacs-29 branch with this fix, run your real Java code in
it, and confirm that the bug is indeed fixed.  Thanks!


> Emacs  : GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu)
>  of 2023-01-13
> Package: CC Mode 5.35.2 (Java//l)
> Buffer Style: java
> 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).




Information forwarded to bug-cc-mode <at> gnu.org:
bug#60765; Package cc-mode. (Tue, 17 Jan 2023 05:16:02 GMT) Full text and rfc822 format available.

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

From: Po Lu <luangruo <at> yahoo.com>
To: Alan Mackenzie <acm <at> muc.de>
Cc: 60765 <at> debbugs.gnu.org
Subject: Re: bug#60765: CC Mode 5.35.2 (Java//l); Java incorrect type
 recognition
Date: Tue, 17 Jan 2023 13:14:51 +0800
Alan Mackenzie <acm <at> muc.de> writes:

>> Insert the following text into a Java mode buffer:
>
>> class Foo
>> {
>>   public void
>>   viewLayout (int left, int top, int right, int bottom)
>>   {
>>     int rectWidth, rectHeight;
>
>>     synchronized (this)
>>       {
>> 	rect.left = left;
>> 	rect.top = top;
>> 	rect.right = right;
>> 	rect.bottom = bottom;
>>       }
>
>
>>     EmacsNative.sendConfigureNotify (this.handle,
>> 				     System.currentTimeMillis (),
>> 				     left, top, rectWidth,
>> 				     rectHeight);
>>   }
>> }
>
>> go to the line immediately above EmacsNative.sendConfigureNotify.  Then,
>> type:
>
>>   TAB r e c t W i d t h;
>
>> `rectHeight' and `viewLayout' will appear in c-found-types.  Thanks.
>
> Yes.  With the "unsafe-maybe" mechanism added to CC Mode late last year,
> this was a fairly simple bug to fix.  I've taken the liberty of
> committing the fix to the emacs-29 branch with:
>
> commit c1d32d9a20dc94d403725c288d168451b916c034 (HEAD -> emacs-29, origin/emacs-29, origin/HEAD)
> Author: Alan Mackenzie <acm <at> muc.de>
> Date:   Mon Jan 16 17:44:44 2023 +0000
>
>     CC Mode: Prevent ids in temporary "declarators" getting into c-found-types
>
> , though I haven't yet closed the bug.  I'd be grateful if you could
> update your emacs-29 branch with this fix, run your real Java code in
> it, and confirm that the bug is indeed fixed.  Thanks!
>

Thanks, this seems to work here.




Reply sent to Alan Mackenzie <acm <at> muc.de>:
You have taken responsibility. (Tue, 17 Jan 2023 15:57: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 15:57:02 GMT) Full text and rfc822 format available.

Message #16 received at 60765-done <at> debbugs.gnu.org (full text, mbox):

From: Alan Mackenzie <acm <at> muc.de>
To: Po Lu <luangruo <at> yahoo.com>
Cc: 60765-done <at> debbugs.gnu.org
Subject: Re: bug#60765: CC Mode 5.35.2 (Java//l); Java incorrect type
 recognition
Date: Tue, 17 Jan 2023 15:56:04 +0000
Hello, Po.

On Tue, Jan 17, 2023 at 13:14:51 +0800, Po Lu wrote:
> Alan Mackenzie <acm <at> muc.de> writes:

[ .... ]

> > Yes.  With the "unsafe-maybe" mechanism added to CC Mode late last year,
> > this was a fairly simple bug to fix.  I've taken the liberty of
> > committing the fix to the emacs-29 branch with:

> > commit c1d32d9a20dc94d403725c288d168451b916c034 (HEAD -> emacs-29, origin/emacs-29, origin/HEAD)
> > Author: Alan Mackenzie <acm <at> muc.de>
> > Date:   Mon Jan 16 17:44:44 2023 +0000

> >     CC Mode: Prevent ids in temporary "declarators" getting into c-found-types

> > , though I haven't yet closed the bug.  I'd be grateful if you could
> > update your emacs-29 branch with this fix, run your real Java code in
> > it, and confirm that the bug is indeed fixed.  Thanks!


> Thanks, this seems to work here.

Thanks for the testing!  I'm closing the bug with this post.

-- 
Alan Mackenzie (Nuremberg, Germany).




Information forwarded to bug-cc-mode <at> gnu.org:
bug#60765; Package cc-mode. (Wed, 18 Jan 2023 00:41:02 GMT) Full text and rfc822 format available.

Message #19 received at 60765-done <at> debbugs.gnu.org (full text, mbox):

From: Po Lu <luangruo <at> yahoo.com>
To: Alan Mackenzie <acm <at> muc.de>
Cc: 60765-done <at> debbugs.gnu.org
Subject: Re: bug#60765: CC Mode 5.35.2 (Java//l); Java incorrect type
 recognition
Date: Wed, 18 Jan 2023 08:40:16 +0800
Alan Mackenzie <acm <at> muc.de> writes:

> Hello, Po.
>
> On Tue, Jan 17, 2023 at 13:14:51 +0800, Po Lu wrote:
>> Alan Mackenzie <acm <at> muc.de> writes:
>
> [ .... ]
>
>> > Yes.  With the "unsafe-maybe" mechanism added to CC Mode late last year,
>> > this was a fairly simple bug to fix.  I've taken the liberty of
>> > committing the fix to the emacs-29 branch with:
>
>> > commit c1d32d9a20dc94d403725c288d168451b916c034 (HEAD -> emacs-29, origin/emacs-29, origin/HEAD)
>> > Author: Alan Mackenzie <acm <at> muc.de>
>> > Date:   Mon Jan 16 17:44:44 2023 +0000
>
>> >     CC Mode: Prevent ids in temporary "declarators" getting into c-found-types
>
>> > , though I haven't yet closed the bug.  I'd be grateful if you could
>> > update your emacs-29 branch with this fix, run your real Java code in
>> > it, and confirm that the bug is indeed fixed.  Thanks!
>
>
>> Thanks, this seems to work here.
>
> Thanks for the testing!  I'm closing the bug with this post.

OK, thanks.




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 64 days ago.

Previous Next


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