[ruby-core:118014] [Ruby master Misc#20504] Interpolated string literal in regexp encoding handling
From:
"Eregon (Benoit Daloze) via ruby-core" <ruby-core@...>
Date:
2024-05-25 02:58:28 UTC
List:
ruby-core #118014
Issue #20504 has been updated by Eregon (Benoit Daloze).
Agreed, the current behavior breaks referential transparency and unexpectedly analyzes string literals inside interpolated parts.
This leads to extra confusion and I would think has no value in real-world usages of interpolated regexps (because it causes an error instead of none).
So I think this is a bug and the implementation should not analyze those parts and consequently the behavior should be the same as with the extra local variable.
----------------------------------------
Misc #20504: Interpolated string literal in regexp encoding handling
https://bugs.ruby-lang.org/issues/20504#change-108433
* Author: kddnewton (Kevin Newton)
* Status: Open
----------------------------------------
There is some very odd behavior that I'm not sure is intentional or not, so I'm looking for guidance. In here:
```ruby
# encoding: us-ascii
interp = "\x80"
regexp = /#{interp}/
```
the `regexp` variable is a ascii-8bit regular expression with the byte interpolated into the middle. However, if you inline that interpolation:
```ruby
# encoding: us-ascii
regexp = /#{"\x80"}/
```
you get a syntax error, saying it's an invalid multi-byte character. I'm not sure what the rule is here, as it seems inconsistent. Is this the correct behavior?
I would prefer if it would create an ascii-8bit regular expression like the first example, which would be consistent.
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/