Forum: IronRuby [patch] More fixes for Array (IListOps.cs)

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Daniele A. (Guest)
on 2009-04-15 20:36
(Received via mailing list)
Hi,

I've committed more fixes for a few methods of the Array class that
were failing to pass the specs:

http://github.com/nrk/ironruby/commit/b754ddcd3bdd...

These are the specs affected by this patch:

* core/array/compact
  - Array#compact keeps tainted status even if all elements are removed
* core/array/delete
  - Array#delete may be given a block that is executed if no element
matches object
* core/array/first
  - Array#first does not return subclass instance when passed count on
Array subclasses
* core/array/last
  - Array#last does not return subclass instance on Array subclasses
* core/array/flatten
  - Array#flatten returns subclass instance for Array subclasses
  - Array#flatten does not call flatten on elements
* core/array/fetch
  - Array#fetch passes the original index argument object to the
block, not the converted Integer

I hope I haven't forgotten anything important this time, changes to
the tags files are included in the commit :-)

Regards,
Daniele

--
Daniele A.
http://www.clorophilla.net/blog/
http://twitter.com/JoL1hAHN
Shri B. (Guest)
on 2009-04-16 03:43
(Received via mailing list)
In IListOps.Fetch, instead of doing the protocol conversion manually,
you should calls Protocols. ConvertToInteger. Tomas, can you
double-check this?

In IListOps.First, you can get rid of the allocateStorage argument as
its not being used anymore. (You can batch this fix with your next
commit)

The rest looks good! Great to see array getting more compliant!

Btw, could you please increase the diff context size to 15-20 so more of
the surrounding lines are included? That makes it easier to understand
what the fix is doing when using the url below, without having to map
that back to the correct line number in the actual file.

Shri
Tomas M. (Guest)
on 2009-04-16 08:15
(Received via mailing list)
Yes, Shri is right in essence - you shouldn't do protocol conversions
manually. The conversion used by DefaultProtocol on int is
Protocols.CastToInteger however (ConvertToInteger performs different
integer conversion).

Tomas

From: removed_email_address@domain.invalid
[mailto:removed_email_address@domain.invalid] On Behalf Of Shri B.
Sent: Wednesday, April 15, 2009 4:14 PM
To: removed_email_address@domain.invalid
Subject: Re: [Ironruby-core] [patch] More fixes for Array (IListOps.cs)

In IListOps.Fetch, instead of doing the protocol conversion manually,
you should calls Protocols. ConvertToInteger. Tomas, can you
double-check this?

In IListOps.First, you can get rid of the allocateStorage argument as
its not being used anymore. (You can batch this fix with your next
commit)

The rest looks good! Great to see array getting more compliant!

Btw, could you please increase the diff context size to 15-20 so more of
the surrounding lines are included? That makes it easier to understand
what the fix is doing when using the url below, without having to map
that back to the correct line number in the actual file.

Shri
Daniele A. (Guest)
on 2009-04-16 13:33
(Received via mailing list)
Attachment: patch.diff (0 Bytes)
On Thu, Apr 16, 2009 at 01:14, Shri B. <removed_email_address@domain.invalid>
wrote:

> In IListOps.Fetch, instead of doing the protocol conversion manually, you
> should calls Protocols. ConvertToInteger. Tomas, can you double-check this?

Hmm, right, and the code looks much more cleaner too.
I think I should just use Protocols.CastToFixnum then: we don't really
care about bignums here, they can't be used as indexes for arrays
anyway and in fact MRI throws a RangeError "bignum too big to convert
into `long'".

> In IListOps.First, you can get rid of the allocateStorage argument as its
> not being used anymore. (You can batch this fix with your next commit)

Same for IListOps.Last, it just slipped away. I removed allocateStorage
on both.

> Btw, could you please increase the diff context size to 15-20 so more of the
> surrounding lines are included? That makes it easier to understand what the
> fix is doing when using the url below, without having to map that back to
> the correct line number in the actual file.

I guess there is no way to increase the lines range of a diff viewed
via the github web interface, but I can generate and attach custom
diff patches to my mails if you think it could be useful, just like
the one attached to this mail and generated with "git diff HEAD~1 -U15
> patch.diff" (PS: I have not yet pushed this commit on my remote
repository).
Tomas M. (Guest)
on 2009-04-16 21:29
(Received via mailing list)
Correction: CastToFixnum is the right one. Ruby has just to many integer
conversions to remember :)

Tomas

From: removed_email_address@domain.invalid
[mailto:removed_email_address@domain.invalid] On Behalf Of Tomas M.
Sent: Wednesday, April 15, 2009 8:45 PM
To: removed_email_address@domain.invalid
Subject: Re: [Ironruby-core] [patch] More fixes for Array (IListOps.cs)

Yes, Shri is right in essence - you shouldn't do protocol conversions
manually. The conversion used by DefaultProtocol on int is
Protocols.CastToInteger however (ConvertToInteger performs different
integer conversion).

Tomas

From: removed_email_address@domain.invalid
[mailto:removed_email_address@domain.invalid] On Behalf Of Shri B.
Sent: Wednesday, April 15, 2009 4:14 PM
To: removed_email_address@domain.invalid
Subject: Re: [Ironruby-core] [patch] More fixes for Array (IListOps.cs)

In IListOps.Fetch, instead of doing the protocol conversion manually,
you should calls Protocols. ConvertToInteger. Tomas, can you
double-check this?

In IListOps.First, you can get rid of the allocateStorage argument as
its not being used anymore. (You can batch this fix with your next
commit)

The rest looks good! Great to see array getting more compliant!

Btw, could you please increase the diff context size to 15-20 so more of
the surrounding lines are included? That makes it easier to understand
what the fix is doing when using the url below, without having to map
that back to the correct line number in the actual file.

Shri
Shri B. (Guest)
on 2009-04-16 21:48
(Received via mailing list)
Result of "git diff HEAD~1 -U15" would be nice if you can remember to
include it, but don’t worry about it too much. I will try to deal with
the github.com web view and see if it bothers me too much.
Shri B. (Guest)
on 2009-04-17 00:18
(Received via mailing list)
There is a setting in "git gui" I was thinking of, but it does not
affect the github web view. Never mind...

From: Jim D.
Sent: Wednesday, April 15, 2009 5:14 PM
To: Shri B.
Subject: RE: [Ironruby-core] [patch] More fixes for Array (IListOps.cs)

There is no control over the context size on Github....  Unless I
misunderstood your point

From: removed_email_address@domain.invalid
[mailto:removed_email_address@domain.invalid] On Behalf Of Shri B.
Sent: Wednesday, April 15, 2009 4:14 PM
To: removed_email_address@domain.invalid
Subject: Re: [Ironruby-core] [patch] More fixes for Array (IListOps.cs)

In IListOps.Fetch, instead of doing the protocol conversion manually,
you should calls Protocols. ConvertToInteger. Tomas, can you
double-check this?

In IListOps.First, you can get rid of the allocateStorage argument as
its not being used anymore. (You can batch this fix with your next
commit)

The rest looks good! Great to see array getting more compliant!

Btw, could you please increase the diff context size to 15-20 so more of
the surrounding lines are included? That makes it easier to understand
what the fix is doing when using the url below, without having to map
that back to the correct line number in the actual file.

Shri
This topic is locked and can not be replied to.