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 an error for Lint/NumberConversion #10067

Merged

Commits on Sep 7, 2021

  1. Fix an error for Lint/NumberConversion

    This PR fixes the following error for `Lint/NumberConversion`
    when using nested number conversion methods.
    
    ## Before
    
    ```console
    % cat example.rb
    var.to_i.to_f
    
    % bundle exec rubocop --only Lint/NumberConversion -A
    (snip)
    
    Inspecting 1 file
    An error occurred while Lint/NumberConversion cop was inspecting
    /Users/koic/src/github.com/koic/rubocop-issues/number/example.rb:1:0.
    To see the complete backtrace run rubocop -d.
    W
    
    Offenses:
    
    example.rb:1:1: W: [Corrected] Lint/NumberConversion: Replace unsafe
    number conversion with number class parsing, instead of using
    var.to_i.to_f, use stricter Float(var.to_i).var.to_i.to_f
                                                ^^^^^^^^^^^^^
    example.rb:1:7: W: [Corrected] Lint/NumberConversion: Replace unsafe
    number conversion with number class parsing, instead of using var.to_i,
    use stricter Integer(var, 10).Float(var.to_i)
                                        ^^^^^^^^
    
    1 file inspected, 2 offenses detected, 2 offenses corrected
    
    1 error occurred:
    An error occurred while Lint/NumberConversion cop was inspecting
    /Users/koic/src/github.com/koic/rubocop-issues/number/example.rb:1:0.
    Errors are usually caused by RuboCop bugs.
    Please, report your problems to RuboCop's issue tracker.
    
    % cat example.rb
    Float(Integer(var, 10))
    ```
    
    ## After
    
    ```console
    % cat example.rb
    var.to_i.to_f
    
    % bundle exec rubocop --only Lint/NumberConversion -A
    (snip)
    
    Offenses:
    
    example.rb:1:1: W: [Corrected] Lint/NumberConversion: Replace unsafe
    number conversion with number class parsing, instead of using var.to_i,
    use stricter Integer(var, 10).var.to_i.to_f
                                  ^^^^^^^^
    
    1 file inspected, 1 offense detected, 1 offense corrected
    
    % cat example.rb
    Integer(var, 10).to_f
    ```
    
    The result of `Integer()` is an `Integer` object, so `to_f` does not need
    to be replaced with `Float()`.
    Accordingly, this PR will be changed to be accepted if the receiver is a
    numeric literal that is an obvious numeric (e.g. `42.to_f`).
    koic committed Sep 7, 2021
    Copy the full SHA
    b8c28cf View commit details
    Browse the repository at this point in the history