Kevin Radcliffe
2009-Oct-02 18:27 UTC
[Ironruby-core] Possible ScriptEngine and parsing bug when converting block to a parameter
I was getting an error trying to use ScriptEngine to require ''win32ole'' (Actually, I need this from C#, below example given because its easier to show in IronRuby):>>> IronRuby.create_engine.execute_file(''Libs\win32ole.rb''):0: `&'' interpreted as argument prefix (Microsoft::Scripting::SyntaxErrorException) Looks like it fails on this line(63): result = strongly_typed_enumerable.each &b #result = strongly_typed_enumerable.each(&b) #Works just fine if we add parens around &b However, ir.exe reads the file with NO error if we just do a normal "require". This is where I''m not sure if this is a bug. Do ScriptEngine and IR.exe (run interactively ONLY) have stricter parsing requirements? I investigated a bit further to get a simpler repro and found some interesting results. Fine processing the code directly:>ruby -e"b = lambda { |x| p x };result = [1,2].each &b"1 2>rbx -e"b = lambda { |x| p x };result = [1,2].each &b"1 2 Argument error comes ONLY when running interactively (or through the ScriptEngine as shown above):>irbirb(main):001:0> b = lambda { |x| p x };result = [1,2].each &b 1 2 => [1, 2]>rbxIronRuby 0.9.1.0 on .NET 2.0.50727.3082 Copyright (c) Microsoft Corporation. All rights reserved.>>> b = lambda { |x| p x };result = [1,2].each &bunknown: `&'' interpreted as argument prefix (Microsoft::Scripting::SyntaxErrorException) Again, fine through ir.exe interactive if I parameterize the block: b = lambda { |x| p x };result = [1,2].each(&b) Thanks Best Regards, Kevin
Tomas Matousek
2009-Oct-02 18:41 UTC
[Ironruby-core] Possible ScriptEngine and parsing bug when converting block to a parameter
Looks like a bug in win32ole.rb: D:\M5\Merlin\Main\Languages\Ruby>ruby -w libs\win32ole.rb libs/win32ole.rb:63: warning: `&'' interpreted as argument prefix The default warning levels seem to be different when hosted. It would probably be better to set the default warning level on the same level as ir.exe/ruby does. Will fix both. Tomas -----Original Message----- From: ironruby-core-bounces at rubyforge.org [mailto:ironruby-core-bounces at rubyforge.org] On Behalf Of Kevin Radcliffe Sent: Friday, October 02, 2009 11:28 AM To: ironruby-core at rubyforge.org Subject: [Ironruby-core] Possible ScriptEngine and parsing bug when converting block to a parameter I was getting an error trying to use ScriptEngine to require ''win32ole'' (Actually, I need this from C#, below example given because its easier to show in IronRuby):>>> IronRuby.create_engine.execute_file(''Libs\win32ole.rb''):0: `&'' interpreted as argument prefix (Microsoft::Scripting::SyntaxErrorException) Looks like it fails on this line(63): result = strongly_typed_enumerable.each &b #result = strongly_typed_enumerable.each(&b) #Works just fine if we add parens around &b However, ir.exe reads the file with NO error if we just do a normal "require". This is where I''m not sure if this is a bug. Do ScriptEngine and IR.exe (run interactively ONLY) have stricter parsing requirements? I investigated a bit further to get a simpler repro and found some interesting results. Fine processing the code directly:>ruby -e"b = lambda { |x| p x };result = [1,2].each &b"1 2>rbx -e"b = lambda { |x| p x };result = [1,2].each &b"1 2 Argument error comes ONLY when running interactively (or through the ScriptEngine as shown above):>irbirb(main):001:0> b = lambda { |x| p x };result = [1,2].each &b 1 2 => [1, 2]>rbxIronRuby 0.9.1.0 on .NET 2.0.50727.3082 Copyright (c) Microsoft Corporation. All rights reserved.>>> b = lambda { |x| p x };result = [1,2].each &bunknown: `&'' interpreted as argument prefix (Microsoft::Scripting::SyntaxErrorException) Again, fine through ir.exe interactive if I parameterize the block: b = lambda { |x| p x };result = [1,2].each(&b) Thanks Best Regards, Kevin _______________________________________________ Ironruby-core mailing list Ironruby-core at rubyforge.org http://rubyforge.org/mailman/listinfo/ironruby-core
Kevin Radcliffe
2009-Oct-02 18:48 UTC
[Ironruby-core] Possible ScriptEngine and parsing bug when converting block to a parameter
Great! Tomas, thanks also for the speedy follow-up email. Best Regards, Kevin On Fri, Oct 2, 2009 at 12:41 PM, Tomas Matousek <Tomas.Matousek at microsoft.com> wrote:> Looks like a bug in win32ole.rb: > > D:\M5\Merlin\Main\Languages\Ruby>ruby -w libs\win32ole.rb > libs/win32ole.rb:63: warning: `&'' interpreted as argument prefix > > The default warning levels seem to be different when hosted. It would probably be better to set the default warning level on the same level as ir.exe/ruby does. > > Will fix both. > > Tomas