Subject: Re: bug#37127: [PATCH] cperl-mode: Suppress a misleading message

From: Stefan Monnier <[email-masked]>
Date: Fri, 30 Oct 2020 10:30:04 -0400

> +(ert-deftest cperl-bug37127 ()
[...]
> +    ;; part two: Regex terminator missing -> message
> +    (ert-with-message-capture collected-messages
> +      (with-temp-buffer
> +        (insert "$_ =~ /(..;")
> +        (goto-char (point-min))
> +        (cperl-mode)
> +        (search-forward ".")
> +        (let ((last-command-event ?\)))
> +          (cperl-electric-rparen 1)
> +          (cperl-find-pods-heres (point-min) (point-max) t)))
> +      (should (string-match "^End of .* string/RE"
> +                            collected-messages)))))

Why is this behavior desirable?

I mean, I don't necessarily mind it, but as a user I find it odd that
typing a `)` which has a matching `(` nearby (which can be found without
crossing any string/RE boundary) should emit a warning about some
"unrelated" surrounding entity like the RE in which it is located.

Emacs usually doesn't emit any such warning when editing within an
unclosed string.

I don't think we should necessarily change CPerl's behavior in this
regard, but that we shouldn't consider it a feature and thus shouldn't
enforce it in our tests.

        Stefan