From c7a6cf975d88828c2ed27d253f41c480f9b66ad6 Mon Sep 17 00:00:00 2001 From: Lin Jen-Shin Date: Tue, 15 Feb 2011 22:53:30 +0800 Subject: [PATCH 2/2] psych/visitors/yaml_tree.rb: skip warning when excpt as last commit says --- ext/psych/lib/psych/visitors/yaml_tree.rb | 34 ++++++++++++++++++---------- 1 files changed, 22 insertions(+), 12 deletions(-) diff --git a/ext/psych/lib/psych/visitors/yaml_tree.rb b/ext/psych/lib/psych/visitors/yaml_tree.rb index f7f11f8..98ef2e4 100644 --- a/ext/psych/lib/psych/visitors/yaml_tree.rb +++ b/ext/psych/lib/psych/visitors/yaml_tree.rb @@ -76,15 +76,20 @@ module Psych end if target.respond_to?(:to_yaml) - loc = target.public_method(:to_yaml).source_location.first - if loc !~ /(syck\/rubytypes.rb|psych\/core_ext.rb)/ - unless target.respond_to?(:encode_with) - if $VERBOSE - warn "implementing to_yaml is deprecated, please implement \"encode_with\"" + begin + loc = target.public_method(:to_yaml).source_location.first + if loc !~ /(syck\/rubytypes.rb|psych\/core_ext.rb)/ + unless target.respond_to?(:encode_with) + if $VERBOSE + warn "implementing to_yaml is deprecated, please implement \"encode_with\"" + end + + target.to_yaml(:nodump => true) end - - target.to_yaml(:nodump => true) end + rescue + # public_method or source_location might be overridden, + # and it's OK to skip it since it's only to emit a warning. end end @@ -297,12 +302,17 @@ module Psych # FIXME: remove this method once "to_yaml_properties" is removed def find_ivars target - loc = target.public_method(:to_yaml_properties).source_location.first - unless loc.start_with?(Psych::DEPRECATED) || loc.end_with?('rubytypes.rb') - if $VERBOSE - warn "#{loc}: to_yaml_properties is deprecated, please implement \"encode_with(coder)\"" + begin + loc = target.public_method(:to_yaml_properties).source_location.first + unless loc.start_with?(Psych::DEPRECATED) || loc.end_with?('rubytypes.rb') + if $VERBOSE + warn "#{loc}: to_yaml_properties is deprecated, please implement \"encode_with(coder)\"" + end + return target.to_yaml_properties end - return target.to_yaml_properties + rescue + # public_method or source_location might be overridden, + # and it's OK to skip it since it's only to emit a warning. end target.instance_variables -- 1.7.4.1