[#46930] [ruby-trunk - Bug #6825][Open] forking and pthread_cond_timedwait: Invalid argument (EINVAL) on OS X / 1.9.3-p194 — "xentronium (Mark A)" <markizko@...>

29 messages 2012/08/02

[#46974] [ruby-trunk - Bug #6830][Assigned] test failure test_constants(OpenSSL::TestConfig) [/ruby/test/openssl/test_config.rb:27] on Mac + homebrew — "kosaki (Motohiro KOSAKI)" <kosaki.motohiro@...>

17 messages 2012/08/04

[#46975] [ruby-trunk - Bug #6831][Assigned] test_getpwuid() on Mountain Lion — "kosaki (Motohiro KOSAKI)" <kosaki.motohiro@...>

12 messages 2012/08/04

[#46996] [ruby-trunk - Bug #6836][Assigned] Improve File.expand_path performance in Windows — "luislavena (Luis Lavena)" <luislavena@...>

15 messages 2012/08/04

[#47036] [ruby-trunk - Feature #6841][Open] Shorthand for Assigning Return Value of Method to Self — "wardrop (Tom Wardrop)" <tom@...>

18 messages 2012/08/07

[#47108] [ruby-trunk - Feature #6852][Open] [].transpose should behave specially — "boris_stitnicky (Boris Stitnicky)" <boris@...>

13 messages 2012/08/10

[#47138] [ruby-trunk - Bug #6861][Open] ERB::Util.escape_html is not escaping single quotes — "spastorino (Santiago Pastorino)" <santiago@...>

14 messages 2012/08/12

[#47163] [ruby-trunk - Bug #6865][Open] GC::Profiler.report might create a huge String and invoke a few GC cycles — "Eregon (Benoit Daloze)" <redmine@...>

9 messages 2012/08/13

[#47189] [ruby-trunk - Feature #6868][Open] Make `do` in block syntax optional when the block is the last argument of a method and is not an optional argument — "alexeymuranov (Alexey Muranov)" <redmine@...>

8 messages 2012/08/14

[#47243] [ruby-trunk - Feature #6895][Open] TracePoint API — "ko1 (Koichi Sasada)" <redmine@...>

27 messages 2012/08/20

[#47267] [ruby-trunk - Bug #6903][Open] [[Ruby 1.9:]] --enable-load-relative broken on systems with /lib64 — "mpapis (Michal Papis)" <mpapis@...>

11 messages 2012/08/22

[#47309] [ruby-trunk - Bug #6929][Open] Documentation for Ripper — "zzak (Zachary Scott)" <zachary@...>

16 messages 2012/08/25

[#47345] [ruby-trunk - Feature #6946][Open] FIPS support? — "vo.x (Vit Ondruch)" <v.ondruch@...>

35 messages 2012/08/28

[ruby-core:47066] [ruby-trunk - Bug #6374] Acces to initialized class variable from included module

From: "shugo (Shugo Maeda)" <redmine@...>
Date: 2012-08-08 04:43:52 UTC
List: ruby-core #47066
Issue #6374 has been updated by shugo (Shugo Maeda).


mame (Yusuke Endoh) wrote:
> I guess this is where "the Standard" comes in.
> Anyone who can check ISO/IEC 30170 ?  I don't have ;-)

The current behavior is conforming to ISO/IEC 30170.

In "11.5.4.5 Class variables" of ISO/IEC 30170:

  A class-variable-identifier is evaluated as follows:
  a) Let N be the class-variable-identifier. Let C be the first class or module in the list at the top of [class-module-list] which is not a singleton class.
  b) Let CS be the set of classes which consists of C and all the superclasses of C. Let MS be the set of modules which consists of all the modules in the included module list of all classes in CS. Let CM be the union of CS and MS.
  c) If a binding with name N exists in the set of bindings of class variables of only one of the classes or modules in CM, let V be the value of the binding.
  d) If more than two classes or modules in CM have a binding with name N in the set of bindings of class variables, let V be the value of one of these bindings. Which binding is selected is implementation-defined.
  e) If none of the classes or modules in CM has a binding with name N in the set of bindings of class variables, let S be a direct instance of the class Symbol with name N and raise a direct instance of the class NameError which has S as its name attribute.
  f) The value of the class-variable-identifier is V.

, where [class-module-list] is a stack of lists who represent the basically same information as Module.nesting.

----------------------------------------
Bug #6374: Acces to initialized class variable from included module
https://bugs.ruby-lang.org/issues/6374#change-28720

Author: Sega100500 (Сергей Е)
Status: Feedback
Priority: Normal
Assignee: 
Category: 
Target version: 1.9.3
ruby -v: ruby 1.9.3p194 (2012-04-20 revision 35410) [i686-linux]


# Description of bug (?) below in comments of code
# May by it is not a bug, but feature ?

module Variables

	def print_var
		print "In module #{self.class.name}: #{@variable}\n"
	end

	def print_class_var
		print "In module class-variable #{self.class.name}: #{@@class_variable}\n"
	end

	def set_variables(var, cvar)
		@variable = var
		@@class_variable = cvar
	end

end


class A

	include Variables

	def initialize(var, cvar)
		@variable = var
		@@class_variable = cvar
	end

	def print_variables
		print "variables: #{@variable}, #{@@class_variable}\n"
	end

	def self.print_class_a_variables
		print "Class '#{self.class.name}' variable: #{@@class_variable}\n"
	end

end

class B < A
end

a = A.new(123, 456)

A.print_class_a_variables
B.print_class_a_variables

a.print_variables

a.print_var

a.print_class_var # fail: :8:in `print_class_var': uninitialized class variable @@class_variable in Variables (NameError)
									# Why? I set '@@class_variable` in 'initialize'

a.set_variables(12, 33) # Once again set '@@class_variavle'

a.print_class_var # But this method is tested


-- 
http://bugs.ruby-lang.org/

In This Thread