-
Notifications
You must be signed in to change notification settings - Fork 512
/
attr.rb
40 lines (32 loc) · 1.04 KB
/
attr.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# typed: strict
class TestAttr
extend T::Sig
sig {void}
def initialize
@v1 = T.let(0, Integer)
@v2 = T.let("", String)
@v6 = T.let("", String)
@strv7 = T.let(0.0, Float)
@strv8 = T.let(0.0, Float)
@strv9 = T.let(0.0, Float)
end
sig {returns(Integer)}
attr :v1
sig {params(v1: Integer).returns(Integer)}
attr_writer :v1
sig {returns(String)}
attr_accessor :v2
sig {returns(String)}
attr_reader :v3 # error: Use of undeclared variable `@v3`
attr_writer :v4, :v5
# ^^^^^^^^^^^^^^^^^^^^ error: The method `v4=` does not have a `sig`
# ^^^^^^^^^^^^^^^^^^^^ error: The method `v5=` does not have a `sig`
# ^^ error: The instance variable `@v4` must be declared using `T.let` when specifying `# typed: strict`
# ^^ error: The instance variable `@v5` must be declared using `T.let` when specifying `# typed: strict`
sig {returns(Float)}
attr_reader "strv7"
sig {params(strv8: Float).returns(Float)}
attr_writer "strv8"
sig {returns(Float)}
attr_accessor "strv9"
end