Module: Literal::Modifiers::Final

Defined in:
lib/literal/modifiers/final.rb

Instance Method Summary collapse

Instance Method Details

#final(method_name) ⇒ Object



4
5
6
7
# File 'lib/literal/modifiers/final.rb', line 4

def final(method_name)
	final_methods[method_name] = true
	method_name
end

#final_methodsObject



17
18
19
20
21
22
23
24
25
# File 'lib/literal/modifiers/final.rb', line 17

def final_methods
	return @final_methods if defined?(@final_methods)

	if is_a?(Class) && superclass.is_a?(Literal::Modifiers)
		@final_methods = superclass.final_methods.dup
	else
		@final_methods = Concurrent::Map.new
	end
end

#method_added(method_name) ⇒ Object



9
10
11
12
13
14
15
# File 'lib/literal/modifiers/final.rb', line 9

def method_added(method_name)
	if final_methods[method_name]
		raise "Method #{method_name} is final and cannot be overridden."
	end

	super
end