Skip to content

Commit

Permalink
refactor: apply clippy
Browse files Browse the repository at this point in the history
Fixed clippy warnings
  • Loading branch information
luckasRanarison committed Sep 12, 2023
1 parent a194941 commit 6ae5f4d
Show file tree
Hide file tree
Showing 9 changed files with 120 additions and 120 deletions.
47 changes: 32 additions & 15 deletions cli/src/highlighter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,13 @@ pub struct IceHighlighter {
impl IceHighlighter {
pub fn new() -> Self {
Self {
identifier: Style::new().fg(Color::White),
keyword: Style::new().fg(Color::LightBlue),
method: Style::new().fg(Color::Cyan),
symbol: Style::new().fg(Color::LightCyan),
number: Style::new().fg(Color::LightRed),
string: Style::new().fg(Color::LightGreen),
comment: Style::new().fg(Color::DarkGray),
identifier: Style::from(Color::White),
keyword: Style::from(Color::LightBlue),
method: Style::from(Color::Cyan),
symbol: Style::from(Color::LightCyan),
number: Style::from(Color::LightRed),
string: Style::from(Color::LightGreen),
comment: Style::from(Color::DarkGray),
}
}
}
Expand All @@ -40,7 +40,7 @@ impl Highlighter for IceHighlighter {
if *next == '-' {
buffer.last_mut().unwrap().0 = self.comment;

while let Some(next) = tokens.next() {
for next in tokens.by_ref() {
buffer.push((self.comment, next.to_string()));
}
}
Expand All @@ -52,7 +52,7 @@ impl Highlighter for IceHighlighter {
let quote = char;
buffer.push((self.string, char.to_string()));

while let Some(char) = tokens.next() {
for char in tokens.by_ref() {
buffer.push((self.string, char.to_string()));

if char == quote {
Expand All @@ -71,12 +71,29 @@ impl Highlighter for IceHighlighter {
}
}

let is_keyword = match current.as_str() {
"set" | "true" | "false" | "null" | "and" | "or" | "if" | "else" | "match"
| "for" | "to" | "while" | "loop" | "in" | "break" | "continue"
| "function" | "lambda" | "return" | "self" => true,
_ => false,
};
let is_keyword = matches!(
current.as_str(),
"set"
| "true"
| "false"
| "null"
| "and"
| "or"
| "if"
| "else"
| "match"
| "for"
| "to"
| "while"
| "loop"
| "in"
| "break"
| "continue"
| "function"
| "lambda"
| "return"
| "self"
);

let style = match is_keyword {
true => self.keyword,
Expand Down
34 changes: 15 additions & 19 deletions interpreter/src/builtin.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ use lexer::tokens::Token;
use parser::ast::Expression;
use std::{f64::INFINITY, fmt, fs::read_to_string, io};

type BuiltinFn = fn(&RefEnv, token: &Token, &Vec<Expression>) -> Result<Value, RuntimeError>;
type BuiltinFn = fn(&RefEnv, token: &Token, &[Expression]) -> Result<Value, RuntimeError>;

#[derive(Clone)]
pub struct Builtin {
Expand Down Expand Up @@ -72,15 +72,15 @@ pub fn get_io_builtins() -> Vec<Builtin> {
]
}

fn type_of(env: &RefEnv, _: &Token, args: &Vec<Expression>) -> Result<Value, RuntimeError> {
fn type_of(env: &RefEnv, _: &Token, args: &[Expression]) -> Result<Value, RuntimeError> {
let value = &args[0];
let value = value.evaluate_expression(env)?;
let value_type = Value::String(value.get_type());

Ok(value_type)
}

fn length(env: &RefEnv, token: &Token, args: &Vec<Expression>) -> Result<Value, RuntimeError> {
fn length(env: &RefEnv, token: &Token, args: &[Expression]) -> Result<Value, RuntimeError> {
let arg = &args[0];
let value = arg.evaluate_expression(env)?;

Expand All @@ -92,7 +92,7 @@ fn length(env: &RefEnv, token: &Token, args: &Vec<Expression>) -> Result<Value,
}
}

fn sqrt(env: &RefEnv, token: &Token, args: &Vec<Expression>) -> Result<Value, RuntimeError> {
fn sqrt(env: &RefEnv, token: &Token, args: &[Expression]) -> Result<Value, RuntimeError> {
let arg = &args[0];
let value = arg.evaluate_expression(env)?;

Expand All @@ -105,7 +105,7 @@ fn sqrt(env: &RefEnv, token: &Token, args: &Vec<Expression>) -> Result<Value, Ru
}
}

fn pow(env: &RefEnv, token: &Token, args: &Vec<Expression>) -> Result<Value, RuntimeError> {
fn pow(env: &RefEnv, token: &Token, args: &[Expression]) -> Result<Value, RuntimeError> {
let value = &args[0];
let exponent = &args[1];
let value = value.evaluate_expression(env)?;
Expand All @@ -120,7 +120,7 @@ fn pow(env: &RefEnv, token: &Token, args: &Vec<Expression>) -> Result<Value, Run
}
}

fn floor(env: &RefEnv, token: &Token, args: &Vec<Expression>) -> Result<Value, RuntimeError> {
fn floor(env: &RefEnv, token: &Token, args: &[Expression]) -> Result<Value, RuntimeError> {
let arg = &args[0];
let value = arg.evaluate_expression(env)?;

Expand All @@ -133,7 +133,7 @@ fn floor(env: &RefEnv, token: &Token, args: &Vec<Expression>) -> Result<Value, R
}
}

fn round(env: &RefEnv, token: &Token, args: &Vec<Expression>) -> Result<Value, RuntimeError> {
fn round(env: &RefEnv, token: &Token, args: &[Expression]) -> Result<Value, RuntimeError> {
let arg = &args[0];
let value = arg.evaluate_expression(env)?;

Expand All @@ -146,7 +146,7 @@ fn round(env: &RefEnv, token: &Token, args: &Vec<Expression>) -> Result<Value, R
}
}

fn ceil(env: &RefEnv, token: &Token, args: &Vec<Expression>) -> Result<Value, RuntimeError> {
fn ceil(env: &RefEnv, token: &Token, args: &[Expression]) -> Result<Value, RuntimeError> {
let arg = &args[0];
let value = arg.evaluate_expression(env)?;

Expand All @@ -159,11 +159,7 @@ fn ceil(env: &RefEnv, token: &Token, args: &Vec<Expression>) -> Result<Value, Ru
}
}

fn parse_number(
env: &RefEnv,
token: &Token,
args: &Vec<Expression>,
) -> Result<Value, RuntimeError> {
fn parse_number(env: &RefEnv, token: &Token, args: &[Expression]) -> Result<Value, RuntimeError> {
let arg = &args[0];
let value = arg.evaluate_expression(env)?;

Expand All @@ -182,17 +178,17 @@ fn parse_number(
}
}

fn io_print(env: &RefEnv, _: &Token, args: &Vec<Expression>) -> Result<Value, RuntimeError> {
fn io_print(env: &RefEnv, _: &Token, args: &[Expression]) -> Result<Value, RuntimeError> {
for arg in args {
let value = arg.evaluate_expression(env)?;
print!("{value}");
}

println!("");
println!();
Ok(Value::Null)
}

fn io_readline(_: &RefEnv, _: &Token, _: &Vec<Expression>) -> Result<Value, RuntimeError> {
fn io_readline(_: &RefEnv, _: &Token, _: &[Expression]) -> Result<Value, RuntimeError> {
let mut input = String::new();
io::stdin()
.read_line(&mut input)
Expand All @@ -201,7 +197,7 @@ fn io_readline(_: &RefEnv, _: &Token, _: &Vec<Expression>) -> Result<Value, Runt
Ok(Value::String(input.trim_end().to_string()))
}

fn import(env: &RefEnv, token: &Token, args: &Vec<Expression>) -> Result<Value, RuntimeError> {
fn import(env: &RefEnv, token: &Token, args: &[Expression]) -> Result<Value, RuntimeError> {
let arg = &args[0];
let mut value = arg.evaluate_expression(env)?;
let file_path = match &mut value {
Expand All @@ -220,7 +216,7 @@ fn import(env: &RefEnv, token: &Token, args: &Vec<Expression>) -> Result<Value,
}
};
let file_path = &env.borrow().get_path().join(file_path);
let source = match read_to_string(&file_path) {
let source = match read_to_string(file_path) {
Ok(value) => value,
Err(_) => {
return Err(RuntimeError::new(
Expand All @@ -238,7 +234,7 @@ fn import(env: &RefEnv, token: &Token, args: &Vec<Expression>) -> Result<Value,
Ok(value)
}

fn export(env: &RefEnv, token: &Token, args: &Vec<Expression>) -> Result<Value, RuntimeError> {
fn export(env: &RefEnv, token: &Token, args: &[Expression]) -> Result<Value, RuntimeError> {
let arg = &args[0];
let value = arg.evaluate_expression(env)?;

Expand Down
22 changes: 11 additions & 11 deletions interpreter/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ impl Interpreter {
}

pub fn interpret<T: Eval>(&self, node: T) -> Result<Option<Value>, RuntimeError> {
Ok(node.evaluate(&self.environment)?)
node.evaluate(&self.environment)
}

pub fn run_source(&self, source: &str) -> Result<Value, RuntimeError> {
Expand Down Expand Up @@ -75,9 +75,9 @@ fn is_truthy(value: &Value) -> bool {
Value::Number(value) => *value != 0.0,
Value::Boolean(value) => *value,
Value::Null => false,
Value::String(value) => value.len() != 0,
Value::String(value) => !value.is_empty(),
Value::Array(value) => !value.is_empty(),
Value::Object(value) => value.values.len() != 0,
Value::Object(value) => !value.values.is_empty(),
_ => true,
}
}
Expand All @@ -92,10 +92,10 @@ fn get_numerical_index(expr: &Index, value: Value) -> Result<usize, RuntimeError
}
Ok(index as usize)
} else {
return Err(RuntimeError::new(
Err(RuntimeError::new(
RuntimeErrorKind::InvalidIndex,
expr.token.pos,
));
))
}
}

Expand Down Expand Up @@ -152,7 +152,7 @@ impl Eval for Declaration {
}

let value = self.value.evaluate_expression(env)?;
env.borrow_mut().set(&name, value);
env.borrow_mut().set(name, value);

Ok(None)
}
Expand Down Expand Up @@ -278,15 +278,15 @@ impl Eval for FunctionDeclaration {
let token = &self.token.as_ref().unwrap();
let name = &token.lexeme;

if env.borrow().contains(&name) {
if env.borrow().contains(name) {
return Err(RuntimeError::new(
RuntimeErrorKind::RedeclaringIdentifier(name.clone()),
token.pos,
));
}

env.borrow_mut().set(
&name,
name,
Value::Function(Function {
declaration: self.clone(),
}),
Expand Down Expand Up @@ -469,7 +469,7 @@ impl EvalExpr for Index {

Ok(value)
} else {
let index = get_numerical_index(&self, index_expression)?;
let index = get_numerical_index(self, index_expression)?;
let value = match expression {
Value::Array(array) => {
if let Some(value) = array.get(index) {
Expand Down Expand Up @@ -513,7 +513,7 @@ impl EvalRef for Index {

match expression {
Value::Array(array) => {
let index = get_numerical_index(&self, index_expression)?;
let index = get_numerical_index(self, index_expression)?;
if index >= array.len() {
array.resize_with(index + 1, || Rc::new(RefCell::new(Value::Null)))
}
Expand Down Expand Up @@ -769,7 +769,7 @@ impl EvalExpr for Match {

if let Some(defalut) = &self.default {
match defalut.block.evaluate(env)? {
Some(value) => return Ok(value.clone()),
Some(value) => return Ok(value),
None => return Ok(Value::Null),
}
}
Expand Down
23 changes: 10 additions & 13 deletions interpreter/src/value.rs
Original file line number Diff line number Diff line change
Expand Up @@ -103,21 +103,18 @@ impl Value {
}

pub fn is_number(&self) -> bool {
match self {
Value::Number(_) => true,
_ => false,
}
matches!(self, Value::Number(_))
}

pub fn is_iterable(&self) -> bool {
match self {
matches!(
self,
Value::String(_)
| Value::Array(_)
| Value::Object(_)
| Value::Range(_)
| Value::Number(_) => true,
_ => false,
}
| Value::Array(_)
| Value::Object(_)
| Value::Range(_)
| Value::Number(_)
)
}

pub fn iter(&self) -> Box<dyn Iterator<Item = (Value, Value)> + '_> {
Expand All @@ -132,12 +129,12 @@ impl Value {
}
Value::Range(range) => match range {
Range::NumberRange(value) => {
Box::new(value.clone().into_iter().enumerate().map(|(key, value)| {
Box::new(value.clone().enumerate().map(|(key, value)| {
(Value::Number(key as f64), Value::Number(value as f64))
}))
}
Range::CharRange(value) => {
Box::new(value.clone().into_iter().enumerate().map(|(key, value)| {
Box::new(value.clone().enumerate().map(|(key, value)| {
(Value::Number(key as f64), Value::String(value.into()))
}))
}
Expand Down
14 changes: 6 additions & 8 deletions lexer/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -83,11 +83,11 @@ impl<'a> Lexer<'a> {
return true;
}

return false;
false
}

fn skip_comment(&mut self) {
while let Some(ch) = self.chars.next() {
for ch in self.chars.by_ref() {
if ch == '\n' {
self.current_pos.line_end += 1;
self.current_pos.col_start = 0;
Expand All @@ -103,12 +103,10 @@ impl<'a> Lexer<'a> {
ch if is_quote(ch) => self.create_string_token(ch),
ch if is_alphabetic(ch) => self.create_keyword_or_identifer_token(),
ch if ch.is_ascii_digit() => self.create_number_token(),
_ => {
return Err(LexicalError::new(
LexicalErrorKind::UnexpectedCharacter(self.current_lexeme.clone()),
self.current_pos,
))
}
_ => Err(LexicalError::new(
LexicalErrorKind::UnexpectedCharacter(self.current_lexeme.clone()),
self.current_pos,
)),
}
}

Expand Down
Loading

0 comments on commit 6ae5f4d

Please sign in to comment.