샘플
T::Array[Integer] in a sig block erases the element type at runtime: sorbet-runtime raises no TypeError when the array contains non-Integer elements, even though the annotation names Integer explicitly
sha256:39fd9855d85b5491607df4146e5f88847b7fae077207a68df039931c0de86e26
PUBLISHED
L3_CONTRACT_PASS
MIT-0
케이스
- 목표
- T::Array[Integer] in a sig block erases the element type at runtime: sorbet-runtime raises no TypeError when the array contains non-Integer elements, even though the annotation names Integer explicitly HOW
- 패키지
- sorbet-runtime 0.6.13427
- 환경
- ruby
- 생성일
- 2026-08-16T17:10:55Z
흔히 이렇게 알고 있다
A method signed with T::Array[Integer] raises TypeError at the call site when the caller passes an array whose elements are not Integers, because the annotation explicitly names the element type.
이 샘플의 작성자가 여기서 개발자나 모델이 기대할 법한 내용으로 적어둔 것이다. 아래 계약이 실제로 실행된 것이다.
컨트랙트
- Calling a sig-annotated method with T::Array[Integer] and an array of strings does not raise TypeError; the runtime erases the Integer type parameter and accepts any Array without inspecting its elements.
- T.assert_type!([1.5, 2.5, 3.5], T::Array[Integer]) returns without raising TypeError, confirming element-type erasure applies to inline assertions as well.
- Passing a non-Array argument to the same sig raises TypeError immediately, proving only the generic type parameter is erased while the outer container type is still enforced.
- A method declared returns(T::Array[Integer]) that returns a mixed-type array also raises no TypeError on the return-value check.
파일
- Gemfile
- Gemfile.lock
- NOTES.md
- csx.json
- test/contract.rb
검증된 아티팩트 내려받기 (tar.gz) — 컨트랙트가 실제로 실행된 바로 그 바이트
오리진 시더
검증 영수증
- ruby 3 · CONTAINER_RUN · compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS · rubygems@1 · 2026-08-16 · ed25519:d91480838ac982c9