Skip to content

Fix/comparisons#637

Merged
SuperFola merged 2 commits intodevfrom
fix/comparisons
Feb 4, 2026
Merged

Fix/comparisons#637
SuperFola merged 2 commits intodevfrom
fix/comparisons

Conversation

@SuperFola
Copy link
Member

Description

Comparisons between different types used to rely on the type index, which yielded deterministic (but very weird) results. It now always returns false.

Support for dictionaries has been extended to len and empty?.

A better documentation for the operators has been added under src/arkreactor/Builtins/, as .txt files. They will always pop up at the top of the documentation generated by ArkDoc.

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

github-actions bot commented Feb 4, 2026

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/arkreactor/VM/VM.cpp 531:2209 Ark::VM::safeRun 3 1405 283
src/arkreactor/VM/Value/Value.cpp 77:142 Ark::Value::toString 2 52 20
src/arkreactor/VM/VM.cpp 2362:2456 Ark::VM::backtrace 3 81 19
Report about files you didn't modify in this PR
Filename Start line:end line Function name Parameters NLOC CCN
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/Compiler/Lowerer/ASTLowerer.cpp 597:787 Ark::internal::ASTLowerer::handleCalls 4 148 51
src/arkreactor/Error/Diagnostics.cpp 45:192 Ark::Diagnostics::makeContext 4 109 44
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:327 main 2 259 29
src/arkreactor/Compiler/Lowerer/ASTLowerer.cpp 156:259 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 293:352 Ark::internal::ASTLowerer::compileListInstruction 3 49 22
include/utf8.hpp 138:184 utf8::isValid 1 44 21
src/arkreactor/Compiler/AST/Optimizer.cpp 33:83 Ark::internal::Optimizer::countAndPruneDeadCode 1 42 20
src/arkscript/Formatter.cpp 503:562 Formatter::formatCall 2 51 19
src/arkreactor/Compiler/NameResolution/StaticScope.cpp 68:109 Ark::internal::NamespaceScope::get 3 32 19
src/arkscript/Formatter.cpp 188:250 Formatter::format 3 59 18
src/arkreactor/Compiler/Macros/Processor.cpp 719:760 Ark::internal::MacroProcessor::isConstEval 1 37 18
src/arkreactor/Compiler/Macros/Executors/Function.cpp 16:89 Ark::internal::FunctionExecutor::applyMacro 2 56 17
include/Ark/Compiler/AST/Predicates.hpp 132:156 Ark::internal::IsSymbol::operator ( ) 1 24 16
src/arkscript/Formatter.cpp 300:341 Formatter::formatFunction 2 35 16
src/arkreactor/Compiler/Lowerer/ASTLowerer.cpp 393:471 Ark::internal::ASTLowerer::compileFunction 3 56 16
src/arkreactor/Compiler/Lowerer/ASTLowerer.cpp 96:112 Ark::internal::ASTLowerer::nodeProducesOutput 1 13 15
src/arkreactor/Compiler/Macros/Executors/Function.cpp 99:156 Ark::internal::FunctionExecutor::unify 5 50 15
src/arkreactor/VM/Debugger.cpp 146:206 Ark::internal::Debugger::prompt 2 54 15
src/arkreactor/Compiler/IntermediateRepresentation/IROptimizer.cpp 22:265 Ark::internal::IROptimizer::IROptimizer 1 224 14
src/arkreactor/Error/Diagnostics.cpp 194:211 Ark::Diagnostics::helper 7 17 2

CppCheck report

Filename Line Type Description
src/arkreactor/VM/VM.cpp 405 error Iterators of different containers 'm_execution_contexts.emplace_back(std::make_unique())' and 'm_execution_contexts.front()' are used together.
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/Value/Future.hpp 50 style Unused private function: 'Future::deleteSelfViaVM'
src/arkreactor/VM/Value/Future.cpp 23 performance Variable 'm_value' is assigned in constructor body. Consider performing initialization in initialization list.

@coveralls
Copy link

Coverage Status

coverage: 93.413% (+0.006%) from 93.407%
when pulling dfc8e0e on fix/comparisons
into e878fe7 on dev.

@github-actions
Copy link

github-actions bot commented Feb 4, 2026

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 : 35 thousands
 Cumulative speed : 118 execs/sec
    Pending items : 139 faves, 1234 total
 Coverage reached : 10.88%
    Crashes saved : 0
      Hangs saved : 0

Cycles without finds : 0
Time without finds : 0

[+] Captured 42862 tuples (map size 234491, highest value 255, total values 435983103) in '/dev/null'.
[+] A coverage of 42862 edges were achieved out of 234496 existing (18.28%) with 1242 input files.

@SuperFola SuperFola merged commit 2d04180 into dev Feb 4, 2026
29 checks passed
@SuperFola SuperFola deleted the fix/comparisons branch February 4, 2026 18:26
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