rubybreaker 0.0.7 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +6 -6
- data/TUTORIAL.md +64 -34
- data/VERSION +1 -1
- data/lib/rubybreaker/debug/error.rb +7 -1
- data/lib/rubybreaker/runtime/monitor.rb +2 -2
- data/lib/rubybreaker/runtime/object_wrapper.rb +32 -1
- data/lib/rubybreaker/runtime/overrides.rb +31 -1
- data/lib/rubybreaker/runtime/type_system.rb +67 -11
- data/test/integrated/tc_checking.rb +35 -5
- data/test/integrated/tc_class_methods.rb +4 -1
- data/test/integrated/tc_original_behavior.rb +68 -0
- data/test/runtime/tc_obj_wrapper.rb +50 -4
- data/test/testtask/tc_testtask.rb +1 -1
- data/test/ts_integrated.rb +3 -1
- data/webpage/images/title.png +0 -0
- data/webpage/index.html +6 -6
- data/webpage/rdoc/Object.html +5 -1
- data/webpage/rdoc/Rake.html +5 -1
- data/webpage/rdoc/Rake/RubyBreakerTestTask.html +5 -1
- data/webpage/rdoc/RubyBreaker.html +5 -1
- data/webpage/rdoc/RubyBreaker/Breakable.html +5 -1
- data/webpage/rdoc/RubyBreaker/Broken.html +5 -1
- data/webpage/rdoc/RubyBreaker/Context.html +5 -1
- data/webpage/rdoc/RubyBreaker/Errors.html +5 -1
- data/webpage/rdoc/RubyBreaker/Errors/ArgumentTypeError.html +216 -0
- data/webpage/rdoc/RubyBreaker/Errors/{SubtypeFailure.html → ArityError.html} +7 -3
- data/webpage/rdoc/RubyBreaker/Errors/InternalError.html +5 -1
- data/webpage/rdoc/RubyBreaker/Errors/InvalidSubtypeCheck.html +5 -1
- data/webpage/rdoc/RubyBreaker/Errors/InvalidTypeConstruction.html +5 -1
- data/webpage/rdoc/RubyBreaker/Errors/ReturnTypeError.html +216 -0
- data/webpage/rdoc/RubyBreaker/Errors/TypeError.html +5 -1
- data/webpage/rdoc/RubyBreaker/Errors/UserError.html +5 -1
- data/webpage/rdoc/RubyBreaker/ObjectPosition.html +5 -1
- data/webpage/rdoc/RubyBreaker/Position.html +5 -1
- data/webpage/rdoc/RubyBreaker/RDocSupport.html +5 -1
- data/webpage/rdoc/RubyBreaker/RubyTypeUtils.html +5 -1
- data/webpage/rdoc/RubyBreaker/Runtime.html +10 -1
- data/webpage/rdoc/RubyBreaker/Runtime/Inspector.html +5 -1
- data/webpage/rdoc/RubyBreaker/Runtime/MethodInfo.html +5 -1
- data/webpage/rdoc/RubyBreaker/Runtime/Monitor.html +7 -3
- data/webpage/rdoc/RubyBreaker/Runtime/MonitorInstaller.html +5 -1
- data/webpage/rdoc/RubyBreaker/Runtime/MonitorSwitch.html +5 -1
- data/webpage/rdoc/RubyBreaker/Runtime/ObjectWrapper.html +37 -2
- data/webpage/rdoc/RubyBreaker/Runtime/Pluggable.html +5 -1
- data/webpage/rdoc/RubyBreaker/Runtime/TypeSigParser.html +5 -1
- data/webpage/rdoc/RubyBreaker/Runtime/TypeSigUnparser.html +5 -1
- data/webpage/rdoc/RubyBreaker/Runtime/TypeSystem.html +103 -16
- data/webpage/rdoc/RubyBreaker/TypeComparer.html +5 -1
- data/webpage/rdoc/RubyBreaker/TypeDefs.html +5 -1
- data/webpage/rdoc/RubyBreaker/TypeDefs/AnyType.html +5 -1
- data/webpage/rdoc/RubyBreaker/TypeDefs/BlockType.html +5 -1
- data/webpage/rdoc/RubyBreaker/TypeDefs/DuckType.html +5 -1
- data/webpage/rdoc/RubyBreaker/TypeDefs/FusionType.html +5 -1
- data/webpage/rdoc/RubyBreaker/TypeDefs/MethodListType.html +5 -1
- data/webpage/rdoc/RubyBreaker/TypeDefs/MethodType.html +5 -1
- data/webpage/rdoc/RubyBreaker/TypeDefs/NilType.html +5 -1
- data/webpage/rdoc/RubyBreaker/TypeDefs/NominalType.html +5 -1
- data/webpage/rdoc/RubyBreaker/TypeDefs/OptionalType.html +5 -1
- data/webpage/rdoc/RubyBreaker/TypeDefs/OrType.html +5 -1
- data/webpage/rdoc/RubyBreaker/TypeDefs/SelfType.html +5 -1
- data/webpage/rdoc/RubyBreaker/TypeDefs/Type.html +5 -1
- data/webpage/rdoc/RubyBreaker/TypeDefs/VarLengthType.html +5 -1
- data/webpage/rdoc/RubyBreaker/TypeUnparser.html +5 -1
- data/webpage/rdoc/RubyBreaker/Typing.html +5 -1
- data/webpage/rdoc/RubyBreaker/Util.html +5 -1
- data/webpage/rdoc/Test.html +5 -1
- data/webpage/rdoc/Test/Unit.html +5 -1
- data/webpage/rdoc/created.rid +8 -8
- data/webpage/rdoc/index.html +5 -1
- data/webpage/rdoc/js/search_index.js +1 -1
- data/webpage/rdoc/table_of_contents.html +39 -31
- data/webpage/tutorial.html +69 -39
- 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 — 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 — 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 — :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 — RubyBreaker type\n<p>opts — \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 — 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 — 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 — :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 — RubyBreaker type\n<p>opts — \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/
|
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 — RubyBreaker</a>
|
183
|
-
|
184
188
|
<li class="method"><a href="RubyBreaker/Runtime.html#method-c-break">::break — RubyBreaker::Runtime</a>
|
185
189
|
|
190
|
+
<li class="method"><a href="RubyBreaker.html#method-c-break">::break — RubyBreaker</a>
|
191
|
+
|
186
192
|
<li class="method"><a href="RubyBreaker/Runtime.html#method-c-breakable">::breakable — RubyBreaker::Runtime</a>
|
187
193
|
|
188
194
|
<li class="method"><a href="RubyBreaker.html#method-c-breakable">::breakable — 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 — RubyBreaker::RDocSupport</a>
|
215
221
|
|
216
|
-
<li class="method"><a href="RubyBreaker/Broken.html#method-c-included">::included — RubyBreaker::Broken</a>
|
217
|
-
|
218
222
|
<li class="method"><a href="RubyBreaker/Breakable.html#method-c-included">::included — RubyBreaker::Breakable</a>
|
219
223
|
|
224
|
+
<li class="method"><a href="RubyBreaker/Broken.html#method-c-included">::included — RubyBreaker::Broken</a>
|
225
|
+
|
220
226
|
<li class="method"><a href="RubyBreaker/Runtime/Inspector.html#method-c-inspect_all">::inspect_all — 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 — 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 — RubyBreaker::Runtime::MonitorInstaller</a>
|
239
245
|
|
240
|
-
<li class="method"><a href="RubyBreaker/TypeDefs/SelfType.html#method-c-new">::new — RubyBreaker::TypeDefs::SelfType</a>
|
241
|
-
|
242
246
|
<li class="method"><a href="RubyBreaker/Position.html#method-c-new">::new — RubyBreaker::Position</a>
|
243
247
|
|
244
|
-
<li class="method"><a href="RubyBreaker/
|
248
|
+
<li class="method"><a href="RubyBreaker/ObjectPosition.html#method-c-new">::new — RubyBreaker::ObjectPosition</a>
|
245
249
|
|
246
|
-
<li class="method"><a href="RubyBreaker/
|
250
|
+
<li class="method"><a href="RubyBreaker/Runtime/MethodInfo.html#method-c-new">::new — RubyBreaker::Runtime::MethodInfo</a>
|
247
251
|
|
248
|
-
<li class="method"><a href="RubyBreaker/
|
252
|
+
<li class="method"><a href="RubyBreaker/Runtime/MonitorSwitch.html#method-c-new">::new — RubyBreaker::Runtime::MonitorSwitch</a>
|
249
253
|
|
250
|
-
<li class="method"><a href="RubyBreaker/
|
254
|
+
<li class="method"><a href="RubyBreaker/Context.html#method-c-new">::new — RubyBreaker::Context</a>
|
251
255
|
|
252
|
-
<li class="method"><a href="RubyBreaker/
|
256
|
+
<li class="method"><a href="RubyBreaker/Runtime/ObjectWrapper.html#method-c-new">::new — RubyBreaker::Runtime::ObjectWrapper</a>
|
253
257
|
|
254
258
|
<li class="method"><a href="RubyBreaker/Runtime/Monitor.html#method-c-new">::new — RubyBreaker::Runtime::Monitor</a>
|
255
259
|
|
256
|
-
<li class="method"><a href="RubyBreaker/
|
260
|
+
<li class="method"><a href="RubyBreaker/Errors/InternalError.html#method-c-new">::new — RubyBreaker::Errors::InternalError</a>
|
257
261
|
|
258
|
-
<li class="method"><a href="RubyBreaker/
|
262
|
+
<li class="method"><a href="RubyBreaker/Errors/InvalidSubtypeCheck.html#method-c-new">::new — RubyBreaker::Errors::InvalidSubtypeCheck</a>
|
259
263
|
|
260
264
|
<li class="method"><a href="RubyBreaker/TypeDefs/MethodListType.html#method-c-new">::new — 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 — RubyBreaker::TypeDefs::VarLengthType</a>
|
265
269
|
|
270
|
+
<li class="method"><a href="RubyBreaker/Errors/UserError.html#method-c-new">::new — RubyBreaker::Errors::UserError</a>
|
271
|
+
|
272
|
+
<li class="method"><a href="RubyBreaker/TypeDefs/MethodType.html#method-c-new">::new — RubyBreaker::TypeDefs::MethodType</a>
|
273
|
+
|
266
274
|
<li class="method"><a href="Rake/RubyBreakerTestTask.html#method-c-new">::new — Rake::RubyBreakerTestTask</a>
|
267
275
|
|
268
276
|
<li class="method"><a href="RubyBreaker/TypeDefs/Type.html#method-c-new">::new — RubyBreaker::TypeDefs::Type</a>
|
269
277
|
|
270
|
-
<li class="method"><a href="RubyBreaker/TypeDefs/
|
278
|
+
<li class="method"><a href="RubyBreaker/TypeDefs/BlockType.html#method-c-new">::new — RubyBreaker::TypeDefs::BlockType</a>
|
271
279
|
|
272
|
-
<li class="method"><a href="RubyBreaker/TypeDefs/
|
280
|
+
<li class="method"><a href="RubyBreaker/TypeDefs/FusionType.html#method-c-new">::new — RubyBreaker::TypeDefs::FusionType</a>
|
273
281
|
|
274
282
|
<li class="method"><a href="RubyBreaker/TypeDefs/DuckType.html#method-c-new">::new — 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 — RubyBreaker::TypeDefs::NominalType</a>
|
281
289
|
|
282
|
-
<li class="method"><a href="RubyBreaker/
|
283
|
-
|
284
|
-
<li class="method"><a href="RubyBreaker/TypeDefs/FusionType.html#method-c-new">::new — RubyBreaker::TypeDefs::FusionType</a>
|
290
|
+
<li class="method"><a href="RubyBreaker/TypeDefs/SelfType.html#method-c-new">::new — RubyBreaker::TypeDefs::SelfType</a>
|
285
291
|
|
286
|
-
<li class="method"><a href="RubyBreaker/TypeDefs/
|
292
|
+
<li class="method"><a href="RubyBreaker/TypeDefs/OptionalType.html#method-c-new">::new — RubyBreaker::TypeDefs::OptionalType</a>
|
287
293
|
|
288
294
|
<li class="method"><a href="RubyBreaker/Util.html#method-c-ordinalize">::ordinalize — 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 — RubyBreaker::Util</a>
|
313
319
|
|
314
|
-
<li class="method"><a href="RubyBreaker/Runtime/TypeSigUnparser.html#method-c-unparse">::unparse — RubyBreaker::Runtime::TypeSigUnparser</a>
|
315
|
-
|
316
320
|
<li class="method"><a href="RubyBreaker/TypeUnparser.html#method-c-unparse">::unparse — RubyBreaker::TypeUnparser</a>
|
317
321
|
|
322
|
+
<li class="method"><a href="RubyBreaker/Runtime/TypeSigUnparser.html#method-c-unparse">::unparse — RubyBreaker::Runtime::TypeSigUnparser</a>
|
323
|
+
|
318
324
|
<li class="method"><a href="RubyBreaker.html#method-c-verbose">::verbose — RubyBreaker</a>
|
319
325
|
|
320
326
|
<li class="method"><a href="RubyBreaker/Runtime/ObjectWrapper.html#method-i-__rubybreaker_obj">#__rubybreaker_obj — 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 — RubyBreaker::TypeDefs::DuckType</a>
|
325
331
|
|
326
|
-
<li class="method"><a href="RubyBreaker/Runtime/TypeSystem.html#method-i-
|
332
|
+
<li class="method"><a href="RubyBreaker/Runtime/TypeSystem.html#method-i-arity_check">#arity_check — 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 — RubyBreaker::Runtime::Monitor</a>
|
329
335
|
|
330
|
-
<li class="method"><a href="RubyBreaker/Runtime/
|
336
|
+
<li class="method"><a href="RubyBreaker/Runtime/TypeSystem.html#method-i-break_after_method">#break_after_method — RubyBreaker::Runtime::TypeSystem</a>
|
331
337
|
|
332
|
-
<li class="method"><a href="RubyBreaker/Runtime/
|
338
|
+
<li class="method"><a href="RubyBreaker/Runtime/Pluggable.html#method-i-break_after_method_call">#break_after_method_call — 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 — RubyBreaker::Runtime::Monitor</a>
|
335
341
|
|
342
|
+
<li class="method"><a href="RubyBreaker/Runtime/TypeSystem.html#method-i-break_before_method">#break_before_method — 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 — RubyBreaker::Runtime::Pluggable</a>
|
337
345
|
|
338
346
|
<li class="method"><a href="Rake/RubyBreakerTestTask.html#method-i-breakable">#breakable — Rake::RubyBreakerTestTask</a>
|
339
347
|
|
340
348
|
<li class="method"><a href="Rake/RubyBreakerTestTask.html#method-i-breakable-3D">#breakable= — Rake::RubyBreakerTestTask</a>
|
341
349
|
|
342
|
-
<li class="method"><a href="RubyBreaker/Runtime/Monitor.html#method-i-check_after_method">#check_after_method — RubyBreaker::Runtime::Monitor</a>
|
343
|
-
|
344
350
|
<li class="method"><a href="RubyBreaker/Runtime/TypeSystem.html#method-i-check_after_method">#check_after_method — RubyBreaker::Runtime::TypeSystem</a>
|
345
351
|
|
346
|
-
<li class="method"><a href="RubyBreaker/Runtime/
|
352
|
+
<li class="method"><a href="RubyBreaker/Runtime/Monitor.html#method-i-check_after_method">#check_after_method — RubyBreaker::Runtime::Monitor</a>
|
347
353
|
|
348
|
-
<li class="method"><a href="RubyBreaker/Runtime/
|
354
|
+
<li class="method"><a href="RubyBreaker/Runtime/Pluggable.html#method-i-check_after_method_call">#check_after_method_call — 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 — RubyBreaker::Runtime::TypeSystem</a>
|
351
357
|
|
358
|
+
<li class="method"><a href="RubyBreaker/Runtime/Monitor.html#method-i-check_before_method">#check_before_method — 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 — RubyBreaker::Runtime::Pluggable</a>
|
353
361
|
|
354
362
|
<li class="method"><a href="RubyBreaker/TypeDefs/Type.html#method-i-eql-3F">#eql? — 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? — RubyBreaker::TypeDefs::Type</a>
|
377
385
|
|
378
|
-
<li class="method"><a href="RubyBreaker/Position.html#method-i-to_s">#to_s — RubyBreaker::Position</a>
|
379
|
-
|
380
386
|
<li class="method"><a href="RubyBreaker/ObjectPosition.html#method-i-to_s">#to_s — RubyBreaker::ObjectPosition</a>
|
381
387
|
|
388
|
+
<li class="method"><a href="RubyBreaker/Position.html#method-i-to_s">#to_s — RubyBreaker::Position</a>
|
389
|
+
|
382
390
|
<li class="method"><a href="RubyBreaker/Runtime/MonitorSwitch.html#method-i-turn_off">#turn_off — RubyBreaker::Runtime::MonitorSwitch</a>
|
383
391
|
|
384
392
|
<li class="method"><a href="RubyBreaker/Runtime/MonitorSwitch.html#method-i-turn_on">#turn_on — RubyBreaker::Runtime::MonitorSwitch</a>
|
data/webpage/tutorial.html
CHANGED
@@ -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
|
24
|
-
|
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
|
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>
|
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
|
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>
|
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>
|
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>.
|
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]) -> 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 << "lib"
|
212
|
+
t.test_files = ["test/foo/tc_foo1.rb"]
|
213
|
+
# ...Other test task options..
|
214
|
+
t.rubybreaker_opts << "-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 << "lib"
|
341
|
-
t.test_files = ["test/foo/tc_foo1.rb"]
|
342
|
-
# ...Other test task options..
|
343
|
-
t.rubybreaker_opts << "-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.
|
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-
|
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
|
-
|
34
|
-
|
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/
|
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
|