Giter VIP home page Giter VIP logo

Comments (1)

jez avatar jez commented on May 20, 2024

I think this is a simple problem of has_kwarg not having a sig. Without a signature, Sorbet simply binds value to foo, which is allowed since foo is T.untyped in the absence of a sig.

Adding a sig makes the expected error appear:

→ View on sorbet.run

# typed: true

class S
  extend T::Sig
  sig {params(value: Integer, foo: Integer, baz: Integer).void}
  def self.has_kwarg(value, foo = 1, baz: 2)
  end
end

class C
  extend T::Sig
  extend T::Generic
  A = type_member
  sig {params(value: A).void}
  def dd(value)
    S.has_kwarg(1, value)
  end
end

Observed output

editor.rb:16: Expected Integer but found C::A for argument foo https://srb.help/7002
    16 |    S.has_kwarg(1, value)
                           ^^^^^
  Expected Integer for argument foo of method S.has_kwarg:
    editor.rb:5:
     5 |  sig {params(value: Integer, foo: Integer, baz: Integer).void}
                                      ^^^
  Got C::A originating from:
    editor.rb:15:
    15 |  def dd(value)
                 ^^^^^
Errors: 1

from sorbet.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.