inherit_from: .rubocop_todo.yml

AllCops:
  TargetRubyVersion: 2.7
  DisplayCopNames: true
  Exclude:
    - command_line/fixtures/bad_syntax.rb
  DisabledByDefault: true
  NewCops: disable

Layout/TrailingWhitespace:
  Enabled: true

Layout/TrailingEmptyLines:
  Enabled: true
  Exclude:
    - library/coverage/fixtures/some_class.rb

Layout/SpaceInLambdaLiteral:
  Enabled: true
  EnforcedStyle: require_space

Lint:
  Enabled: true

# {...} has higher precedence than do ... end, on purpose
Lint/AmbiguousBlockAssociation:
  Enabled: false

Lint/AssignmentInCondition:
  Enabled: false

Lint/BooleanSymbol:
  Enabled: false

Lint/InterpolationCheck:
  Enabled: false

Lint/LiteralAsCondition:
  Enabled: false

Lint/RedundantRequireStatement:
  Enabled: false

Lint/RedundantSplatExpansion:
  Enabled: false

Lint/UnifiedInteger:
  Enabled: false

Lint/UnusedBlockArgument:
  Enabled: false

Lint/UnusedMethodArgument:
  Enabled: false

Lint/UselessAssignment:
  Enabled: false

Lint/BinaryOperatorWithIdenticalOperands:
  Enabled: false

Lint/EmptyConditionalBody:
  Enabled: false # buggy

Lint/Void:
  Enabled: false

Lint/ConstantDefinitionInBlock:
  Enabled: false

Lint/RaiseException:
  Enabled: false

Lint/FloatComparison:
  Enabled: false

Lint/DeprecatedClassMethods:
  Enabled: false

Lint/UnreachableLoop:
  Enabled: false

Lint/MissingSuper:
  Enabled: false

Lint/UselessMethodDefinition:
  Enabled: false

Lint/UselessTimes:
  Enabled: false

Lint/MixedRegexpCaptureTypes:
  Enabled: false

Lint/DuplicateElsifCondition:
  Enabled: false

Lint/OutOfRangeRegexpRef:
  Enabled: false

Lint/InheritException:
  Enabled: false

Lint/ElseLayout:
  Exclude:
    - 'language/if_spec.rb'

Lint/EmptyExpression:
  Exclude:
    - 'language/**/*.rb'

Lint/EmptyWhen:
  Exclude:
    - language/case_spec.rb
    - optional/capi/spec_helper.rb

Lint/ErbNewArguments:
  Exclude:
    - 'library/erb/new_spec.rb'

Lint/FormatParameterMismatch:
  Exclude:
    - 'core/kernel/shared/sprintf.rb'
    - 'core/string/modulo_spec.rb'

Lint/NestedMethodDefinition:
  Exclude:
    - language/def_spec.rb
    - language/fixtures/def.rb

Lint/ShadowingOuterLocalVariable:
  Exclude:
    - 'core/binding/local_variables_spec.rb'
    - 'core/kernel/local_variables_spec.rb'
    - 'language/block_spec.rb'
    - 'language/proc_spec.rb'

Lint/UnreachableCode:
  Exclude:
    - 'core/enumerator/lazy/fixtures/classes.rb'
    - 'core/kernel/catch_spec.rb'
    - 'core/kernel/raise_spec.rb'
    - 'core/kernel/throw_spec.rb'
    - 'language/break_spec.rb'
    - 'language/optional_assignments_spec.rb'
    - 'language/fixtures/break.rb'
    - 'language/fixtures/break_lambda_toplevel.rb'
    - 'language/fixtures/break_lambda_toplevel_block.rb'
    - 'language/fixtures/break_lambda_toplevel_method.rb'
    - 'language/fixtures/return.rb'
    - 'language/next_spec.rb'
    - 'language/return_spec.rb'
    - 'optional/capi/kernel_spec.rb'
    - 'shared/kernel/raise.rb'

Lint/UriRegexp:
  Exclude:
    - 'library/uri/regexp_spec.rb'

Lint/Debugger:
  Exclude:
    - 'core/binding/fixtures/irb.rb'

Lint/Loop:
  Enabled: false

Style/BlockComments:
  Enabled: true

Style/Lambda:
  Enabled: true
  EnforcedStyle: literal
  Exclude:
    - 'language/lambda_spec.rb'
    - 'language/proc_spec.rb'
    - 'language/numbered_parameters_spec.rb'
    - 'core/kernel/lambda_spec.rb'

Style/EmptyLambdaParameter:
  Enabled: true

Style/StabbyLambdaParentheses:
  Enabled: true
  EnforcedStyle: require_no_parentheses
