From 22634c9652af57d5c6ca12d3bf7c26e0b17765c3 Mon Sep 17 00:00:00 2001 From: nitrix Date: Wed, 15 Mar 2023 23:08:38 +0100 Subject: [PATCH] Use LinkedHashMaps and LinkedHashSets to preserve the order of parameters and struct fields. --- .../java/de/hsrm/compiler/Klang/GetDefinitions.java | 11 ++++------- src/test/java/FunctionDefinitionTest.java | 4 +--- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/src/main/java/de/hsrm/compiler/Klang/GetDefinitions.java b/src/main/java/de/hsrm/compiler/Klang/GetDefinitions.java index 13136e9..fd7ccf6 100644 --- a/src/main/java/de/hsrm/compiler/Klang/GetDefinitions.java +++ b/src/main/java/de/hsrm/compiler/Klang/GetDefinitions.java @@ -5,10 +5,7 @@ import de.hsrm.compiler.Klang.nodes.*; import de.hsrm.compiler.Klang.types.NamedType; import de.hsrm.compiler.Klang.types.Type; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; +import java.util.*; public class GetDefinitions extends KlangBaseVisitor { private final Map functionDefs; @@ -110,7 +107,7 @@ public class GetDefinitions extends KlangBaseVisitor { } // IDENT() includes the enumName as the first entry, which we skip - var enumFields = new HashSet(); + var enumFields = new LinkedHashSet(); for (int i = 1; i < ctx.IDENT().size(); i++) { var currentEnumField = ctx.IDENT(i); var currentEnumFieldName = currentEnumField.getText(); @@ -136,7 +133,7 @@ public class GetDefinitions extends KlangBaseVisitor { public Node visitStructDef(KlangParser.StructDefContext ctx) { var structName = ctx.structName.getText(); var structFieldCount = ctx.structField().size(); - var structFields = new HashMap(); + var structFields = new LinkedHashMap(); var line = ctx.start.getLine(); var col = ctx.start.getCharPositionInLine(); @@ -178,7 +175,7 @@ public class GetDefinitions extends KlangBaseVisitor { public Node visitFunctionDef(KlangParser.FunctionDefContext ctx) { var funcName = ctx.funcName.getText(); var paramCount = ctx.params.parameter().size(); - var parameters = new HashMap(); + var parameters = new LinkedHashMap(); var line = ctx.start.getLine(); var col = ctx.start.getCharPositionInLine(); diff --git a/src/test/java/FunctionDefinitionTest.java b/src/test/java/FunctionDefinitionTest.java index 79299a1..85295be 100644 --- a/src/test/java/FunctionDefinitionTest.java +++ b/src/test/java/FunctionDefinitionTest.java @@ -1,7 +1,5 @@ -import org.antlr.v4.runtime.tree.ParseTree; -import org.junit.jupiter.api.Test; - import de.hsrm.compiler.Klang.ContextAnalysis; +import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*;