steep icon indicating copy to clipboard operation
steep copied to clipboard

Fix UnexpectedError with unnamed arguments

Open ksss opened this issue 1 year ago • 0 comments

I found two error patterns. It seems to occur when the block argument is unnamed.

m do |*|
  1 if 1
  #=> UnexpectedError: undefined method `start_with?' for nil(NoMethodError)
  #=> 1. /Users/ksss/src/github.com/ksss/steep/lib/steep/type_inference/type_env.rb:316:in `local_variable_name?'
  #=> 2. /Users/ksss/src/github.com/ksss/steep/lib/steep/type_inference/type_env.rb:323:in `local_variable_name!'
  #=> 3. /Users/ksss/src/github.com/ksss/steep/lib/steep/type_inference/type_env.rb:115:in `block in assign_local_variables'
end
m do |(*)|
  1 if 1
  #=> UnexpectedError: undefined method `start_with?' for nil(NoMethodError)
  #=> 1. /Users/ksss/src/github.com/ksss/steep/lib/steep/type_inference/type_env.rb:316:in `local_variable_name?'
  #=> 2. /Users/ksss/src/github.com/ksss/steep/lib/steep/type_inference/type_env.rb:323:in `local_variable_name!'
  #=> 3. /Users/ksss/src/github.com/ksss/steep/lib/steep/type_inference/type_env.rb:115:in `block in assign_local_variables'
end

I fixed it so that there is no error even if the block argument is unnamed.

ksss avatar Feb 03 '24 05:02 ksss