Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » Epsilon » Different behavior in remove and removeAll?
Different behavior in remove and removeAll? [message #480871] Tue, 18 August 2009 18:05 Go to next message
Eclipse UserFriend
Originally posted by: nyoescape.gmail.com

Hi list,

I've noticed that remove and removeAll don't seem to work quite the
same, as in this script:

var seq := Sequence { 0 };
seq.println('before, with number: ');
seq.remove(seq.first());
seq.println('after remove, with number: ');
seq.removeAll(Collection { seq.first() });
seq.println('after removeAll, with number: ');

var seq := Sequence { Sequence { 0 } };
seq.println('before, with nested sequence: ');
seq.remove(seq.first());
seq.println('after remove, with nested sequence: ');
seq.removeAll(Collection { seq.first() });
seq.println('after removeAll, with nested sequence: ');

If I run it, I get:

before, with number: Sequence {0}
after remove, with number: Sequence {0}
after removeAll, with number: Sequence {}
before, with nested sequence: Sequence {Sequence {0}}
after remove, with nested sequence: Sequence {Sequence {0}}
after removeAll, with nested sequence: Sequence {}

If I'm not mistaken, I believe that the expected behaviour would be for
both sequences to be empty right after the remove, so removeAll wouldn't
really have to remove anything.

By the way: I thought about using a Native('java.util.LinkedList') to
work around this issue (it also has more convenient methods, such as
removeFirst and getFirst), but no matter what I do, Epsilon seems to
convert it back to an EolCollection. Is there any way I can avoid that
implicit conversion?

Cheers,
Antonio
Re: Different behavior in remove and removeAll? [message #480884 is a reply to message #480871] Tue, 18 August 2009 18:34 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: nyoescape.gmail.com

Hi again,

Now I'm really confused. There appear to be other times when remove gets
it right and removeAll doesn't. This EOL script loops forever when
use_remove is false, and finishes properly when use_remove is true. I
believe this script should work the same either way, if I'm not mistaken.

var use_remove := true;

var seq := new Sequence;
seq.add(Sequence {0});
seq.add(Sequence {1});

while (seq.notEmpty()) {
seq.println('elements: ');
var elem := seq.first();
if (use_remove) {
seq.remove(elem);
} else {
seq.removeAll(Collection { elem });
}
}

Cheers,
Antonio
Re: Different behavior in remove and removeAll? [message #480902 is a reply to message #480884] Tue, 18 August 2009 19:46 Go to previous messageGo to next message
Dimitrios Kolovos is currently offline Dimitrios KolovosFriend
Messages: 1776
Registered: July 2009
Senior Member
Hi Antonio,

I've reproduced this; it is definitely a bug. Could you please file a
bug report? Regarding the conversion from LinkedList to EolCollection,
I'm afraid there is currently no way to avoid it.

Cheers,
Dimitris

Antonio García Domínguez wrote:
> Hi again,
>
> Now I'm really confused. There appear to be other times when remove gets
> it right and removeAll doesn't. This EOL script loops forever when
> use_remove is false, and finishes properly when use_remove is true. I
> believe this script should work the same either way, if I'm not mistaken.
>
> var use_remove := true;
>
> var seq := new Sequence;
> seq.add(Sequence {0});
> seq.add(Sequence {1});
>
> while (seq.notEmpty()) {
> seq.println('elements: ');
> var elem := seq.first();
> if (use_remove) {
> seq.remove(elem);
> } else {
> seq.removeAll(Collection { elem });
> }
> }
>
> Cheers,
> Antonio
Re: Different behavior in remove and removeAll? [message #480913 is a reply to message #480902] Tue, 18 August 2009 22:06 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: nyoescape.gmail.com

Hi Dimitris,

OK, I've reported it. Here is the link:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=286992

Well, as for the conversion: would it work if I wrapped whatever
collection class I wanted to use within another class which did not
implement the Collection interface? It's an ugly hack and I don't need
it anymore, as I've rewritten the code to avoid using remove and
removeAll, but I'm curious.

Cheers,
Antonio
Re: Different behavior in remove and removeAll? [message #481005 is a reply to message #480913] Wed, 19 August 2009 10:36 Go to previous message
Dimitrios Kolovos is currently offline Dimitrios KolovosFriend
Messages: 1776
Registered: July 2009
Senior Member
Hi Antonio,

Antonio García Domínguez wrote:
> Hi Dimitris,
>
> OK, I've reported it. Here is the link:
>
> https://bugs.eclipse.org/bugs/show_bug.cgi?id=286992

Thanks!

>
> Well, as for the conversion: would it work if I wrapped whatever
> collection class I wanted to use within another class which did not
> implement the Collection interface? It's an ugly hack and I don't need
> it anymore, as I've rewritten the code to avoid using remove and
> removeAll, but I'm curious.
>

That should work indeed - if one is that desperate :)

> Cheers,
> Antonio

Cheers,
Dimitris
Re: Different behavior in remove and removeAll? [message #574398 is a reply to message #480871] Tue, 18 August 2009 18:34 Go to previous message
Antonio Garcia-Dominguez is currently offline Antonio Garcia-DominguezFriend
Messages: 594
Registered: January 2010
Location: Birmingham, UK
Senior Member

Hi again,

Now I'm really confused. There appear to be other times when remove gets
it right and removeAll doesn't. This EOL script loops forever when
use_remove is false, and finishes properly when use_remove is true. I
believe this script should work the same either way, if I'm not mistaken.

var use_remove := true;

var seq := new Sequence;
seq.add(Sequence {0});
seq.add(Sequence {1});

while (seq.notEmpty()) {
seq.println('elements: ');
var elem := seq.first();
if (use_remove) {
seq.remove(elem);
} else {
seq.removeAll(Collection { elem });
}
}

Cheers,
Antonio
Re: Different behavior in remove and removeAll? [message #574422 is a reply to message #480884] Tue, 18 August 2009 19:46 Go to previous message
Dimitrios Kolovos is currently offline Dimitrios KolovosFriend
Messages: 1776
Registered: July 2009
Senior Member
Hi Antonio,

I've reproduced this; it is definitely a bug. Could you please file a
bug report? Regarding the conversion from LinkedList to EolCollection,
I'm afraid there is currently no way to avoid it.

Cheers,
Dimitris

Antonio García Domínguez wrote:
> Hi again,
>
> Now I'm really confused. There appear to be other times when remove gets
> it right and removeAll doesn't. This EOL script loops forever when
> use_remove is false, and finishes properly when use_remove is true. I
> believe this script should work the same either way, if I'm not mistaken.
>
> var use_remove := true;
>
> var seq := new Sequence;
> seq.add(Sequence {0});
> seq.add(Sequence {1});
>
> while (seq.notEmpty()) {
> seq.println('elements: ');
> var elem := seq.first();
> if (use_remove) {
> seq.remove(elem);
> } else {
> seq.removeAll(Collection { elem });
> }
> }
>
> Cheers,
> Antonio
Re: Different behavior in remove and removeAll? [message #574442 is a reply to message #480902] Tue, 18 August 2009 22:06 Go to previous message
Antonio Garcia-Dominguez is currently offline Antonio Garcia-DominguezFriend
Messages: 594
Registered: January 2010
Location: Birmingham, UK
Senior Member

Hi Dimitris,

OK, I've reported it. Here is the link:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=286992

Well, as for the conversion: would it work if I wrapped whatever
collection class I wanted to use within another class which did not
implement the Collection interface? It's an ugly hack and I don't need
it anymore, as I've rewritten the code to avoid using remove and
removeAll, but I'm curious.

Cheers,
Antonio
Re: Different behavior in remove and removeAll? [message #574498 is a reply to message #480913] Wed, 19 August 2009 10:36 Go to previous message
Dimitrios Kolovos is currently offline Dimitrios KolovosFriend
Messages: 1776
Registered: July 2009
Senior Member
Hi Antonio,

Antonio García Domínguez wrote:
> Hi Dimitris,
>
> OK, I've reported it. Here is the link:
>
> https://bugs.eclipse.org/bugs/show_bug.cgi?id=286992

Thanks!

>
> Well, as for the conversion: would it work if I wrapped whatever
> collection class I wanted to use within another class which did not
> implement the Collection interface? It's an ugly hack and I don't need
> it anymore, as I've rewritten the code to avoid using remove and
> removeAll, but I'm curious.
>

That should work indeed - if one is that desperate :)

> Cheers,
> Antonio

Cheers,
Dimitris
Previous Topic:"Resource not found" when epsilon.emf.register and permanently=true
Next Topic:[EuGENia | EGL][newbie] Standalone applications
Goto Forum:
  


Current Time: Fri Mar 29 07:18:44 GMT 2024

Powered by FUDForum. Page generated in 0.04801 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top