diff --git a/src/preserves/preserves_schema_nim.nim b/src/preserves/preserves_schema_nim.nim index 3adfd17..a36f876 100644 --- a/src/preserves/preserves_schema_nim.nim +++ b/src/preserves/preserves_schema_nim.nim @@ -597,7 +597,13 @@ proc addFields(recList: PNode; loc: Location; known: var TypeTable; pat: Pattern reclist proc addFields(recList: PNode; loc: Location; known: var TypeTable; entries: DictionaryEntries; parentName: string): PNode {.discardable.} = + var sortedEntries = + initOrderedTable[Preserve[void], NamedSimplePattern](entries.len) for key, val in entries.pairs: + sortedEntries[key] = val + sort(sortedEntries) do (x, y: (Preserve[void], NamedSimplePattern)) -> int: + cmp(x[0], y[0]) + for key, val in sortedEntries.pairs: doAssert(key.isSymbol) let label = string key.symbol addField(recList, loc, known, val.pattern, label) diff --git a/src/preserves/private/parse.nim b/src/preserves/private/parse.nim index c8cd1ec..017e42a 100644 --- a/src/preserves/private/parse.nim +++ b/src/preserves/private/parse.nim @@ -4,7 +4,10 @@ # this module is included in ../../preserves.nim import std/[parseutils, unicode] -from std/sequtils import insert + +when isMainModule: + from std/sequtils import insert + from std/strutils import Whitespace, parseFloat, parseHexStr, parseInt, tokenize import npeg import ../pegs