summaryrefslogtreecommitdiff
path: root/src/eval/args.rs
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2021-01-01 17:54:31 +0100
committerLaurenz <laurmaedje@gmail.com>2021-01-01 17:54:31 +0100
commit8cad78481cd52680317032c3bb84cacda5666489 (patch)
tree7cc0d17b2ec6d231c33205fa4765de1d63ee32ea /src/eval/args.rs
parent2b6ccd82489afbcd679fb3199de2618fa8811325 (diff)
A few small improvements ♻
Diffstat (limited to 'src/eval/args.rs')
-rw-r--r--src/eval/args.rs22
1 files changed, 15 insertions, 7 deletions
diff --git a/src/eval/args.rs b/src/eval/args.rs
index b379b975..43c30daf 100644
--- a/src/eval/args.rs
+++ b/src/eval/args.rs
@@ -4,7 +4,7 @@ use std::mem;
use super::{Conv, EvalContext, RefKey, TryFromValue, Value, ValueDict};
use crate::diag::Diag;
-use crate::syntax::{Span, SpanVec, SpanWith, Spanned};
+use crate::syntax::{Span, SpanVec, Spanned, WithSpan};
/// A wrapper around a dictionary value that simplifies argument parsing in
/// functions.
@@ -23,7 +23,11 @@ impl Args {
{
self.0.v.remove(key).and_then(|entry| {
let span = entry.value.span;
- conv_diag(T::try_from_value(entry.value), &mut ctx.f.diags, span)
+ conv_diag(
+ T::try_from_value(entry.value),
+ &mut ctx.feedback.diags,
+ span,
+ )
})
}
@@ -41,9 +45,13 @@ impl Args {
{
if let Some(entry) = self.0.v.remove(key) {
let span = entry.value.span;
- conv_diag(T::try_from_value(entry.value), &mut ctx.f.diags, span)
+ conv_diag(
+ T::try_from_value(entry.value),
+ &mut ctx.feedback.diags,
+ span,
+ )
} else {
- ctx.f.diags.push(error!(self.0.span, "missing argument: {}", name));
+ ctx.diag(error!(self.0.span, "missing argument: {}", name));
None
}
}
@@ -122,11 +130,11 @@ fn conv_diag<T>(conv: Conv<T>, diags: &mut SpanVec<Diag>, span: Span) -> Option<
match conv {
Conv::Ok(t) => Some(t),
Conv::Warn(t, warn) => {
- diags.push(warn.span_with(span));
+ diags.push(warn.with_span(span));
Some(t)
}
Conv::Err(_, err) => {
- diags.push(err.span_with(span));
+ diags.push(err.with_span(span));
None
}
}
@@ -137,7 +145,7 @@ fn conv_put_back<T>(conv: Conv<T>, slot: &mut Spanned<Value>, span: Span) -> Opt
Conv::Ok(t) => Some(t),
Conv::Warn(t, _) => Some(t),
Conv::Err(v, _) => {
- *slot = v.span_with(span);
+ *slot = v.with_span(span);
None
}
}