Skip to content

Commit 2fbd578

Browse files
committed
Preserve the order of Map elements by default
1 parent 90314e0 commit 2fbd578

File tree

2 files changed

+3
-6
lines changed

2 files changed

+3
-6
lines changed

ownlang-parser/src/main/java/com/annimon/ownlang/parser/Parser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -388,7 +388,7 @@ private Node array() {
388388
private Node map() {
389389
// {key1 : value1, key2 : value2, ...}
390390
consume(TokenType.LBRACE);
391-
final Map<Node, Node> elements = new HashMap<>();
391+
final Map<Node, Node> elements = new LinkedHashMap<>();
392392
while (!match(TokenType.RBRACE)) {
393393
final Node key = primary();
394394
consume(TokenType.COLON);

ownlang-parser/src/main/java/com/annimon/ownlang/parser/optimization/OptimizationVisitor.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,7 @@
55
import com.annimon.ownlang.lib.Value;
66
import com.annimon.ownlang.parser.ast.*;
77
import static com.annimon.ownlang.parser.visitors.VisitorUtils.isValue;
8-
import java.util.ArrayList;
9-
import java.util.HashMap;
10-
import java.util.List;
11-
import java.util.Map;
8+
import java.util.*;
129

1310
public abstract class OptimizationVisitor<T> implements ResultVisitor<Node, T> {
1411

@@ -264,7 +261,7 @@ public Node visit(IncludeStatement s, T t) {
264261

265262
@Override
266263
public Node visit(MapExpression s, T t) {
267-
final Map<Node, Node> elements = new HashMap<>(s.elements.size());
264+
final Map<Node, Node> elements = new LinkedHashMap<>(s.elements.size());
268265
boolean changed = false;
269266
for (Map.Entry<Node, Node> entry : s.elements.entrySet()) {
270267
final Node key = entry.getKey().accept(this, t);

0 commit comments

Comments
 (0)