mirror of
https://github.com/aNNiMON/Own-Programming-Language-Tutorial.git
synced 2024-09-20 00:34:20 +03:00
Preserve the order of Map elements by default
This commit is contained in:
parent
90314e0cb9
commit
2fbd578b77
@ -388,7 +388,7 @@ public final class Parser {
|
|||||||
private Node map() {
|
private Node map() {
|
||||||
// {key1 : value1, key2 : value2, ...}
|
// {key1 : value1, key2 : value2, ...}
|
||||||
consume(TokenType.LBRACE);
|
consume(TokenType.LBRACE);
|
||||||
final Map<Node, Node> elements = new HashMap<>();
|
final Map<Node, Node> elements = new LinkedHashMap<>();
|
||||||
while (!match(TokenType.RBRACE)) {
|
while (!match(TokenType.RBRACE)) {
|
||||||
final Node key = primary();
|
final Node key = primary();
|
||||||
consume(TokenType.COLON);
|
consume(TokenType.COLON);
|
||||||
|
@ -5,10 +5,7 @@ import com.annimon.ownlang.lib.UserDefinedFunction;
|
|||||||
import com.annimon.ownlang.lib.Value;
|
import com.annimon.ownlang.lib.Value;
|
||||||
import com.annimon.ownlang.parser.ast.*;
|
import com.annimon.ownlang.parser.ast.*;
|
||||||
import static com.annimon.ownlang.parser.visitors.VisitorUtils.isValue;
|
import static com.annimon.ownlang.parser.visitors.VisitorUtils.isValue;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
public abstract class OptimizationVisitor<T> implements ResultVisitor<Node, T> {
|
public abstract class OptimizationVisitor<T> implements ResultVisitor<Node, T> {
|
||||||
|
|
||||||
@ -264,7 +261,7 @@ public abstract class OptimizationVisitor<T> implements ResultVisitor<Node, T> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Node visit(MapExpression s, T t) {
|
public Node visit(MapExpression s, T t) {
|
||||||
final Map<Node, Node> elements = new HashMap<>(s.elements.size());
|
final Map<Node, Node> elements = new LinkedHashMap<>(s.elements.size());
|
||||||
boolean changed = false;
|
boolean changed = false;
|
||||||
for (Map.Entry<Node, Node> entry : s.elements.entrySet()) {
|
for (Map.Entry<Node, Node> entry : s.elements.entrySet()) {
|
||||||
final Node key = entry.getKey().accept(this, t);
|
final Node key = entry.getKey().accept(this, t);
|
||||||
|
Loading…
Reference in New Issue
Block a user