tfpt review "/shelveset:miscrubyfixes;REDMOND\tomat"
Comment :
Implements range conditions:
- If a range whose bounds are not integer literals is used as a control
flow condition (if/unless/while-loop/until-loop/?:) it is considered a
''range condition''. It returns true/false depending on whether
the execution state is in the range or not (the state is maintained in a local
variable).
- Adjusts ParseTree to return flip2, flip3 nodes for range conditions.
- Removes compile time checks of range bounds - they should be evaluated
at runtime.
Implements regex conditions: A regex in a condition should perform match
against $_.
Converts a call to =~ method to MatchExpression if the left hand side is a
regex expression (MRI doesn''t call =~ method in that case).
Stops using dynamic sites for Proc#call, we can easily use block dispatchers.
Fixes bugs:
- def f; yield; end; f {|a,b,*c| p [a,b,c] }
- proc{|x,| x}.call([1]).should == [1] ... This is actually inconsistent
with yield in MRI. We had it consistent :-/.
- [ ironruby-Bugs-21258 ] Can''t splat to unwrap an array of
exceptions.
- Symbol#inspect should quote only symbols that are not valid
variable/method/operator names.
- Fixes ''defined?'' for qualified constants
and methods.
Tomas
-------------- next part --------------
A non-text attachment was scrubbed...
Name: miscrubyfixes.diff
Type: application/octet-stream
Size: 685667 bytes
Desc: miscrubyfixes.diff
URL:
<http://rubyforge.org/pipermail/ironruby-core/attachments/20081024/44972f17/attachment-0001.obj>
Looks good.
-----Original Message-----
From: Tomas Matousek
Sent: Friday, October 24, 2008 11:17 AM
To: IronRuby External Code Reviewers
Cc: ironruby-core at rubyforge.org
Subject: Code Review: miscrubyfixes
tfpt review "/shelveset:miscrubyfixes;REDMOND\tomat"
Comment :
Implements range conditions:
- If a range whose bounds are not integer literals is used as a control
flow condition (if/unless/while-loop/until-loop/?:) it is considered a
''range condition''. It returns true/false depending on whether
the execution state is in the range or not (the state is maintained in a local
variable).
- Adjusts ParseTree to return flip2, flip3 nodes for range conditions.
- Removes compile time checks of range bounds - they should be evaluated
at runtime.
Implements regex conditions: A regex in a condition should perform match
against $_.
Converts a call to =~ method to MatchExpression if the left hand side is a
regex expression (MRI doesn''t call =~ method in that case).
Stops using dynamic sites for Proc#call, we can easily use block dispatchers.
Fixes bugs:
- def f; yield; end; f {|a,b,*c| p [a,b,c] }
- proc{|x,| x}.call([1]).should == [1] ... This is actually inconsistent
with yield in MRI. We had it consistent :-/.
- [ ironruby-Bugs-21258 ] Can''t splat to unwrap an array of
exceptions.
- Symbol#inspect should quote only symbols that are not valid
variable/method/operator names.
- Fixes ''defined?'' for qualified constants
and methods.
Tomas