all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* bug#74245: 30.0.92; CPerl subroutine signatures are left open when last param is $
@ 2024-11-07 19:19 Peter Oliver
  2024-11-07 19:29 ` Peter Oliver
  2024-11-08 12:12 ` Stefan Kangas
  0 siblings, 2 replies; 3+ messages in thread
From: Peter Oliver @ 2024-11-07 19:19 UTC (permalink / raw)
  To: 74245

Perl subroutine signatures can include a variable with no name, just a bare $, to indicate that a parameter should be ignored.  If this happens in the last place, CPerl mode in Emacs 30.0.92 mishandles it, and is unable to see the closing ).  Consequently, it matches parentheses incorrectly, and misindents subsequent blocks.

I have a test that I will send in as a patch, once I have a bug number.

This issue is not present in Emacs 29.4.

-- 
Peter Oliver





^ permalink raw reply	[flat|nested] 3+ messages in thread

* bug#74245: 30.0.92; CPerl subroutine signatures are left open when last param is $
  2024-11-07 19:19 bug#74245: 30.0.92; CPerl subroutine signatures are left open when last param is $ Peter Oliver
@ 2024-11-07 19:29 ` Peter Oliver
  2024-11-08 12:12 ` Stefan Kangas
  1 sibling, 0 replies; 3+ messages in thread
From: Peter Oliver @ 2024-11-07 19:29 UTC (permalink / raw)
  To: 74245

[-- Attachment #1: Type: text/plain, Size: 32 bytes --]

Test attached.

-- 
Peter Oliver

[-- Attachment #2: Type: text/plain, Size: 2298 bytes --]

From b388d1c69051a9f49db129254afc62d2840bcb0f Mon Sep 17 00:00:00 2001
From: Peter Oliver <git@mavit.org.uk>
Date: Thu, 7 Nov 2024 19:22:21 +0000
Subject: [PATCH] ; cperl-mode.el: Add a test for Bug#74245

* test/lisp/progmodes/cperl-mode-resources/cperl-bug-74245.pl: New test data.

* test/lisp/progmodes/cperl-mode-tests.el (cperl-test-bug-74245): Verify
that a bare \"$\" can appear at the end of a subroutine signature.
---
 .../cperl-mode-resources/cperl-bug-74245.pl      | 16 ++++++++++++++++
 test/lisp/progmodes/cperl-mode-tests.el          |  9 +++++++++
 2 files changed, 25 insertions(+)
 create mode 100644 test/lisp/progmodes/cperl-mode-resources/cperl-bug-74245.pl

diff --git a/test/lisp/progmodes/cperl-mode-resources/cperl-bug-74245.pl b/test/lisp/progmodes/cperl-mode-resources/cperl-bug-74245.pl
new file mode 100644
index 00000000000..44d1e49bd36
--- /dev/null
+++ b/test/lisp/progmodes/cperl-mode-resources/cperl-bug-74245.pl
@@ -0,0 +1,16 @@
+# This resource file can be run with cperl--run-testcases from
+# cperl-tests.el and works with both perl-mode and cperl-mode.
+
+# -------- signature where last parameter is ignored: input -------
+package P {
+use v5.36;
+sub ignore ($first, $) {}
+ignore(qw(first second));
+}
+# -------- signature where last parameter is ignored: expected output -------
+package P {
+  use v5.36;
+  sub ignore ($first, $) {}
+  ignore(qw(first second));
+}
+# -------- signature where last parameter is ignored: end -------
diff --git a/test/lisp/progmodes/cperl-mode-tests.el b/test/lisp/progmodes/cperl-mode-tests.el
index 7a6e0b3b64a..625c41cf52c 100644
--- a/test/lisp/progmodes/cperl-mode-tests.el
+++ b/test/lisp/progmodes/cperl-mode-tests.el
@@ -1590,6 +1590,15 @@ cperl-test-bug-72296
     (should (equal (nth 8 (cperl-test-ppss code "/")) 9)))
   )
 
+(ert-deftest cperl-test-bug-74245 ()
+  "Verify that a bare \"$\" can appear at the end of a subroutine signature.
+It must not be mistaken for \"$)\"."
+  (cperl--run-test-cases
+   (ert-resource-file "cperl-bug-74245.pl")
+   (while (null (eobp))
+     (cperl-indent-command)
+     (forward-line 1))))
+
 (ert-deftest test-indentation ()
   (ert-test-erts-file (ert-resource-file "cperl-indents.erts")))
 
-- 
2.47.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* bug#74245: 30.0.92; CPerl subroutine signatures are left open when last param is $
  2024-11-07 19:19 bug#74245: 30.0.92; CPerl subroutine signatures are left open when last param is $ Peter Oliver
  2024-11-07 19:29 ` Peter Oliver
@ 2024-11-08 12:12 ` Stefan Kangas
  1 sibling, 0 replies; 3+ messages in thread
From: Stefan Kangas @ 2024-11-08 12:12 UTC (permalink / raw)
  To: Peter Oliver, 74245; +Cc: Harald Jörg

Peter Oliver <p.d.oliver@mavit.org.uk> writes:

> Perl subroutine signatures can include a variable with no name, just a bare $, to indicate that a parameter should be ignored.  If this happens in the last place, CPerl mode in Emacs 30.0.92 mishandles it, and is unable to see the closing ).  Consequently, it matches parentheses incorrectly, and misindents subsequent blocks.
>
> I have a test that I will send in as a patch, once I have a bug number.
>
> This issue is not present in Emacs 29.4.

Harald, could you please take a look at this?





^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2024-11-08 12:12 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-07 19:19 bug#74245: 30.0.92; CPerl subroutine signatures are left open when last param is $ Peter Oliver
2024-11-07 19:29 ` Peter Oliver
2024-11-08 12:12 ` Stefan Kangas

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.