public SetDefinedMethodNoEventNoLock ( RubyContext callerContext, string name, IronRuby.Runtime.Calls.RubyMemberInfo method, RubyMethodVisibility visibility ) : void | ||
callerContext | RubyContext | |
name | string | |
method | IronRuby.Runtime.Calls.RubyMemberInfo | |
visibility | RubyMethodVisibility | |
Résultat | void |
private static void DefineMethod(RubyScope /*!*/ scope, RubyModule /*!*/ self, string /*!*/ methodName, RubyMemberInfo /*!*/ info, RubyModule /*!*/ targetConstraint) { var visibility = GetDefinedMethodVisibility(scope, self, methodName); using (self.Context.ClassHierarchyLocker()) { // MRI 1.8 does the check when the method is called, 1.9 checks it upfront as we do: if (!self.HasAncestorNoLock(targetConstraint)) { throw RubyExceptions.CreateTypeError( "bind argument must be a subclass of {0}", targetConstraint.GetName(scope.RubyContext) ); } self.SetDefinedMethodNoEventNoLock(self.Context, methodName, info, visibility); } self.MethodAdded(methodName); }
private static void DefineMethod(RubyScope/*!*/ scope, RubyModule/*!*/ self, string/*!*/ methodName, RubyMemberInfo/*!*/ info, RubyModule/*!*/ targetConstraint) { var visibility = GetDefinedMethodVisibility(scope, self, methodName); using (self.Context.ClassHierarchyLocker()) { // MRI 1.8 does the check when the method is called, 1.9 checks it upfront as we do: if (!self.HasAncestorNoLock(targetConstraint)) { throw RubyExceptions.CreateTypeError( "bind argument must be a subclass of {0}", targetConstraint.GetName(scope.RubyContext) ); } self.SetDefinedMethodNoEventNoLock(self.Context, methodName, info, visibility); } self.MethodAdded(methodName); }
private static void DefineMethod(RubyScope/*!*/ scope, RubyModule/*!*/ self, string/*!*/ methodName, RubyMemberInfo/*!*/ info, RubyModule/*!*/ targetConstraint) { // MRI: doesn't create a singleton method if module_function is used in the scope, however the the private visibility is applied var attributesScope = scope.GetMethodAttributesDefinitionScope(); bool isModuleFunction = (attributesScope.MethodAttributes & RubyMethodAttributes.ModuleFunction) == RubyMethodAttributes.ModuleFunction; var visibility = isModuleFunction ? RubyMethodVisibility.Private : attributesScope.Visibility; using (self.Context.ClassHierarchyLocker()) { // MRI 1.8 does the check when the method is called, 1.9 checks it upfront as we do: if (!self.HasAncestorNoLock(targetConstraint)) { throw RubyExceptions.CreateTypeError( String.Format("bind argument must be a subclass of {0}", targetConstraint.GetName(scope.RubyContext)) ); } self.SetDefinedMethodNoEventNoLock(self.Context, methodName, info, visibility); } self.Context.MethodAdded(self, methodName); }