edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/context.rb;C530453 File: context.rb =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/context.rb;C530453 (server) 8/18/2008 10:11 AM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/context.rb;bugs-1 @@ -457,6 +457,13 @@ references end + def get_case_sensitive_path(pathname) + filename = pathname.basename.downcase + dir = Pathname.new pathname.dirname + result = dir.entries.find { |p| p.downcase.to_s == filename } + (Pathname.new(pathname.dirname) + result).to_s + end + def get_compile_path_list cs_proj_files = Dir['*.csproj'] if cs_proj_files.length == 1 @@ -466,7 +473,7 @@ if ENV['mono'].nil? result else - result.map { |p| p.gsub('\\', '/') } + result.map { |p| get_case_sensitive_path(p).gsub('\\', '/') } end else raise ArgumentError.new("Found more than one .csproj file in directory! #{cs_proj_files.join(", ")}") =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Rakefile;C530453 File: Rakefile =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Rakefile;C530453 (server) 8/15/2008 2:05 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Rakefile;bugs-1 @@ -422,7 +422,7 @@ reporter,tag = extract_reporter(reporter) chdir(get_source_dir(:tests) +'util'){ - cmd = "#{UserEnvironment.mri_binary} #{UserEnvironment.mspec}/bin/mspec #{tag || 'ci'} -t #{path_to_ruby.join(" ")} -B #{UserEnvironment.config} #{run_spec} #{reporter}" + cmd = "#{UserEnvironment.mri_binary} #{UserEnvironment.mspec}/bin/mspec #{tag || 'ci'} -t #{path_to_ruby} -B #{UserEnvironment.config} #{run_spec} #{reporter}" exec_net cmd } end =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Initializers.Generated.cs;C525618 File: Initializers.Generated.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Initializers.Generated.cs;C525618 (server) 8/18/2008 9:02 AM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Initializers.Generated.cs;bugs-1 @@ -74,7 +74,7 @@ ExtendModule(typeof(System.Collections.Generic.IDictionary), new System.Action(LoadSystem__Collections__Generic__IDictionary_Instance), null, new Ruby.Builtins.RubyModule[] {def19, }); ExtendModule(typeof(System.Collections.IEnumerable), new System.Action(LoadSystem__Collections__IEnumerable_Instance), null, new Ruby.Builtins.RubyModule[] {def19, }); ExtendModule(typeof(System.Collections.IList), new System.Action(LoadSystem__Collections__IList_Instance), null, new Ruby.Builtins.RubyModule[] {def19, }); - ExtendModule(typeof(System.IComparable), new System.Action(LoadSystem__IComparable_Instance), null, new Ruby.Builtins.RubyModule[] {def29, }); + Ruby.Builtins.RubyModule def33 = ExtendModule(typeof(System.IComparable), new System.Action(LoadSystem__IComparable_Instance), null, new Ruby.Builtins.RubyModule[] {def29, }); DefineGlobalClass("Array", typeof(Ruby.Builtins.RubyArray), Context.ObjectClass, new System.Action(LoadArray_Instance), new System.Action(LoadArray_Class), new Ruby.Builtins.RubyModule[] {def19, }, new System.Delegate[] { new System.Func(Ruby.Builtins.ArrayOps.CreateArray), new System.Func(Ruby.Builtins.ArrayOps.CreateArray), @@ -85,7 +85,7 @@ new System.Func(Ruby.Builtins.ArrayOps.CreateArray), }); DefineGlobalClass("Binding", typeof(Ruby.Builtins.Binding), Context.ObjectClass, null, null, Ruby.Builtins.RubyModule.EmptyArray, null); - DefineGlobalClass("ClrString", typeof(System.String), Context.ObjectClass, new System.Action(LoadClrString_Instance), null, Ruby.Builtins.RubyModule.EmptyArray, null); + DefineGlobalClass("ClrString", typeof(System.String), Context.ObjectClass, new System.Action(LoadClrString_Instance), null, new Ruby.Builtins.RubyModule[] {def33, }, null); DefineGlobalClass("Dir", typeof(Ruby.Builtins.RubyDir), Context.ObjectClass, new System.Action(LoadDir_Instance), new System.Action(LoadDir_Class), new Ruby.Builtins.RubyModule[] {def19, }, null); #if !SILVERLIGHT DefineGlobalClass("Encoding", typeof(Ruby.Builtins.RubyEncoding), Context.ObjectClass, new System.Action(LoadEncoding_Instance), new System.Action(LoadEncoding_Class), Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { @@ -423,6 +423,7 @@ }); module.DefineLibraryMethod("&", 0x29, new System.Delegate[] { + new System.Func(Ruby.Builtins.BignumOps.And), new System.Func(Ruby.Builtins.BignumOps.And), new System.Func(Ruby.Builtins.BignumOps.And), }); @@ -457,11 +458,13 @@ }); module.DefineLibraryMethod("^", 0x29, new System.Delegate[] { + new System.Func(Ruby.Builtins.BignumOps.Xor), new System.Func(Ruby.Builtins.BignumOps.Xor), new System.Func(Ruby.Builtins.BignumOps.Xor), }); module.DefineLibraryMethod("|", 0x29, new System.Delegate[] { + new System.Func(Ruby.Builtins.BignumOps.BitwiseOr), new System.Func(Ruby.Builtins.BignumOps.BitwiseOr), new System.Func(Ruby.Builtins.BignumOps.BitwiseOr), }); @@ -478,6 +481,7 @@ module.DefineLibraryMethod("<<", 0x29, new System.Delegate[] { new System.Func(Ruby.Builtins.BignumOps.LeftShift), + new System.Func(Ruby.Builtins.BignumOps.LeftShift), new System.Func(Ruby.Builtins.BignumOps.LeftShift), }); @@ -495,6 +499,7 @@ module.DefineLibraryMethod(">>", 0x29, new System.Delegate[] { new System.Func(Ruby.Builtins.BignumOps.RightShift), + new System.Func(Ruby.Builtins.BignumOps.RightShift), new System.Func(Ruby.Builtins.BignumOps.RightShift), }); @@ -1361,9 +1366,15 @@ }); #if !SILVERLIGHT + module.DefineLibraryMethod("symlink", 0x31, new System.Delegate[] { + new System.Func(Ruby.Builtins.RubyFileOps.SymLink), + }); + + #endif + #if !SILVERLIGHT module.DefineLibraryMethod("symlink?", 0x31, new System.Delegate[] { + new System.Func(Ruby.Builtins.RubyFileOps.IsSymLink), new System.Func(Ruby.Builtins.RubyFileOps.IsSymLink), - new System.Func(Ruby.Builtins.RubyFileOps.IsSymLink), }); #endif @@ -4220,8 +4231,8 @@ }); module.DefineLibraryMethod("match", 0x29, new System.Delegate[] { + new System.Func(Ruby.Builtins.MutableStringOps.MatchObject), new System.Func(Ruby.Builtins.MutableStringOps.MatchRegexp), - new System.Func(Ruby.Builtins.MutableStringOps.MatchObject), }); module.DefineLibraryMethod("replace", 0x29, new System.Delegate[] { =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/FileOps.cs;C525618 File: FileOps.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/FileOps.cs;C525618 (server) 8/15/2008 12:01 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/FileOps.cs;bugs-1 @@ -669,7 +669,11 @@ //umask #if !SILVERLIGHT - //symlink + [RubyMethod("symlink", RubyMethodAttributes.PublicSingleton, BuildConfig = "!SILVERLIGHT")] + public static object SymLink(CodeContext/*!*/ context, object/*!*/ self, [NotNull]MutableString/*!*/ path) { + throw new NotImplementedError("symlnk() function is unimplemented on this machine"); + } + [RubyMethod("symlink?", RubyMethodAttributes.PublicSingleton, BuildConfig = "!SILVERLIGHT")] public static bool IsSymLink(CodeContext/*!*/ context, object/*!*/ self, [NotNull]MutableString/*!*/ path) { return RubyStatOps.IsSymLink(RubyStatOps.Create(context, path)); @@ -746,12 +750,21 @@ [RubyMethod("zero?", RubyMethodAttributes.PublicSingleton)] public static bool IsZeroLength(CodeContext/*!*/ context, object self, [NotNull]MutableString/*!*/ path) { + string strPath = path.ConvertToString(); + + // NUL/nul is a special-cased filename on Windows + if (strPath.ToLower() == "nul") + return RubyStatOps.IsZeroLength(RubyStatOps.Create(context, path)); + + if (DirectoryExists(context, strPath) || !FileExists(context, strPath)) + return false; + return RubyStatOps.IsZeroLength(RubyStatOps.Create(context, path)); } [RubyMethod("zero?", RubyMethodAttributes.PublicSingleton)] public static bool IsZeroLength(CodeContext/*!*/ context, object self, object path) { - return RubyStatOps.IsZeroLength(RubyStatOps.Create(context, path)); + return IsZeroLength(context, self, Protocols.CastToString(context, path)); } #endregion =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/MutableStringOps.cs;C524960 File: MutableStringOps.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/MutableStringOps.cs;C524960 (server) 8/18/2008 9:30 AM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/MutableStringOps.cs;bugs-1 @@ -2958,7 +2958,7 @@ [RubyMethod("reverse")] public static MutableString/*!*/ GetReversed(CodeContext/*!*/ context, MutableString/*!*/ self) { - return CreateSubClass(context, self, self).Reverse(); + return RubyUtils.FlowTaint(context, self, CreateSubClass(context, self, self).Reverse()); } [RubyMethod("reverse!")] =================================================================== edit: $/Merlin_External/Languages/IronRuby/yaml/IronRuby.Libraries.Yaml/Initializer.Generated.cs;C509767 File: Initializer.Generated.cs =================================================================== --- $/Merlin_External/Languages/IronRuby/yaml/IronRuby.Libraries.Yaml/Initializer.Generated.cs;C509767 (server) 8/18/2008 9:03 AM +++ Shelved Change: $/Merlin_External/Languages/IronRuby/yaml/IronRuby.Libraries.Yaml/Initializer.Generated.cs;bugs-1 @@ -21,6 +21,7 @@ ExtendModule(typeof(Microsoft.Scripting.Math.BigInteger), new System.Action(LoadMicrosoft__Scripting__Math__BigInteger_Instance), null, Ruby.Builtins.RubyModule.EmptyArray); + ExtendModule(typeof(Microsoft.Scripting.SymbolId), new System.Action(LoadMicrosoft__Scripting__SymbolId_Instance), null, Ruby.Builtins.RubyModule.EmptyArray); ExtendModule(typeof(Ruby.Builtins.FalseClass), new System.Action(LoadRuby__Builtins__FalseClass_Instance), null, Ruby.Builtins.RubyModule.EmptyArray); ExtendClass(typeof(Ruby.Builtins.Hash), new System.Action(LoadRuby__Builtins__Hash_Instance), null, Ruby.Builtins.RubyModule.EmptyArray, null); ExtendModule(typeof(Ruby.Builtins.Integer), new System.Action(LoadRuby__Builtins__Integer_Instance), null, Ruby.Builtins.RubyModule.EmptyArray); @@ -37,7 +38,6 @@ ExtendModule(typeof(System.Exception), new System.Action(LoadSystem__Exception_Instance), null, Ruby.Builtins.RubyModule.EmptyArray); ExtendClass(typeof(System.Object), new System.Action(LoadSystem__Object_Instance), null, Ruby.Builtins.RubyModule.EmptyArray, null); ExtendModule(typeof(System.Scripting.None), new System.Action(LoadSystem__Scripting__None_Instance), null, Ruby.Builtins.RubyModule.EmptyArray); - ExtendModule(typeof(Microsoft.Scripting.SymbolId), new System.Action(LoadSystem__Scripting__SymbolId_Instance), null, Ruby.Builtins.RubyModule.EmptyArray); Ruby.Builtins.RubyModule def1 = DefineGlobalModule("YAML", typeof(Ruby.StandardLibrary.Yaml.RubyYaml), null, new System.Action(LoadYAML_Class), Ruby.Builtins.RubyModule.EmptyArray); Ruby.Builtins.RubyClass def2 = DefineClass("YAML::Stream", typeof(Ruby.StandardLibrary.Yaml.YamlStream), Context.ObjectClass, new System.Action(LoadYAML__Stream_Instance), null, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { new System.Func(Ruby.StandardLibrary.Yaml.RubyYaml.YamlStreamOps.CreateStream), @@ -57,6 +57,18 @@ } + private void LoadMicrosoft__Scripting__SymbolId_Instance(Ruby.Builtins.RubyModule/*!*/ module) { + + module.DefineLibraryMethod("taguri", 0x9, new System.Delegate[] { + new System.Func(Ruby.StandardLibrary.Yaml.YamlSymbolOps.TagUri), + }); + + module.DefineLibraryMethod("to_yaml_node", 0x9, new System.Delegate[] { + new System.Func(Ruby.StandardLibrary.Yaml.YamlSymbolOps.ToYaml), + }); + + } + private void LoadRuby__Builtins__FalseClass_Instance(Ruby.Builtins.RubyModule/*!*/ module) { module.DefineLibraryMethod("taguri", 0x9, new System.Delegate[] { @@ -261,18 +273,6 @@ } - private void LoadSystem__Scripting__SymbolId_Instance(Ruby.Builtins.RubyModule/*!*/ module) { - - module.DefineLibraryMethod("taguri", 0x9, new System.Delegate[] { - new System.Func(Ruby.StandardLibrary.Yaml.YamlSymbolOps.TagUri), - }); - - module.DefineLibraryMethod("to_yaml_node", 0x9, new System.Delegate[] { - new System.Func(Ruby.StandardLibrary.Yaml.YamlSymbolOps.ToYaml), - }); - - } - private void LoadYAML_Class(Ruby.Builtins.RubyModule/*!*/ module) { module.DefineLibraryMethod("add_domain_type", 0x12, new System.Delegate[] { ===================================================================