contracts.ruby icon indicating copy to clipboard operation
contracts.ruby copied to clipboard

Method validate_decorators! claims multiple (55!) contracts for method psych_yaml_as

Open BurdetteLamar opened this issue 8 years ago • 0 comments

Hacking in a fix for Issue #279 (Method 'validate_decorators!' raises NameError) causes (in my app) that same method to raise RuntimeError with a message (see below) claiming that there are multiple contracts on method 'psych_yaml_as', which is in /lib/ruby/2.2.0/psych/core_ext.rb.

I don't know what to make of this. I'm not optimistic about crafting a simple example that shows the error, but hope that the trace (see below) will be a clue for some guru.

--- begin message -- c:/Ruby22/lib/ruby/gems/2.2.0/gems/contracts-0.16.0/lib/contracts/method_handler .rb:159:in `validate_decorators!': (RuntimeError) Oops, it looks like method 'psych_yaml_as' has multiple contracts: #<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]> #<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]> Symbol #<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]> #<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]> Symbol #<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]> #<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]> Symbol #<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]> #<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]> Symbol #<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]> #<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]> Symbol #<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]> #<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]> Symbol #<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]> #<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]> Symbol #<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]> #<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]> Symbol #<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]> #<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]> Symbol #<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]> #<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]> Symbol #<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]> #<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]> Symbol #<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]> Symbol #<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]> #<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]> Symbol #<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]> Symbol #<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]> #<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]> Symbol #<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]> #<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]> Symbol #<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]> Symbol #<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]> Symbol #<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]> #<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]> #<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]> #<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]> #<Contracts::Builtin::Or:0x1e45dc8 @vals=[Symbol, Array]>

Did you accidentally put more than one contract on a single function, like so?

Contract String => String Contract Num => String def foo x end

If you did NOT, then you have probably discovered a bug in this library. Please file it along with the relevant code at: https://github.com/egonSchiele/contracts.ruby/issues

--- end message---

--- begin trace --- from c:/Ruby22/lib/ruby/gems/2.2.0/gems/contracts-0.16.0/lib/contracts/m ethod_handler.rb:31:in handle' from c:/Ruby22/lib/ruby/gems/2.2.0/gems/contracts-0.16.0/lib/contracts/d ecorators.rb:13:in method_added' from c:/Ruby22/lib/ruby/2.2.0/psych/core_ext.rb:21:in <class:Module>' from c:/Ruby22/lib/ruby/2.2.0/psych/core_ext.rb:20:in <top (required)>'

    from c:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in

require' from c:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in require' from c:/Ruby22/lib/ruby/2.2.0/psych.rb:11:in <top (required)>' from c:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in require' from c:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in require' from c:/Ruby22/lib/ruby/2.2.0/yaml.rb:5:in <top (required)>' from c:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in require' from c:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in require' from c:/Ruby22/lib/ruby/gems/2.2.0/gems/watir-6.10.0/lib/watir/cookies.r b:1:in <top (required)>' from c:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in require' from c:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in require' from c:/Ruby22/lib/ruby/gems/2.2.0/gems/watir-6.10.0/lib/watir.rb:14:in <top (required)>' from c:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:128:in require' from c:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:128:in rescue in require' from c:/Ruby22/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:39:in require' from c:/Users/Burdette/Documents/GitHub/RubyTest/examples/github/ui/ui_c lient.rb:1:in <top (required)>' from c:/Users/Burdette/Documents/GitHub/RubyTest/examples/github/base_cl asses/base_class_for_test.rb:5:in require_relative' from c:/Users/Burdette/Documents/GitHub/RubyTest/examples/github/base_cl asses/base_class_for_test.rb:5:in <top (required)>' from c:/Users/Burdette/Documents/GitHub/RubyTest/examples/github/tester_ tour/tests/meet_test.rb:1:in require_relative' from c:/Users/Burdette/Documents/GitHub/RubyTest/examples/github/tester_ tour/tests/meet_test.rb:1:in

' rake aborted! Errno::ENOENT: No such file or directory @ rb_sysopen - C:/Users/Burdette/AppDat a/Roaming/RubyTest/logs/github_api/2017.12.13-Wed-14.47.46/test_meet.xml c:/Users/Burdette/Documents/GitHub/RubyTest/lib/log/log.rb:385:in initialize' c:/Users/Burdette/Documents/GitHub/RubyTest/lib/log/log.rb:385:in open' c:/Users/Burdette/Documents/GitHub/RubyTest/lib/log/log.rb:385:in get_counts_fr om_file' c:/Users/Burdette/Documents/GitHub/RubyTest/examples/github/Rakefile:190:in blo ck (3 levels) in <top (required)>' c:/Users/Burdette/Documents/GitHub/RubyTest/examples/github/Rakefile:174:in eac h' c:/Users/Burdette/Documents/GitHub/RubyTest/examples/github/Rakefile:174:in blo ck (2 levels) in <top (required)>' c:/Users/Burdette/Documents/GitHub/RubyTest/examples/github/Rakefile:171:in eac h_pair' c:/Users/Burdette/Documents/GitHub/RubyTest/examples/github/Rakefile:171:in blo ck in <top (required)>' --- end trace ---

BurdetteLamar avatar Dec 13 '17 21:12 BurdetteLamar