Project

General

Profile

Actions

Bug #651

closed

Regexp.new returns strange regexp object

Bug #651: Regexp.new returns strange regexp object

Added by shyouhei (Shyouhei Urabe) about 17 years ago. Updated over 14 years ago.

Status:
Closed
Target version:
-
ruby -v:
Backport:
[ruby-dev:36753]

Description

=begin
以下のような等式が成立しなくなったことに気づきました。

% ruby1.9 -e 'p( //u == Regexp.new("", nil, "u") )'
false
=end

Updated by matz (Yukihiro Matsumoto) about 17 years ago Actions #1

=begin
まつもと ゆきひろです

In message "Re: [ruby-dev:36753] [Bug #651] Regexp.new returns strange regexp object"
on Thu, 16 Oct 2008 03:31:52 +0900, Shyouhei Urabe writes:

|以下のような等式が成立しなくなったことに気づきました。
|
| % ruby1.9 -e 'p( //u == Regexp.new("", nil, "u") )'
| false

これは1.9から三番目の引数が無視されることになったせいです。
そのせいで、Regexp.newが生成したものはUTF-8固定ではなくなっ
てます。

が、不親切なのは確かなので、

  • -v がなくても警告する
  • メッセージをobsoleteからignoredに変更する

という対応にしようと思います。別の案としては、

  • 'u'対応を復活させる

というものもありえますが。

=end

Updated by shyouhei (Shyouhei Urabe) about 17 years ago Actions #2

=begin
卜部です

Yukihiro Matsumoto さんは書きました:

まつもと ゆきひろです

In message "Re: [ruby-dev:36753] [Bug #651] Regexp.new returns strange regexp object"
on Thu, 16 Oct 2008 03:31:52 +0900, Shyouhei Urabe writes:

|以下のような等式が成立しなくなったことに気づきました。
|
| % ruby1.9 -e 'p( //u == Regexp.new("", nil, "u") )'
| false

これは1.9から三番目の引数が無視されることになったせいです。
そのせいで、Regexp.newが生成したものはUTF-8固定ではなくなっ
てます。

が、不親切なのは確かなので、

  • -v がなくても警告する
  • メッセージをobsoleteからignoredに変更する

という対応にしようと思います。

妥当ではないでしょうか。

ruby -Kn -e 'p "\xF0\x80\x80\xBC".match(Regexp.new(".", nil, "u"))'
#<MatchData "\xF0">

あたりは事情を知らないとびっくりします。警告くらいは出てもいいと思います。

別の案としては、

  • 'u'対応を復活させる

というものもありえますが。

uとかeはともかくnが欲しいことはあるんじゃないですかねえ。

=end

Updated by matz (Yukihiro Matsumoto) about 17 years ago Actions #3

=begin
まつもと ゆきひろです

In message "Re: [ruby-dev:36755] Re: [Bug #651] Regexp.new returns strange regexp object"
on Thu, 16 Oct 2008 14:18:48 +0900, Urabe Shyouhei writes:

|> が、不親切なのは確かなので、
|>
|> * -v がなくても警告する
|> * メッセージをobsoleteからignoredに変更する
|>
|> という対応にしようと思います。
|
|妥当ではないでしょうか。

とはいえ、「エンドユーザが警告を見ても困惑するだけ」という指
摘もあり、悩ましいところです。

|ruby -Kn -e 'p "\xF0\x80\x80\xBC".match(Regexp.new(".", nil, "u"))'
|#<MatchData "\xF0">
|
|あたりは事情を知らないとびっくりします。警告くらいは出てもいいと思います。

そうですねえ。

|> 別の案としては、
|>
|> * 'u'対応を復活させる
|>
|> というものもありえますが。
|>
|uとかeはともかくnが欲しいことはあるんじゃないですかねえ。

あ、nはあいかわらず有効です。無視されるようになったのはn以外
のeとかsとかuとかです。

=end

Updated by matz (Yukihiro Matsumoto) about 17 years ago Actions #4

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

=begin
Applied in changeset r19813.
=end

Updated by shyouhei (Shyouhei Urabe) about 17 years ago Actions #5

=begin
卜部です。

Yukihiro Matsumoto さんは書きました:

|> * 'u'対応を復活させる
|>
|> というものもありえますが。
|>
|uとかeはともかくnが欲しいことはあるんじゃないですかねえ。

あ、nはあいかわらず有効です。無視されるようになったのはn以外
のeとかsとかuとかです。

そうですか?

% ruby1.9 -ve 'p( //n == Regexp.new("", nil, "n") )'
ruby 1.9.0 (2008-10-17 revision 17576) [x86_64-linux]
false

別の問題?

=end

Updated by shyouhei (Shyouhei Urabe) about 17 years ago Actions #6

  • Status changed from Closed to Open

=begin

=end

Updated by matz (Yukihiro Matsumoto) about 17 years ago Actions #7

=begin
まつもと ゆきひろです

In message "Re: [ruby-dev:36761] Re: [Bug #651] Regexp.new returns strange regexp object"
on Fri, 17 Oct 2008 11:44:01 +0900, Urabe Shyouhei writes:

|そうですか?
|
|% ruby1.9 -ve 'p( //n == Regexp.new("", nil, "n") )'
|ruby 1.9.0 (2008-10-17 revision 17576) [x86_64-linux]
|false
|
|# 別の問題?

別の問題でした。//nがfixedでなかったという。

=end

Updated by shyouhei (Shyouhei Urabe) about 17 years ago Actions #8

  • Status changed from Open to Closed

=begin

=end

Actions

Also available in: PDF Atom