1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/spec/rubyspec/language/fixtures/defined.rb
eregon 95e8c48dd3 Add in-tree mspec and ruby/spec
* For easier modifications of ruby/spec by MRI developers.
* .gitignore: track changes under spec.
* spec/mspec, spec/rubyspec: add in-tree mspec and ruby/spec.
  These files can therefore be updated like any other file in MRI.
  Instructions are provided in spec/README.
  [Feature #13156] [ruby-core:79246]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58595 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-07 12:04:49 +00:00

296 lines
5.2 KiB
Ruby

module DefinedSpecs
self::SelfScoped = 42
def self.side_effects
ScratchPad.record :defined_specs_side_effects
end
def self.fixnum_method
ScratchPad.record :defined_specs_fixnum_method
42
end
def self.exception_method
ScratchPad.record :defined_specs_exception
raise "defined? specs exception method"
end
def self.defined_method
DefinedSpecs
end
class Basic
A = 42
def defined_method
DefinedSpecs
end
def a_defined_method
end
def protected_method
end
protected :protected_method
def private_method
end
private :private_method
def private_method_defined
defined? private_method
end
def private_predicate?
end
private :private_predicate?
def private_predicate_defined
defined? private_predicate?
end
def local_variable_defined
x = 2
defined? x
end
def local_variable_defined_nil
x = nil
defined? x
end
def instance_variable_undefined
defined? @instance_variable_undefined
end
def instance_variable_read
value = @instance_variable_read
defined? @instance_variable_read
end
def instance_variable_defined
@instance_variable_defined = 1
defined? @instance_variable_defined
end
def instance_variable_defined_nil
@instance_variable_defined_nil = nil
defined? @instance_variable_defined_nil
end
def global_variable_undefined
defined? $defined_specs_global_variable_undefined
end
def global_variable_read
value = $defined_specs_global_variable_read
defined? $defined_specs_global_variable_read
end
def global_variable_defined
$defined_specs_global_variable_defined = 1
defined? $defined_specs_global_variable_defined
end
def class_variable_undefined
defined? @@class_variable_undefined
end
def class_variable_defined
@@class_variable_defined = 1
defined? @@class_variable_defined
end
def yield_defined_method
defined? yield
end
def yield_defined_parameter_method(&block)
defined? yield
end
def no_yield_block
yield_defined_method
end
def no_yield_block_parameter
yield_defined_parameter_method
end
def yield_block
yield_defined_method { 42 }
end
def yield_block_parameter
yield_defined_parameter_method { 42 }
end
end
module Mixin
MixinConstant = 42
def defined_super
defined? super()
end
end
class Parent
ParentConstant = 42
def defined_super; end
end
class Child < Parent
include Mixin
A = 42
def self.parent_constant_defined
defined? self::ParentConstant
end
def self.module_defined
defined? Mixin
end
def self.module_constant_defined
defined? MixinConstant
end
def defined_super
super
end
end
class Superclass
def yield_method
yield
end
def method_no_args
end
def method_args
end
def method_block_no_args
end
def method_block_args
end
def define_method_no_args
end
def define_method_args
end
def define_method_block_no_args
end
def define_method_block_args
end
end
class Super < Superclass
def no_super_method_no_args
defined? super
end
def no_super_method_args
defined? super()
end
def method_no_args
defined? super
end
def method_args
defined? super()
end
def no_super_method_block_no_args
yield_method { defined? super }
end
def no_super_method_block_args
yield_method { defined? super() }
end
def method_block_no_args
yield_method { defined? super }
end
def method_block_args
yield_method { defined? super() }
end
define_method(:no_super_define_method_no_args) { defined? super }
define_method(:no_super_define_method_args) { defined? super() }
define_method(:define_method_no_args) { defined? super }
define_method(:define_method_args) { defined? super() }
define_method(:no_super_define_method_block_no_args) do
yield_method { defined? super }
end
define_method(:no_super_define_method_block_args) do
yield_method { defined? super() }
end
define_method(:define_method_block_no_args) do
yield_method { defined? super }
end
define_method(:define_method_block_args) do
yield_method { defined? super() }
end
end
class ClassWithMethod
def test
end
end
class ClassUndefiningMethod < ClassWithMethod
undef :test
end
class ClassWithoutMethod < ClassUndefiningMethod
# If an undefined method overridden in descendants
# define?(super) should return nil
def test
defined?(super)
end
end
module IntermediateModule1
def method_no_args
end
end
module IntermediateModule2
def method_no_args
defined?(super)
end
end
class SuperWithIntermediateModules
include IntermediateModule1
include IntermediateModule2
def method_no_args
super
end
end
end
class Object
def defined_specs_method
DefinedSpecs
end
def defined_specs_receiver
DefinedSpecs::Basic.new
end
end