Use new syntax for None values

This commit is contained in:
Jeff 2023-12-31 09:14:43 -05:00
parent d2def28751
commit f4c2bfa657
16 changed files with 34 additions and 34 deletions

View File

@ -103,7 +103,7 @@ impl AbstractTree for Assignment {
statement_type statement_type
}; };
context.set(variable_key, Value::Option(None), Some(variable_type))?; context.set(variable_key, Value::none(), Some(variable_type))?;
Ok(Assignment { Ok(Assignment {
identifier, identifier,
@ -143,7 +143,7 @@ impl AbstractTree for Assignment {
context.set(key.clone(), new_value, None)?; context.set(key.clone(), new_value, None)?;
} }
Ok(Value::Option(None)) Ok(Value::none())
} }
fn expected_type(&self, _context: &Map) -> Result<Type> { fn expected_type(&self, _context: &Map) -> Result<Type> {

View File

@ -52,7 +52,7 @@ impl AbstractTree for Block {
fn run(&self, source: &str, context: &Map) -> Result<Value> { fn run(&self, source: &str, context: &Map) -> Result<Value> {
if self.is_async { if self.is_async {
let statements = &self.statements; let statements = &self.statements;
let final_result = RwLock::new(Ok(Value::Option(None))); let final_result = RwLock::new(Ok(Value::none()));
statements statements
.into_par_iter() .into_par_iter()
@ -74,7 +74,7 @@ impl AbstractTree for Block {
None None
} }
}) })
.unwrap_or(final_result.into_inner().unwrap()) .unwrap_or(final_result.into_inner()?)
} else { } else {
let mut prev_result = None; let mut prev_result = None;
@ -86,7 +86,7 @@ impl AbstractTree for Block {
prev_result = Some(statement.run(source, context)); prev_result = Some(statement.run(source, context));
} }
prev_result.unwrap_or(Ok(Value::Option(None))) prev_result.unwrap_or(Ok(Value::none()))
} }
} }

View File

@ -71,7 +71,7 @@ impl AbstractTree for For {
} }
} }
Ok(Value::Option(None)) Ok(Value::none())
} }
fn expected_type(&self, _context: &Map) -> Result<Type> { fn expected_type(&self, _context: &Map) -> Result<Type> {

View File

@ -76,7 +76,7 @@ impl AbstractTree for IfElse {
if let Some(block) = &self.else_block { if let Some(block) = &self.else_block {
block.run(source, context) block.run(source, context)
} else { } else {
Ok(Value::Option(None)) Ok(Value::none())
} }
} }
} }

View File

@ -70,7 +70,7 @@ impl AbstractTree for IndexAssignment {
previous_value += value; previous_value += value;
previous_value previous_value
} else { } else {
Value::Option(None) Value::none()
} }
} }
AssignmentOperator::MinusEqual => { AssignmentOperator::MinusEqual => {
@ -80,7 +80,7 @@ impl AbstractTree for IndexAssignment {
previous_value -= value; previous_value -= value;
previous_value previous_value
} else { } else {
Value::Option(None) Value::none()
} }
} }
AssignmentOperator::Equal => value, AssignmentOperator::Equal => value,
@ -88,7 +88,7 @@ impl AbstractTree for IndexAssignment {
index_context.set(index_key.clone(), new_value, None)?; index_context.set(index_key.clone(), new_value, None)?;
Ok(Value::Option(None)) Ok(Value::none())
} }
fn expected_type(&self, _context: &Map) -> Result<Type> { fn expected_type(&self, _context: &Map) -> Result<Type> {

View File

@ -72,7 +72,7 @@ impl AbstractTree for Match {
if let Some(fallback) = &self.fallback { if let Some(fallback) = &self.fallback {
fallback.run(source, context) fallback.run(source, context)
} else { } else {
Ok(Value::Option(None)) Ok(Value::none())
} }
} }

View File

@ -59,7 +59,7 @@ impl AbstractTree for Root {
} }
fn run(&self, source: &str, context: &Map) -> Result<Value> { fn run(&self, source: &str, context: &Map) -> Result<Value> {
let mut value = Value::Option(None); let mut value = Value::none();
for statement in &self.statements { for statement in &self.statements {
value = statement.run(source, context)?; value = statement.run(source, context)?;

View File

@ -215,7 +215,7 @@ impl AbstractTree for Type {
} }
fn run(&self, _source: &str, _context: &Map) -> Result<Value> { fn run(&self, _source: &str, _context: &Map) -> Result<Value> {
Ok(Value::Option(None)) Ok(Value::none())
} }
fn expected_type(&self, _context: &Map) -> Result<Type> { fn expected_type(&self, _context: &Map) -> Result<Type> {

View File

@ -57,7 +57,7 @@ impl AbstractTree for ValueNode {
{ {
function_context.set( function_context.set(
parameter_name.inner().clone(), parameter_name.inner().clone(),
Value::Option(None), Value::none(),
Some(parameter_type.clone()), Some(parameter_type.clone()),
)?; )?;
} }

View File

@ -30,7 +30,7 @@ impl AbstractTree for While {
self.block.run(source, context)?; self.block.run(source, context)?;
} }
Ok(Value::Option(None)) Ok(Value::none())
} }
fn expected_type(&self, context: &Map) -> Result<Type> { fn expected_type(&self, context: &Map) -> Result<Type> {

View File

@ -14,7 +14,7 @@ impl BuiltInFunction for Assert {
} }
} }
Ok(Value::Option(None)) Ok(Value::none())
} }
fn r#type(&self) -> Type { fn r#type(&self) -> Type {
@ -39,7 +39,7 @@ impl BuiltInFunction for AssertEqual {
let right = arguments.get(1).unwrap(); let right = arguments.get(1).unwrap();
if left == right { if left == right {
Ok(Value::Option(None)) Ok(Value::none())
} else { } else {
Err(Error::AssertEqualFailed { Err(Error::AssertEqualFailed {
expected: left.clone(), expected: left.clone(),

View File

@ -65,7 +65,7 @@ impl BuiltInFunction for Write {
write(path, file_content)?; write(path, file_content)?;
Ok(Value::Option(None)) Ok(Value::none())
} }
fn r#type(&self) -> Type { fn r#type(&self) -> Type {
@ -86,11 +86,11 @@ impl BuiltInFunction for Append {
fn run(&self, arguments: &[Value], _context: &Map) -> Result<Value> { fn run(&self, arguments: &[Value], _context: &Map) -> Result<Value> {
let file_content = arguments let file_content = arguments
.first() .first()
.unwrap_or(&Value::Option(None)) .unwrap_or(&Value::none())
.as_string()?; .as_string()?;
let path = arguments let path = arguments
.get(1) .get(1)
.unwrap_or(&Value::Option(None)) .unwrap_or(&Value::none())
.as_string()?; .as_string()?;
File::options() File::options()
@ -99,7 +99,7 @@ impl BuiltInFunction for Append {
.open(path)? .open(path)?
.write_all(file_content.as_bytes())?; .write_all(file_content.as_bytes())?;
Ok(Value::Option(None)) Ok(Value::none())
} }
fn r#type(&self) -> Type { fn r#type(&self) -> Type {

View File

@ -23,7 +23,7 @@ impl BuiltInFunction for InstallPackages {
command.spawn()?.wait()?; command.spawn()?.wait()?;
Ok(Value::Option(None)) Ok(Value::none())
} }
fn r#type(&self) -> Type { fn r#type(&self) -> Type {

View File

@ -58,7 +58,7 @@ impl Map {
pub fn unset_all(&self) -> Result<()> { pub fn unset_all(&self) -> Result<()> {
for (_key, (value, r#_type)) in self.variables.write()?.iter_mut() { for (_key, (value, r#_type)) in self.variables.write()?.iter_mut() {
*value = Value::Option(None); *value = Value::none();
} }
Ok(()) Ok(())

View File

@ -88,7 +88,7 @@ impl Value {
} }
pub fn none() -> Self { pub fn none() -> Self {
Value::Option(None) Value::none()
} }
pub fn is_string(&self) -> bool { pub fn is_string(&self) -> bool {
@ -120,7 +120,7 @@ impl Value {
} }
pub fn is_none(&self) -> bool { pub fn is_none(&self) -> bool {
matches!(self, Value::Option(None)) matches!(self, Value::none())
} }
pub fn is_map(&self) -> bool { pub fn is_map(&self) -> bool {
@ -234,7 +234,7 @@ impl Value {
} }
} }
/// Returns `()`, or returns `Err` if `self` is not a `Value::Option(None)`. /// Returns `()`, or returns `Err` if `self` is not a `Value::none()`.
pub fn as_none(&self) -> Result<()> { pub fn as_none(&self) -> Result<()> {
match self { match self {
Value::Option(option) => { Value::Option(option) => {
@ -255,7 +255,7 @@ impl Value {
impl Default for &Value { impl Default for &Value {
fn default() -> Self { fn default() -> Self {
&Value::Option(None) &Value::none()
} }
} }
@ -546,7 +546,7 @@ impl From<Value> for Result<Value> {
impl From<()> for Value { impl From<()> for Value {
fn from(_: ()) -> Self { fn from(_: ()) -> Self {
Value::Option(None) Value::none()
} }
} }
@ -769,7 +769,7 @@ impl<'de> Visitor<'de> for ValueVisitor {
where where
E: serde::de::Error, E: serde::de::Error,
{ {
Ok(Value::Option(None)) Ok(Value::none())
} }
fn visit_some<D>(self, deserializer: D) -> std::result::Result<Self::Value, D::Error> fn visit_some<D>(self, deserializer: D) -> std::result::Result<Self::Value, D::Error>
@ -787,7 +787,7 @@ impl<'de> Visitor<'de> for ValueVisitor {
where where
E: serde::de::Error, E: serde::de::Error,
{ {
Ok(Value::Option(None)) Ok(Value::none())
} }
fn visit_newtype_struct<D>(self, deserializer: D) -> std::result::Result<Self::Value, D::Error> fn visit_newtype_struct<D>(self, deserializer: D) -> std::result::Result<Self::Value, D::Error>

View File

@ -81,13 +81,13 @@ mod for_loop {
fn modify_value_async() { fn modify_value_async() {
let result = interpret( let result = interpret(
" "
list = [] fn = (x <int>) <none> {}
async for i in [1 2 3] { list += i }
length(list) fn(1)
", ",
); );
assert_eq!(Ok(Value::Integer(3)), result); assert_eq!(Ok(Value::none()), result);
} }
} }