private static void DefineAccessor(RubyScope /*!*/ scope, RubyModule /*!*/ self, string /*!*/ name, bool readable, bool writable) { // MRI: ignores ModuleFunction scope flag (doesn't create singleton methods): var varName = "@" + name; if (readable) { var flags = (RubyMemberFlags)RubyUtils.GetSpecialMethodVisibility(scope.Visibility, name); self.SetLibraryMethod(name, new RubyAttributeReaderInfo(flags, self, varName), false); } if (writable) { self.SetLibraryMethod(name + "=", new RubyAttributeWriterInfo((RubyMemberFlags)scope.Visibility, self, varName), false); } }
private static void DefineAccessor(RubyScope/*!*/ scope, RubyModule/*!*/ self, string/*!*/ name, bool readable, bool writable) { // MRI: ignores ModuleFunction scope flag (doesn't create singleton methods): var varName = "@" + name; if (readable) { var flags = (RubyMemberFlags)RubyUtils.GetSpecialMethodVisibility(scope.Visibility, name); self.SetLibraryMethod(name, new RubyAttributeReaderInfo(flags, self, varName), false); } if (writable) { self.SetLibraryMethod(name + "=", new RubyAttributeWriterInfo((RubyMemberFlags)scope.Visibility, self, varName), false); } }
private static void DefineAccessor(RubyScope/*!*/ scope, RubyModule/*!*/ self, string/*!*/ name, bool readable, bool writable) { // MRI: ignores ModuleFunction scope flag (doesn't create singleton methods): if (!Tokenizer.IsVariableName(name, true)) { throw RubyExceptions.CreateNameError(String.Format("invalid attribute name `{0}'", name)); } var varName = "@" + name; var attributesScope = scope.GetMethodAttributesDefinitionScope(); if (readable) { var flags = (RubyMemberFlags)RubyUtils.GetSpecialMethodVisibility(attributesScope.Visibility, name); self.SetLibraryMethod(name, new RubyAttributeReaderInfo(flags, self, varName), false); } if (writable) { self.SetLibraryMethod(name + "=", new RubyAttributeWriterInfo((RubyMemberFlags)attributesScope.Visibility, self, varName), false); } }