[#111712] [Ruby master Feature#19322] Support spawning "private" child processes — "kjtsanaktsidis (KJ Tsanaktsidis) via ruby-core" <ruby-core@...>
SXNzdWUgIzE5MzIyIGhhcyBiZWVuIHJlcG9ydGVkIGJ5IGtqdHNhbmFrdHNpZGlzIChLSiBUc2Fu
14 messages
2023/01/07
[ruby-core:111832] [Ruby master Bug#19345] Class variable access from top-level inappropriate error
From:
"Eregon (Benoit Daloze) via ruby-core" <ruby-core@...>
Date:
2023-01-16 13:26:34 UTC
List:
ruby-core #111832
Issue #19345 has been updated by Eregon (Benoit Daloze).
Status changed from Open to Closed
Class variables work similar to constants in terms of lookup, they only use the scopes opened by `class Name/module Name/class << expr`.
`module_{eval,exec}/class_{eval,exec}` do not change that scope.
So this is expected, `EnvUtil.labeled_class` doesn't change the scope for constants & class variables.
----------------------------------------
Bug #19345: Class variable access from top-level inappropriate error
https://bugs.ruby-lang.org/issues/19345#change-101241
* Author: luke-gru (Luke Gruber)
* Status: Closed
* Priority: Normal
* Backport: 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN
----------------------------------------
I was looking at doing something like this:
```ruby
set_cvar = EnvUtil.labeled_class("SetCVar") do
def self.set(val)
@@a = val
end
end
set_cvar.set(1) # fill write cache
set_cvar.freeze
set_cvar.set(2) # hit write cache, but should check frozen status
```
while working on a ruby issue (https://github.com/ruby/ruby/pull/7124) and I ran into an issue.
This code above gives the error "class variable access from toplevel (RuntimeError)"
Is this a bug or how it's supposed to work? The error is being raised in function `vm_get_cvar_base`.
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/