diff --git a/lib/method_source.rb b/lib/method_source.rb index ffd79ad..f362363 100644 --- a/lib/method_source.rb +++ b/lib/method_source.rb @@ -145,7 +145,7 @@ def class_comment return comment end - if class_inst_or_module.respond_to?(:name) + if class_inst_or_module.is_a?(Module) const_name = class_inst_or_module.name else const_name = class_inst_or_module.class.name diff --git a/spec/method_source_spec.rb b/spec/method_source_spec.rb index 1927670..3dcaccc 100644 --- a/spec/method_source_spec.rb +++ b/spec/method_source_spec.rb @@ -1,5 +1,11 @@ require 'spec_helper' +# Documentation for a class whose instances define #name. +class MethodSourceNamedInstance + def name; "instance name"; end + def work; end +end + describe MethodSource do describe "source_location (testing 1.8 implementation)" do @@ -96,6 +102,11 @@ # if RUBY_VERSION =~ /1.9/ || is_rbx? describe "Lambdas and Procs" do + it "uses the class for a named ordinary instance" do + comment = MethodSourceNamedInstance.new.method(:work).class_comment + expect(comment).to eq("# Documentation for a class whose instances define #name.\n") + end + it 'should return source for proc' do expect(MyProc.source).to eq(@proc_source) end