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

Style/Semicolon:rubocop -a makes a breaking change #10791

Closed
kazzix14 opened this issue Jul 6, 2022 · 0 comments · Fixed by #10798
Closed

Style/Semicolon:rubocop -a makes a breaking change #10791

kazzix14 opened this issue Jul 6, 2022 · 0 comments · Fixed by #10798
Labels

Comments

@kazzix14
Copy link

kazzix14 commented Jul 6, 2022

My original code is like this.
rubocop -a made a breaking change and the code start to raise ArgumentError after that.

# frozen_string_literal: true

var = 12

case var
when 10 ;
  :a
when 50... ;
  :c
end

Expected behavior

I'm not sure if this is expected behavior,
but it should make my code like this I think?

# frozen_string_literal: true

var = 12

case var
when 10
  :a
when (50...)
  :c
end

Actual behavior

rubocop -a makes a breaking change and the code becomes broken.

# frozen_string_literal: true

var = 12

case var
when 10
  :a
when 50...
  :c
end

Steps to reproduce the problem

This is what happens when I do rubocop -a

root@5654c24326e8:/tmp/repro# cat repro.rb 
# frozen_string_literal: true

var = 12

case var
when 10 ;
  :a
when 50... ;
  :c
end
root@5654c24326e8:/tmp/repro# bundle exec ruby repro.rb 
root@5654c24326e8:/tmp/repro# bundle exec rubocop -a --debug
For /tmp/repro: configuration from /tmp/repro/.rubocop.yml
Default configuration from /usr/local/bundle/gems/rubocop-1.31.1/config/default.yml
The following cops were added to RuboCop, but are not configured. Please set Enabled to either `true` or `false` in your `.rubocop.yml` file.

Please also note that you can opt-in to new cops by default by adding this to your config:
  AllCops:
    NewCops: enable

Gemspec/DeprecatedAttributeAssignment: # new in 1.30
  Enabled: true
Gemspec/RequireMFA: # new in 1.23
  Enabled: true
Layout/LineContinuationLeadingSpace: # new in 1.31
  Enabled: true
Layout/LineContinuationSpacing: # new in 1.31
  Enabled: true
Layout/LineEndStringConcatenationIndentation: # new in 1.18
  Enabled: true
Layout/SpaceBeforeBrackets: # new in 1.7
  Enabled: true
Lint/AmbiguousAssignment: # new in 1.7
  Enabled: true
Lint/AmbiguousOperatorPrecedence: # new in 1.21
  Enabled: true
Lint/AmbiguousRange: # new in 1.19
  Enabled: true
Lint/ConstantOverwrittenInRescue: # new in 1.31
  Enabled: true
Lint/DeprecatedConstants: # new in 1.8
  Enabled: true
Lint/DuplicateBranch: # new in 1.3
  Enabled: true
Lint/DuplicateRegexpCharacterClassElement: # new in 1.1
  Enabled: true
Lint/EmptyBlock: # new in 1.1
  Enabled: true
Lint/EmptyClass: # new in 1.3
  Enabled: true
Lint/EmptyInPattern: # new in 1.16
  Enabled: true
Lint/IncompatibleIoSelectWithFiberScheduler: # new in 1.21
  Enabled: true
Lint/LambdaWithoutLiteralBlock: # new in 1.8
  Enabled: true
Lint/NoReturnInBeginEndBlocks: # new in 1.2
  Enabled: true
Lint/NonAtomicFileOperation: # new in 1.31
  Enabled: true
Lint/NumberedParameterAssignment: # new in 1.9
  Enabled: true
Lint/OrAssignmentToConstant: # new in 1.9
  Enabled: true
Lint/RedundantDirGlobSort: # new in 1.8
  Enabled: true
Lint/RefinementImportMethods: # new in 1.27
  Enabled: true
Lint/RequireRelativeSelfPath: # new in 1.22
  Enabled: true
Lint/SymbolConversion: # new in 1.9
  Enabled: true
Lint/ToEnumArguments: # new in 1.1
  Enabled: true
Lint/TripleQuotes: # new in 1.9
  Enabled: true
Lint/UnexpectedBlockArity: # new in 1.5
  Enabled: true
Lint/UnmodifiedReduceAccumulator: # new in 1.1
  Enabled: true
Lint/UselessRuby2Keywords: # new in 1.23
  Enabled: true
Naming/BlockForwarding: # new in 1.24
  Enabled: true
Security/CompoundHash: # new in 1.28
  Enabled: true
Security/IoMethods: # new in 1.22
  Enabled: true
Style/ArgumentsForwarding: # new in 1.1
  Enabled: true
Style/CollectionCompact: # new in 1.2
  Enabled: true
Style/DocumentDynamicEvalDefinition: # new in 1.1
  Enabled: true
Style/EndlessMethod: # new in 1.8
  Enabled: true
Style/EnvHome: # new in 1.29
  Enabled: true
Style/FetchEnvVar: # new in 1.28
  Enabled: true
Style/FileRead: # new in 1.24
  Enabled: true
Style/FileWrite: # new in 1.24
  Enabled: true
Style/HashConversion: # new in 1.10
  Enabled: true
Style/HashExcept: # new in 1.7
  Enabled: true
Style/IfWithBooleanLiteralBranches: # new in 1.9
  Enabled: true
Style/InPatternThen: # new in 1.16
  Enabled: true
Style/MapCompactWithConditionalBlock: # new in 1.30
  Enabled: true
Style/MapToHash: # new in 1.24
  Enabled: true
Style/MultilineInPatternThen: # new in 1.16
  Enabled: true
Style/NegatedIfElseCondition: # new in 1.2
  Enabled: true
Style/NestedFileDirname: # new in 1.26
  Enabled: true
Style/NilLambda: # new in 1.3
  Enabled: true
Style/NumberedParameters: # new in 1.22
  Enabled: true
Style/NumberedParametersLimit: # new in 1.22
  Enabled: true
Style/ObjectThen: # new in 1.28
  Enabled: true
Style/OpenStructUse: # new in 1.23
  Enabled: true
Style/QuotedSymbols: # new in 1.16
  Enabled: true
Style/RedundantArgument: # new in 1.4
  Enabled: true
Style/RedundantInitialize: # new in 1.27
  Enabled: true
Style/RedundantSelfAssignmentBranch: # new in 1.19
  Enabled: true
Style/SelectByRegexp: # new in 1.22
  Enabled: true
Style/StringChars: # new in 1.12
  Enabled: true
Style/SwapValues: # new in 1.1
  Enabled: true
For more information: https://docs.rubocop.org/rubocop/versioning.html
Inspecting 2 files
Scanning /tmp/repro/Gemfile
Loading cache from /root/.cache/rubocop_cache/3be52d3c1ce164cb4e5fd6b7dbc897557b704f87/6d7a3b621ca1730e04accd938619e4bdab66cfb1/235cf00440cb3f1a64bf6677894f402ea5b35ba1
.Scanning /tmp/repro/repro.rb
Loading cache from /root/.cache/rubocop_cache/3be52d3c1ce164cb4e5fd6b7dbc897557b704f87/6d7a3b621ca1730e04accd938619e4bdab66cfb1/029d00ef3c7b8c7a347216f496ebad7206268866
W

Offenses:

repro.rb:6:8: C: [Corrected] Layout/SpaceBeforeSemicolon: Space found before semicolon.
when 10 ;
       ^
repro.rb:6:9: C: [Corrected] Style/Semicolon: Do not use semicolons to terminate expressions.
when 10 ;
        ^
repro.rb:8:1: W: Lint/EmptyWhen: Avoid when branches without a body.
when 50... ...
^^^^^^^^^^
repro.rb:8:11: C: [Corrected] Layout/SpaceBeforeSemicolon: Space found before semicolon.
when 50... ;
          ^
repro.rb:8:12: C: [Corrected] Style/Semicolon: Do not use semicolons to terminate expressions.
when 50... ;
           ^

2 files inspected, 5 offenses detected, 4 offenses corrected
Finished in 0.2905023240018636 seconds
root@5654c24326e8:/tmp/repro# cat repro.rb 
# frozen_string_literal: true

var = 12

case var
when 10
  :a
when 50...
  :c
end
root@5654c24326e8:/tmp/repro# bundle exec ruby repro.rb 
repro.rb:8: warning: ... at EOL, should be parenthesized?
repro.rb:8:in `<main>': bad value for range (ArgumentError)

RuboCop version

root@5654c24326e8:/tmp/repro# bundle exec rubocop -V
1.31.1 (using Parser 3.1.2.0, rubocop-ast 1.18.0, running on ruby 3.1.2 x86_64-linux)
@koic koic added the bug label Jul 8, 2022
koic added a commit to koic/rubocop that referenced this issue Jul 9, 2022
Fixes rubocop#10791.

This PR fixes an incorrect autocorrect for `Style/Semicolon`
when using endless range before semicolon.
nobuyo pushed a commit to nobuyo/rubocop that referenced this issue Jul 9, 2022
Fixes rubocop#10791.

This PR fixes an incorrect autocorrect for `Style/Semicolon`
when using endless range before semicolon.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants