diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5eaa9ba3..9841825c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,7 +12,7 @@ jobs: - name: Checkout repository code uses: actions/checkout@v6 - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@nightly + uses: dtolnay/rust-toolchain@stable with: components: clippy - name: Build @@ -27,7 +27,7 @@ jobs: - name: Checkout repository code uses: actions/checkout@v6 - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@nightly + uses: dtolnay/rust-toolchain@stable - name: Build run: cargo build --release - name: Test @@ -42,7 +42,7 @@ jobs: - name: Checkout repository code uses: actions/checkout@v6 - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@nightly + uses: dtolnay/rust-toolchain@stable with: components: clippy - name: Build @@ -55,7 +55,7 @@ jobs: - name: Checkout repository code uses: actions/checkout@v6 - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@nightly + uses: dtolnay/rust-toolchain@stable - name: Build run: cargo build --release - name: Test diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3566cb86..c6cc101f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,7 +9,7 @@ jobs: - name: Checkout repository code uses: actions/checkout@v6 - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@nightly + uses: dtolnay/rust-toolchain@stable - name: Build run: cargo build - name: Test @@ -20,7 +20,7 @@ jobs: - name: Checkout repository code uses: actions/checkout@v6 - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@nightly + uses: dtolnay/rust-toolchain@stable - name: Build run: cargo build --release - name: Test @@ -35,7 +35,7 @@ jobs: - name: Checkout repository code uses: actions/checkout@v6 - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@nightly + uses: dtolnay/rust-toolchain@stable - name: Build run: cargo build - name: Test @@ -46,7 +46,7 @@ jobs: - name: Checkout repository code uses: actions/checkout@v6 - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@nightly + uses: dtolnay/rust-toolchain@stable - name: Build run: cargo build --release - name: Test diff --git a/.gitpod.yml b/.gitpod.yml deleted file mode 100644 index 5fc6a4a9..00000000 --- a/.gitpod.yml +++ /dev/null @@ -1,9 +0,0 @@ -# This configuration file was automatically generated by Gitpod. -# Please adjust to your needs (see https://www.gitpod.io/docs/config-gitpod-file) -# and commit this file to your remote git repository to share the goodness with others. - -tasks: - - init: cargo build && make - command: cargo watch -x build # TODO make tests write files to the temp folder to be able to run test here instead of build, otherwise it's an infinite loop - - diff --git a/README.md b/README.md index 63ea54ed..9584fe53 100644 --- a/README.md +++ b/README.md @@ -117,14 +117,3 @@ DIM A AS INTEGER A = 42 ' this is an integer because it's explicitly defined as such A$ = "hello" ' duplicate definition error here ``` - -## Development - -The project uses the nightly toolchain currently, -to take advantage of `rustfmt` features that are onyl available there. - -Additionally, building on a Mac might cause some linker errors on the current -stable toolchain, which aren't occurring on the nightly. - -Tip: run tests continuously with `make watch` or -`nodemon -e rs -x "cargo test"`. diff --git a/rustfmt.toml b/rustfmt.toml deleted file mode 100644 index a0ce9ae2..00000000 --- a/rustfmt.toml +++ /dev/null @@ -1,4 +0,0 @@ -unstable_features = true -imports_layout = "Horizontal" -imports_granularity = "Module" -group_imports = "StdExternalCrate" diff --git a/rusty_basic/src/instruction_generator/loops.rs b/rusty_basic/src/instruction_generator/loops.rs index 4a4e0d84..5eb3b809 100644 --- a/rusty_basic/src/instruction_generator/loops.rs +++ b/rusty_basic/src/instruction_generator/loops.rs @@ -1,6 +1,7 @@ use rusty_common::*; use rusty_parser::{ - ConditionalBlock, DoLoop, DoLoopConditionKind, DoLoopConditionPosition, Expression, ExpressionPos, ForLoop, HasExpressionType, Statements + ConditionalBlock, DoLoop, DoLoopConditionKind, DoLoopConditionPosition, Expression, + ExpressionPos, ForLoop, HasExpressionType, Statements, }; use rusty_variant::Variant; diff --git a/rusty_basic/src/instruction_generator/main.rs b/rusty_basic/src/instruction_generator/main.rs index b895a6b5..7d5c71d5 100644 --- a/rusty_basic/src/instruction_generator/main.rs +++ b/rusty_basic/src/instruction_generator/main.rs @@ -2,14 +2,16 @@ use rusty_common::{AtPos, CaseInsensitiveString, Position, Positioned}; use rusty_linter::core::{LinterContext, ScopeName}; use rusty_linter::names::Names; use rusty_parser::{ - Assignment, BareName, BuiltInFunction, BuiltInSub, DimVar, Expression, ExpressionType, FileHandle, FunctionImplementation, GlobalStatement, HasExpressionType, Name, Parameter, Program, Statement, Statements, SubImplementation, TypeQualifier, UserDefinedTypes + Assignment, BareName, BuiltInFunction, BuiltInSub, DimVar, Expression, ExpressionType, + FileHandle, FunctionImplementation, GlobalStatement, HasExpressionType, Name, Parameter, + Program, Statement, Statements, SubImplementation, TypeQualifier, UserDefinedTypes, }; use rusty_variant::Variant; use crate::RuntimeError; use crate::instruction_generator::label_resolver::LabelResolver; use crate::instruction_generator::subprogram_info::{ - SubprogramInfoCollector, SubprogramInfoRepository + SubprogramInfoCollector, SubprogramInfoRepository, }; pub fn unwrap_linter_context(linter_context: LinterContext) -> (Names, UserDefinedTypes) { diff --git a/rusty_basic/src/instruction_generator/test_utils.rs b/rusty_basic/src/instruction_generator/test_utils.rs index c3705b0b..80733234 100644 --- a/rusty_basic/src/instruction_generator/test_utils.rs +++ b/rusty_basic/src/instruction_generator/test_utils.rs @@ -3,7 +3,8 @@ use rusty_linter::core::lint; use rusty_parser::{UserDefinedTypes, parse}; use crate::instruction_generator::{ - Instruction, InstructionGeneratorResult, InstructionPos, generate_instructions, unwrap_linter_context + Instruction, InstructionGeneratorResult, InstructionPos, generate_instructions, + unwrap_linter_context, }; pub fn generate_instructions_str_with_types( diff --git a/rusty_basic/src/interpreter/keyboard.rs b/rusty_basic/src/interpreter/keyboard.rs index ede1aaab..b2a7fb86 100644 --- a/rusty_basic/src/interpreter/keyboard.rs +++ b/rusty_basic/src/interpreter/keyboard.rs @@ -27,7 +27,8 @@ mod windows_impl { extern crate winapi; use winapi::um::winuser::{ - GetKeyboardState, INPUT, INPUT_KEYBOARD, KEYEVENTF_KEYUP, SendInput, VK_CAPITAL, VK_NUMLOCK, VK_SCROLL + GetKeyboardState, INPUT, INPUT_KEYBOARD, KEYEVENTF_KEYUP, SendInput, VK_CAPITAL, + VK_NUMLOCK, VK_SCROLL, }; use crate::RuntimeError; diff --git a/rusty_basic/src/interpreter/main.rs b/rusty_basic/src/interpreter/main.rs index 78d3f9fd..770a291e 100644 --- a/rusty_basic/src/interpreter/main.rs +++ b/rusty_basic/src/interpreter/main.rs @@ -14,7 +14,7 @@ use crate::interpreter::context::*; use crate::interpreter::data_segment::DataSegment; use crate::interpreter::default_stdlib::DefaultStdlib; use crate::interpreter::handlers::allocation::{ - allocate_array, allocate_built_in, allocate_fixed_length_string, allocate_user_defined_type + allocate_array, allocate_built_in, allocate_fixed_length_string, allocate_user_defined_type, }; use crate::interpreter::interpreter_trait::InterpreterTrait; use crate::interpreter::io::{FileManager, Input, Printer}; diff --git a/rusty_basic/src/interpreter/test_utils.rs b/rusty_basic/src/interpreter/test_utils.rs index 1fab3756..dae485df 100644 --- a/rusty_basic/src/interpreter/test_utils.rs +++ b/rusty_basic/src/interpreter/test_utils.rs @@ -8,7 +8,7 @@ use rusty_parser::{UserDefinedTypes, parse_main_file}; use crate::RuntimeErrorPos; use crate::instruction_generator::test_utils::generate_instructions_str_with_types; use crate::instruction_generator::{ - InstructionGeneratorResult, generate_instructions, unwrap_linter_context + InstructionGeneratorResult, generate_instructions, unwrap_linter_context, }; use crate::interpreter::Stdlib; use crate::interpreter::interpreter_trait::InterpreterTrait; diff --git a/rusty_basic/src/interpreter/tests/loops.rs b/rusty_basic/src/interpreter/tests/loops.rs index b459f18c..f70d9808 100644 --- a/rusty_basic/src/interpreter/tests/loops.rs +++ b/rusty_basic/src/interpreter/tests/loops.rs @@ -3,7 +3,8 @@ use rusty_common::*; use crate::interpreter::interpreter_trait::InterpreterTrait; use crate::interpreter::test_utils::*; use crate::{ - ErrorEnvelope, RuntimeError, assert_has_variable, assert_prints, assert_prints_exact, assert_prints_nothing + ErrorEnvelope, RuntimeError, assert_has_variable, assert_prints, assert_prints_exact, + assert_prints_nothing, }; #[test] diff --git a/rusty_basic/src/interpreter/variables.rs b/rusty_basic/src/interpreter/variables.rs index 7f3d8d31..60f684eb 100644 --- a/rusty_basic/src/interpreter/variables.rs +++ b/rusty_basic/src/interpreter/variables.rs @@ -1,5 +1,5 @@ use rusty_parser::{ - AsBareName, BareName, DimType, DimVar, Name, ParamType, Parameter, TypeQualifier + AsBareName, BareName, DimType, DimVar, Name, ParamType, Parameter, TypeQualifier, }; use rusty_variant::{V_FALSE, Variant}; diff --git a/rusty_linter/src/built_ins/arg_validation.rs b/rusty_linter/src/built_ins/arg_validation.rs index 38ad2e18..44b5e3d3 100644 --- a/rusty_linter/src/built_ins/arg_validation.rs +++ b/rusty_linter/src/built_ins/arg_validation.rs @@ -1,6 +1,7 @@ use rusty_common::{AtPos, Position}; use rusty_parser::{ - Expression, ExpressionPos, ExpressionTrait, ExpressionType, Expressions, HasExpressionType, TypeQualifier + Expression, ExpressionPos, ExpressionTrait, ExpressionType, Expressions, HasExpressionType, + TypeQualifier, }; use crate::core::{CanCastTo, LintError, LintErrorPos}; diff --git a/rusty_linter/src/built_ins/len.rs b/rusty_linter/src/built_ins/len.rs index c3f337df..91f2c7c7 100644 --- a/rusty_linter/src/built_ins/len.rs +++ b/rusty_linter/src/built_ins/len.rs @@ -1,6 +1,6 @@ use rusty_common::{AtPos, Position}; use rusty_parser::{ - ExpressionPos, ExpressionTrait, ExpressionType, Expressions, HasExpressionType, TypeQualifier + ExpressionPos, ExpressionTrait, ExpressionType, Expressions, HasExpressionType, TypeQualifier, }; use crate::core::{CanCastTo, LintError, LintErrorPos}; diff --git a/rusty_linter/src/converter/common/program_rules.rs b/rusty_linter/src/converter/common/program_rules.rs index 7fdb6a48..0dab9312 100644 --- a/rusty_linter/src/converter/common/program_rules.rs +++ b/rusty_linter/src/converter/common/program_rules.rs @@ -1,6 +1,7 @@ use rusty_common::{AtPos, Position, Positioned}; use rusty_parser::{ - DimVar, FunctionImplementation, GlobalStatement, GlobalStatementPos, Program, Statement, Statements, SubImplementation + DimVar, FunctionImplementation, GlobalStatement, GlobalStatementPos, Program, Statement, + Statements, SubImplementation, }; use crate::converter::common::{Convertible, ConvertibleIn}; diff --git a/rusty_linter/src/converter/dim_rules/dim_type_rules.rs b/rusty_linter/src/converter/dim_rules/dim_type_rules.rs index 751ba4f1..e3da2091 100644 --- a/rusty_linter/src/converter/dim_rules/dim_type_rules.rs +++ b/rusty_linter/src/converter/dim_rules/dim_type_rules.rs @@ -3,7 +3,7 @@ use rusty_parser::*; use crate::converter::common::{Convertible, DimContext, DimNameState}; use crate::core::{ - IntoTypeQualifier, LintError, LintErrorPos, LinterContext, ValidateStringLength + IntoTypeQualifier, LintError, LintErrorPos, LinterContext, ValidateStringLength, }; pub fn on_dim_type( diff --git a/rusty_linter/src/converter/dim_rules/redim.rs b/rusty_linter/src/converter/dim_rules/redim.rs index 502a57a1..d48c197b 100644 --- a/rusty_linter/src/converter/dim_rules/redim.rs +++ b/rusty_linter/src/converter/dim_rules/redim.rs @@ -3,7 +3,8 @@ use rusty_parser::*; use crate::converter::common::{Convertible, DimNameState}; use crate::core::{ - IntoTypeQualifier, LintError, LintErrorPos, LinterContext, RedimInfo, ValidateStringLength, VariableInfo + IntoTypeQualifier, LintError, LintErrorPos, LinterContext, RedimInfo, ValidateStringLength, + VariableInfo, }; pub fn on_redim_type( diff --git a/rusty_linter/src/converter/expr_rules/built_in_function.rs b/rusty_linter/src/converter/expr_rules/built_in_function.rs index bdab3d86..caa8b378 100644 --- a/rusty_linter/src/converter/expr_rules/built_in_function.rs +++ b/rusty_linter/src/converter/expr_rules/built_in_function.rs @@ -2,7 +2,7 @@ use rusty_common::Position; use rusty_parser::{BuiltInFunction, Expression, Expressions}; use crate::converter::expr_rules::function::{ - convert_function_args, functions_must_have_arguments + convert_function_args, functions_must_have_arguments, }; use crate::core::{LintErrorPos, LinterContext}; diff --git a/rusty_linter/src/converter/expr_rules/function.rs b/rusty_linter/src/converter/expr_rules/function.rs index b322608c..5886a078 100644 --- a/rusty_linter/src/converter/expr_rules/function.rs +++ b/rusty_linter/src/converter/expr_rules/function.rs @@ -4,7 +4,8 @@ use rusty_parser::{AsBareName, BareName, Expression, ExpressionType, Expressions use crate::converter::common::{ConvertibleIn, ExprContext, ExprContextPos}; use crate::converter::expr_rules::qualify_name::*; use crate::core::{ - IntoQualified, IntoTypeQualifier, LintError, LintErrorPos, LintResult, LinterContext, VariableInfo + IntoQualified, IntoTypeQualifier, LintError, LintErrorPos, LintResult, LinterContext, + VariableInfo, }; pub fn convert( diff --git a/rusty_linter/src/converter/expr_rules/main.rs b/rusty_linter/src/converter/expr_rules/main.rs index 0e1567d4..7faf7bbe 100644 --- a/rusty_linter/src/converter/expr_rules/main.rs +++ b/rusty_linter/src/converter/expr_rules/main.rs @@ -3,7 +3,7 @@ use rusty_parser::*; use crate::converter::common::{ConvertibleIn, ExprContext, ExprContextPos}; use crate::converter::expr_rules::{ - binary, built_in_function, function, property, unary, variable + binary, built_in_function, function, property, unary, variable, }; use crate::core::{LintErrorPos, LinterContext}; diff --git a/rusty_linter/src/converter/expr_rules/property.rs b/rusty_linter/src/converter/expr_rules/property.rs index ce7b7a45..63547529 100644 --- a/rusty_linter/src/converter/expr_rules/property.rs +++ b/rusty_linter/src/converter/expr_rules/property.rs @@ -1,11 +1,13 @@ use rusty_common::{AtPos, Position, Positioned}; use rusty_parser::{ - AsBareName, BareName, ElementType, Expression, ExpressionType, HasExpressionType, Name, ToBareName, UserDefinedType + AsBareName, BareName, ElementType, Expression, ExpressionType, HasExpressionType, Name, + ToBareName, UserDefinedType, }; use crate::converter::common::{ConvertibleIn, ExprContext, ExprContextPos}; use crate::converter::expr_rules::variable::{ - AssignToFunction, ExistingConst, ExistingVar, VarAsUserDefinedFunctionCall, VarResolve, add_as_new_implicit_var + AssignToFunction, ExistingConst, ExistingVar, VarAsUserDefinedFunctionCall, VarResolve, + add_as_new_implicit_var, }; use crate::core::{LintError, LintErrorPos, LinterContext}; diff --git a/rusty_linter/src/converter/expr_rules/unary.rs b/rusty_linter/src/converter/expr_rules/unary.rs index 8a60e6f2..c4562426 100644 --- a/rusty_linter/src/converter/expr_rules/unary.rs +++ b/rusty_linter/src/converter/expr_rules/unary.rs @@ -1,6 +1,6 @@ use rusty_common::AtPos; use rusty_parser::{ - Expression, ExpressionPos, ExpressionType, HasExpressionType, TypeQualifier, UnaryOperator + Expression, ExpressionPos, ExpressionType, HasExpressionType, TypeQualifier, UnaryOperator, }; use crate::converter::common::{ConvertibleIn, ExprContextPos}; diff --git a/rusty_linter/src/converter/expr_rules/variable.rs b/rusty_linter/src/converter/expr_rules/variable.rs index 0c46e3f1..8402f4bb 100644 --- a/rusty_linter/src/converter/expr_rules/variable.rs +++ b/rusty_linter/src/converter/expr_rules/variable.rs @@ -1,13 +1,15 @@ use rusty_common::{AtPos, Position}; use rusty_parser::{ - AsBareName, BuiltInFunction, BuiltInStyle, DimType, Expression, ExpressionType, Name, TypeQualifier + AsBareName, BuiltInFunction, BuiltInStyle, DimType, Expression, ExpressionType, Name, + TypeQualifier, }; use rusty_variant::Variant; use crate::converter::common::{ExprContext, ExprContextPos}; use crate::converter::expr_rules::qualify_name::*; use crate::core::{ - ConstLookup, IntoQualified, IntoTypeQualifier, LintError, LintErrorPos, LintResult, LinterContext, VariableInfo, qualifier_of_const_variant + ConstLookup, IntoQualified, IntoTypeQualifier, LintError, LintErrorPos, LintResult, + LinterContext, VariableInfo, qualifier_of_const_variant, }; pub fn convert( diff --git a/rusty_linter/src/converter/statement/const_rules.rs b/rusty_linter/src/converter/statement/const_rules.rs index 7daa75cb..6e5d7010 100644 --- a/rusty_linter/src/converter/statement/const_rules.rs +++ b/rusty_linter/src/converter/statement/const_rules.rs @@ -2,7 +2,8 @@ use rusty_common::*; use rusty_parser::*; use crate::core::{ - CastVariant, ConstEvaluator, LintError, LintErrorPos, LintResult, LinterContext, qualifier_of_const_variant + CastVariant, ConstEvaluator, LintError, LintErrorPos, LintResult, LinterContext, + qualifier_of_const_variant, }; pub fn on_const(ctx: &mut LinterContext, c: Constant) -> Result { diff --git a/rusty_linter/src/core/casting.rs b/rusty_linter/src/core/casting.rs index 021780d5..da9a6764 100644 --- a/rusty_linter/src/core/casting.rs +++ b/rusty_linter/src/core/casting.rs @@ -1,6 +1,6 @@ use rusty_common::AtPos; use rusty_parser::{ - Expression, ExpressionPos, ExpressionType, HasExpressionType, Operator, TypeQualifier + Expression, ExpressionPos, ExpressionType, HasExpressionType, Operator, TypeQualifier, }; use crate::core::{CanCastTo, LintError, LintErrorPos}; diff --git a/rusty_linter/src/post_linter/condition_type_linter.rs b/rusty_linter/src/post_linter/condition_type_linter.rs index c55d8ebe..c32426f6 100644 --- a/rusty_linter/src/post_linter/condition_type_linter.rs +++ b/rusty_linter/src/post_linter/condition_type_linter.rs @@ -1,6 +1,6 @@ use rusty_common::AtPos; use rusty_parser::{ - ConditionalBlock, DoLoop, ExpressionPos, ExpressionType, HasExpressionType, TypeQualifier + ConditionalBlock, DoLoop, ExpressionPos, ExpressionType, HasExpressionType, TypeQualifier, }; use crate::core::{LintError, LintErrorPos}; diff --git a/rusty_linter/src/post_linter/main.rs b/rusty_linter/src/post_linter/main.rs index 3f01235f..67d1043a 100644 --- a/rusty_linter/src/post_linter/main.rs +++ b/rusty_linter/src/post_linter/main.rs @@ -4,7 +4,9 @@ use crate::core::{LintErrorPos, LinterContext, Visitor}; use crate::post_linter::expression_reducer::ExpressionReducer; use crate::post_linter::post_conversion_linter::PostConversionLinter; use crate::post_linter::{ - built_in_linter, condition_type_linter, dots_linter, for_next_counter_match_linter, label_linter, print_linter, select_case_linter, undefined_function_reducer, user_defined_function_linter, user_defined_sub_linter + built_in_linter, condition_type_linter, dots_linter, for_next_counter_match_linter, + label_linter, print_linter, select_case_linter, undefined_function_reducer, + user_defined_function_linter, user_defined_sub_linter, }; pub fn post_linter( diff --git a/rusty_linter/src/pre_linter/user_defined_type_visitor.rs b/rusty_linter/src/pre_linter/user_defined_type_visitor.rs index ade2b4f4..f2aff544 100644 --- a/rusty_linter/src/pre_linter/user_defined_type_visitor.rs +++ b/rusty_linter/src/pre_linter/user_defined_type_visitor.rs @@ -2,7 +2,7 @@ use std::collections::HashMap; use rusty_common::{AtPos, Position, Positioned}; use rusty_parser::{ - BareName, Element, ElementPos, ElementType, Expression, UserDefinedType, UserDefinedTypes + BareName, Element, ElementPos, ElementType, Expression, UserDefinedType, UserDefinedTypes, }; use crate::core::{ConstLookup, LintError, ValidateStringLength, VisitResult, Visitor}; diff --git a/rusty_parser/src/built_ins/close.rs b/rusty_parser/src/built_ins/close.rs index 6a760783..9cad9a5c 100644 --- a/rusty_parser/src/built_ins/close.rs +++ b/rusty_parser/src/built_ins/close.rs @@ -3,7 +3,7 @@ use rusty_pc::*; use crate::expr::expression_pos_p; use crate::expr::file_handle::{ - file_handle_as_expression_pos_p, guarded_file_handle_or_expression_p + file_handle_as_expression_pos_p, guarded_file_handle_or_expression_p, }; use crate::input::StringView; use crate::pc_specific::*; diff --git a/rusty_parser/src/built_ins/common.rs b/rusty_parser/src/built_ins/common.rs index 8e2063aa..67519d03 100644 --- a/rusty_parser/src/built_ins/common.rs +++ b/rusty_parser/src/built_ins/common.rs @@ -7,7 +7,7 @@ use crate::input::StringView; use crate::pc_specific::*; use crate::tokens::comma_ws; use crate::{ - BuiltInSub, Expression, ExpressionPos, Expressions, FileHandle, Keyword, ParserError, Statement + BuiltInSub, Expression, ExpressionPos, Expressions, FileHandle, Keyword, ParserError, Statement, }; /// Parses built-in subs with optional arguments. diff --git a/rusty_parser/src/core/dim.rs b/rusty_parser/src/core/dim.rs index 0ed488a8..fe6b7d09 100644 --- a/rusty_parser/src/core/dim.rs +++ b/rusty_parser/src/core/dim.rs @@ -45,7 +45,7 @@ mod tests { use crate::test_utils::*; use crate::{ - assert_parse_dim_compact, assert_parse_dim_extended_built_in, assert_parser_err, * + assert_parse_dim_compact, assert_parse_dim_extended_built_in, assert_parser_err, *, }; #[test] fn test_parse_dim_extended_built_in() { diff --git a/rusty_parser/src/core/dim_name.rs b/rusty_parser/src/core/dim_name.rs index 3440abad..491f524f 100644 --- a/rusty_parser/src/core/dim_name.rs +++ b/rusty_parser/src/core/dim_name.rs @@ -5,7 +5,8 @@ use crate::core::var_name; use crate::input::StringView; use crate::pc_specific::*; use crate::{ - ArrayDimensions, BareName, BuiltInStyle, DimList, DimType, Name, ParserError, ToBareName, TypeQualifier, TypedName + ArrayDimensions, BareName, BuiltInStyle, DimList, DimType, Name, ParserError, ToBareName, + TypeQualifier, TypedName, }; pub type DimVar = TypedName; diff --git a/rusty_parser/src/core/dim_type.rs b/rusty_parser/src/core/dim_type.rs index a25e0d99..68f54f3b 100644 --- a/rusty_parser/src/core/dim_type.rs +++ b/rusty_parser/src/core/dim_type.rs @@ -1,7 +1,8 @@ use rusty_common::{AtPos, Position}; use crate::{ - ArrayDimensions, BareNamePos, BuiltInStyle, Expression, ExpressionPos, ExpressionType, HasExpressionType, TypeQualifier, VarType + ArrayDimensions, BareNamePos, BuiltInStyle, Expression, ExpressionPos, ExpressionType, + HasExpressionType, TypeQualifier, VarType, }; #[derive(Clone, Debug, PartialEq, Default)] diff --git a/rusty_parser/src/core/if_block.rs b/rusty_parser/src/core/if_block.rs index e6207fe0..66de2116 100644 --- a/rusty_parser/src/core/if_block.rs +++ b/rusty_parser/src/core/if_block.rs @@ -2,7 +2,7 @@ use rusty_pc::*; use crate::core::comment::comment_p; use crate::core::single_line_statements::{ - single_line_non_comment_statements_p, single_line_statements_p + single_line_non_comment_statements_p, single_line_statements_p, }; use crate::core::statements::zero_or_more_statements; use crate::expr::demand_ws_expr_ws_keyword_p; diff --git a/rusty_parser/src/core/implementation.rs b/rusty_parser/src/core/implementation.rs index 26cf8393..c612f7b4 100644 --- a/rusty_parser/src/core/implementation.rs +++ b/rusty_parser/src/core/implementation.rs @@ -68,7 +68,8 @@ mod tests { use super::*; use crate::test_utils::*; use crate::{ - Expression, ExpressionType, Operator, ParamType, Parameter, Statement, assert_parser_err, parse + Expression, ExpressionType, Operator, ParamType, Parameter, Statement, assert_parser_err, + parse, }; #[test] diff --git a/rusty_parser/src/core/mod.rs b/rusty_parser/src/core/mod.rs index 71634cc9..b1c9f712 100644 --- a/rusty_parser/src/core/mod.rs +++ b/rusty_parser/src/core/mod.rs @@ -50,22 +50,25 @@ pub use self::dim_type::*; pub use self::expression_type::{ExpressionType, HasExpressionType}; pub use self::file_constants::*; pub use self::global_statement::{ - FunctionDeclaration, FunctionImplementation, GlobalStatement, GlobalStatementPos, Program, SubDeclaration, SubImplementation, SubprogramImplementation, program_parser_p + FunctionDeclaration, FunctionImplementation, GlobalStatement, GlobalStatementPos, Program, + SubDeclaration, SubImplementation, SubprogramImplementation, program_parser_p, }; pub use self::keyword::Keyword; pub use self::letter_range::LetterRange; pub use self::name::{ - Name, NameAsTokens, NamePos, name_as_tokens_p, name_p, token_to_type_qualifier + Name, NameAsTokens, NamePos, name_as_tokens_p, name_p, token_to_type_qualifier, }; pub use self::operator::Operator; pub use self::param_name::{ParamType, Parameter, ParameterPos, Parameters}; pub use self::print::{Print, PrintArg}; pub use self::statement::{ - Assignment, BuiltInSubCall, CaseBlock, CaseExpression, ConditionalBlock, Constant, DimList, DoLoop, DoLoopConditionKind, DoLoopConditionPosition, ExitObject, ForLoop, IfBlock, OnErrorOption, ResumeOption, SelectCase, Statement, StatementPos, Statements, SubCall + Assignment, BuiltInSubCall, CaseBlock, CaseExpression, ConditionalBlock, Constant, DimList, + DoLoop, DoLoopConditionKind, DoLoopConditionPosition, ExitObject, ForLoop, IfBlock, + OnErrorOption, ResumeOption, SelectCase, Statement, StatementPos, Statements, SubCall, }; pub use self::type_qualifier::TypeQualifier; pub use self::unary_operator::UnaryOperator; pub use self::user_defined_type::{ - Element, ElementPos, ElementType, UserDefinedType, UserDefinedTypes + Element, ElementPos, ElementType, UserDefinedType, UserDefinedTypes, }; pub use self::var_name::*; diff --git a/rusty_parser/src/core/param_name.rs b/rusty_parser/src/core/param_name.rs index ee03773b..ee6065c0 100644 --- a/rusty_parser/src/core/param_name.rs +++ b/rusty_parser/src/core/param_name.rs @@ -6,7 +6,8 @@ use crate::input::StringView; use crate::pc_specific::*; use crate::tokens::{any_symbol_of, any_token_of}; use crate::{ - BareNamePos, BuiltInStyle, ExpressionType, HasExpressionType, Keyword, ParserError, TypeQualifier, TypedName, VarType + BareNamePos, BuiltInStyle, ExpressionType, HasExpressionType, Keyword, ParserError, + TypeQualifier, TypedName, VarType, }; pub type Parameter = TypedName; diff --git a/rusty_parser/src/core/print.rs b/rusty_parser/src/core/print.rs index 1e0cb3b5..5160e278 100644 --- a/rusty_parser/src/core/print.rs +++ b/rusty_parser/src/core/print.rs @@ -9,7 +9,7 @@ use crate::expr::{expression_pos_p, ws_expr_pos_p}; use crate::input::StringView; use crate::pc_specific::*; use crate::tokens::{ - TokenMatcher, any_symbol_of, any_symbol_of_ws, any_token_of, comma_ws, semicolon_ws + TokenMatcher, any_symbol_of, any_symbol_of_ws, any_token_of, comma_ws, semicolon_ws, }; use crate::*; diff --git a/rusty_parser/src/core/statement.rs b/rusty_parser/src/core/statement.rs index 49c53cfa..ef36b2cf 100644 --- a/rusty_parser/src/core/statement.rs +++ b/rusty_parser/src/core/statement.rs @@ -22,7 +22,8 @@ use crate::input::StringView; use crate::pc_specific::*; use crate::tokens::colon; use crate::{ - BareName, BuiltInSub, DimVars, Expression, ExpressionPos, Expressions, Keyword, NamePos, Operator, ParserError, Print + BareName, BuiltInSub, DimVars, Expression, ExpressionPos, Expressions, Keyword, NamePos, + Operator, ParserError, Print, }; pub type StatementPos = Positioned; diff --git a/rusty_parser/src/core/var_name.rs b/rusty_parser/src/core/var_name.rs index 3b8f1791..58865a7d 100644 --- a/rusty_parser/src/core/var_name.rs +++ b/rusty_parser/src/core/var_name.rs @@ -5,7 +5,8 @@ use crate::core::name::{bare_name_without_dots, name_p}; use crate::input::StringView; use crate::pc_specific::*; use crate::{ - ArrayDimensions, AsBareName, BareName, BareNamePos, DimType, ExpressionType, HasExpressionType, Keyword, Name, ParamType, ParserError, ToBareName, TypeQualifier + ArrayDimensions, AsBareName, BareName, BareNamePos, DimType, ExpressionType, HasExpressionType, + Keyword, Name, ParamType, ParserError, ToBareName, TypeQualifier, }; /// A variable name with a type. diff --git a/rusty_parser/src/expr/types.rs b/rusty_parser/src/expr/types.rs index ed646a61..f209b796 100644 --- a/rusty_parser/src/expr/types.rs +++ b/rusty_parser/src/expr/types.rs @@ -2,7 +2,8 @@ use rusty_bit_vec::{MIN_INTEGER, MIN_LONG}; use rusty_common::*; use crate::{ - BuiltInFunction, ExpressionType, FileHandle, HasExpressionType, Name, Operator, TypeQualifier, UnaryOperator + BuiltInFunction, ExpressionType, FileHandle, HasExpressionType, Name, Operator, TypeQualifier, + UnaryOperator, }; // TODO move traits and logic that is linter specific to linter (including CanCastTo from common) diff --git a/rusty_parser/src/expr/variable.rs b/rusty_parser/src/expr/variable.rs index 650c9bd5..94f62abf 100644 --- a/rusty_parser/src/expr/variable.rs +++ b/rusty_parser/src/expr/variable.rs @@ -34,19 +34,17 @@ fn is_property_expr(name_as_tokens: &NameAsTokens) -> bool { // leading dot cannot happen debug_assert!(!name_token.as_str().starts_with('.')); - for name in name_token.as_str().chars() { - if '.' == name { + for ch in name_token.as_str().chars() { + if ch == '.' { if last_was_dot { // two dots in a row return false; } else { last_was_dot = true; } - } else { - if last_was_dot { - name_count += 1; - last_was_dot = false; - } + } else if last_was_dot { + name_count += 1; + last_was_dot = false; } } // at least two names and no trailing dot