Skip to content

Commit 77dbf06

Browse files
committed
closure() should always produce an OrderedSet (fixes #188)
1 parent fb850e7 commit 77dbf06

File tree

2 files changed

+7
-4
lines changed
  • plugins/org.eclipse.epsilon.eol.engine/src/org/eclipse/epsilon/eol/execute/operations/declarative
  • tests/org.eclipse.epsilon.eol.engine.test.acceptance/src/org/eclipse/epsilon/eol/engine/test/acceptance

2 files changed

+7
-4
lines changed

plugins/org.eclipse.epsilon.eol.engine/src/org/eclipse/epsilon/eol/execute/operations/declarative/ClosureOperation.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import org.eclipse.epsilon.eol.execute.context.FrameType;
2525
import org.eclipse.epsilon.eol.execute.context.IEolContext;
2626
import org.eclipse.epsilon.eol.types.EolOrderedSet;
27-
import org.eclipse.epsilon.eol.types.EolSequence;
2827
import org.eclipse.epsilon.eol.types.EolType;
2928

3029
public class ClosureOperation extends FirstOrderOperation {
@@ -55,11 +54,8 @@ protected void closure(Collection<Object> closure, Collection<?> source, Paramet
5554
@Override
5655
public Object execute(Object target, NameExpression operationNameExpression, List<Parameter> iterators, List<Expression> expressions, IEolContext context) throws EolRuntimeException {
5756
Collection<?> source = resolveSource(target, iterators, context);
58-
if (source.isEmpty()) return new EolSequence<>();
5957
EolOrderedSet<Object> accumulator = new EolOrderedSet<Object>();
60-
6158
closure(accumulator, source, iterators.get(0), expressions.get(0), context);
62-
6359
return accumulator;
6460
}
6561

tests/org.eclipse.epsilon.eol.engine.test.acceptance/src/org/eclipse/epsilon/eol/engine/test/acceptance/CollectionsTests.eol

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,13 @@ operation testClosure() {
374374
assertEquals(flattened, s.closure(e : Sequence|e).asSequence());
375375
}
376376

377+
@test
378+
operation testEmptyClosure() {
379+
var result = Sequence {}.closure(e | e);
380+
assertTrue(result.isEmpty());
381+
assertEquals("OrderedSet", result.type.name);
382+
}
383+
377384
@test
378385
operation testAggregate() {
379386
var s = Sequence{1, 2, 3};

0 commit comments

Comments
 (0)