Skip to content

Commit 698f1a4

Browse files
committed
chore(ci): Fixing clippy warnings and add clippy to CI
Added clippy to CI pipeline. Various clippy issues fixed, among others: - Explicit truncate behavior - zero bytes without loop variable - renamed modules to not have the same name as their parent modules - use or_default instead of or_insert_with - merged if statements in string_length module - allowing large enum variant for some parser types Additional fix: removed some variants of the `and_opt` parser.
1 parent 40a30ad commit 698f1a4

32 files changed

Lines changed: 104 additions & 132 deletions

File tree

.github/workflows/build.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ jobs:
1717
run: cargo build
1818
- name: Test
1919
run: cargo test
20+
- name: Clippy
21+
run: cargo clippy -- -Dwarnings
2022
build-release:
2123
runs-on: ubuntu-latest
2224
steps:
@@ -43,6 +45,8 @@ jobs:
4345
run: cargo build
4446
- name: Test
4547
run: cargo test
48+
- name: Clippy
49+
run: cargo clippy -- -Dwarnings
4650
build-windows-release:
4751
runs-on: windows-latest
4852
steps:

rusty_basic/src/instruction_generator/instruction_generator.rs renamed to rusty_basic/src/instruction_generator/main.rs

File renamed without changes.

rusty_basic/src/instruction_generator/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ mod calls;
22
mod dim;
33
mod expression;
44
mod if_block;
5-
mod instruction_generator;
65
mod label_resolver;
76
mod loops;
7+
mod main;
88
pub mod print;
99
mod select_case;
1010
mod statement;
@@ -15,4 +15,4 @@ pub mod test_utils;
1515
#[cfg(test)]
1616
mod tests;
1717

18-
pub use self::instruction_generator::*;
18+
pub use self::main::*;

rusty_basic/src/interpreter/byte_size.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ impl QByteSize for Variant {
2525

2626
impl QByteSize for VArray {
2727
fn byte_size(&self) -> usize {
28+
// TODO: this breaks for String arrays because Strings have variable length (and what if the first element is empty)
2829
self.len() * self.first().byte_size()
2930
}
3031
}

rusty_basic/src/interpreter/io.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -94,11 +94,9 @@ impl FileInfo {
9494
file.seek(SeekFrom::Start(offset))?;
9595
let mut buffer: Vec<u8> = std::iter::repeat_n(0_u8, self.rec_len).collect();
9696
let bytes_read = file.read(&mut buffer)?;
97-
if bytes_read < buffer.len() {
98-
// zero out missing bytes
99-
for i in bytes_read..buffer.len() {
100-
buffer[i] = 0;
101-
}
97+
// zero out missing bytes
98+
for item in buffer.iter_mut().skip(bytes_read) {
99+
*item = 0;
102100
}
103101
Ok(buffer)
104102
}
@@ -162,6 +160,7 @@ impl FileManager {
162160
.read(true)
163161
.write(true)
164162
.create(true)
163+
.truncate(true)
165164
.open(file_name)?;
166165
self.handle_map
167166
.insert(handle, FileInfo::new_random(file, rec_len));
File renamed without changes.

rusty_basic/src/interpreter/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ mod default_stdlib;
77
pub mod error;
88
mod handlers;
99
mod indexed_map;
10-
mod interpreter;
1110
mod interpreter_trait;
1211
mod io;
1312
mod keyboard;
1413
mod lpt1_write;
14+
mod main;
1515
mod print;
1616
mod read_input;
1717
mod registers;
@@ -27,8 +27,8 @@ mod test_utils;
2727
#[cfg(test)]
2828
mod tests;
2929

30-
pub use self::interpreter::new_default_interpreter;
3130
pub use self::interpreter_trait::InterpreterTrait;
31+
pub use self::main::new_default_interpreter;
3232
pub use self::stdlib::*;
3333

3434
fn is_cr_lf(ch: char) -> bool {

rusty_basic/src/interpreter/test_utils.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ use crate::instruction_generator::{
1111
InstructionGeneratorResult, generate_instructions, unwrap_linter_context
1212
};
1313
use crate::interpreter::Stdlib;
14-
use crate::interpreter::interpreter::Interpreter;
1514
use crate::interpreter::interpreter_trait::InterpreterTrait;
15+
use crate::interpreter::main::Interpreter;
1616
use crate::interpreter::read_input::ReadInputSource;
1717
use crate::interpreter::screen::{CrossTermScreen, HeadlessScreen};
1818
use crate::interpreter::write_printer::WritePrinter;

rusty_linter/src/built_ins/field.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ pub fn lint(args: &Expressions, pos: Position) -> Result<(), LintErrorPos> {
1111
if args.len() < 4 {
1212
return Err(LintError::ArgumentCountMismatch.at_pos(pos));
1313
}
14-
if (args.len() - 1) % 3 != 0 {
14+
if !(args.len() - 1).is_multiple_of(3) {
1515
return Err(LintError::ArgumentCountMismatch.at_pos(pos));
1616
}
1717
args.require_integer_argument(0)?;

rusty_linter/src/built_ins/lbound.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ pub fn lint(args: &Expressions, pos: Position) -> Result<(), LintErrorPos> {
1313
let Positioned {
1414
element: first,
1515
pos: first_pos,
16-
} = args.get(0).unwrap();
16+
} = args.first().unwrap();
1717
if let Expression::Variable(
1818
_,
1919
VariableInfo {

0 commit comments

Comments
 (0)