Comments (1)
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:
# 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)
- Missing out-of-order constant error if constant doesn't resolve on first tree walk
- Better error when calling `Kernel` methods on `T.anything`
- Another bug with "singleton class method with same name" hint
- Missing signatures for RubyVM::YJIT HOT 1
- Explicitly passing `nil` does not set serialized value to `nil`
- T.let gives unexpected behavior with instance variables HOT 4
- Show "untyped usage" for nested untyped
- Allow showing "usage of untyped" information diagnostics at the command line
- ENFORCE failure in AST verifier
- T.self_type cannot be used in interface definition HOT 2
- Code action to convert endless method to method with end
- Apple Silicon builds of sorbet-static
- Better "dead code" error location
- Hovering over comment inside `rescue` body shows `Void`
- Hovering over comment inside `private def` shows definition of `private` modifier method
- Block arity isn't considered for overloads HOT 2
- Overloaded sig isn't matched on T.untyped argument HOT 1
- Show the T.attached_class specificity note when the attached class is inside something else
- Incorrect inferred variable value inside `ensure` block when method body has `return` statements
- Untyped positional argument does not count as a usage of untyped in Ruby 2 keyword passing
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sorbet.