bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#37440: [PATCH] New rx implementation with extension constructs


From: Mattias Engdegård
Subject: bug#37440: [PATCH] New rx implementation with extension constructs
Date: Wed, 25 Sep 2019 14:33:46 +0200

24 sep. 2019 kl. 19.55 skrev Paul Eggert <eggert@cs.ucla.edu>:
> 
> I tried the proposed patches with current Emacs master on Fedora 30 x86-64 
> and got a test failure as shown in the attached file. 

Thank you! Those failures only occur when running test loaded from a 
byte-compiled file -- I suppose you used TEST_LOAD_EL=no.

First, the unibyte and multibyte forms of a string like "\326" print the same 
but aren't equal:

(string-to-multibyte "\326")
=> "\326"
(equal (string-to-multibyte "\326") "\326")
=> nil

This means that if a multibyte string ends up as a constant in byte-compiled 
code, surprise, it may become a unibyte value when loaded. The test had to be 
made to work both interpreted and compiled. Fortunately the regexp engine was 
recently fixed with respect to raw bytes, making its semantics invariant for 
strings with the same print representation, so this is not a problem with the 
rx implementation.

The second item of interest was that `rx-define', since it relies on 
`eval-and-compile', doesn't expand to code when macroexpanded. I don't know if 
it will be a problem in practice. The test now uses an auxiliary function as 
work-around.

Updated patches attached.

Attachment: 0001-New-rx-implementation.patch
Description: Binary data

Attachment: 0002-Add-rx-extension-mechanism.patch
Description: Binary data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]