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

@ -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)