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