Fix io.read_line function
This commit is contained in:
parent
49dfdc4e10
commit
37d59f562d
@ -100,6 +100,12 @@ impl AbstractNode for Assignment {
|
|||||||
|
|
||||||
let statement_type = self.statement.expected_type(context)?;
|
let statement_type = self.statement.expected_type(context)?;
|
||||||
|
|
||||||
|
if statement_type.is_none() {
|
||||||
|
return Err(ValidationError::CannotAssignToNone(
|
||||||
|
self.statement.last_evaluated_statement().position(),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
if let (Some(expected_type_constructor), Some(actual_type)) =
|
if let (Some(expected_type_constructor), Some(actual_type)) =
|
||||||
(&self.constructor, statement_type)
|
(&self.constructor, statement_type)
|
||||||
{
|
{
|
||||||
|
@ -1,8 +1,4 @@
|
|||||||
use std::{
|
use std::{array, fs::read_to_string, io::stdin};
|
||||||
array,
|
|
||||||
fs::read_to_string,
|
|
||||||
io::{self, stdin},
|
|
||||||
};
|
|
||||||
|
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use serde_json::from_str;
|
use serde_json::from_str;
|
||||||
@ -308,9 +304,13 @@ impl FunctionLogic for ReadLine {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn call(self, _: &Context, _: bool) -> Result<Option<Evaluation>, RuntimeError> {
|
fn call(self, _: &Context, _: bool) -> Result<Option<Evaluation>, RuntimeError> {
|
||||||
let user_input = io::read_to_string(stdin())?;
|
let mut user_input = String::new();
|
||||||
|
|
||||||
Ok(Some(Evaluation::Return(Value::string(user_input))))
|
stdin().read_line(&mut user_input)?;
|
||||||
|
|
||||||
|
Ok(Some(Evaluation::Return(Value::string(
|
||||||
|
user_input.trim_end_matches('\n'),
|
||||||
|
))))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -549,7 +549,7 @@ pub fn parser<'src>(
|
|||||||
),
|
),
|
||||||
infix(
|
infix(
|
||||||
left(1),
|
left(1),
|
||||||
just(Token::Symbol(Symbol::Slash)),
|
just(Token::Symbol(Symbol::Percent)),
|
||||||
|left, _, right, span| {
|
|left, _, right, span| {
|
||||||
Expression::Math(Box::new(Math::Modulo(left, right)).with_position(span))
|
Expression::Math(Box::new(Math::Modulo(left, right)).with_position(span))
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user