Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix return values of String#casecmp #339

Merged
merged 1 commit into from
Feb 10, 2017
Merged

Fix return values of String#casecmp #339

merged 1 commit into from
Feb 10, 2017

Conversation

znz
Copy link
Member

@znz znz commented Oct 13, 2016

see https://bugs.ruby-lang.org/issues/12835

調べられる範囲で調べてみたところ、1.8.6 でも TypeError でした。
String#+ などでも StringValue による @raise TypeError はいちいち書いていないので、返り値だけ変更しています。
-1, 0, 1 以外を返すことはなさそうだったので、IntegerSymbol#casecmp と同じく -1 | 0 | 1 に変更しました。

% rbenv each ruby -ve '"a".casecmp 1'
ruby 1.8.6 (2007-03-13 patchlevel 0) [x86_64-linux]
-e:1:in `casecmp': can't convert Fixnum into String (TypeError)
        from -e:1
ruby 1.8.6 (2010-09-02 patchlevel 420) [x86_64-linux]
-e:1:in `casecmp': can't convert Fixnum into String (TypeError)
        from -e:1
ruby 1.8.7 (2008-05-31 patchlevel 0) [x86_64-linux]
-e:1:in `casecmp': can't convert Fixnum into String (TypeError)
        from -e:1
ruby 1.8.7 (2013-12-22 patchlevel 375) [x86_64-linux]
-e:1:in `casecmp': can't convert Fixnum into String (TypeError)
        from -e:1
ruby 1.9.0 (2007-12-25 revision 14709) [x86_64-linux]
-e:1:in `casecmp': can't convert Fixnum into String (TypeError)
        from -e:1:in `<main>'
ruby 1.9.0 (2008-10-04 revision 19669) [x86_64-linux]
-e:1:in `casecmp': can't convert Fixnum into String (TypeError)
        from -e:1:in `<main>'
ruby 1.9.1p0 (2009-01-30 revision 21907) [x86_64-linux]
-e:1:in `casecmp': can't convert Fixnum into String (TypeError)
        from -e:1:in `<main>'
ruby 1.9.1p431 (2011-02-18 revision 30908) [x86_64-linux]
-e:1:in `casecmp': can't convert Fixnum into String (TypeError)
        from -e:1:in `<main>'
ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-linux]
-e:1:in `casecmp': can't convert Fixnum into String (TypeError)
        from -e:1:in `<main>'
ruby 1.9.2p330 (2014-08-07 revision 47094) [x86_64-linux]
-e:1:in `casecmp': can't convert Fixnum into String (TypeError)
        from -e:1:in `<main>'
ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-linux]
-e:1:in `casecmp': can't convert Fixnum into String (TypeError)
        from -e:1:in `<main>'
ruby 1.9.3p551 (2014-11-13 revision 48407) [x86_64-linux]
-e:1:in `casecmp': can't convert Fixnum into String (TypeError)
        from -e:1:in `<main>'
ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-linux]
-e:1:in `casecmp': no implicit conversion of Fixnum into String (TypeError)
        from -e:1:in `<main>'
ruby 2.0.0p648 (2015-12-16 revision 53162) [x86_64-linux]
-e:1:in `casecmp': no implicit conversion of Fixnum into String (TypeError)
        from -e:1:in `<main>'
ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-linux]
-e:1:in `casecmp': no implicit conversion of Fixnum into String (TypeError)
        from -e:1:in `<main>'
ruby 2.1.10p492 (2016-04-01 revision 54464) [x86_64-linux]
-e:1:in `casecmp': no implicit conversion of Fixnum into String (TypeError)
        from -e:1:in `<main>'
ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-linux]
-e:1:in `casecmp': no implicit conversion of Fixnum into String (TypeError)
        from -e:1:in `<main>'
ruby 2.2.5p319 (2016-04-26 revision 54774) [x86_64-linux]
-e:1:in `casecmp': no implicit conversion of Fixnum into String (TypeError)
        from -e:1:in `<main>'
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]
-e:1:in `casecmp': no implicit conversion of Fixnum into String (TypeError)
        from -e:1:in `<main>'
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux]
-e:1:in `casecmp': no implicit conversion of Fixnum into String (TypeError)
        from -e:1:in `<main>'

@okkez okkez merged commit e17a1d4 into rurema:master Feb 10, 2017
@stomar
Copy link

stomar commented Mar 11, 2017

Note that String#casecmp can return nil:

"\u{e4 f6 fc}".encode("ISO-8859-1").casecmp("\u{c4 d6 dc}")   #=> nil

@znz
Copy link
Member Author

znz commented Mar 13, 2017

#387 includes nil again.

@znz znz deleted the casecmp branch January 3, 2018 05:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants