Skip to content

Conversation

@SuperFola
Copy link
Member

Description

When a condition is on a newline, and the indentation level is more than 0, conditions were put at column 0, which is an error:

 (let permutations (fun ((ref _L) _r _f) {
   (let _len (len _L))
   (if (and (<= _r _len) (> _r 0))
     {
       (mut _indices (iota 0 _r))
       (if (!= stopIteration (_f (select _L _indices)))
         {
           (mut _continue true)
           (let _reversed_indices (reverse _indices))
           (while _continue {
             (mut _i nil)
             (if
-              (forEach
+(forEach
                 _reversed_indices
                 (fun (_val) {
                   (set _i _val)
                   (if (!= (@ _indices _i) (+ _i _len (* -1 _r))) stopIteration) }))
               {
                 (@= _indices _i (+ 1 (@ _indices _i)))
                 (mut _j (+ 1 _i))
                 (while (< _j _r) {
                   (@= _indices _j (+ 1 (@ _indices (- _j 1))))
                   (set _j (+ 1 _j)) })
                 (if (= stopIteration (_f (select _L _indices)))
                   (set _continue false)) }
               (set _continue false)) }) }) }) }))

Checklist

  • I have read the Contributor guide
  • My code follows the style guidelines of this project
  • I have commented my code, particularly in hard-to-understand areas
  • I have updated the documentation if needed (on https://github.com/ArkScript-lang/website, content/docs/)
  • I have added tests that prove my fix/feature is working
  • New and existing tests pass locally with my changes

@github-actions
Copy link

Static analysis report

Lizard report

Listing only functions with cyclomatic complexity >= 15 or NLOC >= 100 or parameters >= 6.

Filename Start line:end line Function name Parameters NLOC CCN
src/arkscript/Formatter.cpp 503:562 Formatter::formatCall 2 51 19
src/arkscript/Formatter.cpp 188:250 Formatter::format 3 59 18
src/arkscript/Formatter.cpp 300:341 Formatter::formatFunction 2 35 16
Report about files you didn't modify in this PR
Filename Start line:end line Function name Parameters NLOC CCN
src/arkreactor/VM/VM.cpp 524:2192 Ark::VM::safeRun 3 1395 277
src/arkreactor/Compiler/Macros/Processor.cpp 253:637 Ark::internal::MacroProcessor::evaluate 3 354 122
src/arkreactor/Compiler/BytecodeReader.cpp 297:717 Ark::BytecodeReader::display 4 371 113
src/arkreactor/Error/Diagnostics.cpp 45:192 Ark::Diagnostics::makeContext 4 109 44
src/arkreactor/Compiler/Lowerer/ASTLowerer.cpp 579:754 Ark::internal::ASTLowerer::handleCalls 4 133 43
src/arkscript/JsonCompiler.cpp 27:276 JsonCompiler::_compile 1 214 38
src/arkreactor/Compiler/NameResolution/NameResolutionPass.cpp 161:266 Ark::internal::NameResolutionPass::visitKeyword 3 85 35
src/arkreactor/Compiler/AST/Parser.cpp 840:931 Ark::internal::Parser::string 1 88 32
src/arkreactor/Compiler/AST/Node.cpp 179:285 Ark::internal::Node::repr 0 90 30
src/arkscript/main.cpp 23:324 main 2 256 29
src/arkreactor/Compiler/Lowerer/ASTLowerer.cpp 138:241 Ark::internal::ASTLowerer::compileExpression 4 85 27
src/arkreactor/Compiler/Macros/Processor.cpp 102:185 Ark::internal::MacroProcessor::processNode 3 61 27
src/arkreactor/Compiler/AST/Node.cpp 287:368 Ark::internal::Node::debugPrint 1 70 26
src/arkreactor/TypeChecker.cpp 149:236 Ark::types::generateError 6 75 25
src/arkreactor/TypeChecker.cpp 32:147 Ark::types::displayContract 6 102 24
src/arkreactor/Compiler/NameResolution/NameResolutionPass.cpp 55:159 Ark::internal::NameResolutionPass::visit 2 83 23
src/arkreactor/Compiler/AST/Parser.cpp 288:416 Ark::internal::Parser::import_ 1 98 23
src/arkreactor/Compiler/Lowerer/ASTLowerer.cpp 275:334 Ark::internal::ASTLowerer::compileListInstruction 3 49 22
src/arkreactor/VM/VM.cpp 2312:2416 Ark::VM::backtrace 3 89 22
include/utf8.hpp 138:184 utf8::isValid 1 44 21
src/arkscript/REPL/Utils.cpp 52:187 Ark::internal::getColorPerKeyword 0 113 20
src/arkreactor/Compiler/AST/Optimizer.cpp 33:83 Ark::internal::Optimizer::countAndPruneDeadCode 1 42 20
src/arkreactor/VM/Value.cpp 77:142 Ark::Value::toString 2 52 20
src/arkreactor/Compiler/NameResolution/StaticScope.cpp 68:109 Ark::internal::NamespaceScope::get 3 32 19
src/arkreactor/Compiler/Macros/Processor.cpp 719:760 Ark::internal::MacroProcessor::isConstEval 1 37 18
src/arkreactor/Compiler/Macros/Executors/Function.cpp 16:91 Ark::internal::FunctionExecutor::applyMacro 2 55 17
include/Ark/Compiler/AST/Predicates.hpp 132:156 Ark::internal::IsSymbol::operator ( ) 1 24 16
src/arkreactor/Compiler/Lowerer/ASTLowerer.cpp 375:454 Ark::internal::ASTLowerer::compileFunction 3 57 16
src/arkreactor/Compiler/Lowerer/ASTLowerer.cpp 78:94 Ark::internal::ASTLowerer::nodeProducesOutput 1 13 15
src/arkreactor/Compiler/Macros/Executors/Function.cpp 101:158 Ark::internal::FunctionExecutor::unify 5 50 15
src/arkreactor/Compiler/IntermediateRepresentation/IROptimizer.cpp 22:265 Ark::internal::IROptimizer::IROptimizer 1 224 14
src/arkreactor/Error/Diagnostics.cpp 194:209 Ark::Diagnostics::helper 6 15 2

CppCheck report

Report files about files you didn't modify in this PR
Filename Line Type Description
include/Ark/VM/VM.inl 255 style Variable 'maybe_value_ptr' can be declared as pointer to const
src/arkreactor/Builtins/Bytecode.cpp 23 style Parameter 'vm' can be declared as pointer to const
src/arkreactor/Builtins/IO.cpp 165 style Consider using std::transform algorithm instead of a raw loop.
src/arkreactor/Compiler/BytecodeReader.cpp 477 style struct member 'Arg::kind' is never used.
src/arkreactor/Compiler/IntermediateRepresentation/IROptimizer.cpp 254 style Consider using std::transform algorithm instead of a raw loop.
src/arkreactor/Compiler/IntermediateRepresentation/IROptimizer.cpp 261 style Consider using std::transform algorithm instead of a raw loop.
src/arkreactor/Compiler/NameResolution/ScopeResolver.cpp 134 style Consider using std::find_if algorithm instead of a raw loop.
include/Ark/VM/Future.hpp 50 style Unused private function: 'Future::deleteSelfViaVM'
src/arkreactor/VM/Future.cpp 23 performance Variable 'm_value' is assigned in constructor body. Consider performing initialization in initialization list.
src/arkreactor/VM/State.cpp 190 style Consider using std::any_of, std::all_of, std::none_of algorithm instead of a raw loop.
src/arkreactor/VM/VM.cpp 525 information Limiting ValueFlow analysis in function 'safeRun' since it is too complex. Please specify --check-level=exhaustive to perform full analysis.
src/arkreactor/VM/VM.cpp 403 error Iterators of different containers 'm_execution_contexts.emplace_back(std::make_unique())' and 'm_execution_contexts.front()' are used together.
src/arkscript/REPL/Repl.cpp 127 style Parameter 'n' can be declared as reference to const
src/arkscript/REPL/Repl.cpp 139 style Parameter 'n' can be declared as reference to const

@github-actions
Copy link

Fuzzing report

/usr/local/bin/afl-whatsup status check tool for afl-fuzz by Michal Zalewski

Summary stats

    Fuzzers alive : 0
   Dead or remote : 1 (included in stats)
   Total run time : 5 minutes, 0 seconds
      Total execs : 38 thousands
 Cumulative speed : 128 execs/sec
    Pending items : 124 faves, 1192 total
 Coverage reached : 11.12%
    Crashes saved : 0
      Hangs saved : 0

Cycles without finds : 0
Time without finds : 0

[+] Captured 42569 tuples (map size 229922, highest value 255, total values 407168720) in '/dev/null'.
[+] A coverage of 42569 edges were achieved out of 229952 existing (18.51%) with 1200 input files.

@SuperFola SuperFola merged commit ada0e06 into dev Jan 10, 2026
27 checks passed
@SuperFola SuperFola deleted the fix/format-cond-on-newline branch January 10, 2026 17:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants