summaryrefslogtreecommitdiffhomepage
path: root/mrblib
diff options
context:
space:
mode:
authorRyan Scott <[email protected]>2013-07-19 22:39:54 +1000
committerRyan Scott <[email protected]>2013-07-19 22:39:54 +1000
commitfe5324bd17d1716592b244762173e7478ebf7853 (patch)
treed29947383258a6215c5eb1bf7617e11ddd8f1f27 /mrblib
parent958d5b763df9cbfbf0173d35ba0ba27934f16394 (diff)
downloadmruby-fe5324bd17d1716592b244762173e7478ebf7853.tar.gz
mruby-fe5324bd17d1716592b244762173e7478ebf7853.zip
Wrote tests around attr, attr_reader, attr_writer, attr_accessor
Diffstat (limited to 'mrblib')
-rw-r--r--mrblib/class.rb20
1 files changed, 13 insertions, 7 deletions
diff --git a/mrblib/class.rb b/mrblib/class.rb
index 4f268b6c8..0678d943d 100644
--- a/mrblib/class.rb
+++ b/mrblib/class.rb
@@ -1,18 +1,24 @@
class Module
# 15.2.2.4.13
def attr_reader(*names)
- names.each{|name|
- name2 = ('@'+name.to_s).intern
+ names.each do |name|
+ name = name.to_s
+ raise(NameError, "#{name.inspect} is not allowed as an instance variable name") if name.include?('@') || name.include?('?') || name.include?('$')
+
+ name2 = ('@'+name).intern
define_method(name){self.instance_variable_get(name2)}
- }
+ end
end
# 15.2.2.4.14
def attr_writer(*names)
- names.each{|name|
- name2 = ('@'+name.to_s).intern
- name = (name.to_s+"=").intern
+ names.each do |name|
+ name = name.to_s
+ raise(NameError, "#{name.inspect} is not allowed as an instance variable name") if name.include?('@') || name.include?('?') || name.include?('$')
+
+ name2 = ('@'+name).intern
+ name = (name+"=").intern
define_method(name){|v|self.instance_variable_set(name2,v)}
- }
+ end
end
# 15.2.2.4.12
def attr_accessor(*names)