git.delta.rocks / jrsonnet / refs/commits / 6b07ec04fd46

difftreelog

style fix clippy warnings

Yaroslav Bolyukin2021-04-30parent: #1656c74.patch.diff
in: master

5 files changed

modifiedcrates/jrsonnet-evaluator/src/ctx.rsdiffbeforeafterboth
--- a/crates/jrsonnet-evaluator/src/ctx.rs
+++ b/crates/jrsonnet-evaluator/src/ctx.rs
@@ -38,7 +38,7 @@
 #[derive(Debug, Clone)]
 pub struct Context(Rc<ContextInternals>);
 impl Context {
-	pub fn new_future() -> FutureWrapper<Context> {
+	pub fn new_future() -> FutureWrapper<Self> {
 		FutureWrapper::new()
 	}
 
@@ -71,7 +71,7 @@
 			.cloned()
 			.ok_or(VariableIsNotDefined(name))?)
 	}
-	pub fn into_future(self, ctx: FutureWrapper<Context>) -> Self {
+	pub fn into_future(self, ctx: FutureWrapper<Self>) -> Self {
 		{
 			ctx.0.borrow_mut().replace(self);
 		}
modifiedcrates/jrsonnet-evaluator/src/lib.rsdiffbeforeafterboth
--- a/crates/jrsonnet-evaluator/src/lib.rs
+++ b/crates/jrsonnet-evaluator/src/lib.rs
@@ -1,6 +1,6 @@
 #![cfg_attr(feature = "unstable", feature(stmt_expr_attributes))]
-#![allow(macro_expanded_macro_exports_accessed_by_absolute_paths)]
 #![warn(clippy::all, clippy::nursery)]
+#![allow(macro_expanded_macro_exports_accessed_by_absolute_paths, clippy::ptr_arg)]
 
 mod builtin;
 mod ctx;
@@ -429,7 +429,7 @@
 	}
 
 	pub fn resolve_file(&self, from: &PathBuf, path: &PathBuf) -> Result<Rc<PathBuf>> {
-		Ok(self.settings().import_resolver.resolve_file(from, path)?)
+		self.settings().import_resolver.resolve_file(from, path)
 	}
 	pub fn load_file_contents(&self, path: &PathBuf) -> Result<IStr> {
 		self.settings().import_resolver.load_file_contents(path)
modifiedcrates/jrsonnet-evaluator/src/obj.rsdiffbeforeafterboth
--- a/crates/jrsonnet-evaluator/src/obj.rs
+++ b/crates/jrsonnet-evaluator/src/obj.rs
@@ -173,7 +173,7 @@
 	pub fn extend_with_field(self, key: IStr, value: ObjMember) -> Self {
 		let mut new = FxHashMap::with_capacity_and_hasher(1, BuildHasherDefault::default());
 		new.insert(key, value);
-		ObjValue::new(Some(self), Rc::new(new))
+		Self::new(Some(self), Rc::new(new))
 	}
 
 	pub(crate) fn get_raw(&self, key: IStr, real_this: Option<&Self>) -> Result<Option<Val>> {
modifiedcrates/jrsonnet-parser/src/lib.rsdiffbeforeafterboth
--- a/crates/jrsonnet-parser/src/lib.rs
+++ b/crates/jrsonnet-parser/src/lib.rs
@@ -1,3 +1,5 @@
+#![allow(clippy::redundant_closure_call)]
+
 use peg::parser;
 use std::{path::PathBuf, rc::Rc};
 mod expr;
modifiedcrates/jrsonnet-types/src/lib.rsdiffbeforeafterboth
after · crates/jrsonnet-types/src/lib.rs
1#![allow(clippy::redundant_closure_call)]23use std::fmt::Display;45#[macro_export]6macro_rules! ty {7	((Array<number>)) => {{8		$crate::ComplexValType::ArrayRef(&$crate::ComplexValType::Simple($crate::ValType::Num))9	}};10	(array) => {11		$crate::ComplexValType::Simple($crate::ValType::Arr)12	};13	(boolean) => {14		$crate::ComplexValType::Simple($crate::ValType::Bool)15	};16	(null) => {17		$crate::ComplexValType::Simple($crate::ValType::Null)18	};19	(string) => {20		$crate::ComplexValType::Simple($crate::ValType::Str)21	};22	(char) => {23		$crate::ComplexValType::Char24	};25	(number) => {26		$crate::ComplexValType::Simple($crate::ValType::Num)27	};28	(BoundedNumber<($min:expr), ($max:expr)>) => {{29		$crate::ComplexValType::BoundedNumber($min, $max)30	}};31	(object) => {32		$crate::ComplexValType::Simple($crate::ValType::Obj)33	};34	(any) => {35		$crate::ComplexValType::Any36	};37	(function) => {38		$crate::ComplexValType::Simple($crate::ValType::Func)39	};40	(($($a:tt) |+)) => {{41		static CONTENTS: &'static [$crate::ComplexValType] = &[42			$(ty!($a)),+43		];44		$crate::ComplexValType::UnionRef(CONTENTS)45	}};46	(($($a:tt) &+)) => {{47		static CONTENTS: &'static [$crate::ComplexValType] = &[48			$(ty!($a)),+49		];50		$crate::ComplexValType::SumRef(CONTENTS)51	}};52}5354#[test]55fn test() {56	assert_eq!(57		ty!((Array<number>)),58		ComplexValType::ArrayRef(&ComplexValType::Simple(ValType::Num))59	);60	assert_eq!(ty!(array), ComplexValType::Simple(ValType::Arr));61	assert_eq!(ty!(any), ComplexValType::Any);62	assert_eq!(63		ty!((string | number)),64		ComplexValType::UnionRef(&[65			ComplexValType::Simple(ValType::Str),66			ComplexValType::Simple(ValType::Num)67		])68	);69	assert_eq!(70		format!("{}", ty!(((string & number) | (object & null)))),71		"string & number | object & null"72	);73	assert_eq!(format!("{}", ty!((string | array))), "string | array");74	assert_eq!(75		format!("{}", ty!(((string & number) | array))),76		"string & number | array"77	);78}7980#[derive(Debug, Clone, Copy, PartialEq, Eq)]81pub enum ValType {82	Bool,83	Null,84	Str,85	Num,86	Arr,87	Obj,88	Func,89}9091impl ValType {92	pub const fn name(&self) -> &'static str {93		use ValType::*;94		match self {95			Bool => "boolean",96			Null => "null",97			Str => "string",98			Num => "number",99			Arr => "array",100			Obj => "object",101			Func => "function",102		}103	}104}105106impl Display for ValType {107	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {108		write!(f, "{}", self.name())109	}110}111112#[derive(Debug, Clone, PartialEq)]113pub enum ComplexValType {114	Any,115	Char,116	Simple(ValType),117	BoundedNumber(Option<f64>, Option<f64>),118	Array(Box<ComplexValType>),119	ArrayRef(&'static ComplexValType),120	ObjectRef(&'static [(&'static str, ComplexValType)]),121	Union(Vec<ComplexValType>),122	UnionRef(&'static [ComplexValType]),123	Sum(Vec<ComplexValType>),124	SumRef(&'static [ComplexValType]),125}126impl From<ValType> for ComplexValType {127	fn from(s: ValType) -> Self {128		Self::Simple(s)129	}130}131132fn write_union(133	f: &mut std::fmt::Formatter<'_>,134	is_union: bool,135	union: &[ComplexValType],136) -> std::fmt::Result {137	for (i, v) in union.iter().enumerate() {138		let should_add_braces =139			matches!(v, ComplexValType::UnionRef(_) | ComplexValType::Union(_) if !is_union);140		if i != 0 {141			write!(f, " {} ", if is_union { '|' } else { '&' })?;142		}143		if should_add_braces {144			write!(f, "(")?;145		}146		write!(f, "{}", v)?;147		if should_add_braces {148			write!(f, ")")?;149		}150	}151	Ok(())152}153154fn print_array(a: &ComplexValType, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {155	if *a == ComplexValType::Any {156		write!(f, "array")?157	} else {158		write!(f, "Array<{}>", a)?159	}160	Ok(())161}162163impl Display for ComplexValType {164	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {165		match self {166			ComplexValType::Any => write!(f, "any")?,167			ComplexValType::Simple(s) => write!(f, "{}", s)?,168			ComplexValType::Char => write!(f, "char")?,169			ComplexValType::BoundedNumber(a, b) => write!(170				f,171				"BoundedNumber<{}, {}>",172				a.map(|e| e.to_string()).unwrap_or_else(|| "".into()),173				b.map(|e| e.to_string()).unwrap_or_else(|| "".into())174			)?,175			ComplexValType::ArrayRef(a) => print_array(a, f)?,176			ComplexValType::Array(a) => print_array(a, f)?,177			ComplexValType::ObjectRef(fields) => {178				write!(f, "{{")?;179				for (i, (k, v)) in fields.iter().enumerate() {180					if i != 0 {181						write!(f, ", ")?;182					}183					write!(f, "{}: {}", k, v)?;184				}185				write!(f, "}}")?;186			}187			ComplexValType::Union(v) => write_union(f, true, v)?,188			ComplexValType::UnionRef(v) => write_union(f, true, v)?,189			ComplexValType::Sum(v) => write_union(f, false, v)?,190			ComplexValType::SumRef(v) => write_union(f, false, v)?,191		};192		Ok(())193	}194}195196peg::parser! {197pub grammar parser() for str {198	rule number() -> f64199		= n:$(['0'..='9']+) { n.parse().unwrap() }200201	rule any_ty() -> ComplexValType = "any" { ComplexValType::Any }202	rule char_ty() -> ComplexValType = "character" { ComplexValType::Char }203	rule bool_ty() -> ComplexValType = "boolean" { ComplexValType::Simple(ValType::Bool) }204	rule null_ty() -> ComplexValType = "null" { ComplexValType::Simple(ValType::Null) }205	rule str_ty() -> ComplexValType = "string" { ComplexValType::Simple(ValType::Str) }206	rule num_ty() -> ComplexValType = "number" { ComplexValType::Simple(ValType::Num) }207	rule simple_array_ty() -> ComplexValType = "array" { ComplexValType::Simple(ValType::Arr) }208	rule simple_object_ty() -> ComplexValType = "object" { ComplexValType::Simple(ValType::Obj) }209	rule simple_function_ty() -> ComplexValType = "function" { ComplexValType::Simple(ValType::Func) }210211	rule array_ty() -> ComplexValType212		= "Array<" t:ty() ">" { ComplexValType::Array(Box::new(t)) }213214	rule bounded_number_ty() -> ComplexValType215		= "BoundedNumber<" a:number() ", " b:number() ">" { ComplexValType::BoundedNumber(Some(a), Some(b)) }216217	rule ty_basic() -> ComplexValType218		= any_ty()219		/ char_ty()220		/ bool_ty()221		/ null_ty()222		/ str_ty()223		/ num_ty()224		/ simple_array_ty()225		/ simple_object_ty()226		/ simple_function_ty()227		/ array_ty()228		/ bounded_number_ty()229230	pub rule ty() -> ComplexValType231		= precedence! {232			a:(@) " | " b:@ {233				match a {234					ComplexValType::Union(mut a) => {235						a.push(b);236						ComplexValType::Union(a)237					}238					_ => ComplexValType::Union(vec![a, b]),239				}240			}241			--242			a:(@) " & " b:@ {243				match a {244					ComplexValType::Sum(mut a) => {245						a.push(b);246						ComplexValType::Sum(a)247					}248					_ => ComplexValType::Sum(vec![a, b]),249				}250			}251			--252			"(" t:ty() ")" { t }253			t:ty_basic() { t }254		}255}256}257258#[cfg(test)]259pub mod tests {260	use super::parser;261262	#[test]263	fn precedence() {264		assert_eq!(265			parser::ty("(any & any) | (any | any) & any")266				.unwrap()267				.to_string(),268			"any & any | (any | any) & any"269		);270	}271272	#[test]273	fn array() {274		assert_eq!(parser::ty("Array<any>").unwrap().to_string(), "array");275		assert_eq!(276			parser::ty("Array<number>").unwrap().to_string(),277			"Array<number>"278		);279	}280	#[test]281	fn bounded_number() {282		assert_eq!(283			parser::ty("BoundedNumber<1, 2>").unwrap().to_string(),284			"BoundedNumber<1, 2>"285		);286	}287}