fix(tvix/eval/value/function): use BTreeMap for function arg names

At least toXML wants to get these out in a sorted fashion.

Change-Id: I6373d7488fff7c40dc2ddeeecd03ba537c92c4af
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10685
Reviewed-by: tazjin <tazjin@tvl.su>
Tested-by: BuildkiteCI
This commit is contained in:
Florian Klink 2024-01-23 14:54:27 +02:00 committed by flokli
parent adff7be4d1
commit e1d2589163
2 changed files with 5 additions and 5 deletions

View file

@ -21,7 +21,7 @@ mod scope;
use codemap::Span;
use rnix::ast::{self, AstToken};
use smol_str::SmolStr;
use std::collections::HashMap;
use std::collections::{BTreeMap, HashMap};
use std::path::{Path, PathBuf};
use std::rc::{Rc, Weak};
use std::sync::Arc;
@ -994,7 +994,7 @@ impl Compiler<'_> {
// the bindings to first declare them, then populate them, and
// then finalise any necessary recursion into the scope.
let mut entries: Vec<TrackedFormal> = vec![];
let mut arguments = HashMap::default();
let mut arguments = BTreeMap::default();
for entry in pattern.pat_entries() {
let ident = entry.ident().unwrap();

View file

@ -1,5 +1,5 @@
//! This module implements the runtime representation of functions.
use std::{collections::HashMap, hash::Hash, rc::Rc};
use std::{collections::BTreeMap, hash::Hash, rc::Rc};
use codemap::Span;
use smol_str::SmolStr;
@ -11,7 +11,7 @@ use super::NixString;
#[derive(Clone, Debug, PartialEq)]
pub(crate) struct Formals {
/// Map from argument name, to whether that argument is required
pub(crate) arguments: HashMap<NixString, bool>,
pub(crate) arguments: BTreeMap<NixString, bool>,
/// Do the formals of this function accept extra arguments
pub(crate) ellipsis: bool,
@ -27,7 +27,7 @@ impl Formals {
/// ellipsis
pub(crate) fn contains<Q>(&self, arg: &Q) -> bool
where
Q: ?Sized + Hash + Eq,
Q: ?Sized + Hash + Ord + Eq,
NixString: std::borrow::Borrow<Q>,
{
self.ellipsis || self.arguments.contains_key(arg)