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

ENFORCE failure when giving extra arg to type_member #6780

Open
jez opened this issue Feb 24, 2023 · 0 comments
Open

ENFORCE failure when giving extra arg to type_member #6780

jez opened this issue Feb 24, 2023 · 0 comments
Labels
bug Something isn't working crash Sorbet should never hard crash good first issue Good for newcomers

Comments

@jez
Copy link
Collaborator

jez commented Feb 24, 2023

Input

→ View on sorbet.run

# typed: true

class A
  extend T::Generic

  X = type_member(:out, :extra)
end

Observed output

editor.rb:6: Too many args in type definition https://srb.help/4011
     6 |  X = type_member(:out, :extra)
              ^^^^^^^^^^^^^^^^^^^^^^^^^
Errors: 1

Note The above is what sorbet.run shows, but it doesn't run ENFORCEs. This is what a debug build shows:

❯ sorbet foo.rb
Exception::raise(): namer/namer.cc:1968 enforced condition sym.exists() has failed: (no message provided)

Backtrace:
  #3 0xbc09f2
  #4 0x13cf752 sorbet::namer::(anonymous namespace)::TreeSymbolizer::handleTypeMemberDefinition()
  #5 0x13ce69b sorbet::namer::(anonymous namespace)::TreeSymbolizer::postTransformAssign()
  #6 0x13ce3ba sorbet::ast::MapFunctions<>::CALL_MEMBER_impl_postTransformAssign<>::call<>()
  #7 0x13cb4ae sorbet::ast::TreeMapper<>::mapAssign()
  #8 0x13ca290 sorbet::ast::TreeMapper<>::mapIt()
  #9 0x13caafa sorbet::ast::TreeMapper<>::mapClassDef()
  #10 0x13c9c2b sorbet::ast::TreeMapper<>::mapIt()
  #11 0x13caafa sorbet::ast::TreeMapper<>::mapClassDef()
  #12 0x13c9c2b sorbet::ast::TreeMapper<>::mapIt()
  #13 0x13c97aa sorbet::ast::TreeWalk::apply<>()
  #14 0x13c94b8 sorbet::namer::(anonymous namespace)::symbolizeTrees()::$_5::operator()()
  #15 0x13c916d std::__1::__invoke<>()
  #16 0x13c911d std::__1::__invoke_void_return_wrapper<>::__call<>()
  #17 0x13c90ed std::__1::__function::__alloc_func<>::operator()()
  #18 0x13c82a9 std::__1::__function::__func<>::operator()()
  #19 0x1768642 std::__1::__function::__value_func<>::operator()()
  #20 0x175eee5 std::__1::function<>::operator()()
  #21 0x1bf0733 sorbet::WorkerPoolImpl::multiplexJob()
  #22 0x139f2cc sorbet::namer::(anonymous namespace)::symbolizeTrees()
  #23 0x139db7e sorbet::namer::Namer::runInternal()
  #24 0x139f700 sorbet::namer::Namer::run()
  #25 0xf5e746 sorbet::realmain::pipeline::name()
  #26 0xf5ee31 sorbet::realmain::pipeline::resolve()
  #27 0xbb2569 sorbet::realmain::realmain()
  #28 0xbace42 main
  #29 0x7f4590203083 __libc_start_main
  #30 0xbacd4e _start

Exception::raise(): ast/Trees.cc:91 enforced condition ptr != nullptr has failed: (no message provided)

Backtrace:
  #3 0xbc09f2
  #4 0x18dd364 sorbet::ast::ExpressionPtr::loc()
  #5 0x13ca1e1 sorbet::ast::TreeMapper<>::mapIt()
  #6 0x13caafa sorbet::ast::TreeMapper<>::mapClassDef()
  #7 0x13c9c2b sorbet::ast::TreeMapper<>::mapIt()
  #8 0x13caafa sorbet::ast::TreeMapper<>::mapClassDef()
  #9 0x13c9c2b sorbet::ast::TreeMapper<>::mapIt()
  #10 0x13c97aa sorbet::ast::TreeWalk::apply<>()
  #11 0x13c94b8 sorbet::namer::(anonymous namespace)::symbolizeTrees()::$_5::operator()()
  #12 0x13c916d std::__1::__invoke<>()
  #13 0x13c911d std::__1::__invoke_void_return_wrapper<>::__call<>()
  #14 0x13c90ed std::__1::__function::__alloc_func<>::operator()()
  #15 0x13c82a9 std::__1::__function::__func<>::operator()()
  #16 0x1768642 std::__1::__function::__value_func<>::operator()()
  #17 0x175eee5 std::__1::function<>::operator()()
  #18 0x1bf0733 sorbet::WorkerPoolImpl::multiplexJob()
  #19 0x139f2cc sorbet::namer::(anonymous namespace)::symbolizeTrees()
  #20 0x139db7e sorbet::namer::Namer::runInternal()
  #21 0x139f700 sorbet::namer::Namer::run()
  #22 0xf5e746 sorbet::realmain::pipeline::name()
  #23 0xf5ee31 sorbet::realmain::pipeline::resolve()
  #24 0xbb2569 sorbet::realmain::realmain()
  #25 0xbace42 main
  #26 0x7f4590203083 __libc_start_main
  #27 0xbacd4e _start

foo.rb:3: Failed to process tree (backtrace is above) https://srb.help/1001
     3 |class A
     4 |  extend T::Generic
     5 |
     6 |  X = type_member(:out, :extra)
     7 |end

???: Exception resolving (backtrace is above) https://srb.help/1001
Errors: 2

Expected behavior

Sorbet should not crash.


@jez jez added bug Something isn't working good first issue Good for newcomers crash Sorbet should never hard crash labels Feb 24, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working crash Sorbet should never hard crash good first issue Good for newcomers
Projects
None yet
Development

No branches or pull requests

1 participant