chore(tvix): fix trivial clippy lints

Relates to b/321.

Change-Id: I37284f89b186e469eb432e2bbedb37aa125a6ad4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9961
Tested-by: BuildkiteCI
Reviewed-by: flokli <flokli@flokli.de>
Autosubmit: tazjin <tazjin@tvl.su>
This commit is contained in:
Vincent Ambo 2023-11-05 20:31:46 +03:00 committed by clbot
parent 67999f0dcf
commit b3b1f649d6
14 changed files with 35 additions and 36 deletions

View file

@ -81,7 +81,7 @@ fn parse_module_args(args: TokenStream) -> Option<Type> {
_ => panic!("arguments to `builtins`-attribute must be of the form `name = value`"), _ => panic!("arguments to `builtins`-attribute must be of the form `name = value`"),
}; };
if name_value.path.get_ident().unwrap().to_string() != "state" { if *name_value.path.get_ident().unwrap() != "state" {
return None; return None;
} }
@ -182,7 +182,7 @@ pub fn builtins(args: TokenStream, item: TokenStream) -> TokenStream {
let mut captures_state = false; let mut captures_state = false;
if let FnArg::Typed(PatType { pat, .. }) = &f.sig.inputs[0] { if let FnArg::Typed(PatType { pat, .. }) = &f.sig.inputs[0] {
if let Pat::Ident(PatIdent { ident, .. }) = pat.as_ref() { if let Pat::Ident(PatIdent { ident, .. }) = pat.as_ref() {
if ident.to_string() == "state" { if *ident == "state" {
if state_type.is_none() { if state_type.is_none() {
panic!("builtin captures a `state` argument, but no state type was defined"); panic!("builtin captures a `state` argument, but no state type was defined");
} }

View file

@ -3,7 +3,7 @@ use tvix_eval_builtin_macros::builtins;
#[builtins] #[builtins]
mod builtins { mod builtins {
use tvix_eval::generators::{self, Gen, GenCo}; use tvix_eval::generators::{Gen, GenCo};
use tvix_eval::{ErrorKind, Value}; use tvix_eval::{ErrorKind, Value};
/// Test docstring. /// Test docstring.
@ -11,12 +11,12 @@ mod builtins {
/// It has multiple lines! /// It has multiple lines!
#[builtin("identity")] #[builtin("identity")]
pub async fn builtin_identity(co: GenCo, x: Value) -> Result<Value, ErrorKind> { pub async fn builtin_identity(co: GenCo, x: Value) -> Result<Value, ErrorKind> {
Ok(todo!()) Ok(x)
} }
#[builtin("tryEval")] #[builtin("tryEval")]
pub async fn builtin_try_eval(co: GenCo, #[lazy] _x: Value) -> Result<Value, ErrorKind> { pub async fn builtin_try_eval(co: GenCo, #[lazy] _x: Value) -> Result<Value, ErrorKind> {
todo!() unimplemented!("builtin is never called")
} }
} }

View file

@ -353,7 +353,7 @@ mod pure_builtins {
#[builtin("toJSON")] #[builtin("toJSON")]
async fn builtin_to_json(co: GenCo, val: Value) -> Result<Value, ErrorKind> { async fn builtin_to_json(co: GenCo, val: Value) -> Result<Value, ErrorKind> {
match val.to_json(&co).await? { match val.into_json(&co).await? {
Err(cek) => Ok(Value::Catchable(cek)), Err(cek) => Ok(Value::Catchable(cek)),
Ok(json_value) => { Ok(json_value) => {
let json_str = serde_json::to_string(&json_value)?; let json_str = serde_json::to_string(&json_value)?;
@ -1007,7 +1007,7 @@ mod pure_builtins {
#[builtin("toPath")] #[builtin("toPath")]
async fn builtin_to_path(co: GenCo, s: Value) -> Result<Value, ErrorKind> { async fn builtin_to_path(co: GenCo, s: Value) -> Result<Value, ErrorKind> {
match coerce_value_to_path(&co, s).await? { match coerce_value_to_path(&co, s).await? {
Err(cek) => return Ok(Value::Catchable(cek)), Err(cek) => Ok(Value::Catchable(cek)),
Ok(path) => { Ok(path) => {
let path: Value = crate::value::canon_path(path).into(); let path: Value = crate::value::canon_path(path).into();
Ok(path.coerce_to_string(co, CoercionKind::Weak).await?) Ok(path.coerce_to_string(co, CoercionKind::Weak).await?)

View file

@ -1004,7 +1004,7 @@ impl Compiler<'_> {
// For each of the bindings, push the set on the stack and // For each of the bindings, push the set on the stack and
// attempt to select from it. // attempt to select from it.
let stack_idx = self.scope().stack_index(set_idx); let stack_idx = self.scope().stack_index(set_idx);
for tracked_formal in (&entries).into_iter() { for tracked_formal in entries.iter() {
self.push_op(OpCode::OpGetLocal(stack_idx), pattern); self.push_op(OpCode::OpGetLocal(stack_idx), pattern);
self.emit_literal_ident(&tracked_formal.pattern_entry().ident().unwrap()); self.emit_literal_ident(&tracked_formal.pattern_entry().ident().unwrap());
@ -1067,7 +1067,7 @@ impl Compiler<'_> {
} }
} }
for tracked_formal in (&entries).into_iter() { for tracked_formal in entries.iter() {
if self.scope()[tracked_formal.local_idx()].needs_finaliser { if self.scope()[tracked_formal.local_idx()].needs_finaliser {
let stack_idx = self.scope().stack_index(tracked_formal.local_idx()); let stack_idx = self.scope().stack_index(tracked_formal.local_idx());
match tracked_formal { match tracked_formal {
@ -1527,7 +1527,7 @@ pub fn prepare_globals(
Rc::new_cyclic(Box::new(move |weak: &Weak<GlobalsMap>| { Rc::new_cyclic(Box::new(move |weak: &Weak<GlobalsMap>| {
// First step is to construct the builtins themselves as // First step is to construct the builtins themselves as
// `NixAttrs`. // `NixAttrs`.
let mut builtins: GlobalsMap = HashMap::from_iter(builtins.into_iter()); let mut builtins: GlobalsMap = HashMap::from_iter(builtins);
// At this point, optionally insert `import` if enabled. To // At this point, optionally insert `import` if enabled. To
// "tie the knot" of `import` needing the full set of globals // "tie the knot" of `import` needing the full set of globals
@ -1574,7 +1574,7 @@ pub fn prepare_globals(
// in the global scope. // in the global scope.
globals.insert( globals.insert(
"builtins", "builtins",
Value::attrs(NixAttrs::from_iter(builtins.clone().into_iter())), Value::attrs(NixAttrs::from_iter(builtins.clone())),
); );
// Finally, the builtins that should be globally available are // Finally, the builtins that should be globally available are

View file

@ -301,7 +301,7 @@ impl NixAttrs {
/// Same as iter(), but marks call sites which rely on the /// Same as iter(), but marks call sites which rely on the
/// iteration being lexicographic. /// iteration being lexicographic.
pub fn iter_sorted<'a>(&'a self) -> Iter<KeyValue<'a>> { pub fn iter_sorted(&self) -> Iter<KeyValue<'_>> {
self.iter() self.iter()
} }
@ -399,7 +399,7 @@ impl NixAttrs {
// /another/ set with a __toString attr. // /another/ set with a __toString attr.
let s = generators::request_string_coerce(co, result, kind).await; let s = generators::request_string_coerce(co, result, kind).await;
return Some(s.ok()?); return s.ok();
} }
None None

View file

@ -12,7 +12,7 @@ use serde_json::Value as Json; // name clash with *our* `Value`
use serde_json::{Map, Number}; use serde_json::{Map, Number};
impl Value { impl Value {
pub(crate) async fn to_json( pub(crate) async fn into_json(
self, self,
co: &GenCo, co: &GenCo,
) -> Result<Result<Json, CatchableErrorKind>, ErrorKind> { ) -> Result<Result<Json, CatchableErrorKind>, ErrorKind> {
@ -86,8 +86,8 @@ impl Value {
/// Generator version of the above, which wraps responses in /// Generator version of the above, which wraps responses in
/// Value::Json. /// Value::Json.
pub(crate) async fn to_json_generator(self, co: GenCo) -> Result<Value, ErrorKind> { pub(crate) async fn into_json_generator(self, co: GenCo) -> Result<Value, ErrorKind> {
match self.to_json(&co).await? { match self.into_json(&co).await? {
Err(cek) => Ok(Value::Catchable(cek)), Err(cek) => Ok(Value::Catchable(cek)),
Ok(json) => Ok(Value::Json(json)), Ok(json) => Ok(Value::Json(json)),
} }

View file

@ -59,7 +59,7 @@ impl NixList {
stack_slice.len(), stack_slice.len(),
); );
NixList(Rc::new(Vector::from_iter(stack_slice.into_iter()))) NixList(Rc::new(Vector::from_iter(stack_slice)))
} }
pub fn iter(&self) -> vector::Iter<Value> { pub fn iter(&self) -> vector::Iter<Value> {
@ -76,7 +76,7 @@ impl NixList {
#[deprecated(note = "callers should avoid constructing from Vec")] #[deprecated(note = "callers should avoid constructing from Vec")]
pub fn from_vec(vs: Vec<Value>) -> Self { pub fn from_vec(vs: Vec<Value>) -> Self {
Self(Rc::new(Vector::from_iter(vs.into_iter()))) Self(Rc::new(Vector::from_iter(vs)))
} }
/// Asynchronous sorting algorithm in which the comparator can make use of /// Asynchronous sorting algorithm in which the comparator can make use of

View file

@ -97,7 +97,7 @@ where
Value: From<V>, Value: From<V>,
{ {
fn from(v: Result<V, CatchableErrorKind>) -> Value { fn from(v: Result<V, CatchableErrorKind>) -> Value {
v.map_or_else(|cek| Value::Catchable(cek), |v| v.into()) v.map_or_else(Value::Catchable, |v| v.into())
} }
} }
@ -362,7 +362,7 @@ impl Value {
kind, kind,
}), }),
(c @ Value::Catchable(_), _) => return Ok(c), (c @ Value::Catchable(_), _) => Ok(c),
(Value::AttrNotFound, _) (Value::AttrNotFound, _)
| (Value::Blueprint(_), _) | (Value::Blueprint(_), _)
@ -762,11 +762,10 @@ fn total_fmt_float<F: std::fmt::Write>(num: f64, mut f: F) -> std::fmt::Result {
if !new_s.is_empty() { if !new_s.is_empty() {
s = &mut new_s s = &mut new_s
} }
} } else if s.contains(&b'.') {
// else, if this is not scientific notation, and there's a // else, if this is not scientific notation, and there's a
// decimal point, make sure we really drop trailing zeroes. // decimal point, make sure we really drop trailing zeroes.
// In some cases, lexical_core doesn't. // In some cases, lexical_core doesn't.
else if s.contains(&b'.') {
for (i, c) in s.iter().enumerate() { for (i, c) in s.iter().enumerate() {
// at `.`` // at `.``
if c == &b'.' { if c == &b'.' {

View file

@ -176,10 +176,10 @@ fn nix_escape_char(ch: char, next: Option<&char>) -> Option<&'static str> {
/// parsed as identifiers. See also cppnix commit /// parsed as identifiers. See also cppnix commit
/// b72bc4a972fe568744d98b89d63adcd504cb586c. /// b72bc4a972fe568744d98b89d63adcd504cb586c.
fn is_keyword(s: &str) -> bool { fn is_keyword(s: &str) -> bool {
match s { matches!(
"if" | "then" | "else" | "assert" | "with" | "let" | "in" | "rec" | "inherit" => true, s,
_ => false, "if" | "then" | "else" | "assert" | "with" | "let" | "in" | "rec" | "inherit"
} )
} }
/// Return true if this string can be used as an identifier in Nix. /// Return true if this string can be used as an identifier in Nix.

View file

@ -473,7 +473,7 @@ impl<'o> VM<'o> {
VMRequest::ToJson(value) => { VMRequest::ToJson(value) => {
self.reenqueue_generator(name, span.clone(), generator); self.reenqueue_generator(name, span.clone(), generator);
self.enqueue_generator("to_json", span, |co| { self.enqueue_generator("to_json", span, |co| {
value.to_json_generator(co) value.into_json_generator(co)
}); });
return Ok(false); return Ok(false);
} }

View file

@ -406,7 +406,7 @@ impl<'o> VM<'o> {
.pop() .pop()
.expect("tvix bug: runtime stack empty after execution"); .expect("tvix bug: runtime stack empty after execution");
Ok(RuntimeResult { Ok(RuntimeResult {
value: value, value,
warnings: self.warnings, warnings: self.warnings,
}) })
} }

View file

@ -19,7 +19,7 @@ use crate::{aterm, nixhash};
#[derive(Debug, thiserror::Error)] #[derive(Debug, thiserror::Error)]
pub enum Error<I> { pub enum Error<I> {
#[error("parsing error: {0}")] #[error("parsing error: {0}")]
ParseError(NomError<I>), Parser(NomError<I>),
#[error("premature EOF")] #[error("premature EOF")]
Incomplete, Incomplete,
#[error("validation error: {0}")] #[error("validation error: {0}")]
@ -38,7 +38,7 @@ pub(crate) fn parse(i: &[u8]) -> Result<Derivation, Error<&[u8]>> {
Ok(derivation) Ok(derivation)
} }
Err(nom::Err::Incomplete(_)) => Err(Error::Incomplete), Err(nom::Err::Incomplete(_)) => Err(Error::Incomplete),
Err(nom::Err::Error(e) | nom::Err::Failure(e)) => Err(Error::ParseError(e)), Err(nom::Err::Error(e) | nom::Err::Failure(e)) => Err(Error::Parser(e)),
} }
} }

View file

@ -1,7 +1,7 @@
use super::parse_error::ErrorKind; use super::parse_error::ErrorKind;
use crate::derivation::output::Output; use crate::derivation::output::Output;
use crate::derivation::parse_error::NomError; use crate::derivation::parse_error::NomError;
use crate::derivation::parser::Error::ParseError; use crate::derivation::parser::Error;
use crate::derivation::Derivation; use crate::derivation::Derivation;
use crate::store_path::StorePath; use crate::store_path::StorePath;
use bstr::{BStr, BString}; use bstr::{BStr, BString};
@ -116,7 +116,7 @@ fn from_aterm_bytes_duplicate_map_key() {
let err = Derivation::from_aterm_bytes(&buf).expect_err("must fail"); let err = Derivation::from_aterm_bytes(&buf).expect_err("must fail");
match err { match err {
ParseError(NomError { input: _, code }) => { Error::Parser(NomError { input: _, code }) => {
assert_eq!(code, ErrorKind::DuplicateMapKey("name".to_string())); assert_eq!(code, ErrorKind::DuplicateMapKey("name".to_string()));
} }
_ => { _ => {

View file

@ -421,7 +421,7 @@ impl FileSystem for TvixStoreFs {
let written = add_entry(fuse_backend_rs::api::filesystem::DirEntry { let written = add_entry(fuse_backend_rs::api::filesystem::DirEntry {
ino, ino,
offset: offset + i as u64 + 1, offset: offset + i as u64 + 1,
type_: ty as u32, type_: ty,
name: store_path.to_string().as_bytes(), name: store_path.to_string().as_bytes(),
})?; })?;
// If the buffer is full, add_entry will return `Ok(0)`. // If the buffer is full, add_entry will return `Ok(0)`.