Skip to content

Commit f33cd12

Browse files
ZJIT: Add tests for non-leaf classvar get and set (ruby#14924)
This commit adds tests that raise on `getclassvariable` and `setclassvariable` to exercise the non-leaf cases as suggested in ruby#14918 (comment)
1 parent 1d83553 commit f33cd12

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

test/ruby/test_zjit.rb

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1675,6 +1675,20 @@ def self.test = @@x
16751675
}
16761676
end
16771677

1678+
def test_getclassvariable_raises
1679+
assert_compiles '"uninitialized class variable @@x in Foo"', %q{
1680+
class Foo
1681+
def self.test = @@x
1682+
end
1683+
1684+
begin
1685+
Foo.test
1686+
rescue NameError => e
1687+
e.message
1688+
end
1689+
}
1690+
end
1691+
16781692
def test_setclassvariable
16791693
assert_compiles '42', %q{
16801694
class Foo
@@ -1686,6 +1700,21 @@ def self.test = @@x = 42
16861700
}
16871701
end
16881702

1703+
def test_setclassvariable_raises
1704+
assert_compiles '"can\'t modify frozen #<Class:Foo>: Foo"', %q{
1705+
class Foo
1706+
def self.test = @@x = 42
1707+
freeze
1708+
end
1709+
1710+
begin
1711+
Foo.test
1712+
rescue FrozenError => e
1713+
e.message
1714+
end
1715+
}
1716+
end
1717+
16891718
def test_attr_reader
16901719
assert_compiles '[4, 4]', %q{
16911720
class C

0 commit comments

Comments
 (0)