rubybreaker 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. data/README.md +6 -6
  2. data/TUTORIAL.md +64 -34
  3. data/VERSION +1 -1
  4. data/lib/rubybreaker/debug/error.rb +7 -1
  5. data/lib/rubybreaker/runtime/monitor.rb +2 -2
  6. data/lib/rubybreaker/runtime/object_wrapper.rb +32 -1
  7. data/lib/rubybreaker/runtime/overrides.rb +31 -1
  8. data/lib/rubybreaker/runtime/type_system.rb +67 -11
  9. data/test/integrated/tc_checking.rb +35 -5
  10. data/test/integrated/tc_class_methods.rb +4 -1
  11. data/test/integrated/tc_original_behavior.rb +68 -0
  12. data/test/runtime/tc_obj_wrapper.rb +50 -4
  13. data/test/testtask/tc_testtask.rb +1 -1
  14. data/test/ts_integrated.rb +3 -1
  15. data/webpage/images/title.png +0 -0
  16. data/webpage/index.html +6 -6
  17. data/webpage/rdoc/Object.html +5 -1
  18. data/webpage/rdoc/Rake.html +5 -1
  19. data/webpage/rdoc/Rake/RubyBreakerTestTask.html +5 -1
  20. data/webpage/rdoc/RubyBreaker.html +5 -1
  21. data/webpage/rdoc/RubyBreaker/Breakable.html +5 -1
  22. data/webpage/rdoc/RubyBreaker/Broken.html +5 -1
  23. data/webpage/rdoc/RubyBreaker/Context.html +5 -1
  24. data/webpage/rdoc/RubyBreaker/Errors.html +5 -1
  25. data/webpage/rdoc/RubyBreaker/Errors/ArgumentTypeError.html +216 -0
  26. data/webpage/rdoc/RubyBreaker/Errors/{SubtypeFailure.html → ArityError.html} +7 -3
  27. data/webpage/rdoc/RubyBreaker/Errors/InternalError.html +5 -1
  28. data/webpage/rdoc/RubyBreaker/Errors/InvalidSubtypeCheck.html +5 -1
  29. data/webpage/rdoc/RubyBreaker/Errors/InvalidTypeConstruction.html +5 -1
  30. data/webpage/rdoc/RubyBreaker/Errors/ReturnTypeError.html +216 -0
  31. data/webpage/rdoc/RubyBreaker/Errors/TypeError.html +5 -1
  32. data/webpage/rdoc/RubyBreaker/Errors/UserError.html +5 -1
  33. data/webpage/rdoc/RubyBreaker/ObjectPosition.html +5 -1
  34. data/webpage/rdoc/RubyBreaker/Position.html +5 -1
  35. data/webpage/rdoc/RubyBreaker/RDocSupport.html +5 -1
  36. data/webpage/rdoc/RubyBreaker/RubyTypeUtils.html +5 -1
  37. data/webpage/rdoc/RubyBreaker/Runtime.html +10 -1
  38. data/webpage/rdoc/RubyBreaker/Runtime/Inspector.html +5 -1
  39. data/webpage/rdoc/RubyBreaker/Runtime/MethodInfo.html +5 -1
  40. data/webpage/rdoc/RubyBreaker/Runtime/Monitor.html +7 -3
  41. data/webpage/rdoc/RubyBreaker/Runtime/MonitorInstaller.html +5 -1
  42. data/webpage/rdoc/RubyBreaker/Runtime/MonitorSwitch.html +5 -1
  43. data/webpage/rdoc/RubyBreaker/Runtime/ObjectWrapper.html +37 -2
  44. data/webpage/rdoc/RubyBreaker/Runtime/Pluggable.html +5 -1
  45. data/webpage/rdoc/RubyBreaker/Runtime/TypeSigParser.html +5 -1
  46. data/webpage/rdoc/RubyBreaker/Runtime/TypeSigUnparser.html +5 -1
  47. data/webpage/rdoc/RubyBreaker/Runtime/TypeSystem.html +103 -16
  48. data/webpage/rdoc/RubyBreaker/TypeComparer.html +5 -1
  49. data/webpage/rdoc/RubyBreaker/TypeDefs.html +5 -1
  50. data/webpage/rdoc/RubyBreaker/TypeDefs/AnyType.html +5 -1
  51. data/webpage/rdoc/RubyBreaker/TypeDefs/BlockType.html +5 -1
  52. data/webpage/rdoc/RubyBreaker/TypeDefs/DuckType.html +5 -1
  53. data/webpage/rdoc/RubyBreaker/TypeDefs/FusionType.html +5 -1
  54. data/webpage/rdoc/RubyBreaker/TypeDefs/MethodListType.html +5 -1
  55. data/webpage/rdoc/RubyBreaker/TypeDefs/MethodType.html +5 -1
  56. data/webpage/rdoc/RubyBreaker/TypeDefs/NilType.html +5 -1
  57. data/webpage/rdoc/RubyBreaker/TypeDefs/NominalType.html +5 -1
  58. data/webpage/rdoc/RubyBreaker/TypeDefs/OptionalType.html +5 -1
  59. data/webpage/rdoc/RubyBreaker/TypeDefs/OrType.html +5 -1
  60. data/webpage/rdoc/RubyBreaker/TypeDefs/SelfType.html +5 -1
  61. data/webpage/rdoc/RubyBreaker/TypeDefs/Type.html +5 -1
  62. data/webpage/rdoc/RubyBreaker/TypeDefs/VarLengthType.html +5 -1
  63. data/webpage/rdoc/RubyBreaker/TypeUnparser.html +5 -1
  64. data/webpage/rdoc/RubyBreaker/Typing.html +5 -1
  65. data/webpage/rdoc/RubyBreaker/Util.html +5 -1
  66. data/webpage/rdoc/Test.html +5 -1
  67. data/webpage/rdoc/Test/Unit.html +5 -1
  68. data/webpage/rdoc/created.rid +8 -8
  69. data/webpage/rdoc/index.html +5 -1
  70. data/webpage/rdoc/js/search_index.js +1 -1
  71. data/webpage/rdoc/table_of_contents.html +39 -31
  72. data/webpage/tutorial.html +69 -39
  73. metadata +8 -5
@@ -1 +1 @@
1
- var search_data = {"index":{"searchIndex":["object","rake","rubybreakertesttask","rubybreaker","breakable","broken","context","errors","internalerror","invalidsubtypecheck","invalidtypeconstruction","subtypefailure","typeerror","usererror","objectposition","position","rdocsupport","rubytypeutils","runtime","inspector","methodinfo","monitor","monitorinstaller","monitorswitch","objectwrapper","pluggable","typesigparser","typesigunparser","typesystem","typecomparer","typedefs","anytype","blocktype","ducktype","fusiontype","methodlisttype","methodtype","niltype","nominaltype","optionaltype","ortype","selftype","type","varlengthtype","typeunparser","typing","util","test","unit","__rubybreaker_obj()","__rubybreaker_type()","add_meth()","break()","break()","break_after_method()","break_after_method()","break_after_method_call()","break_before_method()","break_before_method()","break_before_method_call()","breakable()","breakable()","breakable()","breakable=()","camelize()","check()","check()","check_after_method()","check_after_method()","check_after_method_call()","check_before_method()","check_before_method()","check_before_method_call()","compare()","convert_caller_to_pos()","defined_logger?()","eql?()","error()","export_to_yaml()","format_with_msg()","get()","get_alt_meth_name()","get_orig_meth_name()","get_self()","import_from_yaml()","included()","included()","inspect_all()","inspect_class_meth()","inspect_meth()","inspect_meths()","install_monitor()","instrument()","is_module?()","is_object_wrapped?()","log()","lub()","lub_helper()","method_missing()","mod()","monitor()","monkey_patch_meth()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","ordinalize()","parse()","pop()","pp_methods()","pp_module()","push()","respond_to?()","route()","run()","set()","set_self()","set_to()","subclass_rel?()","submodule_rel?()","subtype_of?()","subtype_rel?()","to_s()","to_s()","turn_off()","turn_on()","type_error_msg_prefix()","underscore()","uneigen()","unparse()","unparse()","unparse()","verbose()"],"longSearchIndex":["object","rake","rake::rubybreakertesttask","rubybreaker","rubybreaker::breakable","rubybreaker::broken","rubybreaker::context","rubybreaker::errors","rubybreaker::errors::internalerror","rubybreaker::errors::invalidsubtypecheck","rubybreaker::errors::invalidtypeconstruction","rubybreaker::errors::subtypefailure","rubybreaker::errors::typeerror","rubybreaker::errors::usererror","rubybreaker::objectposition","rubybreaker::position","rubybreaker::rdocsupport","rubybreaker::rubytypeutils","rubybreaker::runtime","rubybreaker::runtime::inspector","rubybreaker::runtime::methodinfo","rubybreaker::runtime::monitor","rubybreaker::runtime::monitorinstaller","rubybreaker::runtime::monitorswitch","rubybreaker::runtime::objectwrapper","rubybreaker::runtime::pluggable","rubybreaker::runtime::typesigparser","rubybreaker::runtime::typesigunparser","rubybreaker::runtime::typesystem","rubybreaker::typecomparer","rubybreaker::typedefs","rubybreaker::typedefs::anytype","rubybreaker::typedefs::blocktype","rubybreaker::typedefs::ducktype","rubybreaker::typedefs::fusiontype","rubybreaker::typedefs::methodlisttype","rubybreaker::typedefs::methodtype","rubybreaker::typedefs::niltype","rubybreaker::typedefs::nominaltype","rubybreaker::typedefs::optionaltype","rubybreaker::typedefs::ortype","rubybreaker::typedefs::selftype","rubybreaker::typedefs::type","rubybreaker::typedefs::varlengthtype","rubybreaker::typeunparser","rubybreaker::typing","rubybreaker::util","test","test::unit","rubybreaker::runtime::objectwrapper#__rubybreaker_obj()","rubybreaker::runtime::objectwrapper#__rubybreaker_type()","rubybreaker::typedefs::ducktype#add_meth()","rubybreaker::break()","rubybreaker::runtime::break()","rubybreaker::runtime::monitor#break_after_method()","rubybreaker::runtime::typesystem#break_after_method()","rubybreaker::runtime::pluggable#break_after_method_call()","rubybreaker::runtime::monitor#break_before_method()","rubybreaker::runtime::typesystem#break_before_method()","rubybreaker::runtime::pluggable#break_before_method_call()","rake::rubybreakertesttask#breakable()","rubybreaker::breakable()","rubybreaker::runtime::breakable()","rake::rubybreakertesttask#breakable=()","rubybreaker::util::camelize()","rubybreaker::check()","rubybreaker::runtime::check()","rubybreaker::runtime::monitor#check_after_method()","rubybreaker::runtime::typesystem#check_after_method()","rubybreaker::runtime::pluggable#check_after_method_call()","rubybreaker::runtime::monitor#check_before_method()","rubybreaker::runtime::typesystem#check_before_method()","rubybreaker::runtime::pluggable#check_before_method_call()","rubybreaker::typecomparer::compare()","rubybreaker::position::convert_caller_to_pos()","rubybreaker::defined_logger?()","rubybreaker::typedefs::type#eql?()","rubybreaker::error()","rubybreaker::rdocsupport::export_to_yaml()","rubybreaker::context#format_with_msg()","rubybreaker::position::get()","rubybreaker::runtime::monitor::get_alt_meth_name()","rubybreaker::runtime::monitor::get_orig_meth_name()","rubybreaker::typedefs::selftype::get_self()","rubybreaker::rdocsupport::import_from_yaml()","rubybreaker::breakable::included()","rubybreaker::broken::included()","rubybreaker::runtime::inspector::inspect_all()","rubybreaker::runtime::inspector::inspect_class_meth()","rubybreaker::runtime::inspector::inspect_meth()","rubybreaker::runtime::inspector::inspect_meths()","rubybreaker::runtime::monitorinstaller::install_monitor()","rubybreaker::runtime::instrument()","rubybreaker::runtime::monitorinstaller::is_module?()","rubybreaker::runtime::typesystem#is_object_wrapped?()","rubybreaker::log()","rubybreaker::runtime::typesystem#lub()","rubybreaker::runtime::typesystem#lub_helper()","rubybreaker::runtime::objectwrapper#method_missing()","rubybreaker::typedefs::fusiontype#mod()","rubybreaker::monitor()","rubybreaker::runtime::monitorinstaller::monkey_patch_meth()","rake::rubybreakertesttask::new()","rubybreaker::context::new()","rubybreaker::errors::internalerror::new()","rubybreaker::errors::invalidsubtypecheck::new()","rubybreaker::errors::usererror::new()","rubybreaker::objectposition::new()","rubybreaker::position::new()","rubybreaker::runtime::methodinfo::new()","rubybreaker::runtime::monitor::new()","rubybreaker::runtime::monitorswitch::new()","rubybreaker::runtime::objectwrapper::new()","rubybreaker::typedefs::anytype::new()","rubybreaker::typedefs::blocktype::new()","rubybreaker::typedefs::ducktype::new()","rubybreaker::typedefs::fusiontype::new()","rubybreaker::typedefs::methodlisttype::new()","rubybreaker::typedefs::methodtype::new()","rubybreaker::typedefs::niltype::new()","rubybreaker::typedefs::nominaltype::new()","rubybreaker::typedefs::optionaltype::new()","rubybreaker::typedefs::ortype::new()","rubybreaker::typedefs::selftype::new()","rubybreaker::typedefs::type::new()","rubybreaker::typedefs::varlengthtype::new()","rubybreaker::util::ordinalize()","rubybreaker::runtime::typesigparser::parse()","rubybreaker::context#pop()","rubybreaker::runtime::typesigunparser::pp_methods()","rubybreaker::runtime::typesigunparser::pp_module()","rubybreaker::context#push()","rubybreaker::runtime::objectwrapper#respond_to?()","rubybreaker::runtime::monitor::route()","rubybreaker::run()","rubybreaker::position::set()","rubybreaker::typedefs::selftype::set_self()","rubybreaker::runtime::monitorswitch#set_to()","rubybreaker::rubytypeutils::subclass_rel?()","rubybreaker::rubytypeutils::submodule_rel?()","rubybreaker::typedefs::type#subtype_of?()","rubybreaker::typing::subtype_rel?()","rubybreaker::objectposition#to_s()","rubybreaker::position#to_s()","rubybreaker::runtime::monitorswitch#turn_off()","rubybreaker::runtime::monitorswitch#turn_on()","rubybreaker::runtime::typesystem#type_error_msg_prefix()","rubybreaker::util::underscore()","rubybreaker::util::uneigen()","rubybreaker::runtime::typesigunparser::unparse()","rubybreaker::typedefs::type#unparse()","rubybreaker::typeunparser::unparse()","rubybreaker::verbose()"],"info":[["Object","","Object.html","",""],["Rake","","Rake.html","",""],["Rake::RubyBreakerTestTask","","Rake/RubyBreakerTestTask.html","","<p>This class can be used as a replacement for Rake::TestTask. It is a\nsubclass of Rake::TestTask and maintains …\n"],["RubyBreaker","","RubyBreaker.html","","<p>-\n\n<pre>This file contains utility functions that are useful for the Runtime\nLibrary.</pre>\n<p>RubyBreaker is a dynamic …\n"],["RubyBreaker::Breakable","","RubyBreaker/Breakable.html","","<p><strong>DEPRECATED</strong>: Use +Runtime.breakable()+ or\n+RubyBreaker.run()+ method\n\n<pre>instead.</pre>\n"],["RubyBreaker::Broken","","RubyBreaker/Broken.html","","<p><strong>DEPRECATED</strong>: It has no effect.\n"],["RubyBreaker::Context","","RubyBreaker/Context.html","","<p>This class represents a context which consists of one or more positions. A\nposition can refer to a physical …\n"],["RubyBreaker::Errors","","RubyBreaker/Errors.html","","<p>This module contains errors used by RubyBreaker.\n"],["RubyBreaker::Errors::InternalError","","RubyBreaker/Errors/InternalError.html","","<p>This class is a base class for any internal errors. It should be used to\ninform the faults within the …\n"],["RubyBreaker::Errors::InvalidSubtypeCheck","","RubyBreaker/Errors/InvalidSubtypeCheck.html","","<p>This error is thrown when a subtype check is not even appropriate for two\ngiven types. It should NOT …\n"],["RubyBreaker::Errors::InvalidTypeConstruction","","RubyBreaker/Errors/InvalidTypeConstruction.html","","<p>This error is thrown when a type is constructed with invalid elements.\n"],["RubyBreaker::Errors::SubtypeFailure","","RubyBreaker/Errors/SubtypeFailure.html","",""],["RubyBreaker::Errors::TypeError","","RubyBreaker/Errors/TypeError.html","",""],["RubyBreaker::Errors::UserError","","RubyBreaker/Errors/UserError.html","","<p>This class is a base class for any user errors. Unlike internal error, it\nshould use a Context to inform …\n"],["RubyBreaker::ObjectPosition","","RubyBreaker/ObjectPosition.html","","<p>This class represents a position with respect to an object and the name of\na method being invoked.\n"],["RubyBreaker::Position","","RubyBreaker/Position.html","","<p>This class represents a position of the type acquired from either the type\nsignature or code during runtime. …\n"],["RubyBreaker::RDocSupport","","RubyBreaker/RDocSupport.html","","<p>This module has functionalities that are necessary for supporting RDoc\noutput\n"],["RubyBreaker::RubyTypeUtils","","RubyBreaker/RubyTypeUtils.html","",""],["RubyBreaker::Runtime","","RubyBreaker/Runtime.html","","<p>This module contains things that are needed at runtime.\n"],["RubyBreaker::Runtime::Inspector","","RubyBreaker/Runtime/Inspector.html","","<p>This module inspects type information gathered so far.\n"],["RubyBreaker::Runtime::MethodInfo","","RubyBreaker/Runtime/MethodInfo.html","","<p>This class has information (and data) of the method being called. Used by\nPluggable and Monitor\n"],["RubyBreaker::Runtime::Monitor","","RubyBreaker/Runtime/Monitor.html","","<p>This class monitors method calls before and after. It simply reroutes the\nresponsibility to the appropriate …\n"],["RubyBreaker::Runtime::MonitorInstaller","","RubyBreaker/Runtime/MonitorInstaller.html","","<p>This module installs a monitor in the object.\n"],["RubyBreaker::Runtime::MonitorSwitch","","RubyBreaker/Runtime/MonitorSwitch.html","","<p>This class is a switch to turn on and off the type monitoring system. It is\nimportant to turn off the …\n"],["RubyBreaker::Runtime::ObjectWrapper","","RubyBreaker/Runtime/ObjectWrapper.html","","<p>This class represents the shell object that wraps around another object. \nNote that it is a subclass …\n"],["RubyBreaker::Runtime::Pluggable","","RubyBreaker/Runtime/Pluggable.html","","<p>Any Pluggable module can be “plugged” into the RubyBreaker monitoring\nsystem. For example, …\n"],["RubyBreaker::Runtime::TypeSigParser","","RubyBreaker/Runtime/TypeSigParser.html","",""],["RubyBreaker::Runtime::TypeSigUnparser","","RubyBreaker/Runtime/TypeSigUnparser.html","","<p>This module handles unparsing type signatures.\n"],["RubyBreaker::Runtime::TypeSystem","","RubyBreaker/Runtime/TypeSystem.html","","<p>This is the default type system for RubyBreaker. It can be overridden by a\nuser specified type system. …\n"],["RubyBreaker::TypeComparer","","RubyBreaker/TypeComparer.html","","<p>This module compares two RubyBreaker-defined types for the syntactic\nequivalence.\n"],["RubyBreaker::TypeDefs","","RubyBreaker/TypeDefs.html","","<p>This module contains all RubyBreaker type definitions. This module has to\nbe included to the module if …\n"],["RubyBreaker::TypeDefs::AnyType","","RubyBreaker/TypeDefs/AnyType.html","","<p>This type can represent any object\n"],["RubyBreaker::TypeDefs::BlockType","","RubyBreaker/TypeDefs/BlockType.html","","<p>This class represents a block (in a method). It has zero or more argument \ntypes, nested block type (optional), …\n"],["RubyBreaker::TypeDefs::DuckType","","RubyBreaker/TypeDefs/DuckType.html","","<p>This class represents any object with certain methods Usage: [m1,m2,…]\nwhere m1…mn are method names …\n"],["RubyBreaker::TypeDefs::FusionType","","RubyBreaker/TypeDefs/FusionType.html","","<p>This class represents any object that has certain methods whose types are\nsame as the given nominal type’s …\n"],["RubyBreaker::TypeDefs::MethodListType","","RubyBreaker/TypeDefs/MethodListType.html","","<p>This class represents multiple method types.\n"],["RubyBreaker::TypeDefs::MethodType","","RubyBreaker/TypeDefs/MethodType.html","","<p>This class represents a method and is essentially same as block type \nexcept the method name.\n"],["RubyBreaker::TypeDefs::NilType","","RubyBreaker/TypeDefs/NilType.html","","<p>This type represents a nil\n"],["RubyBreaker::TypeDefs::NominalType","","RubyBreaker/TypeDefs/NominalType.html","","<p>This class represents a concrete object like a Numeric or String. It \nstores the actual module in the …\n"],["RubyBreaker::TypeDefs::OptionalType","","RubyBreaker/TypeDefs/OptionalType.html","","<p>This class respresents an optional argument type\n"],["RubyBreaker::TypeDefs::OrType","","RubyBreaker/TypeDefs/OrType.html","","<p>This class represents one of many types\n"],["RubyBreaker::TypeDefs::SelfType","","RubyBreaker/TypeDefs/SelfType.html","","<p>This type represents the self type. Note that this is a subclass of Nominal\nType. It works just like …\n"],["RubyBreaker::TypeDefs::Type","","RubyBreaker/TypeDefs/Type.html","","<p>This class is a catch-all. The constructor of this class must be called\nfrom children via super() in …\n"],["RubyBreaker::TypeDefs::VarLengthType","","RubyBreaker/TypeDefs/VarLengthType.html","","<p>This class represents a variable-length argument type\n"],["RubyBreaker::TypeUnparser","","RubyBreaker/TypeUnparser.html","","<p>This module prints the RubyBreaker types in a user-friendly way.\n"],["RubyBreaker::Typing","","RubyBreaker/Typing.html","","<p>This module contains subtyping logic used in RubyBreaker. See\n<em>rubytype.rb</em> for logic related to subclassing …\n"],["RubyBreaker::Util","","RubyBreaker/Util.html","","<p>This module has utility functions that are useful across all components in\nthe project.\n"],["Test","","Test.html","",""],["Test::Unit","","Test/Unit.html","",""],["__rubybreaker_obj","RubyBreaker::Runtime::ObjectWrapper","RubyBreaker/Runtime/ObjectWrapper.html#method-i-__rubybreaker_obj","()","<p>This method returns the original object.\n"],["__rubybreaker_type","RubyBreaker::Runtime::ObjectWrapper","RubyBreaker/Runtime/ObjectWrapper.html#method-i-__rubybreaker_type","()","<p>This method returns the type gathered so far for this object.\n"],["add_meth","RubyBreaker::TypeDefs::DuckType","RubyBreaker/TypeDefs/DuckType.html#method-i-add_meth","(meth_name)",""],["break","RubyBreaker","RubyBreaker.html#method-c-break","(*mods)","<p>This method just redirects to Runtime’s method.\n"],["break","RubyBreaker::Runtime","RubyBreaker/Runtime.html#method-c-break","(*mods)","<p>This method instruments the specified modules/classes at the time of the\ncall so they are monitored for …\n"],["break_after_method","RubyBreaker::Runtime::Monitor","RubyBreaker/Runtime/Monitor.html#method-i-break_after_method","(obj, meth_info)","<p>This method is invoked after the original method is executed.\n"],["break_after_method","RubyBreaker::Runtime::TypeSystem","RubyBreaker/Runtime/TypeSystem.html#method-i-break_after_method","(obj, meth_info)","<p>This method occurs after every call to a “monitored” method call of a\nmodule/class specified …\n"],["break_after_method_call","RubyBreaker::Runtime::Pluggable","RubyBreaker/Runtime/Pluggable.html#method-i-break_after_method_call","(obj, meth_info)","<p>This method will be invoked right after the actual method is invoked.\n<p>obj &mdash; the receiver of the method call …\n"],["break_before_method","RubyBreaker::Runtime::Monitor","RubyBreaker/Runtime/Monitor.html#method-i-break_before_method","(obj, meth_info)","<p>This method is invoked before the original method is executed.\n"],["break_before_method","RubyBreaker::Runtime::TypeSystem","RubyBreaker/Runtime/TypeSystem.html#method-i-break_before_method","(obj, meth_info)","<p>This method occurs before every call to a “monitored” method in a\nmodule/class specified for …\n"],["break_before_method_call","RubyBreaker::Runtime::Pluggable","RubyBreaker/Runtime/Pluggable.html#method-i-break_before_method_call","(obj, meth_info)","<p>This method will be invoked right before the actual method is invoked.\n<p>obj &mdash; the receiver of the method …\n"],["breakable","Rake::RubyBreakerTestTask","Rake/RubyBreakerTestTask.html#method-i-breakable","()","<p>DEPRECATED accessor override\n"],["breakable","RubyBreaker","RubyBreaker.html#method-c-breakable","(*mods)","<p>This method just redirects to Runtime’s method.\n<strong>DEPRECATED</strong>: Use +RubyBreaker.break()+ to indicate the …\n"],["breakable","RubyBreaker::Runtime","RubyBreaker/Runtime.html#method-c-breakable","(*mods)","<p>This method modifies specified modules/classes at the very moment (instead\nof registering them for later). …\n"],["breakable=","Rake::RubyBreakerTestTask","Rake/RubyBreakerTestTask.html#method-i-breakable-3D","(*args)","<p>DEPRECATED accessor override\n"],["camelize","RubyBreaker::Util","RubyBreaker/Util.html#method-c-camelize","(lower_case_and_underscored_word, first_letter_in_uppercase = true)","<p>File activesupport/lib/active_support/inflector/methods.rb\n"],["check","RubyBreaker","RubyBreaker.html#method-c-check","(*mods)",""],["check","RubyBreaker::Runtime","RubyBreaker/Runtime.html#method-c-check","(*mods)","<p>This method instruments the specified modules/classes at the time of the\ncall so that they are type checked …\n"],["check_after_method","RubyBreaker::Runtime::Monitor","RubyBreaker/Runtime/Monitor.html#method-i-check_after_method","(obj, meth_info)","<p>This method is invoked after the original method is executed.\n"],["check_after_method","RubyBreaker::Runtime::TypeSystem","RubyBreaker/Runtime/TypeSystem.html#method-i-check_after_method","(obj, meth_info)","<p>This method is invoked after the original method is executed.\n"],["check_after_method_call","RubyBreaker::Runtime::Pluggable","RubyBreaker/Runtime/Pluggable.html#method-i-check_after_method_call","(obj, meth_info)",""],["check_before_method","RubyBreaker::Runtime::Monitor","RubyBreaker/Runtime/Monitor.html#method-i-check_before_method","(obj, meth_info)","<p>This method is invoked before the original method is executed.\n"],["check_before_method","RubyBreaker::Runtime::TypeSystem","RubyBreaker/Runtime/TypeSystem.html#method-i-check_before_method","(obj, meth_info)","<p>This method is invoked before the original method is executed.\n"],["check_before_method_call","RubyBreaker::Runtime::Pluggable","RubyBreaker/Runtime/Pluggable.html#method-i-check_before_method_call","(obj, meth_info)",""],["compare","RubyBreaker::TypeComparer","RubyBreaker/TypeComparer.html#method-c-compare","(lhs,rhs)","<p>This equal method determines whether two types are\n<strong>syntactically</strong> equivalent. Note that this is NOT a …\n"],["convert_caller_to_pos","RubyBreaker::Position","RubyBreaker/Position.html#method-c-convert_caller_to_pos","(caller_ary, idx=0)","<p>This class method is a utility function to convert a string in the caller()\narray.\n"],["defined_logger?","RubyBreaker","RubyBreaker.html#method-c-defined_logger-3F","()","<p>This method returns true if the logger is already created and false\notherwise.\n"],["eql?","RubyBreaker::TypeDefs::Type","RubyBreaker/TypeDefs/Type.html#method-i-eql-3F","(other)","<p>This method compares this object to another object syntactically.\n"],["error","RubyBreaker","RubyBreaker.html#method-c-error","(err, level=:error, &blk)","<p>This method is for reporting an error to the user. It will immediately show\nthe error message but also …\n"],["export_to_yaml","RubyBreaker::RDocSupport","RubyBreaker/RDocSupport.html#method-c-export_to_yaml","(yaml_file, breakable_modules, broken_modules)","<p>This method exports the RubyBreaker output into a yaml file.\n"],["format_with_msg","RubyBreaker::Context","RubyBreaker/Context.html#method-i-format_with_msg","(pp,msg=\"\")",""],["get","RubyBreaker::Position","RubyBreaker/Position.html#method-c-get","()","<p>This class method returns a new position object for the current parsing\nposition.\n"],["get_alt_meth_name","RubyBreaker::Runtime::Monitor","RubyBreaker/Runtime/Monitor.html#method-c-get_alt_meth_name","(meth_name)","<p>This method returns the alternative (renamed) method name\n"],["get_orig_meth_name","RubyBreaker::Runtime::Monitor","RubyBreaker/Runtime/Monitor.html#method-c-get_orig_meth_name","(meth_name)","<p>This method returns the original method name\n"],["get_self","RubyBreaker::TypeDefs::SelfType","RubyBreaker/TypeDefs/SelfType.html#method-c-get_self","(mod)","<p>This is a getter method for class variable mod.\n"],["import_from_yaml","RubyBreaker::RDocSupport","RubyBreaker/RDocSupport.html#method-c-import_from_yaml","(yaml_file)","<p>This method imports the RubyBreaker output from a yaml file.\n"],["included","RubyBreaker::Breakable","RubyBreaker/Breakable.html#method-c-included","(mod)",""],["included","RubyBreaker::Broken","RubyBreaker/Broken.html#method-c-included","(mod)",""],["inspect_all","RubyBreaker::Runtime::Inspector","RubyBreaker/Runtime/Inspector.html#method-c-inspect_all","(mod)","<p>This method inspects the module for all methods. It returns a Hash\ncontaining (method name, method type) …\n"],["inspect_class_meth","RubyBreaker::Runtime::Inspector","RubyBreaker/Runtime/Inspector.html#method-c-inspect_class_meth","(mod, mname)","<p>This method inspects the module for the specified class method name. This\nis a shorthand for calling …\n"],["inspect_meth","RubyBreaker::Runtime::Inspector","RubyBreaker/Runtime/Inspector.html#method-c-inspect_meth","(mod, mname)","<p>This method inspects the module for the type of the specified method.\n"],["inspect_meths","RubyBreaker::Runtime::Inspector","RubyBreaker/Runtime/Inspector.html#method-c-inspect_meths","(mod, mnames)","<p>Similar to inspect_meth but returns a hash of (mname, mtype) pairs.\n"],["install_monitor","RubyBreaker::Runtime::MonitorInstaller","RubyBreaker/Runtime/MonitorInstaller.html#method-c-install_monitor","(monitor_type, mod)","<p>Installs an module (class) monitor to the object.\n"],["instrument","RubyBreaker::Runtime","RubyBreaker/Runtime.html#method-c-instrument","()","<p>This method installs a monitor for each breakable module. \n<strong>DEPRECATED</strong>: Use +breakable()+ method instead. …\n"],["is_module?","RubyBreaker::Runtime::MonitorInstaller","RubyBreaker/Runtime/MonitorInstaller.html#method-c-is_module-3F","(mod)","<p>returns true if the receiver is a module or a class\n"],["is_object_wrapped?","RubyBreaker::Runtime::TypeSystem","RubyBreaker/Runtime/TypeSystem.html#method-i-is_object_wrapped-3F","(obj)","<p>Check if the object is wrapped by a monitor\n"],["log","RubyBreaker","RubyBreaker.html#method-c-log","(str, level=:debug, context=nil, &blk)","<p>This method logs a non-error (or error) message but with the provided\ncontext.\n"],["lub","RubyBreaker::Runtime::TypeSystem","RubyBreaker/Runtime/TypeSystem.html#method-i-lub","(obj, meth_type_map, meth_name, retval, *args, &blk)","<p>This method computes the least upper bound of the existing method type and\nnewly observed argument/block/return …\n"],["lub_helper","RubyBreaker::Runtime::TypeSystem","RubyBreaker/Runtime/TypeSystem.html#method-i-lub_helper","(exist_meth_type, new_meth_type)","<p>This method is a helper for computing the least upper bound. It handles the\ncase where existing method …\n"],["method_missing","RubyBreaker::Runtime::ObjectWrapper","RubyBreaker/Runtime/ObjectWrapper.html#method-i-method_missing","(mname,*args,&blk)","<p>This method missing method redirects all other method calls.\n"],["mod","RubyBreaker::TypeDefs::FusionType","RubyBreaker/TypeDefs/FusionType.html#method-i-mod","()","<p>This method gets the actual module of the nominal type for this fusion\ntype. This is a shorthand for …\n"],["monitor","RubyBreaker","RubyBreaker.html#method-c-monitor","()","<p><strong>DEPRECATED</strong>: Use +RubyBreaker.run()+ to indicate the point\nof entry.\n"],["monkey_patch_meth","RubyBreaker::Runtime::MonitorInstaller","RubyBreaker/Runtime/MonitorInstaller.html#method-c-monkey_patch_meth","(monitor_type, mod, meth_name)","<p>renames the method in essence; this method also “installs” the module\nmonitor for the class …\n"],["new","Rake::RubyBreakerTestTask","Rake/RubyBreakerTestTask.html#method-c-new","(taskname=\"\", *args, &blk)","<p>This overrides the testtask’s constructor. In addition to the original\nbehavior, it keeps track of RubyBreaker …\n"],["new","RubyBreaker::Context","RubyBreaker/Context.html#method-c-new","(pos)",""],["new","RubyBreaker::Errors::InternalError","RubyBreaker/Errors/InternalError.html#method-c-new","(msg)",""],["new","RubyBreaker::Errors::InvalidSubtypeCheck","RubyBreaker/Errors/InvalidSubtypeCheck.html#method-c-new","(msg,pos=nil)",""],["new","RubyBreaker::Errors::UserError","RubyBreaker/Errors/UserError.html#method-c-new","(msg, ctx=nil)",""],["new","RubyBreaker::ObjectPosition","RubyBreaker/ObjectPosition.html#method-c-new","(obj, meth_name)",""],["new","RubyBreaker::Position","RubyBreaker/Position.html#method-c-new","(file=\"\",line=-1,col=-1,meth=\"\")",""],["new","RubyBreaker::Runtime::MethodInfo","RubyBreaker/Runtime/MethodInfo.html#method-c-new","(meth_name, args, blk, ret)",""],["new","RubyBreaker::Runtime::Monitor","RubyBreaker/Runtime/Monitor.html#method-c-new","(pluggable)",""],["new","RubyBreaker::Runtime::MonitorSwitch","RubyBreaker/Runtime/MonitorSwitch.html#method-c-new","()",""],["new","RubyBreaker::Runtime::ObjectWrapper","RubyBreaker/Runtime/ObjectWrapper.html#method-c-new","(obj)",""],["new","RubyBreaker::TypeDefs::AnyType","RubyBreaker/TypeDefs/AnyType.html#method-c-new","(*args)",""],["new","RubyBreaker::TypeDefs::BlockType","RubyBreaker/TypeDefs/BlockType.html#method-c-new","(arg_types=[],blk_type=nil,ret_type=nil,*args)",""],["new","RubyBreaker::TypeDefs::DuckType","RubyBreaker/TypeDefs/DuckType.html#method-c-new","(meth_names=[],*args)",""],["new","RubyBreaker::TypeDefs::FusionType","RubyBreaker/TypeDefs/FusionType.html#method-c-new","(nom_type,meth_names=[],*args)",""],["new","RubyBreaker::TypeDefs::MethodListType","RubyBreaker/TypeDefs/MethodListType.html#method-c-new","(types=[],*args)",""],["new","RubyBreaker::TypeDefs::MethodType","RubyBreaker/TypeDefs/MethodType.html#method-c-new","(meth_name,arg_types=[],blk_type=nil,ret_type=nil,*args)",""],["new","RubyBreaker::TypeDefs::NilType","RubyBreaker/TypeDefs/NilType.html#method-c-new","(*args)",""],["new","RubyBreaker::TypeDefs::NominalType","RubyBreaker/TypeDefs/NominalType.html#method-c-new","(mod=nil,*args)",""],["new","RubyBreaker::TypeDefs::OptionalType","RubyBreaker/TypeDefs/OptionalType.html#method-c-new","(type,*args)",""],["new","RubyBreaker::TypeDefs::OrType","RubyBreaker/TypeDefs/OrType.html#method-c-new","(types=[],*args)",""],["new","RubyBreaker::TypeDefs::SelfType","RubyBreaker/TypeDefs/SelfType.html#method-c-new","(*args)",""],["new","RubyBreaker::TypeDefs::Type","RubyBreaker/TypeDefs/Type.html#method-c-new","(*args)",""],["new","RubyBreaker::TypeDefs::VarLengthType","RubyBreaker/TypeDefs/VarLengthType.html#method-c-new","(type,*args)",""],["ordinalize","RubyBreaker::Util","RubyBreaker/Util.html#method-c-ordinalize","(number)","<p>File lib/active_support/inflector.rb, line 295\n"],["parse","RubyBreaker::Runtime::TypeSigParser","RubyBreaker/Runtime/TypeSigParser.html#method-c-parse","(str)","<p>This is a simple redirecting method for parsing type signature. The only\nspecial thing about this method …\n"],["pop","RubyBreaker::Context","RubyBreaker/Context.html#method-i-pop","()",""],["pp_methods","RubyBreaker::Runtime::TypeSigUnparser","RubyBreaker/Runtime/TypeSigUnparser.html#method-c-pp_methods","(pp, meth_type_map, opts={})","<p>Pretty prints type information for methods\n"],["pp_module","RubyBreaker::Runtime::TypeSigUnparser","RubyBreaker/Runtime/TypeSigUnparser.html#method-c-pp_module","(pp, mod, opts={})","<p>Pretty prints type information for the module/class\n"],["push","RubyBreaker::Context","RubyBreaker/Context.html#method-i-push","(pos)",""],["respond_to?","RubyBreaker::Runtime::ObjectWrapper","RubyBreaker/Runtime/ObjectWrapper.html#method-i-respond_to-3F","(mname)","<p>Only behave differently if it’s looking for <code>WRAPPED_INDICATOR</code>\nmethod\n"],["route","RubyBreaker::Runtime::Monitor","RubyBreaker/Runtime/Monitor.html#method-c-route","(route_type, obj, meth_name, *args, &blk)","<p>This will do the actual routing work for a particular “monitored” method\ncall.\n<p>route_type &mdash; :break …\n"],["run","RubyBreaker","RubyBreaker.html#method-c-run","(*mods)","<p>This method runs RubyBreaker for a particular test case (class). This is a\nbit different from running …\n"],["set","RubyBreaker::Position","RubyBreaker/Position.html#method-c-set","(file,line,col)","<p>This class method is to set the current parsing position.\n"],["set_self","RubyBreaker::TypeDefs::SelfType","RubyBreaker/TypeDefs/SelfType.html#method-c-set_self","(mod)","<p>This is a setter method for class variable mod. NOTE: It is set every time\ntypesig() is called\n"],["set_to","RubyBreaker::Runtime::MonitorSwitch","RubyBreaker/Runtime/MonitorSwitch.html#method-i-set_to","(mode)",""],["subclass_rel?","RubyBreaker::RubyTypeUtils","RubyBreaker/RubyTypeUtils.html#method-c-subclass_rel-3F","(lhs, rhs)","<p>Checks if lhs is a subclass of rhs\n"],["submodule_rel?","RubyBreaker::RubyTypeUtils","RubyBreaker/RubyTypeUtils.html#method-c-submodule_rel-3F","(lhs,rhs)","<p>Checks if lhs is a sub-module of rhs\n"],["subtype_of?","RubyBreaker::TypeDefs::Type","RubyBreaker/TypeDefs/Type.html#method-i-subtype_of-3F","(rhs)","<p>This is a shorthand for calling Typing.subtype_rel?\n"],["subtype_rel?","RubyBreaker::Typing","RubyBreaker/Typing.html#method-c-subtype_rel-3F","(lhs, rhs)","<p>This method determines if one type is a subtype of another. This check is\nfor RubyBreaker defined types. …\n"],["to_s","RubyBreaker::ObjectPosition","RubyBreaker/ObjectPosition.html#method-i-to_s","()",""],["to_s","RubyBreaker::Position","RubyBreaker/Position.html#method-i-to_s","()",""],["turn_off","RubyBreaker::Runtime::MonitorSwitch","RubyBreaker/Runtime/MonitorSwitch.html#method-i-turn_off","()",""],["turn_on","RubyBreaker::Runtime::MonitorSwitch","RubyBreaker/Runtime/MonitorSwitch.html#method-i-turn_on","()",""],["type_error_msg_prefix","RubyBreaker::Runtime::TypeSystem","RubyBreaker/Runtime/TypeSystem.html#method-i-type_error_msg_prefix","(mod, meth_name)","<p>This method creates the prefix for the type error message.\n"],["underscore","RubyBreaker::Util","RubyBreaker/Util.html#method-c-underscore","(camel_cased_word)","<p>File activesupport/lib/active_support/inflector/methods.rb, line 48\n"],["uneigen","RubyBreaker::Util","RubyBreaker/Util.html#method-c-uneigen","(mod_str)",""],["unparse","RubyBreaker::Runtime::TypeSigUnparser","RubyBreaker/Runtime/TypeSigUnparser.html#method-c-unparse","(mod, opts={})","<p>This method unparses the type information in the specified module,\ndisplaying one or more type signatures …\n"],["unparse","RubyBreaker::TypeDefs::Type","RubyBreaker/TypeDefs/Type.html#method-i-unparse","(opts={})","<p>This method is a shorthand for calling TypeUnparser.unparse(t).\n"],["unparse","RubyBreaker::TypeUnparser","RubyBreaker/TypeUnparser.html#method-c-unparse","(t, opts={})","<p>This method unparses the RubyBreaker type according to the specified\noptions.\n<p>t &mdash; RubyBreaker type\n<p>opts &mdash; \n"],["verbose","RubyBreaker","RubyBreaker.html#method-c-verbose","(str, &blk)","<p>This method will display verbose message. It is not for debugging but to\ninform users of each stage in …\n"]]}}
1
+ var search_data = {"index":{"searchIndex":["object","rake","rubybreakertesttask","rubybreaker","breakable","broken","context","errors","argumenttypeerror","arityerror","internalerror","invalidsubtypecheck","invalidtypeconstruction","returntypeerror","typeerror","usererror","objectposition","position","rdocsupport","rubytypeutils","runtime","inspector","methodinfo","monitor","monitorinstaller","monitorswitch","objectwrapper","pluggable","typesigparser","typesigunparser","typesystem","typecomparer","typedefs","anytype","blocktype","ducktype","fusiontype","methodlisttype","methodtype","niltype","nominaltype","optionaltype","ortype","selftype","type","varlengthtype","typeunparser","typing","util","test","unit","__rubybreaker_obj()","__rubybreaker_type()","add_meth()","arity_check()","break()","break()","break_after_method()","break_after_method()","break_after_method_call()","break_before_method()","break_before_method()","break_before_method_call()","breakable()","breakable()","breakable()","breakable=()","camelize()","check()","check()","check_after_method()","check_after_method()","check_after_method_call()","check_before_method()","check_before_method()","check_before_method_call()","compare()","convert_caller_to_pos()","defined_logger?()","eql?()","error()","export_to_yaml()","format_with_msg()","get()","get_alt_meth_name()","get_orig_meth_name()","get_self()","import_from_yaml()","included()","included()","inspect_all()","inspect_class_meth()","inspect_meth()","inspect_meths()","install_monitor()","instrument()","is_module?()","is_object_wrapped?()","log()","lub()","lub_helper()","method_missing()","mod()","monitor()","monkey_patch_meth()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","ordinalize()","parse()","pop()","pp_methods()","pp_module()","push()","respond_to?()","route()","run()","set()","set_self()","set_to()","subclass_rel?()","submodule_rel?()","subtype_of?()","subtype_rel?()","to_s()","to_s()","turn_off()","turn_on()","type_error_msg_prefix()","underscore()","uneigen()","unparse()","unparse()","unparse()","verbose()"],"longSearchIndex":["object","rake","rake::rubybreakertesttask","rubybreaker","rubybreaker::breakable","rubybreaker::broken","rubybreaker::context","rubybreaker::errors","rubybreaker::errors::argumenttypeerror","rubybreaker::errors::arityerror","rubybreaker::errors::internalerror","rubybreaker::errors::invalidsubtypecheck","rubybreaker::errors::invalidtypeconstruction","rubybreaker::errors::returntypeerror","rubybreaker::errors::typeerror","rubybreaker::errors::usererror","rubybreaker::objectposition","rubybreaker::position","rubybreaker::rdocsupport","rubybreaker::rubytypeutils","rubybreaker::runtime","rubybreaker::runtime::inspector","rubybreaker::runtime::methodinfo","rubybreaker::runtime::monitor","rubybreaker::runtime::monitorinstaller","rubybreaker::runtime::monitorswitch","rubybreaker::runtime::objectwrapper","rubybreaker::runtime::pluggable","rubybreaker::runtime::typesigparser","rubybreaker::runtime::typesigunparser","rubybreaker::runtime::typesystem","rubybreaker::typecomparer","rubybreaker::typedefs","rubybreaker::typedefs::anytype","rubybreaker::typedefs::blocktype","rubybreaker::typedefs::ducktype","rubybreaker::typedefs::fusiontype","rubybreaker::typedefs::methodlisttype","rubybreaker::typedefs::methodtype","rubybreaker::typedefs::niltype","rubybreaker::typedefs::nominaltype","rubybreaker::typedefs::optionaltype","rubybreaker::typedefs::ortype","rubybreaker::typedefs::selftype","rubybreaker::typedefs::type","rubybreaker::typedefs::varlengthtype","rubybreaker::typeunparser","rubybreaker::typing","rubybreaker::util","test","test::unit","rubybreaker::runtime::objectwrapper#__rubybreaker_obj()","rubybreaker::runtime::objectwrapper#__rubybreaker_type()","rubybreaker::typedefs::ducktype#add_meth()","rubybreaker::runtime::typesystem#arity_check()","rubybreaker::break()","rubybreaker::runtime::break()","rubybreaker::runtime::monitor#break_after_method()","rubybreaker::runtime::typesystem#break_after_method()","rubybreaker::runtime::pluggable#break_after_method_call()","rubybreaker::runtime::monitor#break_before_method()","rubybreaker::runtime::typesystem#break_before_method()","rubybreaker::runtime::pluggable#break_before_method_call()","rake::rubybreakertesttask#breakable()","rubybreaker::breakable()","rubybreaker::runtime::breakable()","rake::rubybreakertesttask#breakable=()","rubybreaker::util::camelize()","rubybreaker::check()","rubybreaker::runtime::check()","rubybreaker::runtime::monitor#check_after_method()","rubybreaker::runtime::typesystem#check_after_method()","rubybreaker::runtime::pluggable#check_after_method_call()","rubybreaker::runtime::monitor#check_before_method()","rubybreaker::runtime::typesystem#check_before_method()","rubybreaker::runtime::pluggable#check_before_method_call()","rubybreaker::typecomparer::compare()","rubybreaker::position::convert_caller_to_pos()","rubybreaker::defined_logger?()","rubybreaker::typedefs::type#eql?()","rubybreaker::error()","rubybreaker::rdocsupport::export_to_yaml()","rubybreaker::context#format_with_msg()","rubybreaker::position::get()","rubybreaker::runtime::monitor::get_alt_meth_name()","rubybreaker::runtime::monitor::get_orig_meth_name()","rubybreaker::typedefs::selftype::get_self()","rubybreaker::rdocsupport::import_from_yaml()","rubybreaker::breakable::included()","rubybreaker::broken::included()","rubybreaker::runtime::inspector::inspect_all()","rubybreaker::runtime::inspector::inspect_class_meth()","rubybreaker::runtime::inspector::inspect_meth()","rubybreaker::runtime::inspector::inspect_meths()","rubybreaker::runtime::monitorinstaller::install_monitor()","rubybreaker::runtime::instrument()","rubybreaker::runtime::monitorinstaller::is_module?()","rubybreaker::runtime::typesystem#is_object_wrapped?()","rubybreaker::log()","rubybreaker::runtime::typesystem#lub()","rubybreaker::runtime::typesystem#lub_helper()","rubybreaker::runtime::objectwrapper#method_missing()","rubybreaker::typedefs::fusiontype#mod()","rubybreaker::monitor()","rubybreaker::runtime::monitorinstaller::monkey_patch_meth()","rake::rubybreakertesttask::new()","rubybreaker::context::new()","rubybreaker::errors::internalerror::new()","rubybreaker::errors::invalidsubtypecheck::new()","rubybreaker::errors::usererror::new()","rubybreaker::objectposition::new()","rubybreaker::position::new()","rubybreaker::runtime::methodinfo::new()","rubybreaker::runtime::monitor::new()","rubybreaker::runtime::monitorswitch::new()","rubybreaker::runtime::objectwrapper::new()","rubybreaker::typedefs::anytype::new()","rubybreaker::typedefs::blocktype::new()","rubybreaker::typedefs::ducktype::new()","rubybreaker::typedefs::fusiontype::new()","rubybreaker::typedefs::methodlisttype::new()","rubybreaker::typedefs::methodtype::new()","rubybreaker::typedefs::niltype::new()","rubybreaker::typedefs::nominaltype::new()","rubybreaker::typedefs::optionaltype::new()","rubybreaker::typedefs::ortype::new()","rubybreaker::typedefs::selftype::new()","rubybreaker::typedefs::type::new()","rubybreaker::typedefs::varlengthtype::new()","rubybreaker::util::ordinalize()","rubybreaker::runtime::typesigparser::parse()","rubybreaker::context#pop()","rubybreaker::runtime::typesigunparser::pp_methods()","rubybreaker::runtime::typesigunparser::pp_module()","rubybreaker::context#push()","rubybreaker::runtime::objectwrapper#respond_to?()","rubybreaker::runtime::monitor::route()","rubybreaker::run()","rubybreaker::position::set()","rubybreaker::typedefs::selftype::set_self()","rubybreaker::runtime::monitorswitch#set_to()","rubybreaker::rubytypeutils::subclass_rel?()","rubybreaker::rubytypeutils::submodule_rel?()","rubybreaker::typedefs::type#subtype_of?()","rubybreaker::typing::subtype_rel?()","rubybreaker::objectposition#to_s()","rubybreaker::position#to_s()","rubybreaker::runtime::monitorswitch#turn_off()","rubybreaker::runtime::monitorswitch#turn_on()","rubybreaker::runtime::typesystem#type_error_msg_prefix()","rubybreaker::util::underscore()","rubybreaker::util::uneigen()","rubybreaker::runtime::typesigunparser::unparse()","rubybreaker::typedefs::type#unparse()","rubybreaker::typeunparser::unparse()","rubybreaker::verbose()"],"info":[["Object","","Object.html","",""],["Rake","","Rake.html","",""],["Rake::RubyBreakerTestTask","","Rake/RubyBreakerTestTask.html","","<p>This class can be used as a replacement for Rake::TestTask. It is a\nsubclass of Rake::TestTask and maintains …\n"],["RubyBreaker","","RubyBreaker.html","","<p>-\n\n<pre>This file contains utility functions that are useful for the Runtime\nLibrary.</pre>\n<p>RubyBreaker is a dynamic …\n"],["RubyBreaker::Breakable","","RubyBreaker/Breakable.html","","<p><strong>DEPRECATED</strong>: Use +Runtime.breakable()+ or\n+RubyBreaker.run()+ method\n\n<pre>instead.</pre>\n"],["RubyBreaker::Broken","","RubyBreaker/Broken.html","","<p><strong>DEPRECATED</strong>: It has no effect.\n"],["RubyBreaker::Context","","RubyBreaker/Context.html","","<p>This class represents a context which consists of one or more positions. A\nposition can refer to a physical …\n"],["RubyBreaker::Errors","","RubyBreaker/Errors.html","","<p>This module contains errors used by RubyBreaker.\n"],["RubyBreaker::Errors::ArgumentTypeError","","RubyBreaker/Errors/ArgumentTypeError.html","",""],["RubyBreaker::Errors::ArityError","","RubyBreaker/Errors/ArityError.html","",""],["RubyBreaker::Errors::InternalError","","RubyBreaker/Errors/InternalError.html","","<p>This class is a base class for any internal errors. It should be used to\ninform the faults within the …\n"],["RubyBreaker::Errors::InvalidSubtypeCheck","","RubyBreaker/Errors/InvalidSubtypeCheck.html","","<p>This error is thrown when a subtype check is not even appropriate for two\ngiven types. It should NOT …\n"],["RubyBreaker::Errors::InvalidTypeConstruction","","RubyBreaker/Errors/InvalidTypeConstruction.html","","<p>This error is thrown when a type is constructed with invalid elements.\n"],["RubyBreaker::Errors::ReturnTypeError","","RubyBreaker/Errors/ReturnTypeError.html","",""],["RubyBreaker::Errors::TypeError","","RubyBreaker/Errors/TypeError.html","",""],["RubyBreaker::Errors::UserError","","RubyBreaker/Errors/UserError.html","","<p>This class is a base class for any user errors. Unlike internal error, it\nshould use a Context to inform …\n"],["RubyBreaker::ObjectPosition","","RubyBreaker/ObjectPosition.html","","<p>This class represents a position with respect to an object and the name of\na method being invoked.\n"],["RubyBreaker::Position","","RubyBreaker/Position.html","","<p>This class represents a position of the type acquired from either the type\nsignature or code during runtime. …\n"],["RubyBreaker::RDocSupport","","RubyBreaker/RDocSupport.html","","<p>This module has functionalities that are necessary for supporting RDoc\noutput\n"],["RubyBreaker::RubyTypeUtils","","RubyBreaker/RubyTypeUtils.html","",""],["RubyBreaker::Runtime","","RubyBreaker/Runtime.html","","<p>This module contains things that are needed at runtime.\n"],["RubyBreaker::Runtime::Inspector","","RubyBreaker/Runtime/Inspector.html","","<p>This module inspects type information gathered so far.\n"],["RubyBreaker::Runtime::MethodInfo","","RubyBreaker/Runtime/MethodInfo.html","","<p>This class has information (and data) of the method being called. Used by\nPluggable and Monitor\n"],["RubyBreaker::Runtime::Monitor","","RubyBreaker/Runtime/Monitor.html","","<p>This class monitors method calls before and after. It simply reroutes the\nresponsibility to the appropriate …\n"],["RubyBreaker::Runtime::MonitorInstaller","","RubyBreaker/Runtime/MonitorInstaller.html","","<p>This module installs a monitor in the object.\n"],["RubyBreaker::Runtime::MonitorSwitch","","RubyBreaker/Runtime/MonitorSwitch.html","","<p>This class is a switch to turn on and off the type monitoring system. It is\nimportant to turn off the …\n"],["RubyBreaker::Runtime::ObjectWrapper","","RubyBreaker/Runtime/ObjectWrapper.html","","<p>This class represents the shell object that wraps around another object. \nNote that it is a subclass …\n"],["RubyBreaker::Runtime::Pluggable","","RubyBreaker/Runtime/Pluggable.html","","<p>Any Pluggable module can be “plugged” into the RubyBreaker monitoring\nsystem. For example, …\n"],["RubyBreaker::Runtime::TypeSigParser","","RubyBreaker/Runtime/TypeSigParser.html","",""],["RubyBreaker::Runtime::TypeSigUnparser","","RubyBreaker/Runtime/TypeSigUnparser.html","","<p>This module handles unparsing type signatures.\n"],["RubyBreaker::Runtime::TypeSystem","","RubyBreaker/Runtime/TypeSystem.html","","<p>This is the default type system for RubyBreaker. It can be overridden by a\nuser specified type system. …\n"],["RubyBreaker::TypeComparer","","RubyBreaker/TypeComparer.html","","<p>This module compares two RubyBreaker-defined types for the syntactic\nequivalence.\n"],["RubyBreaker::TypeDefs","","RubyBreaker/TypeDefs.html","","<p>This module contains all RubyBreaker type definitions. This module has to\nbe included to the module if …\n"],["RubyBreaker::TypeDefs::AnyType","","RubyBreaker/TypeDefs/AnyType.html","","<p>This type can represent any object\n"],["RubyBreaker::TypeDefs::BlockType","","RubyBreaker/TypeDefs/BlockType.html","","<p>This class represents a block (in a method). It has zero or more argument \ntypes, nested block type (optional), …\n"],["RubyBreaker::TypeDefs::DuckType","","RubyBreaker/TypeDefs/DuckType.html","","<p>This class represents any object with certain methods Usage: [m1,m2,…]\nwhere m1…mn are method names …\n"],["RubyBreaker::TypeDefs::FusionType","","RubyBreaker/TypeDefs/FusionType.html","","<p>This class represents any object that has certain methods whose types are\nsame as the given nominal type’s …\n"],["RubyBreaker::TypeDefs::MethodListType","","RubyBreaker/TypeDefs/MethodListType.html","","<p>This class represents multiple method types.\n"],["RubyBreaker::TypeDefs::MethodType","","RubyBreaker/TypeDefs/MethodType.html","","<p>This class represents a method and is essentially same as block type \nexcept the method name.\n"],["RubyBreaker::TypeDefs::NilType","","RubyBreaker/TypeDefs/NilType.html","","<p>This type represents a nil\n"],["RubyBreaker::TypeDefs::NominalType","","RubyBreaker/TypeDefs/NominalType.html","","<p>This class represents a concrete object like a Numeric or String. It \nstores the actual module in the …\n"],["RubyBreaker::TypeDefs::OptionalType","","RubyBreaker/TypeDefs/OptionalType.html","","<p>This class respresents an optional argument type\n"],["RubyBreaker::TypeDefs::OrType","","RubyBreaker/TypeDefs/OrType.html","","<p>This class represents one of many types\n"],["RubyBreaker::TypeDefs::SelfType","","RubyBreaker/TypeDefs/SelfType.html","","<p>This type represents the self type. Note that this is a subclass of Nominal\nType. It works just like …\n"],["RubyBreaker::TypeDefs::Type","","RubyBreaker/TypeDefs/Type.html","","<p>This class is a catch-all. The constructor of this class must be called\nfrom children via super() in …\n"],["RubyBreaker::TypeDefs::VarLengthType","","RubyBreaker/TypeDefs/VarLengthType.html","","<p>This class represents a variable-length argument type\n"],["RubyBreaker::TypeUnparser","","RubyBreaker/TypeUnparser.html","","<p>This module prints the RubyBreaker types in a user-friendly way.\n"],["RubyBreaker::Typing","","RubyBreaker/Typing.html","","<p>This module contains subtyping logic used in RubyBreaker. See\n<em>rubytype.rb</em> for logic related to subclassing …\n"],["RubyBreaker::Util","","RubyBreaker/Util.html","","<p>This module has utility functions that are useful across all components in\nthe project.\n"],["Test","","Test.html","",""],["Test::Unit","","Test/Unit.html","",""],["__rubybreaker_obj","RubyBreaker::Runtime::ObjectWrapper","RubyBreaker/Runtime/ObjectWrapper.html#method-i-__rubybreaker_obj","()","<p>This method returns the original object.\n"],["__rubybreaker_type","RubyBreaker::Runtime::ObjectWrapper","RubyBreaker/Runtime/ObjectWrapper.html#method-i-__rubybreaker_type","()","<p>This method returns the type gathered so far for this object.\n"],["add_meth","RubyBreaker::TypeDefs::DuckType","RubyBreaker/TypeDefs/DuckType.html#method-i-add_meth","(meth_name)",""],["arity_check","RubyBreaker::Runtime::TypeSystem","RubyBreaker/Runtime/TypeSystem.html#method-i-arity_check","(num_of_args, meth_type)","<p>This method performs the arity check.\n"],["break","RubyBreaker","RubyBreaker.html#method-c-break","(*mods)","<p>This method just redirects to Runtime’s method.\n"],["break","RubyBreaker::Runtime","RubyBreaker/Runtime.html#method-c-break","(*mods)","<p>This method instruments the specified modules/classes at the time of the\ncall so they are monitored for …\n"],["break_after_method","RubyBreaker::Runtime::Monitor","RubyBreaker/Runtime/Monitor.html#method-i-break_after_method","(obj, meth_info)","<p>This method is invoked after the original method is executed.\n"],["break_after_method","RubyBreaker::Runtime::TypeSystem","RubyBreaker/Runtime/TypeSystem.html#method-i-break_after_method","(obj, meth_info)","<p>This method occurs after every call to a “monitored” method call of a\nmodule/class specified …\n"],["break_after_method_call","RubyBreaker::Runtime::Pluggable","RubyBreaker/Runtime/Pluggable.html#method-i-break_after_method_call","(obj, meth_info)","<p>This method will be invoked right after the actual method is invoked.\n<p>obj &mdash; the receiver of the method call …\n"],["break_before_method","RubyBreaker::Runtime::Monitor","RubyBreaker/Runtime/Monitor.html#method-i-break_before_method","(obj, meth_info)","<p>This method is invoked before the original method is executed.\n"],["break_before_method","RubyBreaker::Runtime::TypeSystem","RubyBreaker/Runtime/TypeSystem.html#method-i-break_before_method","(obj, meth_info)","<p>This method occurs before every call to a “monitored” method in a\nmodule/class specified for …\n"],["break_before_method_call","RubyBreaker::Runtime::Pluggable","RubyBreaker/Runtime/Pluggable.html#method-i-break_before_method_call","(obj, meth_info)","<p>This method will be invoked right before the actual method is invoked.\n<p>obj &mdash; the receiver of the method …\n"],["breakable","Rake::RubyBreakerTestTask","Rake/RubyBreakerTestTask.html#method-i-breakable","()","<p>DEPRECATED accessor override\n"],["breakable","RubyBreaker","RubyBreaker.html#method-c-breakable","(*mods)","<p>This method just redirects to Runtime’s method.\n<strong>DEPRECATED</strong>: Use +RubyBreaker.break()+ to indicate the …\n"],["breakable","RubyBreaker::Runtime","RubyBreaker/Runtime.html#method-c-breakable","(*mods)","<p>This method modifies specified modules/classes at the very moment (instead\nof registering them for later). …\n"],["breakable=","Rake::RubyBreakerTestTask","Rake/RubyBreakerTestTask.html#method-i-breakable-3D","(*args)","<p>DEPRECATED accessor override\n"],["camelize","RubyBreaker::Util","RubyBreaker/Util.html#method-c-camelize","(lower_case_and_underscored_word, first_letter_in_uppercase = true)","<p>File activesupport/lib/active_support/inflector/methods.rb\n"],["check","RubyBreaker","RubyBreaker.html#method-c-check","(*mods)",""],["check","RubyBreaker::Runtime","RubyBreaker/Runtime.html#method-c-check","(*mods)","<p>This method instruments the specified modules/classes at the time of the\ncall so that they are type checked …\n"],["check_after_method","RubyBreaker::Runtime::Monitor","RubyBreaker/Runtime/Monitor.html#method-i-check_after_method","(obj, meth_info)","<p>This method is invoked after the original method is executed.\n"],["check_after_method","RubyBreaker::Runtime::TypeSystem","RubyBreaker/Runtime/TypeSystem.html#method-i-check_after_method","(obj, meth_info)","<p>This method is invoked after the original method is executed.\n"],["check_after_method_call","RubyBreaker::Runtime::Pluggable","RubyBreaker/Runtime/Pluggable.html#method-i-check_after_method_call","(obj, meth_info)",""],["check_before_method","RubyBreaker::Runtime::Monitor","RubyBreaker/Runtime/Monitor.html#method-i-check_before_method","(obj, meth_info)","<p>This method is invoked before the original method is executed.\n"],["check_before_method","RubyBreaker::Runtime::TypeSystem","RubyBreaker/Runtime/TypeSystem.html#method-i-check_before_method","(obj, meth_info)","<p>This method is invoked before the original method is executed.\n"],["check_before_method_call","RubyBreaker::Runtime::Pluggable","RubyBreaker/Runtime/Pluggable.html#method-i-check_before_method_call","(obj, meth_info)",""],["compare","RubyBreaker::TypeComparer","RubyBreaker/TypeComparer.html#method-c-compare","(lhs,rhs)","<p>This equal method determines whether two types are\n<strong>syntactically</strong> equivalent. Note that this is NOT a …\n"],["convert_caller_to_pos","RubyBreaker::Position","RubyBreaker/Position.html#method-c-convert_caller_to_pos","(caller_ary, idx=0)","<p>This class method is a utility function to convert a string in the caller()\narray.\n"],["defined_logger?","RubyBreaker","RubyBreaker.html#method-c-defined_logger-3F","()","<p>This method returns true if the logger is already created and false\notherwise.\n"],["eql?","RubyBreaker::TypeDefs::Type","RubyBreaker/TypeDefs/Type.html#method-i-eql-3F","(other)","<p>This method compares this object to another object syntactically.\n"],["error","RubyBreaker","RubyBreaker.html#method-c-error","(err, level=:error, &blk)","<p>This method is for reporting an error to the user. It will immediately show\nthe error message but also …\n"],["export_to_yaml","RubyBreaker::RDocSupport","RubyBreaker/RDocSupport.html#method-c-export_to_yaml","(yaml_file, breakable_modules, broken_modules)","<p>This method exports the RubyBreaker output into a yaml file.\n"],["format_with_msg","RubyBreaker::Context","RubyBreaker/Context.html#method-i-format_with_msg","(pp,msg=\"\")",""],["get","RubyBreaker::Position","RubyBreaker/Position.html#method-c-get","()","<p>This class method returns a new position object for the current parsing\nposition.\n"],["get_alt_meth_name","RubyBreaker::Runtime::Monitor","RubyBreaker/Runtime/Monitor.html#method-c-get_alt_meth_name","(meth_name)","<p>This method returns the alternative (renamed) method name\n"],["get_orig_meth_name","RubyBreaker::Runtime::Monitor","RubyBreaker/Runtime/Monitor.html#method-c-get_orig_meth_name","(meth_name)","<p>This method returns the original method name\n"],["get_self","RubyBreaker::TypeDefs::SelfType","RubyBreaker/TypeDefs/SelfType.html#method-c-get_self","(mod)","<p>This is a getter method for class variable mod.\n"],["import_from_yaml","RubyBreaker::RDocSupport","RubyBreaker/RDocSupport.html#method-c-import_from_yaml","(yaml_file)","<p>This method imports the RubyBreaker output from a yaml file.\n"],["included","RubyBreaker::Breakable","RubyBreaker/Breakable.html#method-c-included","(mod)",""],["included","RubyBreaker::Broken","RubyBreaker/Broken.html#method-c-included","(mod)",""],["inspect_all","RubyBreaker::Runtime::Inspector","RubyBreaker/Runtime/Inspector.html#method-c-inspect_all","(mod)","<p>This method inspects the module for all methods. It returns a Hash\ncontaining (method name, method type) …\n"],["inspect_class_meth","RubyBreaker::Runtime::Inspector","RubyBreaker/Runtime/Inspector.html#method-c-inspect_class_meth","(mod, mname)","<p>This method inspects the module for the specified class method name. This\nis a shorthand for calling …\n"],["inspect_meth","RubyBreaker::Runtime::Inspector","RubyBreaker/Runtime/Inspector.html#method-c-inspect_meth","(mod, mname)","<p>This method inspects the module for the type of the specified method.\n"],["inspect_meths","RubyBreaker::Runtime::Inspector","RubyBreaker/Runtime/Inspector.html#method-c-inspect_meths","(mod, mnames)","<p>Similar to inspect_meth but returns a hash of (mname, mtype) pairs.\n"],["install_monitor","RubyBreaker::Runtime::MonitorInstaller","RubyBreaker/Runtime/MonitorInstaller.html#method-c-install_monitor","(monitor_type, mod)","<p>Installs an module (class) monitor to the object.\n"],["instrument","RubyBreaker::Runtime","RubyBreaker/Runtime.html#method-c-instrument","()","<p>This method installs a monitor for each breakable module. \n<strong>DEPRECATED</strong>: Use +breakable()+ method instead. …\n"],["is_module?","RubyBreaker::Runtime::MonitorInstaller","RubyBreaker/Runtime/MonitorInstaller.html#method-c-is_module-3F","(mod)","<p>returns true if the receiver is a module or a class\n"],["is_object_wrapped?","RubyBreaker::Runtime::TypeSystem","RubyBreaker/Runtime/TypeSystem.html#method-i-is_object_wrapped-3F","(obj)","<p>Check if the object is wrapped by a monitor\n"],["log","RubyBreaker","RubyBreaker.html#method-c-log","(str, level=:debug, context=nil, &blk)","<p>This method logs a non-error (or error) message but with the provided\ncontext.\n"],["lub","RubyBreaker::Runtime::TypeSystem","RubyBreaker/Runtime/TypeSystem.html#method-i-lub","(obj, meth_type_map, meth_name, retval, *args, &blk)","<p>This method computes the least upper bound of the existing method type and\nnewly observed argument/block/return …\n"],["lub_helper","RubyBreaker::Runtime::TypeSystem","RubyBreaker/Runtime/TypeSystem.html#method-i-lub_helper","(exist_meth_type, new_meth_type)","<p>This method is a helper for computing the least upper bound. It handles the\ncase where existing method …\n"],["method_missing","RubyBreaker::Runtime::ObjectWrapper","RubyBreaker/Runtime/ObjectWrapper.html#method-i-method_missing","(mname,*args,&blk)","<p>This method missing method redirects all other method calls.\n"],["mod","RubyBreaker::TypeDefs::FusionType","RubyBreaker/TypeDefs/FusionType.html#method-i-mod","()","<p>This method gets the actual module of the nominal type for this fusion\ntype. This is a shorthand for …\n"],["monitor","RubyBreaker","RubyBreaker.html#method-c-monitor","()","<p><strong>DEPRECATED</strong>: Use +RubyBreaker.run()+ to indicate the point\nof entry.\n"],["monkey_patch_meth","RubyBreaker::Runtime::MonitorInstaller","RubyBreaker/Runtime/MonitorInstaller.html#method-c-monkey_patch_meth","(monitor_type, mod, meth_name)","<p>renames the method in essence; this method also “installs” the module\nmonitor for the class …\n"],["new","Rake::RubyBreakerTestTask","Rake/RubyBreakerTestTask.html#method-c-new","(taskname=\"\", *args, &blk)","<p>This overrides the testtask’s constructor. In addition to the original\nbehavior, it keeps track of RubyBreaker …\n"],["new","RubyBreaker::Context","RubyBreaker/Context.html#method-c-new","(pos)",""],["new","RubyBreaker::Errors::InternalError","RubyBreaker/Errors/InternalError.html#method-c-new","(msg)",""],["new","RubyBreaker::Errors::InvalidSubtypeCheck","RubyBreaker/Errors/InvalidSubtypeCheck.html#method-c-new","(msg,pos=nil)",""],["new","RubyBreaker::Errors::UserError","RubyBreaker/Errors/UserError.html#method-c-new","(msg, ctx=nil)",""],["new","RubyBreaker::ObjectPosition","RubyBreaker/ObjectPosition.html#method-c-new","(obj, meth_name)",""],["new","RubyBreaker::Position","RubyBreaker/Position.html#method-c-new","(file=\"\",line=-1,col=-1,meth=\"\")",""],["new","RubyBreaker::Runtime::MethodInfo","RubyBreaker/Runtime/MethodInfo.html#method-c-new","(meth_name, args, blk, ret)",""],["new","RubyBreaker::Runtime::Monitor","RubyBreaker/Runtime/Monitor.html#method-c-new","(pluggable)",""],["new","RubyBreaker::Runtime::MonitorSwitch","RubyBreaker/Runtime/MonitorSwitch.html#method-c-new","()",""],["new","RubyBreaker::Runtime::ObjectWrapper","RubyBreaker/Runtime/ObjectWrapper.html#method-c-new","(obj)",""],["new","RubyBreaker::TypeDefs::AnyType","RubyBreaker/TypeDefs/AnyType.html#method-c-new","(*args)",""],["new","RubyBreaker::TypeDefs::BlockType","RubyBreaker/TypeDefs/BlockType.html#method-c-new","(arg_types=[],blk_type=nil,ret_type=nil,*args)",""],["new","RubyBreaker::TypeDefs::DuckType","RubyBreaker/TypeDefs/DuckType.html#method-c-new","(meth_names=[],*args)",""],["new","RubyBreaker::TypeDefs::FusionType","RubyBreaker/TypeDefs/FusionType.html#method-c-new","(nom_type,meth_names=[],*args)",""],["new","RubyBreaker::TypeDefs::MethodListType","RubyBreaker/TypeDefs/MethodListType.html#method-c-new","(types=[],*args)",""],["new","RubyBreaker::TypeDefs::MethodType","RubyBreaker/TypeDefs/MethodType.html#method-c-new","(meth_name,arg_types=[],blk_type=nil,ret_type=nil,*args)",""],["new","RubyBreaker::TypeDefs::NilType","RubyBreaker/TypeDefs/NilType.html#method-c-new","(*args)",""],["new","RubyBreaker::TypeDefs::NominalType","RubyBreaker/TypeDefs/NominalType.html#method-c-new","(mod=nil,*args)",""],["new","RubyBreaker::TypeDefs::OptionalType","RubyBreaker/TypeDefs/OptionalType.html#method-c-new","(type,*args)",""],["new","RubyBreaker::TypeDefs::OrType","RubyBreaker/TypeDefs/OrType.html#method-c-new","(types=[],*args)",""],["new","RubyBreaker::TypeDefs::SelfType","RubyBreaker/TypeDefs/SelfType.html#method-c-new","(*args)",""],["new","RubyBreaker::TypeDefs::Type","RubyBreaker/TypeDefs/Type.html#method-c-new","(*args)",""],["new","RubyBreaker::TypeDefs::VarLengthType","RubyBreaker/TypeDefs/VarLengthType.html#method-c-new","(type,*args)",""],["ordinalize","RubyBreaker::Util","RubyBreaker/Util.html#method-c-ordinalize","(number)","<p>File lib/active_support/inflector.rb, line 295\n"],["parse","RubyBreaker::Runtime::TypeSigParser","RubyBreaker/Runtime/TypeSigParser.html#method-c-parse","(str)","<p>This is a simple redirecting method for parsing type signature. The only\nspecial thing about this method …\n"],["pop","RubyBreaker::Context","RubyBreaker/Context.html#method-i-pop","()",""],["pp_methods","RubyBreaker::Runtime::TypeSigUnparser","RubyBreaker/Runtime/TypeSigUnparser.html#method-c-pp_methods","(pp, meth_type_map, opts={})","<p>Pretty prints type information for methods\n"],["pp_module","RubyBreaker::Runtime::TypeSigUnparser","RubyBreaker/Runtime/TypeSigUnparser.html#method-c-pp_module","(pp, mod, opts={})","<p>Pretty prints type information for the module/class\n"],["push","RubyBreaker::Context","RubyBreaker/Context.html#method-i-push","(pos)",""],["respond_to?","RubyBreaker::Runtime::ObjectWrapper","RubyBreaker/Runtime/ObjectWrapper.html#method-i-respond_to-3F","(mname)","<p>Only behave differently if it’s looking for <code>WRAPPED_INDICATOR</code>\nmethod\n"],["route","RubyBreaker::Runtime::Monitor","RubyBreaker/Runtime/Monitor.html#method-c-route","(route_type, obj, meth_name, *args, &blk)","<p>This will do the actual routing work for a particular “monitored” method\ncall.\n<p>route_type &mdash; :break …\n"],["run","RubyBreaker","RubyBreaker.html#method-c-run","(*mods)","<p>This method runs RubyBreaker for a particular test case (class). This is a\nbit different from running …\n"],["set","RubyBreaker::Position","RubyBreaker/Position.html#method-c-set","(file,line,col)","<p>This class method is to set the current parsing position.\n"],["set_self","RubyBreaker::TypeDefs::SelfType","RubyBreaker/TypeDefs/SelfType.html#method-c-set_self","(mod)","<p>This is a setter method for class variable mod. NOTE: It is set every time\ntypesig() is called\n"],["set_to","RubyBreaker::Runtime::MonitorSwitch","RubyBreaker/Runtime/MonitorSwitch.html#method-i-set_to","(mode)",""],["subclass_rel?","RubyBreaker::RubyTypeUtils","RubyBreaker/RubyTypeUtils.html#method-c-subclass_rel-3F","(lhs, rhs)","<p>Checks if lhs is a subclass of rhs\n"],["submodule_rel?","RubyBreaker::RubyTypeUtils","RubyBreaker/RubyTypeUtils.html#method-c-submodule_rel-3F","(lhs,rhs)","<p>Checks if lhs is a sub-module of rhs\n"],["subtype_of?","RubyBreaker::TypeDefs::Type","RubyBreaker/TypeDefs/Type.html#method-i-subtype_of-3F","(rhs)","<p>This is a shorthand for calling Typing.subtype_rel?\n"],["subtype_rel?","RubyBreaker::Typing","RubyBreaker/Typing.html#method-c-subtype_rel-3F","(lhs, rhs)","<p>This method determines if one type is a subtype of another. This check is\nfor RubyBreaker defined types. …\n"],["to_s","RubyBreaker::ObjectPosition","RubyBreaker/ObjectPosition.html#method-i-to_s","()",""],["to_s","RubyBreaker::Position","RubyBreaker/Position.html#method-i-to_s","()",""],["turn_off","RubyBreaker::Runtime::MonitorSwitch","RubyBreaker/Runtime/MonitorSwitch.html#method-i-turn_off","()",""],["turn_on","RubyBreaker::Runtime::MonitorSwitch","RubyBreaker/Runtime/MonitorSwitch.html#method-i-turn_on","()",""],["type_error_msg_prefix","RubyBreaker::Runtime::TypeSystem","RubyBreaker/Runtime/TypeSystem.html#method-i-type_error_msg_prefix","(mod, meth_name)","<p>This method creates the prefix for the type error message.\n"],["underscore","RubyBreaker::Util","RubyBreaker/Util.html#method-c-underscore","(camel_cased_word)","<p>File activesupport/lib/active_support/inflector/methods.rb, line 48\n"],["uneigen","RubyBreaker::Util","RubyBreaker/Util.html#method-c-uneigen","(mod_str)",""],["unparse","RubyBreaker::Runtime::TypeSigUnparser","RubyBreaker/Runtime/TypeSigUnparser.html#method-c-unparse","(mod, opts={})","<p>This method unparses the type information in the specified module,\ndisplaying one or more type signatures …\n"],["unparse","RubyBreaker::TypeDefs::Type","RubyBreaker/TypeDefs/Type.html#method-i-unparse","(opts={})","<p>This method is a shorthand for calling TypeUnparser.unparse(t).\n"],["unparse","RubyBreaker::TypeUnparser","RubyBreaker/TypeUnparser.html#method-c-unparse","(t, opts={})","<p>This method unparses the RubyBreaker type according to the specified\noptions.\n<p>t &mdash; RubyBreaker type\n<p>opts &mdash; \n"],["verbose","RubyBreaker","RubyBreaker.html#method-c-verbose","(str, &blk)","<p>This method will display verbose message. It is not for debugging but to\ninform users of each stage in …\n"]]}}
@@ -40,6 +40,12 @@
40
40
  </li>
41
41
  <li class="module">
42
42
  <a href="RubyBreaker/Errors.html">RubyBreaker::Errors</a>
43
+ </li>
44
+ <li class="class">
45
+ <a href="RubyBreaker/Errors/ArgumentTypeError.html">RubyBreaker::Errors::ArgumentTypeError</a>
46
+ </li>
47
+ <li class="class">
48
+ <a href="RubyBreaker/Errors/ArityError.html">RubyBreaker::Errors::ArityError</a>
43
49
  </li>
44
50
  <li class="class">
45
51
  <a href="RubyBreaker/Errors/InternalError.html">RubyBreaker::Errors::InternalError</a>
@@ -51,7 +57,7 @@
51
57
  <a href="RubyBreaker/Errors/InvalidTypeConstruction.html">RubyBreaker::Errors::InvalidTypeConstruction</a>
52
58
  </li>
53
59
  <li class="class">
54
- <a href="RubyBreaker/Errors/SubtypeFailure.html">RubyBreaker::Errors::SubtypeFailure</a>
60
+ <a href="RubyBreaker/Errors/ReturnTypeError.html">RubyBreaker::Errors::ReturnTypeError</a>
55
61
  </li>
56
62
  <li class="class">
57
63
  <a href="RubyBreaker/Errors/TypeError.html">RubyBreaker::Errors::TypeError</a>
@@ -179,10 +185,10 @@
179
185
  <h2 id="methods">Methods</h2>
180
186
  <ul>
181
187
 
182
- <li class="method"><a href="RubyBreaker.html#method-c-break">::break &mdash; RubyBreaker</a>
183
-
184
188
  <li class="method"><a href="RubyBreaker/Runtime.html#method-c-break">::break &mdash; RubyBreaker::Runtime</a>
185
189
 
190
+ <li class="method"><a href="RubyBreaker.html#method-c-break">::break &mdash; RubyBreaker</a>
191
+
186
192
  <li class="method"><a href="RubyBreaker/Runtime.html#method-c-breakable">::breakable &mdash; RubyBreaker::Runtime</a>
187
193
 
188
194
  <li class="method"><a href="RubyBreaker.html#method-c-breakable">::breakable &mdash; RubyBreaker</a>
@@ -213,10 +219,10 @@
213
219
 
214
220
  <li class="method"><a href="RubyBreaker/RDocSupport.html#method-c-import_from_yaml">::import_from_yaml &mdash; RubyBreaker::RDocSupport</a>
215
221
 
216
- <li class="method"><a href="RubyBreaker/Broken.html#method-c-included">::included &mdash; RubyBreaker::Broken</a>
217
-
218
222
  <li class="method"><a href="RubyBreaker/Breakable.html#method-c-included">::included &mdash; RubyBreaker::Breakable</a>
219
223
 
224
+ <li class="method"><a href="RubyBreaker/Broken.html#method-c-included">::included &mdash; RubyBreaker::Broken</a>
225
+
220
226
  <li class="method"><a href="RubyBreaker/Runtime/Inspector.html#method-c-inspect_all">::inspect_all &mdash; RubyBreaker::Runtime::Inspector</a>
221
227
 
222
228
  <li class="method"><a href="RubyBreaker/Runtime/Inspector.html#method-c-inspect_class_meth">::inspect_class_meth &mdash; RubyBreaker::Runtime::Inspector</a>
@@ -237,25 +243,23 @@
237
243
 
238
244
  <li class="method"><a href="RubyBreaker/Runtime/MonitorInstaller.html#method-c-monkey_patch_meth">::monkey_patch_meth &mdash; RubyBreaker::Runtime::MonitorInstaller</a>
239
245
 
240
- <li class="method"><a href="RubyBreaker/TypeDefs/SelfType.html#method-c-new">::new &mdash; RubyBreaker::TypeDefs::SelfType</a>
241
-
242
246
  <li class="method"><a href="RubyBreaker/Position.html#method-c-new">::new &mdash; RubyBreaker::Position</a>
243
247
 
244
- <li class="method"><a href="RubyBreaker/Runtime/MethodInfo.html#method-c-new">::new &mdash; RubyBreaker::Runtime::MethodInfo</a>
248
+ <li class="method"><a href="RubyBreaker/ObjectPosition.html#method-c-new">::new &mdash; RubyBreaker::ObjectPosition</a>
245
249
 
246
- <li class="method"><a href="RubyBreaker/Context.html#method-c-new">::new &mdash; RubyBreaker::Context</a>
250
+ <li class="method"><a href="RubyBreaker/Runtime/MethodInfo.html#method-c-new">::new &mdash; RubyBreaker::Runtime::MethodInfo</a>
247
251
 
248
- <li class="method"><a href="RubyBreaker/Errors/InternalError.html#method-c-new">::new &mdash; RubyBreaker::Errors::InternalError</a>
252
+ <li class="method"><a href="RubyBreaker/Runtime/MonitorSwitch.html#method-c-new">::new &mdash; RubyBreaker::Runtime::MonitorSwitch</a>
249
253
 
250
- <li class="method"><a href="RubyBreaker/Errors/InvalidSubtypeCheck.html#method-c-new">::new &mdash; RubyBreaker::Errors::InvalidSubtypeCheck</a>
254
+ <li class="method"><a href="RubyBreaker/Context.html#method-c-new">::new &mdash; RubyBreaker::Context</a>
251
255
 
252
- <li class="method"><a href="RubyBreaker/Errors/UserError.html#method-c-new">::new &mdash; RubyBreaker::Errors::UserError</a>
256
+ <li class="method"><a href="RubyBreaker/Runtime/ObjectWrapper.html#method-c-new">::new &mdash; RubyBreaker::Runtime::ObjectWrapper</a>
253
257
 
254
258
  <li class="method"><a href="RubyBreaker/Runtime/Monitor.html#method-c-new">::new &mdash; RubyBreaker::Runtime::Monitor</a>
255
259
 
256
- <li class="method"><a href="RubyBreaker/Runtime/MonitorSwitch.html#method-c-new">::new &mdash; RubyBreaker::Runtime::MonitorSwitch</a>
260
+ <li class="method"><a href="RubyBreaker/Errors/InternalError.html#method-c-new">::new &mdash; RubyBreaker::Errors::InternalError</a>
257
261
 
258
- <li class="method"><a href="RubyBreaker/Runtime/ObjectWrapper.html#method-c-new">::new &mdash; RubyBreaker::Runtime::ObjectWrapper</a>
262
+ <li class="method"><a href="RubyBreaker/Errors/InvalidSubtypeCheck.html#method-c-new">::new &mdash; RubyBreaker::Errors::InvalidSubtypeCheck</a>
259
263
 
260
264
  <li class="method"><a href="RubyBreaker/TypeDefs/MethodListType.html#method-c-new">::new &mdash; RubyBreaker::TypeDefs::MethodListType</a>
261
265
 
@@ -263,13 +267,17 @@
263
267
 
264
268
  <li class="method"><a href="RubyBreaker/TypeDefs/VarLengthType.html#method-c-new">::new &mdash; RubyBreaker::TypeDefs::VarLengthType</a>
265
269
 
270
+ <li class="method"><a href="RubyBreaker/Errors/UserError.html#method-c-new">::new &mdash; RubyBreaker::Errors::UserError</a>
271
+
272
+ <li class="method"><a href="RubyBreaker/TypeDefs/MethodType.html#method-c-new">::new &mdash; RubyBreaker::TypeDefs::MethodType</a>
273
+
266
274
  <li class="method"><a href="Rake/RubyBreakerTestTask.html#method-c-new">::new &mdash; Rake::RubyBreakerTestTask</a>
267
275
 
268
276
  <li class="method"><a href="RubyBreaker/TypeDefs/Type.html#method-c-new">::new &mdash; RubyBreaker::TypeDefs::Type</a>
269
277
 
270
- <li class="method"><a href="RubyBreaker/TypeDefs/OptionalType.html#method-c-new">::new &mdash; RubyBreaker::TypeDefs::OptionalType</a>
278
+ <li class="method"><a href="RubyBreaker/TypeDefs/BlockType.html#method-c-new">::new &mdash; RubyBreaker::TypeDefs::BlockType</a>
271
279
 
272
- <li class="method"><a href="RubyBreaker/TypeDefs/MethodType.html#method-c-new">::new &mdash; RubyBreaker::TypeDefs::MethodType</a>
280
+ <li class="method"><a href="RubyBreaker/TypeDefs/FusionType.html#method-c-new">::new &mdash; RubyBreaker::TypeDefs::FusionType</a>
273
281
 
274
282
  <li class="method"><a href="RubyBreaker/TypeDefs/DuckType.html#method-c-new">::new &mdash; RubyBreaker::TypeDefs::DuckType</a>
275
283
 
@@ -279,11 +287,9 @@
279
287
 
280
288
  <li class="method"><a href="RubyBreaker/TypeDefs/NominalType.html#method-c-new">::new &mdash; RubyBreaker::TypeDefs::NominalType</a>
281
289
 
282
- <li class="method"><a href="RubyBreaker/ObjectPosition.html#method-c-new">::new &mdash; RubyBreaker::ObjectPosition</a>
283
-
284
- <li class="method"><a href="RubyBreaker/TypeDefs/FusionType.html#method-c-new">::new &mdash; RubyBreaker::TypeDefs::FusionType</a>
290
+ <li class="method"><a href="RubyBreaker/TypeDefs/SelfType.html#method-c-new">::new &mdash; RubyBreaker::TypeDefs::SelfType</a>
285
291
 
286
- <li class="method"><a href="RubyBreaker/TypeDefs/BlockType.html#method-c-new">::new &mdash; RubyBreaker::TypeDefs::BlockType</a>
292
+ <li class="method"><a href="RubyBreaker/TypeDefs/OptionalType.html#method-c-new">::new &mdash; RubyBreaker::TypeDefs::OptionalType</a>
287
293
 
288
294
  <li class="method"><a href="RubyBreaker/Util.html#method-c-ordinalize">::ordinalize &mdash; RubyBreaker::Util</a>
289
295
 
@@ -311,10 +317,10 @@
311
317
 
312
318
  <li class="method"><a href="RubyBreaker/Util.html#method-c-uneigen">::uneigen &mdash; RubyBreaker::Util</a>
313
319
 
314
- <li class="method"><a href="RubyBreaker/Runtime/TypeSigUnparser.html#method-c-unparse">::unparse &mdash; RubyBreaker::Runtime::TypeSigUnparser</a>
315
-
316
320
  <li class="method"><a href="RubyBreaker/TypeUnparser.html#method-c-unparse">::unparse &mdash; RubyBreaker::TypeUnparser</a>
317
321
 
322
+ <li class="method"><a href="RubyBreaker/Runtime/TypeSigUnparser.html#method-c-unparse">::unparse &mdash; RubyBreaker::Runtime::TypeSigUnparser</a>
323
+
318
324
  <li class="method"><a href="RubyBreaker.html#method-c-verbose">::verbose &mdash; RubyBreaker</a>
319
325
 
320
326
  <li class="method"><a href="RubyBreaker/Runtime/ObjectWrapper.html#method-i-__rubybreaker_obj">#__rubybreaker_obj &mdash; RubyBreaker::Runtime::ObjectWrapper</a>
@@ -323,32 +329,34 @@
323
329
 
324
330
  <li class="method"><a href="RubyBreaker/TypeDefs/DuckType.html#method-i-add_meth">#add_meth &mdash; RubyBreaker::TypeDefs::DuckType</a>
325
331
 
326
- <li class="method"><a href="RubyBreaker/Runtime/TypeSystem.html#method-i-break_after_method">#break_after_method &mdash; RubyBreaker::Runtime::TypeSystem</a>
332
+ <li class="method"><a href="RubyBreaker/Runtime/TypeSystem.html#method-i-arity_check">#arity_check &mdash; RubyBreaker::Runtime::TypeSystem</a>
327
333
 
328
334
  <li class="method"><a href="RubyBreaker/Runtime/Monitor.html#method-i-break_after_method">#break_after_method &mdash; RubyBreaker::Runtime::Monitor</a>
329
335
 
330
- <li class="method"><a href="RubyBreaker/Runtime/Pluggable.html#method-i-break_after_method_call">#break_after_method_call &mdash; RubyBreaker::Runtime::Pluggable</a>
336
+ <li class="method"><a href="RubyBreaker/Runtime/TypeSystem.html#method-i-break_after_method">#break_after_method &mdash; RubyBreaker::Runtime::TypeSystem</a>
331
337
 
332
- <li class="method"><a href="RubyBreaker/Runtime/TypeSystem.html#method-i-break_before_method">#break_before_method &mdash; RubyBreaker::Runtime::TypeSystem</a>
338
+ <li class="method"><a href="RubyBreaker/Runtime/Pluggable.html#method-i-break_after_method_call">#break_after_method_call &mdash; RubyBreaker::Runtime::Pluggable</a>
333
339
 
334
340
  <li class="method"><a href="RubyBreaker/Runtime/Monitor.html#method-i-break_before_method">#break_before_method &mdash; RubyBreaker::Runtime::Monitor</a>
335
341
 
342
+ <li class="method"><a href="RubyBreaker/Runtime/TypeSystem.html#method-i-break_before_method">#break_before_method &mdash; RubyBreaker::Runtime::TypeSystem</a>
343
+
336
344
  <li class="method"><a href="RubyBreaker/Runtime/Pluggable.html#method-i-break_before_method_call">#break_before_method_call &mdash; RubyBreaker::Runtime::Pluggable</a>
337
345
 
338
346
  <li class="method"><a href="Rake/RubyBreakerTestTask.html#method-i-breakable">#breakable &mdash; Rake::RubyBreakerTestTask</a>
339
347
 
340
348
  <li class="method"><a href="Rake/RubyBreakerTestTask.html#method-i-breakable-3D">#breakable= &mdash; Rake::RubyBreakerTestTask</a>
341
349
 
342
- <li class="method"><a href="RubyBreaker/Runtime/Monitor.html#method-i-check_after_method">#check_after_method &mdash; RubyBreaker::Runtime::Monitor</a>
343
-
344
350
  <li class="method"><a href="RubyBreaker/Runtime/TypeSystem.html#method-i-check_after_method">#check_after_method &mdash; RubyBreaker::Runtime::TypeSystem</a>
345
351
 
346
- <li class="method"><a href="RubyBreaker/Runtime/Pluggable.html#method-i-check_after_method_call">#check_after_method_call &mdash; RubyBreaker::Runtime::Pluggable</a>
352
+ <li class="method"><a href="RubyBreaker/Runtime/Monitor.html#method-i-check_after_method">#check_after_method &mdash; RubyBreaker::Runtime::Monitor</a>
347
353
 
348
- <li class="method"><a href="RubyBreaker/Runtime/Monitor.html#method-i-check_before_method">#check_before_method &mdash; RubyBreaker::Runtime::Monitor</a>
354
+ <li class="method"><a href="RubyBreaker/Runtime/Pluggable.html#method-i-check_after_method_call">#check_after_method_call &mdash; RubyBreaker::Runtime::Pluggable</a>
349
355
 
350
356
  <li class="method"><a href="RubyBreaker/Runtime/TypeSystem.html#method-i-check_before_method">#check_before_method &mdash; RubyBreaker::Runtime::TypeSystem</a>
351
357
 
358
+ <li class="method"><a href="RubyBreaker/Runtime/Monitor.html#method-i-check_before_method">#check_before_method &mdash; RubyBreaker::Runtime::Monitor</a>
359
+
352
360
  <li class="method"><a href="RubyBreaker/Runtime/Pluggable.html#method-i-check_before_method_call">#check_before_method_call &mdash; RubyBreaker::Runtime::Pluggable</a>
353
361
 
354
362
  <li class="method"><a href="RubyBreaker/TypeDefs/Type.html#method-i-eql-3F">#eql? &mdash; RubyBreaker::TypeDefs::Type</a>
@@ -375,10 +383,10 @@
375
383
 
376
384
  <li class="method"><a href="RubyBreaker/TypeDefs/Type.html#method-i-subtype_of-3F">#subtype_of? &mdash; RubyBreaker::TypeDefs::Type</a>
377
385
 
378
- <li class="method"><a href="RubyBreaker/Position.html#method-i-to_s">#to_s &mdash; RubyBreaker::Position</a>
379
-
380
386
  <li class="method"><a href="RubyBreaker/ObjectPosition.html#method-i-to_s">#to_s &mdash; RubyBreaker::ObjectPosition</a>
381
387
 
388
+ <li class="method"><a href="RubyBreaker/Position.html#method-i-to_s">#to_s &mdash; RubyBreaker::Position</a>
389
+
382
390
  <li class="method"><a href="RubyBreaker/Runtime/MonitorSwitch.html#method-i-turn_off">#turn_off &mdash; RubyBreaker::Runtime::MonitorSwitch</a>
383
391
 
384
392
  <li class="method"><a href="RubyBreaker/Runtime/MonitorSwitch.html#method-i-turn_on">#turn_on &mdash; RubyBreaker::Runtime::MonitorSwitch</a>
@@ -20,8 +20,8 @@
20
20
  <!--<div id="generated-toc"></div>-->
21
21
  <h1>Tutorial</h1>
22
22
 
23
- <p>This tutorial will describe the basic usage of the tool, the RubyBreaker
24
- Type Annotation Language, and the RubyBreaker Type System.</p>
23
+ <p>This tutorial will describe the basic usages of the tool and the types
24
+ supported by RubyBreaker.</p>
25
25
 
26
26
  <h2>Usage</h2>
27
27
 
@@ -31,17 +31,38 @@ does require a minimum change in the Rakefile (but no code change in the
31
31
  source program) but is better for a long-term maintenance. Regardless of the
32
32
  mode you choose to run, no source code change is required.</p>
33
33
 
34
+ <h3>Running RubyBreaker</h3>
35
+
34
36
  <p>Let us briefly see how RubyBreaker can be run directly as a command-line
35
37
  program to understand the overall concept of the tool. We will explain how
36
- to use RubyBreaker in a Rakefile later.</p>
38
+ to use RubyBreaker in a Rakefile later. The following is the banner of
39
+ RubyBreaker when running in the command-line mode:</p>
40
+
41
+ <pre><code>Usage: rubybreaker.rb [options] prog[.rb]
42
+ -b, --break MODULES Specify modules/classes to 'break'
43
+ -c, --check MODULES Specify modules/classes to check
44
+ -l, --libs LIBRARIES Specify libraries to load
45
+ --debug Run in debug mode
46
+ --style STYLE Select type signature style - underscore or camelize
47
+ --io-file FILE Specify I/O file
48
+ --save-output Save output to file
49
+ -s, --[no-]stdout Show output on screen
50
+ -a, --[no-]append Append output to input file
51
+ -v, --verbose Show messages in detail
52
+ -h, --help Show this help text
53
+ </code></pre>
54
+
55
+ <h4>Example</h4>
56
+
57
+ <p>Here is an example of running Rubybreaker as a command.</p>
37
58
 
38
59
  <pre><code>$ rubybreaker -v -s -l lib.rb -b A,B prog.rb
39
60
  </code></pre>
40
61
 
41
- <p>The above command runs RubyBreaker in verbose mode (<code>-v</code>) and will display
62
+ <p>This runs RubyBreaker in verbose mode (<code>-v</code>) and will display
42
63
  the output on the screen (<code>-s</code>). Before RubyBreaker runs <code>prog.rb</code>, it will
43
64
  import (<code>-l</code>) <code>lib.rb</code> and <em>break</em> (<code>-b</code>) classes <code>A</code> and <code>B</code>.
44
- Here is <code>lib.rb</code>:</p>
65
+ Here is the source of <code>lib.rb</code>:</p>
45
66
 
46
67
  <pre><code>class A
47
68
  def foo(x)
@@ -55,14 +76,14 @@ class B
55
76
  end
56
77
  </code></pre>
57
78
 
58
- <p>And, <code>prog.rb</code> simply imports the library file and executes it:</p>
79
+ <p>And, <code>prog.rb</code> simply imports the library file and executes <code>A#foo</code> with a
80
+ number:</p>
59
81
 
60
82
  <pre><code>require "lib"
61
83
  A.new.foo(1)
62
84
  </code></pre>
63
85
 
64
- <p>This example will show how <code>A#foo</code> method is given a type by RubyBreaker.
65
- After running the command shown above, the following output will be
86
+ <p>After running the command shown above, the following output will be
66
87
  generated and displayed on the screen:</p>
67
88
 
68
89
  <pre><code>class A
@@ -70,11 +91,12 @@ generated and displayed on the screen:</p>
70
91
  end
71
92
  </code></pre>
72
93
 
73
- <p>Here, the <code>typesig</code> method call registers <code>foo</code> as a method type that takes
94
+ <p>This example shows how RubyBreaker documents the type of <code>A#foo</code>.
95
+ Here, the <code>typesig</code> method call registers <code>foo</code> as a method type that takes
74
96
  an object that has <code>Fixnum#to_s</code> method and returns a <code>String</code>. This
75
97
  method is made available simply by importing <code>rubybreaker</code>. Now, assume
76
98
  that an additional code, <code>B.new.bar(A.new,1)</code>, is added at the end of
77
- <code>prog.rb</code>. The subsequent run will generate the following result:</p>
99
+ <code>prog.rb</code>. It generate the following result:</p>
78
100
 
79
101
  <pre><code>class A
80
102
  typesig("foo(fixnum[to_s]) -&gt; string")
@@ -92,6 +114,21 @@ the program behaves correctly (for those test runs) as intended by the
92
114
  programmer. This assumption is not a strong requirement, but is necessary to
93
115
  obtain precise and accurate type information.</p>
94
116
 
117
+ <h4>Early Dynamic Type Checking</h4>
118
+
119
+ <p>RubyBreaker gives you an option to run the early dynamic type check. If a
120
+ method is documented and its module is specified to be <em>type checked</em>, then
121
+ RubyBreaker will verify if the argument types and the return type are
122
+ appropriate at runtime. To allow this feature in command-line, use <code>-c</code>
123
+ (checking) option:</p>
124
+
125
+ <pre><code>rubybreaker -l lib.rb -c A prog.rb
126
+ </code></pre>
127
+
128
+ <p>Here, the library code <code>lib.rb</code> will be imported (<code>-l</code>) and class <code>A</code> will
129
+ be instrumented for type checking (<code>-c</code>) during the execution of <code>prog.rb</code>.
130
+ We will explain how to run type checking in non-command mode.</p>
131
+
95
132
  <h3>Using Ruby Unit Testing Framework</h3>
96
133
 
97
134
  <p>Instead of manually inserting the entry point indicator in the source
@@ -161,6 +198,28 @@ string literals to specify modules and classes (and with full namespace).</p>
161
198
  program whatsoever. This task will take care of instrumenting the specified
162
199
  modules and classes at proper moments.</p>
163
200
 
201
+ <h4>Early Dynamic Type Checking in Rakefile</h4>
202
+
203
+ <p>Previously, we explained how to perform type checking in the command mode.
204
+ You can also specify which modules/classes to type check in the Rakfile. The
205
+ following shows an example usage of <code>check</code> option.</p>
206
+
207
+ <pre><code>require "rubybreaker/task"
208
+ ...
209
+ desc "Run RubyBreaker"
210
+ Rake::RubyBreakerTestTask.new(:"rubybreaker") do |t|
211
+ t.libs &lt;&lt; "lib"
212
+ t.test_files = ["test/foo/tc_foo1.rb"]
213
+ # ...Other test task options..
214
+ t.rubybreaker_opts &lt;&lt; "-v" # run in verbose mode
215
+ t.break = ["Class1", "Class2", ...] # specify classes to monitor
216
+ t.check = ["Class3", ....] # specify classes to check
217
+ end
218
+ </code></pre>
219
+
220
+ <p>Alternatively, you can use <code>RubyBreaker.check()</code> to specify classes to type
221
+ check in the setup code of the test case.</p>
222
+
164
223
  <h2>Type Annotation</h2>
165
224
 
166
225
  <p>The annotation language used in RubyBreaker resembles the method
@@ -319,35 +378,6 @@ automatically documenting such a type, RubyBreaker looks for the (subtyping)
319
378
  compatibility between the return types and "promote" the method type to a
320
379
  method list type by spliting the type signature into two (or more in
321
380
  subsequent "promotions").</p>
322
-
323
- <h3>Early Dynamic Type Checking</h3>
324
-
325
- <p>RubyBreaker gives you an option to run the early dynamic type check. If a
326
- method is documented and its module is specified to be <em>type checked</em>, then
327
- RubyBreaker will verify if the argument types and the return type are
328
- appropriate at runtime. To allow this feature in command-line, use <code>-c</code>
329
- (checking) option:</p>
330
-
331
- <pre><code>rubybreaker -l lib.rb -c A prog.rb
332
- </code></pre>
333
-
334
- <p>Or use it in Rakefile:</p>
335
-
336
- <pre><code>require "rubybreaker/task"
337
- ...
338
- desc "Run RubyBreaker"
339
- Rake::RubyBreakerTestTask.new(:"rubybreaker") do |t|
340
- t.libs &lt;&lt; "lib"
341
- t.test_files = ["test/foo/tc_foo1.rb"]
342
- # ...Other test task options..
343
- t.rubybreaker_opts &lt;&lt; "-v" # run in verbose mode
344
- t.break = ["Class1", "Class2", ...] # specify classes to monitor
345
- t.check = ["Class3", ....] # specify classes to check
346
- end
347
- </code></pre>
348
-
349
- <p>Alternatively, you can use <code>RubyBreaker.check()</code> to specify classes to type
350
- check in the setup code of the test case.</p>
351
381
  <hr />
352
382
  <center style="font-size:smaller; padding:0px;">
353
383
  Copyright (C) 2012 Jong-hoon (David) An. All Rights Reserved.<br />
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubybreaker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-27 00:00:00.000000000 Z
12
+ date: 2012-06-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: treetop
@@ -30,8 +30,8 @@ dependencies:
30
30
  description: RubyBreaker is a dynamic type documentation/checking tool for Ruby. It
31
31
  dynamically instruments code, monitors objects during execution, performs dynamic
32
32
  type checking, and generates type documentation based on the profiled information.
33
- In other words, RubyBreaker "breaks" Ruby code out of its obscurity and wildness
34
- (as in "code breaking" or "horse breaking") by auto-documenting type information.
33
+ RubyBreaker helps Ruby programs "break" out of obscurities and convolutions by auto-documenting
34
+ type information.
35
35
  email: rubybreaker@gmail.com
36
36
  executables:
37
37
  - rubybreaker
@@ -86,6 +86,7 @@ files:
86
86
  - test/integrated/tc_inherit_broken.rb
87
87
  - test/integrated/tc_method_missing.rb
88
88
  - test/integrated/tc_namespace.rb
89
+ - test/integrated/tc_original_behavior.rb
89
90
  - test/integrated/tc_simple1.rb
90
91
  - test/runtime/tc_obj_wrapper.rb
91
92
  - test/runtime/tc_typesig_parser.rb
@@ -149,10 +150,12 @@ files:
149
150
  - webpage/rdoc/RubyBreaker/Breakable.html
150
151
  - webpage/rdoc/RubyBreaker/Broken.html
151
152
  - webpage/rdoc/RubyBreaker/Context.html
153
+ - webpage/rdoc/RubyBreaker/Errors/ArgumentTypeError.html
154
+ - webpage/rdoc/RubyBreaker/Errors/ArityError.html
152
155
  - webpage/rdoc/RubyBreaker/Errors/InternalError.html
153
156
  - webpage/rdoc/RubyBreaker/Errors/InvalidSubtypeCheck.html
154
157
  - webpage/rdoc/RubyBreaker/Errors/InvalidTypeConstruction.html
155
- - webpage/rdoc/RubyBreaker/Errors/SubtypeFailure.html
158
+ - webpage/rdoc/RubyBreaker/Errors/ReturnTypeError.html
156
159
  - webpage/rdoc/RubyBreaker/Errors/TypeError.html
157
160
  - webpage/rdoc/RubyBreaker/Errors/UserError.html
158
161
  - webpage/rdoc/RubyBreaker/Errors.html