rubybreaker 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
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