Copy disabled (too large)
Download .txt
Showing preview only (18,352K chars total). Download the full file to get everything.
Repository: argotorg/solidity
Branch: develop
Commit: 64bba94186a2
Files: 11533
Total size: 18.0 MB
Directory structure:
gitextract_thz9iz3f/
├── .circleci/
│ ├── README.md
│ ├── cln-asan.supp
│ ├── compare_bytecode_reports.sh
│ ├── config.yml
│ ├── osx_install_dependencies.sh
│ ├── parallel_bytecode_report.sh
│ ├── parallel_cli_tests.py
│ ├── soltest.ps1
│ ├── soltest.sh
│ └── soltest_all.sh
├── .clang-format
├── .codespellrc
├── .dockerignore
├── .editorconfig
├── .gitattributes
├── .github/
│ ├── CODEOWNERS
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.md
│ │ ├── config.yml
│ │ ├── documentation_issue.md
│ │ └── feature_request.md
│ └── workflows/
│ ├── buildpack-deps.yml
│ ├── stale.yml
│ └── welcome-external-pr.yml
├── .gitignore
├── .gitmodules
├── .readthedocs.yml
├── CMakeLists.txt
├── CODE_OF_CONDUCT.md
├── CODING_STYLE.md
├── CONTRIBUTING.md
├── Changelog.md
├── LICENSE.txt
├── README.md
├── ReleaseChecklist.md
├── ReviewChecklist.md
├── SECURITY.md
├── cmake/
│ ├── EthBuildInfo.cmake
│ ├── EthCcache.cmake
│ ├── EthCheckCXXCompilerFlag.cmake
│ ├── EthCompilerSettings.cmake
│ ├── EthDependencies.cmake
│ ├── EthOptions.cmake
│ ├── EthPolicy.cmake
│ ├── EthToolchains.cmake
│ ├── EthUtils.cmake
│ ├── FindCLN.cmake
│ ├── FindGMP.cmake
│ ├── FindZ3.cmake
│ ├── fmtlib.cmake
│ ├── nlohmann-json.cmake
│ ├── range-v3.cmake
│ ├── scripts/
│ │ └── buildinfo.cmake
│ ├── submodules.cmake
│ ├── templates/
│ │ ├── BuildInfo.h.in
│ │ └── license.h.in
│ └── toolchains/
│ ├── default.cmake
│ ├── libfuzzer.cmake
│ └── ossfuzz.cmake
├── docs/
│ ├── 050-breaking-changes.rst
│ ├── 060-breaking-changes.rst
│ ├── 070-breaking-changes.rst
│ ├── 080-breaking-changes.rst
│ ├── Makefile
│ ├── README.md
│ ├── _static/
│ │ ├── css/
│ │ │ ├── custom-dark.css
│ │ │ ├── custom.css
│ │ │ ├── fonts.css
│ │ │ ├── pygments.css
│ │ │ └── toggle.css
│ │ └── js/
│ │ ├── constants.js
│ │ ├── initialize.js
│ │ └── toggle.js
│ ├── _templates/
│ │ ├── footer.html
│ │ ├── layout.html
│ │ └── versions.html
│ ├── abi-spec.rst
│ ├── analysing-compilation-output.rst
│ ├── assembly.rst
│ ├── brand-guide.rst
│ ├── bugs.json
│ ├── bugs.rst
│ ├── bugs_by_version.json
│ ├── cheatsheet.rst
│ ├── common-patterns.rst
│ ├── conf.py
│ ├── contracts/
│ │ ├── abstract-contracts.rst
│ │ ├── constant-state-variables.rst
│ │ ├── creating-contracts.rst
│ │ ├── custom-storage-layout.rst
│ │ ├── errors.rst
│ │ ├── events.rst
│ │ ├── function-modifiers.rst
│ │ ├── functions.rst
│ │ ├── inheritance.rst
│ │ ├── interfaces.rst
│ │ ├── libraries.rst
│ │ ├── transient-storage.rst
│ │ ├── using-for.rst
│ │ └── visibility-and-getters.rst
│ ├── contracts.rst
│ ├── contributing.rst
│ ├── control-structures.rst
│ ├── credits-and-attribution.rst
│ ├── docs.sh
│ ├── examples/
│ │ ├── blind-auction.rst
│ │ ├── micropayment.rst
│ │ ├── modular.rst
│ │ ├── safe-remote.rst
│ │ └── voting.rst
│ ├── ext/
│ │ ├── html_extra_template_renderer.py
│ │ └── remix_code_links.py
│ ├── grammar/
│ │ ├── SolidityLexer.g4
│ │ └── SolidityParser.g4
│ ├── grammar.rst
│ ├── index.rst
│ ├── installing-solidity.rst
│ ├── internals/
│ │ ├── layout_in_calldata.rst
│ │ ├── layout_in_memory.rst
│ │ ├── layout_in_storage.rst
│ │ ├── optimizer.rst
│ │ ├── source_mappings.rst
│ │ └── variable_cleanup.rst
│ ├── introduction-to-smart-contracts.rst
│ ├── ir-breaking-changes.rst
│ ├── language-influences.rst
│ ├── layout-of-source-files.rst
│ ├── make.bat
│ ├── metadata.rst
│ ├── natspec-format.rst
│ ├── path-resolution.rst
│ ├── requirements.txt
│ ├── resources.rst
│ ├── robots.txt.template
│ ├── security-considerations.rst
│ ├── smtchecker.rst
│ ├── solidity-by-example.rst
│ ├── structure-of-a-contract.rst
│ ├── style-guide.rst
│ ├── types/
│ │ ├── conversion.rst
│ │ ├── mapping-types.rst
│ │ ├── operator-precedence-table.rst
│ │ ├── operators.rst
│ │ ├── reference-types.rst
│ │ └── value-types.rst
│ ├── types.rst
│ ├── units-and-global-variables.rst
│ ├── using-the-compiler.rst
│ └── yul.rst
├── funding.json
├── libevmasm/
│ ├── AbstractAssemblyStack.h
│ ├── Assembly.cpp
│ ├── Assembly.h
│ ├── AssemblyItem.cpp
│ ├── AssemblyItem.h
│ ├── BlockDeduplicator.cpp
│ ├── BlockDeduplicator.h
│ ├── CMakeLists.txt
│ ├── CommonSubexpressionEliminator.cpp
│ ├── CommonSubexpressionEliminator.h
│ ├── ConstantOptimiser.cpp
│ ├── ConstantOptimiser.h
│ ├── ControlFlowGraph.cpp
│ ├── ControlFlowGraph.h
│ ├── Disassemble.cpp
│ ├── Disassemble.h
│ ├── EVMAssemblyStack.cpp
│ ├── EVMAssemblyStack.h
│ ├── Ethdebug.cpp
│ ├── Ethdebug.h
│ ├── EthdebugSchema.cpp
│ ├── EthdebugSchema.h
│ ├── Exceptions.h
│ ├── ExpressionClasses.cpp
│ ├── ExpressionClasses.h
│ ├── GasMeter.cpp
│ ├── GasMeter.h
│ ├── Inliner.cpp
│ ├── Inliner.h
│ ├── Instruction.cpp
│ ├── Instruction.h
│ ├── JumpdestRemover.cpp
│ ├── JumpdestRemover.h
│ ├── KnownState.cpp
│ ├── KnownState.h
│ ├── LinkerObject.cpp
│ ├── LinkerObject.h
│ ├── PathGasMeter.cpp
│ ├── PathGasMeter.h
│ ├── PeepholeOptimiser.cpp
│ ├── PeepholeOptimiser.h
│ ├── RuleList.h
│ ├── SemanticInformation.cpp
│ ├── SemanticInformation.h
│ ├── SimplificationRule.h
│ ├── SimplificationRules.cpp
│ ├── SimplificationRules.h
│ └── SubAssemblyID.h
├── liblangutil/
│ ├── CMakeLists.txt
│ ├── CharStream.cpp
│ ├── CharStream.h
│ ├── CharStreamProvider.h
│ ├── Common.h
│ ├── DebugData.h
│ ├── DebugInfoSelection.cpp
│ ├── DebugInfoSelection.h
│ ├── EVMVersion.cpp
│ ├── EVMVersion.h
│ ├── ErrorReporter.cpp
│ ├── ErrorReporter.h
│ ├── Exceptions.cpp
│ ├── Exceptions.h
│ ├── ParserBase.cpp
│ ├── ParserBase.h
│ ├── Scanner.cpp
│ ├── Scanner.h
│ ├── SemVerHandler.cpp
│ ├── SemVerHandler.h
│ ├── SourceLocation.cpp
│ ├── SourceLocation.h
│ ├── SourceReferenceExtractor.cpp
│ ├── SourceReferenceExtractor.h
│ ├── SourceReferenceFormatter.cpp
│ ├── SourceReferenceFormatter.h
│ ├── Token.cpp
│ ├── Token.h
│ └── UniqueErrorReporter.h
├── libsmtutil/
│ ├── BMCSolverInterface.h
│ ├── CHCSmtLib2Interface.cpp
│ ├── CHCSmtLib2Interface.h
│ ├── CHCSolverInterface.h
│ ├── CMakeLists.txt
│ ├── Exceptions.h
│ ├── Helpers.h
│ ├── SMTLib2Context.cpp
│ ├── SMTLib2Context.h
│ ├── SMTLib2Interface.cpp
│ ├── SMTLib2Interface.h
│ ├── SMTLib2Parser.cpp
│ ├── SMTLib2Parser.h
│ ├── SMTPortfolio.cpp
│ ├── SMTPortfolio.h
│ ├── SolverInterface.h
│ ├── Sorts.cpp
│ └── Sorts.h
├── libsolc/
│ ├── CMakeLists.txt
│ ├── libsolc.cpp
│ └── libsolc.h
├── libsolidity/
│ ├── CMakeLists.txt
│ ├── analysis/
│ │ ├── ConstantEvaluator.cpp
│ │ ├── ConstantEvaluator.h
│ │ ├── ContractLevelChecker.cpp
│ │ ├── ContractLevelChecker.h
│ │ ├── ControlFlowAnalyzer.cpp
│ │ ├── ControlFlowAnalyzer.h
│ │ ├── ControlFlowBuilder.cpp
│ │ ├── ControlFlowBuilder.h
│ │ ├── ControlFlowGraph.cpp
│ │ ├── ControlFlowGraph.h
│ │ ├── ControlFlowRevertPruner.cpp
│ │ ├── ControlFlowRevertPruner.h
│ │ ├── DeclarationContainer.cpp
│ │ ├── DeclarationContainer.h
│ │ ├── DeclarationTypeChecker.cpp
│ │ ├── DeclarationTypeChecker.h
│ │ ├── DocStringAnalyser.cpp
│ │ ├── DocStringAnalyser.h
│ │ ├── DocStringTagParser.cpp
│ │ ├── DocStringTagParser.h
│ │ ├── FunctionCallGraph.cpp
│ │ ├── FunctionCallGraph.h
│ │ ├── GlobalContext.cpp
│ │ ├── GlobalContext.h
│ │ ├── ImmutableValidator.cpp
│ │ ├── ImmutableValidator.h
│ │ ├── NameAndTypeResolver.cpp
│ │ ├── NameAndTypeResolver.h
│ │ ├── OverrideChecker.cpp
│ │ ├── OverrideChecker.h
│ │ ├── PostTypeChecker.cpp
│ │ ├── PostTypeChecker.h
│ │ ├── PostTypeContractLevelChecker.cpp
│ │ ├── PostTypeContractLevelChecker.h
│ │ ├── ReferencesResolver.cpp
│ │ ├── ReferencesResolver.h
│ │ ├── Scoper.cpp
│ │ ├── Scoper.h
│ │ ├── StaticAnalyzer.cpp
│ │ ├── StaticAnalyzer.h
│ │ ├── SyntaxChecker.cpp
│ │ ├── SyntaxChecker.h
│ │ ├── TypeChecker.cpp
│ │ ├── TypeChecker.h
│ │ ├── ViewPureChecker.cpp
│ │ └── ViewPureChecker.h
│ ├── ast/
│ │ ├── AST.cpp
│ │ ├── AST.h
│ │ ├── ASTAnnotations.cpp
│ │ ├── ASTAnnotations.h
│ │ ├── ASTEnums.h
│ │ ├── ASTForward.h
│ │ ├── ASTJsonExporter.cpp
│ │ ├── ASTJsonExporter.h
│ │ ├── ASTJsonImporter.cpp
│ │ ├── ASTJsonImporter.h
│ │ ├── ASTUtils.cpp
│ │ ├── ASTUtils.h
│ │ ├── ASTVisitor.h
│ │ ├── AST_accept.h
│ │ ├── CallGraph.cpp
│ │ ├── CallGraph.h
│ │ ├── ExperimentalFeatures.h
│ │ ├── TypeProvider.cpp
│ │ ├── TypeProvider.h
│ │ ├── Types.cpp
│ │ ├── Types.h
│ │ └── UserDefinableOperators.h
│ ├── codegen/
│ │ ├── ABIFunctions.cpp
│ │ ├── ABIFunctions.h
│ │ ├── ArrayUtils.cpp
│ │ ├── ArrayUtils.h
│ │ ├── Compiler.cpp
│ │ ├── Compiler.h
│ │ ├── CompilerContext.cpp
│ │ ├── CompilerContext.h
│ │ ├── CompilerUtils.cpp
│ │ ├── CompilerUtils.h
│ │ ├── ContractCompiler.cpp
│ │ ├── ContractCompiler.h
│ │ ├── ExpressionCompiler.cpp
│ │ ├── ExpressionCompiler.h
│ │ ├── LValue.cpp
│ │ ├── LValue.h
│ │ ├── MultiUseYulFunctionCollector.cpp
│ │ ├── MultiUseYulFunctionCollector.h
│ │ ├── ReturnInfo.cpp
│ │ ├── ReturnInfo.h
│ │ ├── YulUtilFunctions.cpp
│ │ ├── YulUtilFunctions.h
│ │ └── ir/
│ │ ├── Common.cpp
│ │ ├── Common.h
│ │ ├── IRGenerationContext.cpp
│ │ ├── IRGenerationContext.h
│ │ ├── IRGenerator.cpp
│ │ ├── IRGenerator.h
│ │ ├── IRGeneratorForStatements.cpp
│ │ ├── IRGeneratorForStatements.h
│ │ ├── IRLValue.h
│ │ ├── IRVariable.cpp
│ │ ├── IRVariable.h
│ │ └── README.md
│ ├── experimental/
│ │ ├── analysis/
│ │ │ ├── Analysis.cpp
│ │ │ ├── Analysis.h
│ │ │ ├── DebugWarner.cpp
│ │ │ ├── DebugWarner.h
│ │ │ ├── FunctionDependencyAnalysis.cpp
│ │ │ ├── FunctionDependencyAnalysis.h
│ │ │ ├── SyntaxRestrictor.cpp
│ │ │ ├── SyntaxRestrictor.h
│ │ │ ├── TypeClassRegistration.cpp
│ │ │ ├── TypeClassRegistration.h
│ │ │ ├── TypeInference.cpp
│ │ │ ├── TypeInference.h
│ │ │ ├── TypeRegistration.cpp
│ │ │ └── TypeRegistration.h
│ │ ├── ast/
│ │ │ ├── FunctionCallGraph.h
│ │ │ ├── Type.cpp
│ │ │ ├── Type.h
│ │ │ ├── TypeSystem.cpp
│ │ │ ├── TypeSystem.h
│ │ │ ├── TypeSystemHelper.cpp
│ │ │ └── TypeSystemHelper.h
│ │ └── codegen/
│ │ ├── Common.cpp
│ │ ├── Common.h
│ │ ├── IRGenerationContext.h
│ │ ├── IRGenerator.cpp
│ │ ├── IRGenerator.h
│ │ ├── IRGeneratorForStatements.cpp
│ │ └── IRGeneratorForStatements.h
│ ├── formal/
│ │ ├── ArraySlicePredicate.cpp
│ │ ├── ArraySlicePredicate.h
│ │ ├── BMC.cpp
│ │ ├── BMC.h
│ │ ├── CHC.cpp
│ │ ├── CHC.h
│ │ ├── Cvc5SMTLib2Interface.cpp
│ │ ├── Cvc5SMTLib2Interface.h
│ │ ├── EldaricaCHCSmtLib2Interface.cpp
│ │ ├── EldaricaCHCSmtLib2Interface.h
│ │ ├── EncodingContext.cpp
│ │ ├── EncodingContext.h
│ │ ├── ExpressionFormatter.cpp
│ │ ├── ExpressionFormatter.h
│ │ ├── ModelChecker.cpp
│ │ ├── ModelChecker.h
│ │ ├── ModelCheckerSettings.cpp
│ │ ├── ModelCheckerSettings.h
│ │ ├── Predicate.cpp
│ │ ├── Predicate.h
│ │ ├── PredicateInstance.cpp
│ │ ├── PredicateInstance.h
│ │ ├── PredicateSort.cpp
│ │ ├── PredicateSort.h
│ │ ├── SMTEncoder.cpp
│ │ ├── SMTEncoder.h
│ │ ├── SSAVariable.cpp
│ │ ├── SSAVariable.h
│ │ ├── SymbolicState.cpp
│ │ ├── SymbolicState.h
│ │ ├── SymbolicTypes.cpp
│ │ ├── SymbolicTypes.h
│ │ ├── SymbolicVariables.cpp
│ │ ├── SymbolicVariables.h
│ │ ├── Z3CHCSmtLib2Interface.cpp
│ │ ├── Z3CHCSmtLib2Interface.h
│ │ ├── Z3SMTLib2Interface.cpp
│ │ └── Z3SMTLib2Interface.h
│ ├── interface/
│ │ ├── ABI.cpp
│ │ ├── ABI.h
│ │ ├── CompilerStack.cpp
│ │ ├── CompilerStack.h
│ │ ├── DebugSettings.h
│ │ ├── FileReader.cpp
│ │ ├── FileReader.h
│ │ ├── GasEstimator.cpp
│ │ ├── GasEstimator.h
│ │ ├── ImportRemapper.cpp
│ │ ├── ImportRemapper.h
│ │ ├── Natspec.cpp
│ │ ├── Natspec.h
│ │ ├── OptimiserSettings.h
│ │ ├── ReadFile.h
│ │ ├── SMTSolverCommand.cpp
│ │ ├── SMTSolverCommand.h
│ │ ├── StandardCompiler.cpp
│ │ ├── StandardCompiler.h
│ │ ├── StorageLayout.cpp
│ │ ├── StorageLayout.h
│ │ ├── UniversalCallback.h
│ │ ├── Version.cpp
│ │ └── Version.h
│ ├── lsp/
│ │ ├── DocumentHoverHandler.cpp
│ │ ├── DocumentHoverHandler.h
│ │ ├── FileRepository.cpp
│ │ ├── FileRepository.h
│ │ ├── GotoDefinition.cpp
│ │ ├── GotoDefinition.h
│ │ ├── HandlerBase.cpp
│ │ ├── HandlerBase.h
│ │ ├── LanguageServer.cpp
│ │ ├── LanguageServer.h
│ │ ├── RenameSymbol.cpp
│ │ ├── RenameSymbol.h
│ │ ├── SemanticTokensBuilder.cpp
│ │ ├── SemanticTokensBuilder.h
│ │ ├── Transport.cpp
│ │ ├── Transport.h
│ │ ├── Utils.cpp
│ │ └── Utils.h
│ └── parsing/
│ ├── DocStringParser.cpp
│ ├── DocStringParser.h
│ ├── Parser.cpp
│ ├── Parser.h
│ └── Token.h
├── libsolutil/
│ ├── Algorithms.h
│ ├── AnsiColorized.h
│ ├── Assertions.h
│ ├── CMakeLists.txt
│ ├── Common.h
│ ├── CommonData.cpp
│ ├── CommonData.h
│ ├── CommonIO.cpp
│ ├── CommonIO.h
│ ├── DisjointSet.cpp
│ ├── DisjointSet.h
│ ├── DominatorFinder.h
│ ├── ErrorCodes.h
│ ├── Exceptions.cpp
│ ├── Exceptions.h
│ ├── FixedHash.h
│ ├── FunctionSelector.h
│ ├── IpfsHash.cpp
│ ├── IpfsHash.h
│ ├── JSON.cpp
│ ├── JSON.h
│ ├── Keccak256.cpp
│ ├── Keccak256.h
│ ├── LEB128.h
│ ├── LazyInit.h
│ ├── Numeric.cpp
│ ├── Numeric.h
│ ├── Profiler.cpp
│ ├── Profiler.h
│ ├── Result.h
│ ├── SetOnce.h
│ ├── StackTooDeepString.h
│ ├── StringUtils.cpp
│ ├── StringUtils.h
│ ├── SwarmHash.cpp
│ ├── SwarmHash.h
│ ├── TemporaryDirectory.cpp
│ ├── TemporaryDirectory.h
│ ├── UTF8.cpp
│ ├── UTF8.h
│ ├── Views.h
│ ├── Visitor.h
│ ├── Whiskers.cpp
│ ├── Whiskers.h
│ ├── picosha2.h
│ └── vector_ref.h
├── libstdlib/
│ ├── CMakeLists.txt
│ ├── src/
│ │ └── stub.sol
│ ├── stdlib.h.in
│ └── stdlib.src.h.in
├── libyul/
│ ├── AST.cpp
│ ├── AST.h
│ ├── ASTForward.h
│ ├── ASTLabelRegistry.cpp
│ ├── ASTLabelRegistry.h
│ ├── AsmAnalysis.cpp
│ ├── AsmAnalysis.h
│ ├── AsmAnalysisInfo.h
│ ├── AsmJsonConverter.cpp
│ ├── AsmJsonConverter.h
│ ├── AsmJsonImporter.cpp
│ ├── AsmJsonImporter.h
│ ├── AsmParser.cpp
│ ├── AsmParser.h
│ ├── AsmPrinter.cpp
│ ├── AsmPrinter.h
│ ├── Builtins.h
│ ├── CMakeLists.txt
│ ├── CompilabilityChecker.cpp
│ ├── CompilabilityChecker.h
│ ├── ControlFlowSideEffects.h
│ ├── ControlFlowSideEffectsCollector.cpp
│ ├── ControlFlowSideEffectsCollector.h
│ ├── Dialect.cpp
│ ├── Dialect.h
│ ├── Exceptions.h
│ ├── FunctionReferenceResolver.cpp
│ ├── FunctionReferenceResolver.h
│ ├── Object.cpp
│ ├── Object.h
│ ├── ObjectOptimizer.cpp
│ ├── ObjectOptimizer.h
│ ├── ObjectParser.cpp
│ ├── ObjectParser.h
│ ├── Scope.cpp
│ ├── Scope.h
│ ├── ScopeFiller.cpp
│ ├── ScopeFiller.h
│ ├── SideEffects.h
│ ├── Utilities.cpp
│ ├── Utilities.h
│ ├── YulName.h
│ ├── YulStack.cpp
│ ├── YulStack.h
│ ├── YulString.h
│ ├── backends/
│ │ └── evm/
│ │ ├── AbstractAssembly.h
│ │ ├── AsmCodeGen.cpp
│ │ ├── AsmCodeGen.h
│ │ ├── ConstantOptimiser.cpp
│ │ ├── ConstantOptimiser.h
│ │ ├── ControlFlowGraph.h
│ │ ├── ControlFlowGraphBuilder.cpp
│ │ ├── ControlFlowGraphBuilder.h
│ │ ├── EVMBuiltins.cpp
│ │ ├── EVMBuiltins.h
│ │ ├── EVMCodeTransform.cpp
│ │ ├── EVMCodeTransform.h
│ │ ├── EVMDialect.cpp
│ │ ├── EVMDialect.h
│ │ ├── EVMMetrics.cpp
│ │ ├── EVMMetrics.h
│ │ ├── EVMObjectCompiler.cpp
│ │ ├── EVMObjectCompiler.h
│ │ ├── EthAssemblyAdapter.cpp
│ │ ├── EthAssemblyAdapter.h
│ │ ├── NoOutputAssembly.cpp
│ │ ├── NoOutputAssembly.h
│ │ ├── OptimizedEVMCodeTransform.cpp
│ │ ├── OptimizedEVMCodeTransform.h
│ │ ├── StackHelpers.h
│ │ ├── StackLayoutGenerator.cpp
│ │ ├── StackLayoutGenerator.h
│ │ ├── VariableReferenceCounter.cpp
│ │ ├── VariableReferenceCounter.h
│ │ └── ssa/
│ │ ├── BridgeFinder.h
│ │ ├── CodeTransform.cpp
│ │ ├── CodeTransform.h
│ │ ├── ControlFlow.cpp
│ │ ├── ControlFlow.h
│ │ ├── JunkAdmittingBlocksFinder.cpp
│ │ ├── JunkAdmittingBlocksFinder.h
│ │ ├── LivenessAnalysis.cpp
│ │ ├── LivenessAnalysis.h
│ │ ├── PhiInverse.cpp
│ │ ├── PhiInverse.h
│ │ ├── SSACFG.cpp
│ │ ├── SSACFG.h
│ │ ├── SSACFGBuilder.cpp
│ │ ├── SSACFGBuilder.h
│ │ ├── SSACFGLoopNestingForest.cpp
│ │ ├── SSACFGLoopNestingForest.h
│ │ ├── Stack.cpp
│ │ ├── Stack.h
│ │ ├── StackLayout.h
│ │ ├── StackLayoutGenerator.cpp
│ │ ├── StackLayoutGenerator.h
│ │ ├── StackShuffler.cpp
│ │ ├── StackShuffler.h
│ │ ├── StackUtils.cpp
│ │ ├── StackUtils.h
│ │ ├── io/
│ │ │ ├── DotExporterBase.cpp
│ │ │ ├── DotExporterBase.h
│ │ │ ├── JSONExporter.cpp
│ │ │ └── JSONExporter.h
│ │ └── traversal/
│ │ ├── ForwardTopologicalSort.cpp
│ │ └── ForwardTopologicalSort.h
│ └── optimiser/
│ ├── ASTCopier.cpp
│ ├── ASTCopier.h
│ ├── ASTWalker.cpp
│ ├── ASTWalker.h
│ ├── BlockFlattener.cpp
│ ├── BlockFlattener.h
│ ├── BlockHasher.cpp
│ ├── BlockHasher.h
│ ├── CallGraphGenerator.cpp
│ ├── CallGraphGenerator.h
│ ├── CircularReferencesPruner.cpp
│ ├── CircularReferencesPruner.h
│ ├── CommonSubexpressionEliminator.cpp
│ ├── CommonSubexpressionEliminator.h
│ ├── ConditionalSimplifier.cpp
│ ├── ConditionalSimplifier.h
│ ├── ConditionalUnsimplifier.cpp
│ ├── ConditionalUnsimplifier.h
│ ├── ControlFlowSimplifier.cpp
│ ├── ControlFlowSimplifier.h
│ ├── DataFlowAnalyzer.cpp
│ ├── DataFlowAnalyzer.h
│ ├── DeadCodeEliminator.cpp
│ ├── DeadCodeEliminator.h
│ ├── Disambiguator.cpp
│ ├── Disambiguator.h
│ ├── EqualStoreEliminator.cpp
│ ├── EqualStoreEliminator.h
│ ├── EquivalentFunctionCombiner.cpp
│ ├── EquivalentFunctionCombiner.h
│ ├── EquivalentFunctionDetector.cpp
│ ├── EquivalentFunctionDetector.h
│ ├── ExpressionInliner.cpp
│ ├── ExpressionInliner.h
│ ├── ExpressionJoiner.cpp
│ ├── ExpressionJoiner.h
│ ├── ExpressionSimplifier.cpp
│ ├── ExpressionSimplifier.h
│ ├── ExpressionSplitter.cpp
│ ├── ExpressionSplitter.h
│ ├── ForLoopConditionIntoBody.cpp
│ ├── ForLoopConditionIntoBody.h
│ ├── ForLoopConditionOutOfBody.cpp
│ ├── ForLoopConditionOutOfBody.h
│ ├── ForLoopInitRewriter.cpp
│ ├── ForLoopInitRewriter.h
│ ├── FullInliner.cpp
│ ├── FullInliner.h
│ ├── FunctionCallFinder.cpp
│ ├── FunctionCallFinder.h
│ ├── FunctionGrouper.cpp
│ ├── FunctionGrouper.h
│ ├── FunctionHoister.cpp
│ ├── FunctionHoister.h
│ ├── FunctionSpecializer.cpp
│ ├── FunctionSpecializer.h
│ ├── InlinableExpressionFunctionFinder.cpp
│ ├── InlinableExpressionFunctionFinder.h
│ ├── KnowledgeBase.cpp
│ ├── KnowledgeBase.h
│ ├── LabelIDDispenser.cpp
│ ├── LabelIDDispenser.h
│ ├── LoadResolver.cpp
│ ├── LoadResolver.h
│ ├── LoopInvariantCodeMotion.cpp
│ ├── LoopInvariantCodeMotion.h
│ ├── Metrics.cpp
│ ├── Metrics.h
│ ├── NameCollector.cpp
│ ├── NameCollector.h
│ ├── NameDispenser.cpp
│ ├── NameDispenser.h
│ ├── NameDisplacer.cpp
│ ├── NameDisplacer.h
│ ├── NameSimplifier.cpp
│ ├── NameSimplifier.h
│ ├── OptimiserStep.h
│ ├── OptimizerUtilities.cpp
│ ├── OptimizerUtilities.h
│ ├── README.md
│ ├── Rematerialiser.cpp
│ ├── Rematerialiser.h
│ ├── SSAReverser.cpp
│ ├── SSAReverser.h
│ ├── SSATransform.cpp
│ ├── SSATransform.h
│ ├── SSAValueTracker.cpp
│ ├── SSAValueTracker.h
│ ├── Semantics.cpp
│ ├── Semantics.h
│ ├── SimplificationRules.cpp
│ ├── SimplificationRules.h
│ ├── StackCompressor.cpp
│ ├── StackCompressor.h
│ ├── StackLimitEvader.cpp
│ ├── StackLimitEvader.h
│ ├── StackToMemoryMover.cpp
│ ├── StackToMemoryMover.h
│ ├── StructuralSimplifier.cpp
│ ├── StructuralSimplifier.h
│ ├── Substitution.cpp
│ ├── Substitution.h
│ ├── Suite.cpp
│ ├── Suite.h
│ ├── SyntacticalEquality.cpp
│ ├── SyntacticalEquality.h
│ ├── UnusedAssignEliminator.cpp
│ ├── UnusedAssignEliminator.h
│ ├── UnusedFunctionParameterPruner.cpp
│ ├── UnusedFunctionParameterPruner.h
│ ├── UnusedFunctionsCommon.cpp
│ ├── UnusedFunctionsCommon.h
│ ├── UnusedPruner.cpp
│ ├── UnusedPruner.h
│ ├── UnusedStoreBase.cpp
│ ├── UnusedStoreBase.h
│ ├── UnusedStoreEliminator.cpp
│ ├── UnusedStoreEliminator.h
│ ├── VarDeclInitializer.cpp
│ ├── VarDeclInitializer.h
│ ├── VarNameCleaner.cpp
│ └── VarNameCleaner.h
├── scripts/
│ ├── ASTImportTest.sh
│ ├── AntlrBatchTestRig.java
│ ├── Dockerfile
│ ├── Dockerfile_alpine
│ ├── build.sh
│ ├── build_emscripten.sh
│ ├── bytecodecompare/
│ │ ├── prepare_report.js
│ │ └── prepare_report.py
│ ├── check_style.sh
│ ├── check_symlinks.sh
│ ├── chk_shellscripts/
│ │ └── chk_shellscripts.sh
│ ├── ci/
│ │ ├── base64DecToArr.js
│ │ ├── build.sh
│ │ ├── build_emscripten.sh
│ │ ├── build_ossfuzz.sh
│ │ ├── build_win.sh
│ │ ├── docker_upgrade.sh
│ │ ├── install_and_check_minimum_requirements.sh
│ │ ├── mini-lz4.js
│ │ ├── notification/
│ │ │ ├── matrix_notification.sh
│ │ │ └── templates/
│ │ │ ├── build_fail.json
│ │ │ ├── build_release.json
│ │ │ └── build_success.json
│ │ ├── pack_soljson.sh
│ │ └── post_style_errors_on_github.sh
│ ├── codespell_ignored_lines.txt
│ ├── codespell_whitelist.txt
│ ├── common/
│ │ ├── cmdline_helpers.py
│ │ ├── git_helpers.py
│ │ └── rest_api_helpers.py
│ ├── common.sh
│ ├── common_cmdline.sh
│ ├── create_source_tarball.sh
│ ├── docker/
│ │ └── buildpack-deps/
│ │ ├── Dockerfile.emscripten
│ │ ├── Dockerfile.ubuntu.clang.ossfuzz
│ │ ├── Dockerfile.ubuntu2404
│ │ ├── Dockerfile.ubuntu2404.arm
│ │ ├── Dockerfile.ubuntu2404.clang
│ │ ├── README.md
│ │ └── emscripten.jam
│ ├── docker_deploy_manual.sh
│ ├── docs_version_pragma_check.sh
│ ├── download_ossfuzz_corpus.sh
│ ├── error_codes.py
│ ├── externalTests/
│ │ ├── benchmark_diff.py
│ │ ├── common.sh
│ │ ├── download_benchmarks.py
│ │ ├── merge_benchmarks.sh
│ │ ├── parse_eth_gas_report.py
│ │ ├── runners/
│ │ │ ├── base.py
│ │ │ └── foundry.py
│ │ ├── summarize_benchmarks.sh
│ │ ├── test_helpers.py
│ │ └── update_external_repos.sh
│ ├── extract_test_cases.py
│ ├── gas_diff_stats.py
│ ├── get_nightly_version.sh
│ ├── get_version.sh
│ ├── install_deps.ps1
│ ├── install_evmone.ps1
│ ├── isolate_tests.py
│ ├── isoltest.sh
│ ├── list_contributors.sh
│ ├── prerelease_suffix.sh
│ ├── pylint_all.py
│ ├── pylintrc
│ ├── regressions.py
│ ├── run_proofs.sh
│ ├── solc-bin/
│ │ ├── bytecode_reports_for_modified_binaries.sh
│ │ └── compare_bytecode_reports.sh
│ ├── soltest.sh
│ ├── splitSources.py
│ ├── test_antlr_grammar.sh
│ ├── test_emscripten.sh
│ ├── tests.sh
│ ├── uniqueErrors.sh
│ ├── update_bugs_by_version.py
│ ├── wasm-rebuild/
│ │ ├── README
│ │ ├── docker-scripts/
│ │ │ ├── genbytecode.sh
│ │ │ ├── isolate_tests.py
│ │ │ ├── patch.sh
│ │ │ ├── rebuild_current.sh
│ │ │ └── rebuild_tags.sh
│ │ └── rebuild.sh
│ └── yul_coverage.sh
├── snap/
│ └── snapcraft.yaml
├── solc/
│ ├── CMakeLists.txt
│ ├── CommandLineInterface.cpp
│ ├── CommandLineInterface.h
│ ├── CommandLineParser.cpp
│ ├── CommandLineParser.h
│ ├── Exceptions.h
│ └── main.cpp
├── test/
│ ├── .solhint.json
│ ├── .solhintignore
│ ├── CMakeLists.txt
│ ├── Common.cpp
│ ├── Common.h
│ ├── CommonSyntaxTest.cpp
│ ├── CommonSyntaxTest.h
│ ├── EVMHost.cpp
│ ├── EVMHost.h
│ ├── ExecutionFramework.cpp
│ ├── ExecutionFramework.h
│ ├── FilesystemUtils.cpp
│ ├── FilesystemUtils.h
│ ├── InteractiveTests.h
│ ├── Metadata.cpp
│ ├── Metadata.h
│ ├── TestCase.cpp
│ ├── TestCase.h
│ ├── TestCaseReader.cpp
│ ├── TestCaseReader.h
│ ├── benchmarks/
│ │ ├── OptimizorClub.sol
│ │ ├── chains.sol
│ │ ├── external-setup.sh
│ │ ├── external.sh
│ │ ├── local.sh
│ │ └── verifier.sol
│ ├── buglistTests.js
│ ├── buglist_test_vectors.md
│ ├── cmdlineTests/
│ │ ├── abi_via_ir/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── abiencoderv2_no_warning/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── asm_json/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── asm_json_import_sourcelist_with_null_elements/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── stdin
│ │ ├── asm_json_no_pretty_print/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── asm_json_subassembly_id_representation/
│ │ │ ├── args
│ │ │ ├── input.yul
│ │ │ └── output
│ │ ├── asm_json_yul_export_evm_asm_import/
│ │ │ ├── args
│ │ │ ├── output
│ │ │ └── stdin
│ │ ├── ast_compact_json_no_pretty_json/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── ast_compact_json_storage_layout_specifier/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── ast_compact_json_with_base_path/
│ │ │ ├── args
│ │ │ ├── c.sol
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── ast_ir/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── ast_json_import_wrong_evmVersion/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── combined_json_abi/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── combined_json_generated_sources/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── combined_json_no_pretty_print/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── combined_json_stop_after_parsing/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── combined_json_with_base_path/
│ │ │ ├── args
│ │ │ ├── c.sol
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── combined_json_with_devdoc/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── combined_json_with_userdoc/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── constant_optimizer_yul/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── debug_info_in_yul_and_evm_asm_print_all/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── debug_info_in_yul_and_evm_asm_print_all_and_none/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── debug_info_in_yul_and_evm_asm_print_location_only/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── debug_info_in_yul_and_evm_asm_print_none/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── debug_info_in_yul_and_evm_asm_print_snippet_only/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── debug_info_in_yul_snippet_escaping/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── dup_opt_peephole/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── eof_unavailable_before_osaka/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── error_codes/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── ethdebug_debuginfo_without_experimental_flag/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── ethdebug_eof_container_osaka/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── ethdebug_on_abstract/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── ethdebug_on_interface/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── events_in_abi/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── evm_version_byzantium/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── evm_version_constantinople/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── evmasm_difficulty_post_paris/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── evmasm_difficulty_pre_paris/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── evmasm_prevrandao_post_paris/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── evmasm_prevrandao_pre_paris/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── evmasm_transient_storage_inline_assembly/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── evmasm_transient_storage_inline_assembly_via_ir/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── evmasm_transient_storage_state_variable/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── evmasm_transient_storage_state_variable_via_ir/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── exp_base_literal/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── experimental_feature_without_experimental_flag/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── experimental_flag_with_standard_json/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.json
│ │ ├── function_debug_info/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── function_debug_info_via_yul/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── hashes/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── import_asm_json_all_valid_flags/
│ │ │ ├── args
│ │ │ ├── output
│ │ │ └── stdin
│ │ ├── import_asm_json_difficulty_prevrandao/
│ │ │ ├── args
│ │ │ ├── output
│ │ │ └── stdin
│ │ ├── import_asm_json_eof_unavailable_before_osaka/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── stdin
│ │ ├── import_asm_json_hex_subassembly_indices/
│ │ │ ├── args
│ │ │ ├── output
│ │ │ └── stdin
│ │ ├── import_asm_json_invalid_data_not_hex/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── stdin
│ │ ├── import_asm_json_invalid_data_not_object/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── stdin
│ │ ├── import_asm_json_invalid_jumptype_instruction/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── stdin
│ │ ├── import_asm_json_invalid_value/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── stdin
│ │ ├── import_asm_json_missing_subobject_indices/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── stdin
│ │ ├── import_asm_json_no_optimize/
│ │ │ ├── args
│ │ │ ├── output
│ │ │ └── stdin
│ │ ├── import_asm_json_no_value/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── stdin
│ │ ├── import_asm_json_non_unique_sources/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── stdin
│ │ ├── import_asm_json_optimize/
│ │ │ ├── args
│ │ │ ├── exit
│ │ │ ├── output
│ │ │ └── stdin
│ │ ├── import_asm_json_out_of_range_data_index/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── stdin
│ │ ├── import_asm_json_random_order_data_index/
│ │ │ ├── args
│ │ │ ├── output
│ │ │ └── stdin
│ │ ├── import_asm_json_unrecognized_field/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── stdin
│ │ ├── import_asm_json_untagged_jumpdest/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── stdin
│ │ ├── import_asm_json_verbatim/
│ │ │ ├── args
│ │ │ ├── output
│ │ │ └── stdin
│ │ ├── import_asm_json_yul_more_subobjects/
│ │ │ ├── args
│ │ │ ├── output
│ │ │ └── stdin
│ │ ├── import_asm_json_yul_subobjects/
│ │ │ ├── args
│ │ │ ├── output
│ │ │ └── stdin
│ │ ├── inheritance_repeated_definition_error/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── stdin
│ │ ├── inline_assembly_function_name_clash/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── ir_compiler_inheritance_nosubobjects/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── ir_compiler_subobjects/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── ir_optimized_transient_storage_value_type/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── ir_optimized_with_optimize/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── ir_subobject_order/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── ir_unoptimized_with_optimize/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── ir_unoptimized_with_optimize_via_ir/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── ir_with_assembly_no_memoryguard_creation/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── ir_with_assembly_no_memoryguard_runtime/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── keccak_optimization_deploy_code/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── keccak_optimization_low_runs/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── linker_mode_invalid_option_no_optimize_yul/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── exit
│ │ ├── linker_mode_invalid_option_optimize/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── exit
│ │ ├── linker_mode_invalid_option_optimize_runs/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── exit
│ │ ├── linker_mode_invalid_option_optimize_yul/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── exit
│ │ ├── linker_mode_invalid_option_yul_optimizations/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── exit
│ │ ├── linker_mode_output_selection_invalid/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── exit
│ │ ├── linking_qualified_library_name/
│ │ │ ├── args
│ │ │ ├── contract1.sol
│ │ │ ├── math.sol
│ │ │ └── output
│ │ ├── linking_solidity/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── linking_solidity_unresolved_references/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── linking_standard_solidity/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── linking_standard_solidity_quote_in_file_name/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── linking_standard_solidity_unresolved_references/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── linking_standard_yul/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── linking_standard_yul_quote_in_file_name/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── linking_standard_yul_unresolved_references/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── linking_strict_assembly/
│ │ │ ├── args
│ │ │ ├── input.yul
│ │ │ └── output
│ │ ├── linking_strict_assembly_duplicate_library_name/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.yul
│ │ ├── linking_strict_assembly_qualified_library_qualified_reference/
│ │ │ ├── args
│ │ │ ├── input.yul
│ │ │ └── output
│ │ ├── linking_strict_assembly_qualified_library_unqualified_reference/
│ │ │ ├── args
│ │ │ ├── input.yul
│ │ │ └── output
│ │ ├── linking_strict_assembly_same_library_name_different_files/
│ │ │ ├── args
│ │ │ ├── input.yul
│ │ │ └── output
│ │ ├── linking_strict_assembly_same_library_name_different_files_in_link_references/
│ │ │ ├── args
│ │ │ ├── input.yul
│ │ │ └── output
│ │ ├── linking_strict_assembly_unqualified_library_qualified_reference/
│ │ │ ├── args
│ │ │ ├── input.yul
│ │ │ └── output
│ │ ├── linking_strict_assembly_unqualified_library_unqualified_reference/
│ │ │ ├── args
│ │ │ ├── input.yul
│ │ │ └── output
│ │ ├── linking_strict_assembly_unresolved_references/
│ │ │ ├── args
│ │ │ ├── input.yul
│ │ │ └── output
│ │ ├── linking_unqualified_library_name/
│ │ │ ├── args
│ │ │ ├── contract1.sol
│ │ │ ├── contract2.sol
│ │ │ ├── error.sol
│ │ │ ├── math.sol
│ │ │ └── output
│ │ ├── mcopy_bytes_array_abi_decode/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── mcopy_bytes_array_returned_from_function/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── mcopy_string_literal_returned_from_function/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── memoryguard_shadowing_by_inline_assembly_identifiers/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── message_format/
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── message_format_utf8/
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── metadata/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── metadata_experimental/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── metadata_via_ssa_cfg/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── model_checker_bmc_loop_iterations/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_bmc_loop_iterations_invalid_arg/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── model_checker_bmc_loop_iterations_no_argument/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── model_checker_contracts_all/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_contracts_all_explicit/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_contracts_contract_missing/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── model_checker_contracts_empty_contract/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── model_checker_contracts_empty_source/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── model_checker_contracts_inexistent_contract/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_contracts_inexistent_source/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_contracts_one_contract_missing/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── model_checker_contracts_only_one/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_contracts_source_missing/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── model_checker_divModSlacks_default_all/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_divModSlacks_default_bmc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_divModSlacks_default_chc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_divModSlacks_false_all/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_divModSlacks_false_bmc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_divModSlacks_false_chc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_engine_all/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_engine_bmc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_engine_chc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_engine_none/
│ │ │ ├── args
│ │ │ └── input.sol
│ │ ├── model_checker_ext_calls_empty_arg/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── model_checker_ext_calls_trusted_chc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_ext_calls_untrusted_chc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_ext_calls_wrong_arg/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── model_checker_invariants_all/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_invariants_contract/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_invariants_contract_eld/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_invariants_contract_reentrancy/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_invariants_reentrancy/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_invariants_wrong/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── model_checker_print_query_all/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_print_query_bmc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_print_query_chc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_show_proved_safe_default_all_engines/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_show_proved_safe_default_bmc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_show_proved_safe_default_chc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_show_proved_safe_true_all_engines/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_show_proved_safe_true_bmc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_show_proved_safe_true_chc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_show_unproved_default_all_engines/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_show_unproved_default_bmc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_show_unproved_default_chc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_show_unproved_true_all_engines/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_show_unproved_true_bmc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_show_unproved_true_chc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_show_unsupported_default_all_engines/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_show_unsupported_default_bmc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_show_unsupported_default_chc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_show_unsupported_true_all_engines/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_show_unsupported_true_bmc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_show_unsupported_true_chc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_solvers_cvc5/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_solvers_cvc5_eld/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_solvers_eld/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_solvers_smtlib2/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_solvers_wrong/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── model_checker_solvers_wrong2/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── model_checker_solvers_z3/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_solvers_z3_implicit/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_solvers_z3_smtlib2/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_targets_all_all_engines/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_targets_all_bmc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_targets_all_chc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_targets_assert_bmc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_targets_assert_chc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_targets_balance_bmc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_targets_balance_chc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_targets_constant_condition_bmc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_targets_constant_condition_chc/
│ │ │ ├── args
│ │ │ └── input.sol
│ │ ├── model_checker_targets_default_all_engines/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_targets_default_bmc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_targets_default_chc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_targets_div_by_zero_bmc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_targets_div_by_zero_chc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_targets_error/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── model_checker_targets_out_of_bounds_bmc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_targets_out_of_bounds_chc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_targets_overflow_bmc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_targets_overflow_chc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_targets_pop_empty_bmc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_targets_pop_empty_chc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_targets_underflow_bmc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_targets_underflow_chc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_targets_underflow_overflow_assert_bmc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_targets_underflow_overflow_assert_chc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_targets_underflow_overflow_bmc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_targets_underflow_overflow_chc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_timeout_all/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_timeout_bmc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── model_checker_timeout_chc/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── input.sol
│ │ ├── name_simplifier/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── no_cbor_metadata/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── no_cbor_metadata_with_metadata_hash/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── no_contract_combined_json/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── no_import_callback/
│ │ │ ├── args
│ │ │ ├── contract_1.sol
│ │ │ ├── contract_2.sol
│ │ │ ├── err
│ │ │ └── exit
│ │ ├── object_compiler/
│ │ │ ├── args
│ │ │ ├── input.yul
│ │ │ └── output
│ │ ├── optimize_full_storage_write/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── optimizer_BlockDeDuplicator/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── optimizer_array_sload/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── optimizer_enabled_invalid_yul_optimizer_enabled_and_disabled/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── optimizer_inliner_add/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── optimizer_inliner_call_from_constructor/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── optimizer_inliner_dynamic_reference/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── optimizer_inliner_dynamic_reference_constructor/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── optimizer_inliner_inc/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── optimizer_inliner_multireturn/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── optimizer_user_yul/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── pretty_json_indent_only/
│ │ │ ├── args
│ │ │ ├── input.json
│ │ │ ├── no-pretty-print
│ │ │ ├── output
│ │ │ └── output.json
│ │ ├── pretty_json_standard/
│ │ │ ├── args
│ │ │ ├── input.json
│ │ │ ├── no-pretty-print
│ │ │ └── output.json
│ │ ├── pretty_json_standard_indent/
│ │ │ ├── args
│ │ │ ├── input.json
│ │ │ ├── no-pretty-print
│ │ │ ├── output
│ │ │ └── output.json
│ │ ├── require_overload/
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── require_with_error_ir/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── require_with_string_ir/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── revert_strings/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── stack_too_deep_from_code_transform/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── standard_cli_import_ast_storage_layout_specifier_missing_expression/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── stdin
│ │ ├── standard_cli_output_selection_invalid/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.json
│ │ ├── standard_debug_info_in_evm_asm_via_ir_location/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_debug_info_in_yul_and_evm_asm_print_all/
│ │ │ ├── args
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_debug_info_in_yul_and_evm_asm_print_location_only/
│ │ │ ├── args
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_debug_info_in_yul_and_evm_asm_print_none/
│ │ │ ├── args
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_debug_info_in_yul_and_evm_asm_print_snippet_only/
│ │ │ ├── args
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_debug_info_in_yul_location/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_default_success/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_empty_file_name/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_eof_no_experimental/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_eof_unavailable_before_osaka/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_evm_version_byzantium/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_evm_version_constantinople/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_file_not_found/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ └── exit
│ │ ├── standard_function_debug_info/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_generatedSources/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_immutable_references/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_import_asm_json/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_import_asm_json_eof_unavailable_before_osaka/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_import_asm_json_immutable_references/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_import_asm_json_invalid_input_array/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_import_asm_json_invalid_key_inside_source/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_import_asm_json_invalid_key_other_source/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_import_asm_json_invalid_no_source/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_import_asm_json_invalid_opcode/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_import_asm_json_invalid_two_sources/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_import_asm_json_link_references/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_import_asm_json_multiple_keys_inside_source/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_import_asm_json_no_optimize/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_import_asm_json_no_output_selection/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_import_asm_json_optimize/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_import_ast/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_import_ast_no_experimental/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_import_ast_select_bytecode/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_import_with_comments/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_import_with_comments_simple/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_import_with_invalid_utf8/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_invalid_option_no_optimize_yul/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.json
│ │ ├── standard_invalid_option_optimize/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.json
│ │ ├── standard_invalid_option_optimize_runs/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.json
│ │ ├── standard_invalid_option_optimize_yul/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.json
│ │ ├── standard_invalid_option_yul_optimizations/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.json
│ │ ├── standard_irOptimized_ast_requested/
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_irOptimized_requested/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_ir_ast_requested/
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_ir_requested/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_ir_unoptimized_with_optimize/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_ir_unoptimized_with_optimize_via_ir/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_json_no_pretty_print/
│ │ │ ├── input.json
│ │ │ ├── no-pretty-print
│ │ │ └── output.json
│ │ ├── standard_metadata/
│ │ │ ├── args
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_metadata_experimental/
│ │ │ ├── args
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_method_identifiers_requested/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_method_identifiers_requested_empty/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_missing_key_useLiteralContent/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_bmc_loop_iterations/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_bmc_loop_iterations_invalid_arg/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_contracts_all/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_contracts_all_explicit/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_contracts_empty_array/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_contracts_empty_contract/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_contracts_empty_source/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_contracts_inexistent_contract/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_contracts_multi_source/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_contracts_only_one/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_contracts_wrong_key_sources/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_contracts_wrong_key_sources_2/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_contracts_wrong_key_sources_3/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_contracts_wrong_key_sources_4/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_divModSlacks_default_all/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_divModSlacks_default_bmc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_divModSlacks_default_chc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_divModSlacks_false_all/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_divModSlacks_false_bmc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_divModSlacks_false_chc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_divModSlacks_wrong/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_engine_all/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_engine_bmc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_engine_chc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_engine_none/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_ext_calls_empty_arg/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_ext_calls_trusted_chc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_ext_calls_untrusted_chc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_ext_calls_wrong_arg_1/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_ext_calls_wrong_arg_2/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_invariants_contract/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_invariants_contract_reentrancy/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_invariants_reentrancy/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_invariants_wrong_key/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_invariants_wrong_type/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_invariants_wrong_type_2/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_print_query_all/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_print_query_bmc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_print_query_chc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_print_query_invalid_arg/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_show_proved_safe_default_all_engines/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_show_proved_safe_default_bmc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_show_proved_safe_default_chc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_show_proved_safe_false_all_engines/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_show_proved_safe_false_bmc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_show_proved_safe_false_chc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_show_proved_safe_true_all_engines/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_show_proved_safe_true_bmc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_show_proved_safe_true_chc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_show_proved_safe_wrong/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_show_unproved_default_all_engines/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_show_unproved_false_all_engines/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_show_unproved_false_bmc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_show_unproved_false_chc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_show_unproved_true_all_engines/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_show_unproved_true_bmc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_show_unproved_true_chc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_show_unproved_wrong/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_show_unsupported_default_all_engines/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_show_unsupported_default_bmc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_show_unsupported_default_chc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_show_unsupported_false_all_engines/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_show_unsupported_false_bmc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_show_unsupported_false_chc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_show_unsupported_true_all_engines/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_show_unsupported_true_bmc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_show_unsupported_true_chc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_show_unsupported_wrong/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_solvers_none/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_solvers_smtlib2/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_solvers_z3/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_solvers_z3_smtlib2/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_targets_assert_bmc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_targets_assert_chc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_targets_balance_bmc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_targets_balance_chc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_targets_constantCondition_bmc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_targets_constantCondition_chc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_targets_default_all_engines/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_targets_default_bmc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_targets_default_chc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_targets_div_by_zero_bmc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_targets_div_by_zero_chc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_targets_empty_array/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_targets_out_of_bounds_bmc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_targets_out_of_bounds_chc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_targets_overflow_bmc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_targets_overflow_chc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_targets_pop_empty_bmc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_targets_pop_empty_chc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_targets_underflow_bmc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_targets_underflow_chc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_targets_underflow_overflow_assert_bmc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_targets_underflow_overflow_assert_chc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_targets_underflow_overflow_bmc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_targets_underflow_overflow_chc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_targets_wrong_target_types/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_targets_wrong_target_types_2/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_targets_wrong_targets/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_timeout_all/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_timeout_bmc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_timeout_chc/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_timeout_wrong_key/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_model_checker_timeout_wrong_value/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_no_append_cbor/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_no_append_cbor_with_metadata_hash/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_no_import_callback/
│ │ │ ├── B.sol
│ │ │ ├── args
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_non_utf8_filename/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_non_utf8_filename2/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_only_ast_requested/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_optimizer_generatedSources/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_optimizer_invalid_detail_type/
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_optimizer_invalid_details/
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_optimizer_no_yul/
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_optimizer_yul/
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_optimizer_yulDetails/
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_optimizer_yulDetails_no_object/
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_optimizer_yulDetails_optimiserSteps/
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_optimizer_yulDetails_optimiserSteps_empty_sequence_metadata/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_optimizer_yulDetails_optimiserSteps_empty_sequence_whitespaces_metadata/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_optimizer_yulDetails_optimiserSteps_invalid_abbreviation/
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_optimizer_yulDetails_optimiserSteps_invalid_nested_delimiter/
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_optimizer_yulDetails_optimiserSteps_mutliple_delimiters/
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_optimizer_yulDetails_optimiserSteps_nested_brackets/
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_optimizer_yulDetails_optimiserSteps_nesting_too_deep/
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_optimizer_yulDetails_optimiserSteps_no_yul/
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_optimizer_yulDetails_optimiserSteps_no_yul_empty_string/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_optimizer_yulDetails_optimiserSteps_no_yul_whitespaces/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_optimizer_yulDetails_optimiserSteps_type/
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_optimizer_yulDetails_optimiserSteps_unbalanced_closing_bracket/
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_optimizer_yulDetails_optimiserSteps_unbalanced_opening_bracket/
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_optimizer_yulDetails_optimiserSteps_with_cleanup_sequence/
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_optimizer_yulDetails_optimiserSteps_with_empty_cleanup_sequence/
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_optimizer_yulDetails_optimiserSteps_with_empty_optimisation_sequence/
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_optimizer_yulDetails_optimiserSteps_with_empty_sequence/
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_optimizer_yulDetails_optimiserSteps_with_empty_sequence_no_yul/
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_optimizer_yulDetails_optimiserSteps_with_whitespace_newline_sequence_no_yul/
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_optimizer_yulDetails_without_yul/
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_output_debuginfo_ethdebug_compatible/
│ │ │ ├── input.json
│ │ │ ├── output.json
│ │ │ └── strip-ethdebug
│ │ ├── standard_output_debuginfo_ethdebug_incompatible/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_output_debuginfo_ethdebug_with_interfaces_and_abstracts/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_output_selection_all_blank/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_output_selection_all_sources_blank_contract_named_blank/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_output_selection_all_sources_single_contract_multiple_matches/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_output_selection_all_sources_single_contract_single_match/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_output_selection_all_sources_star_contract_named_star/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_output_selection_all_star/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_output_selection_duplicate_matching_source_and_contract_selectors/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_output_selection_empty/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_output_selection_ethdebug_bytecode_and_deployedbytecode_ir/
│ │ │ ├── input.json
│ │ │ ├── output.json
│ │ │ └── strip-ethdebug
│ │ ├── standard_output_selection_ethdebug_bytecode_and_deployedbytecode_iroptimized/
│ │ │ ├── input.json
│ │ │ ├── output.json
│ │ │ └── strip-ethdebug
│ │ ├── standard_output_selection_ethdebug_bytecode_and_deployedbytecode_optimizer_ir/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_output_selection_ethdebug_bytecode_and_deployedbytecode_optimizer_iroptimized/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_output_selection_ethdebug_bytecode_ir/
│ │ │ ├── input.json
│ │ │ ├── output.json
│ │ │ └── strip-ethdebug
│ │ ├── standard_output_selection_ethdebug_bytecode_iroptimized/
│ │ │ ├── input.json
│ │ │ ├── output.json
│ │ │ └── strip-ethdebug
│ │ ├── standard_output_selection_ethdebug_deployedbytecode_ir/
│ │ │ ├── input.json
│ │ │ ├── output.json
│ │ │ └── strip-ethdebug
│ │ ├── standard_output_selection_ethdebug_deployedbytecode_iroptimized/
│ │ │ ├── input.json
│ │ │ ├── output.json
│ │ │ └── strip-ethdebug
│ │ ├── standard_output_selection_ethdebug_ir/
│ │ │ ├── input.json
│ │ │ ├── output.json
│ │ │ └── strip-ethdebug
│ │ ├── standard_output_selection_ethdebug_iroptimized/
│ │ │ ├── input.json
│ │ │ ├── output.json
│ │ │ └── strip-ethdebug
│ │ ├── standard_output_selection_ethdebug_no_experimental/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_output_selection_ethdebug_no_viair/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_output_selection_ethdebug_optimize_ir/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_output_selection_ethdebug_optimize_iroptimized/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_output_selection_ir_ast_no_experimental/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_output_selection_multiple_matching_source_and_contract_selectors/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_output_selection_multiple_matching_source_and_contract_selectors_full_pipeline/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_output_selection_no_output_selected/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_output_selection_single_all/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_output_selection_single_source_single_contract_multiple_matches/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_output_selection_single_source_single_contract_single_match/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_output_selection_unrecognized_output/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_output_selection_unrecognized_source_and_contract_selectors/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_output_selection_wrong_type/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_output_selection_wrong_type_contract/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_output_selection_wrong_type_output/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_output_selection_wrong_type_source/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_output_selection_yul_cfg_json_no_experimental/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_outputs_on_analysis_error_fatal/
│ │ │ ├── args
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_outputs_on_analysis_error_fatal_after_current_step/
│ │ │ ├── args
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_outputs_on_analysis_error_non_fatal/
│ │ │ ├── args
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_outputs_on_compilation_error/
│ │ │ ├── args
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_outputs_on_parsing_error/
│ │ │ ├── args
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_parsing_import_absolute_paths/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_raw_utf16_filename/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_secondary_source_location/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_stack_too_deep_from_code_transform/
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_stop_after_parsing_ast_requested/
│ │ │ ├── args
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_stop_after_parsing_bytecode_requested/
│ │ │ ├── args
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_stop_after_parsing_non_binary_output_requested/
│ │ │ ├── args
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_undeployable_contract_all_outputs/
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_urls_existing_and_missing/
│ │ │ ├── contract.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_urls_missing/
│ │ │ ├── contract.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_via_ssa_cfg_ethdebug/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_via_ssa_cfg_no_experimental/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_via_ssa_cfg_via_ir_false/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_viair_requested/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_wrong_key_auxiliary_input/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_wrong_key_metadata/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_wrong_key_optimizer/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_wrong_key_root/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_wrong_key_settings/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_wrong_key_source/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_wrong_type_auxiliary_input/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_wrong_type_auxiliary_input_smtlib2responses/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_wrong_type_auxiliary_input_smtlib2responses_member/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_wrong_type_metadata/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_wrong_type_optimizer/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_wrong_type_remappings/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_wrong_type_remappings_entry/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_wrong_type_root/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_wrong_type_settings/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_wrong_type_source/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_wrong_type_sources/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_wrong_type_useLiteralContent/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_yul/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_yul_cfg_json_export/
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_yul_code_generation_error/
│ │ │ ├── args
│ │ │ ├── in.yul
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_yul_debug_info_ethdebug_compatible_output/
│ │ │ ├── args
│ │ │ ├── in.yul
│ │ │ ├── input.json
│ │ │ ├── output.json
│ │ │ └── strip-ethdebug
│ │ ├── standard_yul_debug_info_ethdebug_compatible_output_eof/
│ │ │ ├── args
│ │ │ ├── in.yul
│ │ │ ├── input.json
│ │ │ ├── output.json
│ │ │ └── strip-ethdebug
│ │ ├── standard_yul_debug_info_ethdebug_incompatible_output/
│ │ │ ├── args
│ │ │ ├── in.yul
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_yul_debug_info_ethdebug_verbatim_unimplemented/
│ │ │ ├── args
│ │ │ ├── in.yul
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_yul_debug_info_print_all/
│ │ │ ├── args
│ │ │ ├── in.yul
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_yul_debug_info_print_location_only/
│ │ │ ├── args
│ │ │ ├── in.yul
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_yul_debug_info_print_none/
│ │ │ ├── args
│ │ │ ├── in.yul
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_yul_debug_info_print_snippet_only/
│ │ │ ├── args
│ │ │ ├── in.yul
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_yul_embedded_object_name/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_yul_eof_unavailable_before_osaka/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_yul_ethdebug_assign_immutable/
│ │ │ ├── args
│ │ │ ├── in.yul
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_yul_ethdebug_bytecode_ir/
│ │ │ ├── args
│ │ │ ├── in.yul
│ │ │ ├── input.json
│ │ │ ├── output.json
│ │ │ └── strip-ethdebug
│ │ ├── standard_yul_ethdebug_bytecode_iroptimized/
│ │ │ ├── args
│ │ │ ├── in.yul
│ │ │ ├── input.json
│ │ │ ├── output.json
│ │ │ └── strip-ethdebug
│ │ ├── standard_yul_ethdebug_deployed_bytecode/
│ │ │ ├── args
│ │ │ ├── in.yul
│ │ │ ├── input.json
│ │ │ ├── output.json
│ │ │ └── strip-ethdebug
│ │ ├── standard_yul_ethdebug_deployed_bytecode_and_bytecode/
│ │ │ ├── args
│ │ │ ├── in.yul
│ │ │ ├── input.json
│ │ │ ├── output.json
│ │ │ └── strip-ethdebug
│ │ ├── standard_yul_ethdebug_eof/
│ │ │ ├── args
│ │ │ ├── in.yul
│ │ │ ├── input.json
│ │ │ ├── output.json
│ │ │ └── strip-ethdebug
│ │ ├── standard_yul_ethdebug_ir/
│ │ │ ├── args
│ │ │ ├── in.yul
│ │ │ ├── input.json
│ │ │ ├── output.json
│ │ │ └── strip-ethdebug
│ │ ├── standard_yul_ethdebug_iroptimize/
│ │ │ ├── args
│ │ │ ├── in.yul
│ │ │ ├── input.json
│ │ │ ├── output.json
│ │ │ └── strip-ethdebug
│ │ ├── standard_yul_ethdebug_no_experimental/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_yul_ethdebug_optimize_ir/
│ │ │ ├── args
│ │ │ ├── in.yul
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_yul_ethdebug_optimize_iroptimized/
│ │ │ ├── args
│ │ │ ├── in.yul
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_yul_evm_version_byzantium/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_yul_evm_version_constantinople/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_yul_immutable_references/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_yul_invalid_object_name/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_yul_ir_ast_no_experimental/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_yul_multiple_files/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_yul_multiple_files_selected/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_yul_object/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_yul_object_invalid_sub/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_yul_object_name/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_yul_optimiserSteps/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_yul_optimized/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_yul_output_warning/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_yul_single_file_via_urls/
│ │ │ ├── args
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_yul_stack_opt/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── standard_yul_stack_opt_disabled/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── stdin/
│ │ │ ├── args
│ │ │ └── stdin
│ │ ├── stop_after_parsing_abi/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── stop_after_parsing_ast/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── storage_layout_already_defined_in_ancestor/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── stdin
│ │ ├── storage_layout_bytes/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── storage_layout_dyn_array/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── storage_layout_many/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── storage_layout_mapping/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── storage_layout_smoke/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── storage_layout_smoke_two_contracts/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── storage_layout_specifier_repeated_definition_error/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── stdin
│ │ ├── storage_layout_specifier_smoke/
│ │ │ ├── args
│ │ │ ├── output
│ │ │ └── stdin
│ │ ├── storage_layout_specifier_smoke_ir_codegen/
│ │ │ ├── args
│ │ │ ├── output
│ │ │ └── stdin
│ │ ├── storage_layout_specifier_storage_layout_output/
│ │ │ ├── args
│ │ │ ├── output
│ │ │ └── stdin
│ │ ├── storage_layout_string/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── storage_layout_struct/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── storage_layout_struct_packed/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── storage_layout_transient_value_types/
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── storage_layout_user_defined/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── storage_layout_user_defined_no_pretty_print/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── storage_layout_value_types/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── storage_layout_value_types_packed/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── storage_transient_storage_collision_ir_output/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── strict_asm_asm_json_arbitrary_source_index/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── stdin
│ │ ├── strict_asm_asm_json_subobjects_with_debug/
│ │ │ ├── args
│ │ │ ├── output
│ │ │ └── stdin
│ │ ├── strict_asm_asm_json_with_debug_info_annotations/
│ │ │ ├── args
│ │ │ ├── output
│ │ │ └── stdin
│ │ ├── strict_asm_asm_json_without_debug_info_annotations/
│ │ │ ├── args
│ │ │ ├── output
│ │ │ └── stdin
│ │ ├── strict_asm_asm_json_yul_verbatim/
│ │ │ ├── args
│ │ │ ├── output
│ │ │ └── stdin
│ │ ├── strict_asm_ast_compact_json/
│ │ │ ├── args
│ │ │ ├── input.yul
│ │ │ └── output
│ │ ├── strict_asm_code_generation_error/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.yul
│ │ ├── strict_asm_debug_info_print_all/
│ │ │ ├── args
│ │ │ ├── input.yul
│ │ │ └── output
│ │ ├── strict_asm_debug_info_print_location_only/
│ │ │ ├── args
│ │ │ ├── input.yul
│ │ │ └── output
│ │ ├── strict_asm_debug_info_print_none/
│ │ │ ├── args
│ │ │ ├── input.yul
│ │ │ └── output
│ │ ├── strict_asm_debug_info_print_snippet_only/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.yul
│ │ ├── strict_asm_eof_container_osaka/
│ │ │ ├── args
│ │ │ ├── input.yul
│ │ │ └── output
│ │ ├── strict_asm_eof_dataloadn_osaka/
│ │ │ ├── args
│ │ │ ├── input.yul
│ │ │ └── output
│ │ ├── strict_asm_eof_unavailable_before_osaka/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.yul
│ │ ├── strict_asm_evm_version_byzantium/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── input.yul
│ │ │ └── output
│ │ ├── strict_asm_evm_version_constantinople/
│ │ │ ├── args
│ │ │ ├── input.yul
│ │ │ └── output
│ │ ├── strict_asm_invalid_option_output_dir/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.yul
│ │ ├── strict_asm_jump/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.yul
│ │ ├── strict_asm_msize_with_optimizer/
│ │ │ ├── args
│ │ │ ├── input.yul
│ │ │ └── output
│ │ ├── strict_asm_msize_without_optimizer/
│ │ │ ├── args
│ │ │ ├── input.yul
│ │ │ └── output
│ │ ├── strict_asm_only_cr/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.yul
│ │ ├── strict_asm_optimizer_invalid_yul_optimizer_enabled_and_disabled/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.yul
│ │ ├── strict_asm_optimizer_steps/
│ │ │ ├── args
│ │ │ ├── input.yul
│ │ │ └── output
│ │ ├── strict_asm_options_in_non_asm_mode/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── strict_asm_output_selection_asm_only/
│ │ │ ├── args
│ │ │ ├── input.yul
│ │ │ └── output
│ │ ├── strict_asm_output_selection_bin_only/
│ │ │ ├── args
│ │ │ ├── input.yul
│ │ │ └── output
│ │ ├── strict_asm_output_selection_invalid/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.yul
│ │ ├── strict_asm_output_selection_ir_optimized_only/
│ │ │ ├── args
│ │ │ ├── input.yul
│ │ │ └── output
│ │ ├── strict_asm_warning/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── input.yul
│ │ │ └── output
│ │ ├── strict_asm_warning_and_error_optimize/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.yul
│ │ ├── strict_asm_warning_optimize/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── input.yul
│ │ │ └── output
│ │ ├── strict_asm_warning_optimize_unreachable/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── input.yul
│ │ │ └── output
│ │ ├── strict_asm_yul_cfg_json_export/
│ │ │ ├── args
│ │ │ ├── input.yul
│ │ │ └── output
│ │ ├── structured_documentation_source_location/
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── too_long_line/
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── too_long_line_both_sides_short/
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── too_long_line_edge_in/
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── too_long_line_edge_out/
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── too_long_line_left_short/
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── too_long_line_multiline/
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── too_long_line_right_short/
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── transient_storage_layout/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── transient_storage_layout_smoke_empty/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── transient_storage_layout_smoke_two_contracts/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── transient_storage_layout_value_types/
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── transient_storage_layout_value_types_interleaved_with_storage/
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── transient_storage_layout_value_types_packed/
│ │ │ ├── in.sol
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── undeployable_contract_empty_outputs/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── via_ssa_cfg_ethdebug/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── via_ssa_cfg_without_experimental/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── viair_abicoder_v1/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── viair_msize_without_optimizer/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── viair_subobject_optimization/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── viair_subobjects/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── yul_cfg_json_export/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── yul_function_name_clashes/
│ │ │ ├── args
│ │ │ ├── input.yul
│ │ │ └── output
│ │ ├── yul_function_name_clashes_different_params/
│ │ │ ├── args
│ │ │ ├── input.yul
│ │ │ └── output
│ │ ├── yul_optimize_runs/
│ │ │ ├── args
│ │ │ ├── input.yul
│ │ │ └── output
│ │ ├── yul_optimizer_disabled_sequence_empty/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── yul_optimizer_erc7201_literal_comptime_evaluation/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── yul_optimizer_erc7201_param_calldata/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── yul_optimizer_erc7201_param_memory/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── yul_optimizer_erc7201_param_storage/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── yul_optimizer_steps/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── yul_optimizer_steps_disabled/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── yul_optimizer_steps_invalid_abbreviation/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── yul_optimizer_steps_invalid_substitution_in_expression_simplifier/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── yul_optimizer_steps_nested_brackets/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── yul_optimizer_steps_nesting_too_deep/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── yul_optimizer_steps_short_sequence/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── yul_optimizer_steps_unbalanced_closing_bracket/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── yul_optimizer_steps_unbalanced_opening_bracket/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── exit
│ │ │ └── input.sol
│ │ ├── yul_optimizer_steps_with_empty_cleanup_sequence/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── yul_optimizer_steps_with_empty_optimization_sequence/
│ │ │ ├── args
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── yul_optimizer_steps_without_optimize_empty_sequence/
│ │ │ ├── args
│ │ │ ├── err
│ │ │ ├── input.sol
│ │ │ └── output
│ │ ├── yul_string_format_ascii/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── yul_string_format_ascii_bytes32/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── yul_string_format_ascii_bytes32_from_number/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── yul_string_format_ascii_long/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── yul_string_format_hex/
│ │ │ ├── input.json
│ │ │ └── output.json
│ │ ├── yul_verbatim/
│ │ │ ├── args
│ │ │ ├── input.yul
│ │ │ └── output
│ │ ├── yul_verbatim_msize/
│ │ │ ├── args
│ │ │ ├── input.yul
│ │ │ └── output
│ │ ├── ~assembler_modes/
│ │ │ └── test.sh
│ │ ├── ~ast_export_with_stop_after_parsing/
│ │ │ └── test.sh
│ │ ├── ~ast_import_export/
│ │ │ └── test.sh
│ │ ├── ~bytecode_equivalence_independent_of_import_discovery_order/
│ │ │ ├── inputs.sol
│ │ │ └── test.py
│ │ ├── ~bytecode_equivalence_with_unused_contracts/
│ │ │ ├── inputs.sol
│ │ │ └── test.py
│ │ ├── ~cli_and_standard_json_equivalence/
│ │ │ └── test.sh
│ │ ├── ~compilation_tests/
│ │ │ └── test.sh
│ │ ├── ~deduplicator-verbatim-bug/
│ │ │ ├── test.sh
│ │ │ └── verbatim_inside_identical_blocks.yul
│ │ ├── ~documentation_examples/
│ │ │ └── test.sh
│ │ ├── ~evmasm_import_export/
│ │ │ └── test.sh
│ │ ├── ~library_checksum/
│ │ │ └── test.sh
│ │ ├── ~library_long_names/
│ │ │ └── test.sh
│ │ ├── ~linking/
│ │ │ └── test.sh
│ │ ├── ~name_dependent_cse_bug/
│ │ │ ├── cse_bug.yul
│ │ │ └── test.sh
│ │ ├── ~overwriting_files/
│ │ │ └── test.sh
│ │ ├── ~soljson_via_fuzzer/
│ │ │ └── test.sh
│ │ ├── ~standard_input/
│ │ │ └── test.sh
│ │ ├── ~unknown_options/
│ │ │ └── test.sh
│ │ ├── ~update_bugs_by_version/
│ │ │ └── test.sh
│ │ └── ~via_ir_equivalence/
│ │ └── test.sh
│ ├── cmdlineTests.sh
│ ├── compilationTests/
│ │ ├── MultiSigWallet/
│ │ │ ├── Factory.sol
│ │ │ ├── LICENSE
│ │ │ ├── MultiSigWallet.sol
│ │ │ ├── MultiSigWalletFactory.sol
│ │ │ ├── MultiSigWalletWithDailyLimit.sol
│ │ │ ├── MultiSigWalletWithDailyLimitFactory.sol
│ │ │ ├── README.md
│ │ │ └── TestToken.sol
│ │ ├── README.md
│ │ ├── corion/
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── announcementTypes.sol
│ │ │ ├── ico.sol
│ │ │ ├── module.sol
│ │ │ ├── moduleHandler.sol
│ │ │ ├── multiOwner.sol
│ │ │ ├── owned.sol
│ │ │ ├── premium.sol
│ │ │ ├── provider.sol
│ │ │ ├── publisher.sol
│ │ │ ├── safeMath.sol
│ │ │ ├── schelling.sol
│ │ │ ├── token.sol
│ │ │ └── tokenDB.sol
│ │ ├── gnosis/
│ │ │ ├── Events/
│ │ │ │ ├── CategoricalEvent.sol
│ │ │ │ ├── Event.sol
│ │ │ │ ├── EventFactory.sol
│ │ │ │ └── ScalarEvent.sol
│ │ │ ├── LICENSE
│ │ │ ├── MarketMakers/
│ │ │ │ ├── LMSRMarketMaker.sol
│ │ │ │ └── MarketMaker.sol
│ │ │ ├── Markets/
│ │ │ │ ├── Campaign.sol
│ │ │ │ ├── CampaignFactory.sol
│ │ │ │ ├── Market.sol
│ │ │ │ ├── MarketFactory.sol
│ │ │ │ ├── StandardMarket.sol
│ │ │ │ └── StandardMarketFactory.sol
│ │ │ ├── Migrations.sol
│ │ │ ├── Oracles/
│ │ │ │ ├── CentralizedOracle.sol
│ │ │ │ ├── CentralizedOracleFactory.sol
│ │ │ │ ├── DifficultyOracle.sol
│ │ │ │ ├── DifficultyOracleFactory.sol
│ │ │ │ ├── FutarchyOracle.sol
│ │ │ │ ├── FutarchyOracleFactory.sol
│ │ │ │ ├── MajorityOracle.sol
│ │ │ │ ├── MajorityOracleFactory.sol
│ │ │ │ ├── Oracle.sol
│ │ │ │ ├── SignedMessageOracle.sol
│ │ │ │ ├── SignedMessageOracleFactory.sol
│ │ │ │ ├── UltimateOracle.sol
│ │ │ │ └── UltimateOracleFactory.sol
│ │ │ ├── README.md
│ │ │ ├── Tokens/
│ │ │ │ ├── EtherToken.sol
│ │ │ │ ├── OutcomeToken.sol
│ │ │ │ ├── StandardToken.sol
│ │ │ │ └── Token.sol
│ │ │ └── Utils/
│ │ │ └── Math.sol
│ │ └── milestonetracker/
│ │ ├── LICENSE
│ │ ├── MilestoneTracker.sol
│ │ ├── README.md
│ │ └── RLP.sol
│ ├── contracts/
│ │ ├── AuctionRegistrar.cpp
│ │ ├── ContractInterface.h
│ │ └── Wallet.cpp
│ ├── docsCodeStyle.sh
│ ├── ethdebugSchemaTests/
│ │ ├── conftest.py
│ │ ├── input_file.json
│ │ ├── input_file_eof.json
│ │ └── test_ethdebug_schema_conformity.py
│ ├── evmc/
│ │ ├── CMakeLists.txt
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── bytes.hpp
│ │ ├── evmc.h
│ │ ├── evmc.hpp
│ │ ├── filter_iterator.hpp
│ │ ├── helpers.h
│ │ ├── hex.hpp
│ │ ├── loader.c
│ │ ├── loader.h
│ │ ├── mocked_host.hpp
│ │ └── utils.h
│ ├── externalTests/
│ │ ├── README.md
│ │ ├── bleeps.sh
│ │ ├── brink.sh
│ │ ├── chainlink.sh
│ │ ├── colony.sh
│ │ ├── elementfi.sh
│ │ ├── ens.sh
│ │ ├── euler.sh
│ │ ├── gnosis.sh
│ │ ├── gp2.sh
│ │ ├── pool-together.sh
│ │ ├── prb-math.py
│ │ ├── solc-js/
│ │ │ ├── DAO/
│ │ │ │ ├── DAO.sol
│ │ │ │ ├── ManagedAccount.sol
│ │ │ │ ├── Token.sol
│ │ │ │ └── TokenCreation.sol
│ │ │ ├── asm-json.js
│ │ │ ├── determinism.js
│ │ │ └── solc-js.sh
│ │ ├── trident.sh
│ │ ├── uniswap.sh
│ │ ├── yield-liquidator.sh
│ │ └── zeppelin.sh
│ ├── external_tests.py
│ ├── formal/
│ │ ├── README.md
│ │ ├── and_distributed_over_shl.py
│ │ ├── byte_big.py
│ │ ├── byte_equivalence.py
│ │ ├── checked_int_add.py
│ │ ├── checked_int_div.py
│ │ ├── checked_int_mul_12.py
│ │ ├── checked_int_sub.py
│ │ ├── checked_uint_add.py
│ │ ├── checked_uint_mul_12.py
│ │ ├── checked_uint_sub.py
│ │ ├── combine_byte_shl.py
│ │ ├── combine_byte_shr_1.py
│ │ ├── combine_byte_shr_2.py
│ │ ├── combine_div_shl_one_32.py
│ │ ├── combine_mul_shl_one_64.py
│ │ ├── combine_shl_shr_by_constant_64.py
│ │ ├── combine_shr_shl_by_constant_64.py
│ │ ├── eq_sub.py
│ │ ├── exp_neg_one.py
│ │ ├── exp_to_shl.py
│ │ ├── mod_add_to_addmod.py
│ │ ├── mod_mul_to_mulmod.py
│ │ ├── move_and_across_shl_128.py
│ │ ├── move_and_across_shr_128.py
│ │ ├── move_and_inside_or.py
│ │ ├── opcodes.py
│ │ ├── redundant_store_unrelated.py
│ │ ├── repeated_and.py
│ │ ├── repeated_or.py
│ │ ├── replace_mul_by_shift.py
│ │ ├── rule.py
│ │ ├── shl_workaround_8.py
│ │ ├── signed_integer_cleanup_function.py
│ │ ├── signextend.py
│ │ ├── signextend_and.py
│ │ ├── signextend_equivalence.py
│ │ ├── signextend_shl.py
│ │ ├── signextend_shr.py
│ │ ├── smod.py
│ │ ├── sub_not_zero_x_to_not_x_256.py
│ │ ├── sub_sub.py
│ │ ├── unsigned_integer_cleanup_function.py
│ │ └── util.py
│ ├── libevmasm/
│ │ ├── Assembler.cpp
│ │ ├── EVMAssemblyTest.cpp
│ │ ├── EVMAssemblyTest.h
│ │ ├── Optimiser.cpp
│ │ ├── PlainAssemblyParser.cpp
│ │ ├── PlainAssemblyParser.h
│ │ └── evmAssemblyTests/
│ │ └── isoltestTesting/
│ │ ├── code_generation_error.asmjson
│ │ ├── comments.asm
│ │ ├── empty.asm
│ │ ├── invalid_json.asmjson
│ │ ├── jumps.asm
│ │ ├── nontrivial_subassembly_ids.asm
│ │ ├── operations.asm
│ │ ├── push.asm
│ │ ├── pushsize.asm
│ │ ├── pushsubsize.asm
│ │ ├── settings_eof_version.asmjson
│ │ ├── settings_evm_version.asmjson
│ │ ├── settings_optimizer_constant_optimizer.asmjson
│ │ ├── settings_optimizer_cse.asmjson
│ │ ├── settings_optimizer_deduplicate.asmjson
│ │ ├── settings_optimizer_expected_executions_per_deployment.asmjson
│ │ ├── settings_optimizer_inliner.asmjson
│ │ ├── settings_optimizer_jumpdest_remover.asmjson
│ │ ├── settings_optimizer_peephole.asmjson
│ │ ├── settings_optimizer_preset.asmjson
│ │ ├── settings_outputs.asmjson
│ │ ├── smoke.asmjson
│ │ ├── smoke_plain.asm
│ │ ├── subassemblies.asm
│ │ ├── subassemblies_empty.asm
│ │ └── subassemblies_nested.asm
│ ├── liblangutil/
│ │ ├── CharStream.cpp
│ │ ├── Scanner.cpp
│ │ └── SourceLocation.cpp
│ ├── libsolidity/
│ │ ├── ABIDecoderTests.cpp
│ │ ├── ABIEncoderTests.cpp
│ │ ├── ABIJson/
│ │ │ ├── basic_test.sol
│ │ │ ├── constructor_abi.sol
│ │ │ ├── empty_contract.sol
│ │ │ ├── empty_name_input_parameter_with_named_one.sol
│ │ │ ├── empty_name_return_parameters.sol
│ │ │ ├── errors.sol
│ │ │ ├── errors_referenced.sol
│ │ │ ├── event_emitted_from_foreign_contract.sol
│ │ │ ├── event_emitted_in_base_contract.sol
│ │ │ ├── event_file_level.sol
│ │ │ ├── event_from_aggregated_contract_not_emitted.sol
│ │ │ ├── event_inheritance.sol
│ │ │ ├── event_structs.sol
│ │ │ ├── events.sol
│ │ │ ├── events_anonymous.sol
│ │ │ ├── events_indirect.sol
│ │ │ ├── events_repetitions.sol
│ │ │ ├── function_type.sol
│ │ │ ├── function_type_extended.sol
│ │ │ ├── global_struct.sol
│ │ │ ├── include_fallback_function.sol
│ │ │ ├── inherited.sol
│ │ │ ├── internal_constructor.sol
│ │ │ ├── library_function.sol
│ │ │ ├── mapping.sol
│ │ │ ├── multiple_methods.sol
│ │ │ ├── multiple_methods_order.sol
│ │ │ ├── multiple_params.sol
│ │ │ ├── payable_constructor_abi.sol
│ │ │ ├── payable_fallback_function.sol
│ │ │ ├── payable_function.sol
│ │ │ ├── pure_function.sol
│ │ │ ├── receive_ether_and_fallback_function.sol
│ │ │ ├── receive_ether_function.sol
│ │ │ ├── return_param_in_abi.sol
│ │ │ ├── return_structs.sol
│ │ │ ├── return_structs_with_contracts.sol
│ │ │ ├── same_event_defined_twice.sol
│ │ │ ├── structs_and_arrays.sol
│ │ │ ├── structs_in_libraries.sol
│ │ │ ├── user_defined_value_type.sol
│ │ │ └── view_function.sol
│ │ ├── ABIJsonTest.cpp
│ │ ├── ABIJsonTest.h
│ │ ├── ABITestsCommon.h
│ │ ├── ASTJSON/
│ │ │ ├── abstract_contract.json
│ │ │ ├── abstract_contract.sol
│ │ │ ├── abstract_contract_parseOnly.json
│ │ │ ├── address_payable.json
│ │ │ ├── address_payable.sol
│ │ │ ├── address_payable_parseOnly.json
│ │ │ ├── array_type_name.json
│ │ │ ├── array_type_name.sol
│ │ │ ├── array_type_name_parseOnly.json
│ │ │ ├── assembly/
│ │ │ │ ├── call.json
│ │ │ │ ├── call.sol
│ │ │ │ ├── call_legacy.json
│ │ │ │ ├── call_parseOnly.json
│ │ │ │ ├── empty_block.json
│ │ │ │ ├── empty_block.sol
│ │ │ │ ├── empty_block_legacy.json
│ │ │ │ ├── empty_block_parseOnly.json
│ │ │ │ ├── empty_let_variable_declaration.json
│ │ │ │ ├── empty_let_variable_declaration.sol
│ │ │ │ ├── empty_let_variable_declaration_parseOnly.json
│ │ │ │ ├── function.json
│ │ │ │ ├── function.sol
│ │ │ │ ├── function_legacy.json
│ │ │ │ ├── function_parseOnly.json
│ │ │ │ ├── leave.json
│ │ │ │ ├── leave.sol
│ │ │ │ ├── leave_legacy.json
│ │ │ │ ├── leave_parseOnly.json
│ │ │ │ ├── loop.json
│ │ │ │ ├── loop.sol
│ │ │ │ ├── loop_legacy.json
│ │ │ │ ├── loop_parseOnly.json
│ │ │ │ ├── nested_functions.json
│ │ │ │ ├── nested_functions.sol
│ │ │ │ ├── nested_functions_legacy.json
│ │ │ │ ├── nested_functions_parseOnly.json
│ │ │ │ ├── slot_offset.json
│ │ │ │ ├── slot_offset.sol
│ │ │ │ ├── slot_offset_legacy.json
│ │ │ │ ├── slot_offset_parseOnly.json
│ │ │ │ ├── stringlit.json
│ │ │ │ ├── stringlit.sol
│ │ │ │ ├── stringlit_legacy.json
│ │ │ │ ├── stringlit_parseOnly.json
│ │ │ │ ├── switch.json
│ │ │ │ ├── switch.sol
│ │ │ │ ├── switch_default.json
│ │ │ │ ├── switch_default.sol
│ │ │ │ ├── switch_default_legacy.json
│ │ │ │ ├── switch_default_parseOnly.json
│ │ │ │ ├── switch_legacy.json
│ │ │ │ ├── switch_parseOnly.json
│ │ │ │ ├── var_access.json
│ │ │ │ ├── var_access.sol
│ │ │ │ ├── var_access_legacy.json
│ │ │ │ └── var_access_parseOnly.json
│ │ │ ├── ast_internal_function_different_ids_export.json
│ │ │ ├── ast_internal_function_different_ids_export.sol
│ │ │ ├── ast_internal_function_id_export.json
│ │ │ ├── ast_internal_function_id_export.sol
│ │ │ ├── base_constructor_call.json
│ │ │ ├── base_constructor_call.sol
│ │ │ ├── base_constructor_call_parseOnly.json
│ │ │ ├── constructor.json
│ │ │ ├── constructor.sol
│ │ │ ├── constructor_parseOnly.json
│ │ │ ├── contract_dep_order.json
│ │ │ ├── contract_dep_order.sol
│ │ │ ├── contract_dep_order_parseOnly.json
│ │ │ ├── documentation.json
│ │ │ ├── documentation.sol
│ │ │ ├── documentation_local_variable.json
│ │ │ ├── documentation_local_variable.sol
│ │ │ ├── documentation_local_variable_parseOnly.json
│ │ │ ├── documentation_on_statements.json
│ │ │ ├── documentation_on_statements.sol
│ │ │ ├── documentation_on_statements_parseOnly.json
│ │ │ ├── documentation_parseOnly.json
│ │ │ ├── documentation_triple.json
│ │ │ ├── documentation_triple.sol
│ │ │ ├── documentation_triple_parseOnly.json
│ │ │ ├── emit_event_from_module_via_member_access.json
│ │ │ ├── emit_event_from_module_via_member_access.sol
│ │ │ ├── enum_natspec.json
│ │ │ ├── enum_natspec.sol
│ │ │ ├── enum_natspec_parseOnly.json
│ │ │ ├── enum_value.json
│ │ │ ├── enum_value.sol
│ │ │ ├── enum_value_declaration.json
│ │ │ ├── enum_value_declaration.sol
│ │ │ ├── enum_value_declaration_parseOnly.json
│ │ │ ├── enum_value_natspec.json
│ │ │ ├── enum_value_natspec.sol
│ │ │ ├── enum_value_natspec_parseOnly.json
│ │ │ ├── enum_value_parseOnly.json
│ │ │ ├── error_from_module_via_member_access.json
│ │ │ ├── error_from_module_via_member_access.sol
│ │ │ ├── event_aggregated_contract.json
│ │ │ ├── event_aggregated_contract.sol
│ │ │ ├── event_definition.json
│ │ │ ├── event_definition.sol
│ │ │ ├── event_definition_parseOnly.json
│ │ │ ├── event_emited_in_base_contract.json
│ │ │ ├── event_emited_in_base_contract.sol
│ │ │ ├── event_emitted_from_foreign_contract.json
│ │ │ ├── event_emitted_from_foreign_contract.sol
│ │ │ ├── event_emitted_from_foreign_contract_parseOnly.json
│ │ │ ├── event_inheritance.json
│ │ │ ├── event_inheritance.sol
│ │ │ ├── event_with_variables_of_internal_types.sol
│ │ │ ├── event_with_variables_of_internal_types_parseOnly.json
│ │ │ ├── fail_after_parsing.sol
│ │ │ ├── fail_after_parsing_parseOnly.json
│ │ │ ├── fallback.json
│ │ │ ├── fallback.sol
│ │ │ ├── fallback_and_receive_ether.json
│ │ │ ├── fallback_and_receive_ether.sol
│ │ │ ├── fallback_and_receive_ether_parseOnly.json
│ │ │ ├── fallback_parseOnly.json
│ │ │ ├── fallback_payable.json
│ │ │ ├── fallback_payable.sol
│ │ │ ├── fallback_payable_parseOnly.json
│ │ │ ├── function_type.json
│ │ │ ├── function_type.sol
│ │ │ ├── function_type_parseOnly.json
│ │ │ ├── global_enum.json
│ │ │ ├── global_enum.sol
│ │ │ ├── global_enum_parseOnly.json
│ │ │ ├── global_struct.json
│ │ │ ├── global_struct.sol
│ │ │ ├── global_struct_parseOnly.json
│ │ │ ├── indirect_event.json
│ │ │ ├── indirect_event.sol
│ │ │ ├── indirect_event_parseOnly.json
│ │ │ ├── inheritance_specifier.json
│ │ │ ├── inheritance_specifier.sol
│ │ │ ├── inheritance_specifier_parseOnly.json
│ │ │ ├── license.json
│ │ │ ├── license.sol
│ │ │ ├── license_parseOnly.json
│ │ │ ├── long_type_name_binary_operation.json
│ │ │ ├── long_type_name_binary_operation.sol
│ │ │ ├── long_type_name_binary_operation_parseOnly.json
│ │ │ ├── long_type_name_identifier.json
│ │ │ ├── long_type_name_identifier.sol
│ │ │ ├── long_type_name_identifier_parseOnly.json
│ │ │ ├── mappings.json
│ │ │ ├── mappings.sol
│ │ │ ├── mappings_parseOnly.json
│ │ │ ├── modifier_definition.json
│ │ │ ├── modifier_definition.sol
│ │ │ ├── modifier_definition_parseOnly.json
│ │ │ ├── modifier_invocation.json
│ │ │ ├── modifier_invocation.sol
│ │ │ ├── modifier_invocation_parseOnly.json
│ │ │ ├── mutability.json
│ │ │ ├── mutability.sol
│ │ │ ├── mutability_parseOnly.json
│ │ │ ├── non_utf8.json
│ │ │ ├── non_utf8.sol
│ │ │ ├── non_utf8_parseOnly.json
│ │ │ ├── not_existing_import.sol
│ │ │ ├── not_existing_import_parseOnly.json
│ │ │ ├── override.json
│ │ │ ├── override.sol
│ │ │ ├── override_parseOnly.json
│ │ │ ├── placeholder_statement.json
│ │ │ ├── placeholder_statement.sol
│ │ │ ├── placeholder_statement_parseOnly.json
│ │ │ ├── pragma_experimental_solidity.sol
│ │ │ ├── pragma_experimental_solidity_parseOnly.json
│ │ │ ├── receive_ether.json
│ │ │ ├── receive_ether.sol
│ │ │ ├── receive_ether_parseOnly.json
│ │ │ ├── short_type_name.json
│ │ │ ├── short_type_name.sol
│ │ │ ├── short_type_name_parseOnly.json
│ │ │ ├── short_type_name_ref.json
│ │ │ ├── short_type_name_ref.sol
│ │ │ ├── short_type_name_ref_parseOnly.json
│ │ │ ├── smoke.json
│ │ │ ├── smoke.sol
│ │ │ ├── smoke_parseOnly.json
│ │ │ ├── source_location.json
│ │ │ ├── source_location.sol
│ │ │ ├── source_location_parseOnly.json
│ │ │ ├── storage_layout_specifier.json
│ │ │ ├── storage_layout_specifier.sol
│ │ │ ├── string.json
│ │ │ ├── string.sol
│ │ │ ├── string_parseOnly.json
│ │ │ ├── struct_natspec.json
│ │ │ ├── struct_natspec.sol
│ │ │ ├── struct_natspec_parseOnly.json
│ │ │ ├── two_base_functions.json
│ │ │ ├── two_base_functions.sol
│ │ │ ├── two_base_functions_parseOnly.json
│ │ │ ├── unicode.json
│ │ │ ├── unicode.sol
│ │ │ ├── unicode_parseOnly.json
│ │ │ ├── used_errors.json
│ │ │ ├── used_errors.sol
│ │ │ ├── used_errors_parseOnly.json
│ │ │ ├── userDefinedValueType.json
│ │ │ ├── userDefinedValueType.sol
│ │ │ ├── userDefinedValueType_parseOnly.json
│ │ │ ├── user_defined_operator.json
│ │ │ ├── user_defined_operator.sol
│ │ │ ├── using_for_directive.json
│ │ │ ├── using_for_directive.sol
│ │ │ ├── using_for_directive_parseOnly.json
│ │ │ ├── yul_hex_literal.json
│ │ │ ├── yul_hex_literal.sol
│ │ │ └── yul_hex_literal_parseOnly.json
│ │ ├── ASTJSONTest.cpp
│ │ ├── ASTJSONTest.h
│ │ ├── ASTPropertyTest.cpp
│ │ ├── ASTPropertyTest.h
│ │ ├── AnalysisFramework.cpp
│ │ ├── AnalysisFramework.h
│ │ ├── Assembly.cpp
│ │ ├── ErrorCheck.cpp
│ │ ├── ErrorCheck.h
│ │ ├── FunctionDependencyGraphTest.cpp
│ │ ├── FunctionDependencyGraphTest.h
│ │ ├── GasCosts.cpp
│ │ ├── GasMeter.cpp
│ │ ├── GasTest.cpp
│ │ ├── GasTest.h
│ │ ├── Imports.cpp
│ │ ├── InlineAssembly.cpp
│ │ ├── LibSolc.cpp
│ │ ├── MemoryGuardTest.cpp
│ │ ├── MemoryGuardTest.h
│ │ ├── Metadata.cpp
│ │ ├── NatspecJSONTest.cpp
│ │ ├── NatspecJSONTest.h
│ │ ├── OptimizedIRCachingTest.cpp
│ │ ├── OptimizedIRCachingTest.h
│ │ ├── SMTCheckerTest.cpp
│ │ ├── SMTCheckerTest.h
│ │ ├── SemVerMatcher.cpp
│ │ ├── SemanticTest.cpp
│ │ ├── SemanticTest.h
│ │ ├── SolidityCompiler.cpp
│ │ ├── SolidityEndToEndTest.cpp
│ │ ├── SolidityExecutionFramework.cpp
│ │ ├── SolidityExecutionFramework.h
│ │ ├── SolidityExpressionCompiler.cpp
│ │ ├── SolidityNameAndTypeResolution.cpp
│ │ ├── SolidityOptimizer.cpp
│ │ ├── SolidityParser.cpp
│ │ ├── SolidityTypes.cpp
│ │ ├── StandardCompiler.cpp
│ │ ├── SyntaxTest.cpp
│ │ ├── SyntaxTest.h
│ │ ├── ViewPureChecker.cpp
│ │ ├── analysis/
│ │ │ └── FunctionCallGraph.cpp
│ │ ├── astPropertyTests/
│ │ │ ├── blank_test_case.sol
│ │ │ ├── forLoop/
│ │ │ │ ├── isSimpleCounterLoop_negative_cases.sol
│ │ │ │ └── isSimpleCounterLoop_positive_cases.sol
│ │ │ ├── multiple_nested_properties_per_node.sol
│ │ │ ├── multiple_properties_per_node.sol
│ │ │ ├── nested_properties.sol
│ │ │ ├── property_expectation_with_colon.sol
│ │ │ ├── simple_properties.sol
│ │ │ └── transient_data_location.sol
│ │ ├── functionDependencyGraphTests/
│ │ │ ├── callgraph.sol
│ │ │ └── callgraph_no_leaves.sol
│ │ ├── gasTests/
│ │ │ ├── abiv2.sol
│ │ │ ├── abiv2_optimised.sol
│ │ │ ├── data_storage.sol
│ │ │ ├── dispatch_large.sol
│ │ │ ├── dispatch_large_optimised.sol
│ │ │ ├── dispatch_medium.sol
│ │ │ ├── dispatch_medium_optimised.sol
│ │ │ ├── dispatch_small.sol
│ │ │ ├── dispatch_small_optimised.sol
│ │ │ ├── exp.sol
│ │ │ ├── exp_optimized.sol
│ │ │ └── storage_costs.sol
│ │ ├── interface/
│ │ │ └── FileReader.cpp
│ │ ├── lsp/
│ │ │ ├── analyze-full-project/
│ │ │ │ ├── C.sol
│ │ │ │ ├── D.sol
│ │ │ │ └── E.sol
│ │ │ ├── didChange_template.sol
│ │ │ ├── didOpen_with_import.sol
│ │ │ ├── goto/
│ │ │ │ ├── goto_definition.sol
│ │ │ │ ├── goto_definition_imports.sol
│ │ │ │ ├── lib.sol
│ │ │ │ ├── publish_diagnostics_1.sol
│ │ │ │ └── publish_diagnostics_2.sol
│ │ │ ├── hover/
│ │ │ │ └── hover.sol
│ │ │ ├── include-paths/
│ │ │ │ ├── default_include.sol
│ │ │ │ ├── file_at_include_path.sol
│ │ │ │ ├── file_not_found_in_searchpath.sol
│ │ │ │ └── using-custom-includes.sol
│ │ │ ├── include-paths-nested/
│ │ │ │ ├── A/
│ │ │ │ │ ├── B/
│ │ │ │ │ │ ├── C/
│ │ │ │ │ │ │ └── foo.sol
│ │ │ │ │ │ └── foo.sol
│ │ │ │ │ └── foo.sol
│ │ │ │ └── foo.sol
│ │ │ ├── include-paths-nested-2/
│ │ │ │ ├── A/
│ │ │ │ │ ├── B/
│ │ │ │ │ │ ├── C/
│ │ │ │ │ │ │ └── foo.sol
│ │ │ │ │ │ └── foo.sol
│ │ │ │ │ └── foo.sol
│ │ │ │ └── foo.sol
│ │ │ ├── other-include-dir/
│ │ │ │ └── otherlib/
│ │ │ │ ├── otherlib.sol
│ │ │ │ └── second.sol
│ │ │ ├── publish_diagnostics_3.sol
│ │ │ ├── rename/
│ │ │ │ ├── contract.sol
│ │ │ │ ├── function.sol
│ │ │ │ ├── functionCall.sol
│ │ │ │ ├── import_directive.sol
│ │ │ │ └── variable.sol
│ │ │ └── semanticTokens/
│ │ │ ├── enums.sol
│ │ │ ├── functions.sol
│ │ │ ├── modifiers.sol
│ │ │ └── structs.sol
│ │ ├── memoryGuardTests/
│ │ │ ├── comment/
│ │ │ │ ├── constructor_safe_deploy_unsafe.sol
│ │ │ │ ├── constructor_unsafe_deploy_safe.sol
│ │ │ │ ├── free_function.sol
│ │ │ │ ├── multi_annotation.sol
│ │ │ │ ├── multiple_contracts.sol
│ │ │ │ ├── safe_and_unmarked_empty.sol
│ │ │ │ └── safe_and_unmarked_unsafe.sol
│ │ │ ├── dialectString/
│ │ │ │ ├── constructor_safe_deploy_unsafe.sol
│ │ │ │ ├── constructor_unsafe_deploy_safe.sol
│ │ │ │ ├── free_function.sol
│ │ │ │ ├── multiple_contracts.sol
│ │ │ │ ├── safe_and_unmarked_empty.sol
│ │ │ │ ├── safe_and_unmarked_unsafe.sol
│ │ │ │ └── stub.sol
│ │ │ ├── marked_empty.sol
│ │ │ ├── marked_with_memory_access.sol
│ │ │ ├── shadowing_memoryguard_with_inline_assembly_identifiers.sol
│ │ │ ├── stub.sol
│ │ │ ├── unmarked_but_no_memory_access.sol
│ │ │ ├── unmarked_empty.sol
│ │ │ ├── unmarked_with_memory_access_mcopy.sol
│ │ │ ├── unmarked_with_memory_access_mcopy_zero_size.sol
│ │ │ ├── unmarked_with_memory_access_mstore.sol
│ │ │ └── unmarked_with_memory_assignment.sol
│ │ ├── natspecJSON/
│ │ │ ├── custom.sol
│ │ │ ├── custom_inheritance.sol
│ │ │ ├── dev_and_user_basic_test.sol
│ │ │ ├── dev_and_user_no_doc.sol
│ │ │ ├── dev_author_at_function.sol
│ │ │ ├── dev_constructor.sol
│ │ │ ├── dev_constructor_and_function.sol
│ │ │ ├── dev_constructor_return.sol
│ │ │ ├── dev_contract_doc.sol
│ │ │ ├── dev_contract_no_doc.sol
│ │ │ ├── dev_default_inherit.sol
│ │ │ ├── dev_default_inherit_variable.sol
│ │ │ ├── dev_desc_after_nl.sol
│ │ │ ├── dev_different_return_name.sol
│ │ │ ├── dev_different_return_name_multiple.sol
│ │ │ ├── dev_different_return_name_multiple_partly_unnamed.sol
│ │ │ ├── dev_different_return_name_multiple_unnamed.sol
│ │ │ ├── dev_documenting_no_param_description.sol
│ │ │ ├── dev_documenting_no_param_name.sol
│ │ │ ├── dev_documenting_no_param_name_end.sol
│ │ │ ├── dev_documenting_no_return_param_name.sol
│ │ │ ├── dev_documenting_nonexistent_param.sol
│ │ │ ├── dev_explicit_inherit.sol
│ │ │ ├── dev_explicit_inherit2.sol
│ │ │ ├── dev_explicit_inherit_complex.sol
│ │ │ ├── dev_explicit_inherit_partial.sol
│ │ │ ├── dev_explicit_inherit_partial2.sol
│ │ │ ├── dev_explicit_inherit_variable.sol
│ │ │ ├── dev_inherit_parameter_mismatch.sol
│ │ │ ├── dev_multiline_comment.sol
│ │ │ ├── dev_multiline_param_description.sol
│ │ │ ├── dev_multiline_return.sol
│ │ │ ├── dev_multiple_functions.sol
│ │ │ ├── dev_multiple_params.sol
│ │ │ ├── dev_multiple_params_mixed_whitespace.sol
│ │ │ ├── dev_return.sol
│ │ │ ├── dev_return_desc_after_nl.sol
│ │ │ ├── dev_return_desc_multiple.sol
│ │ │ ├── dev_return_desc_multiple_unnamed.sol
│ │ │ ├── dev_return_desc_multiple_unnamed_mixed.sol
│ │ │ ├── dev_return_desc_multiple_unnamed_mixed_2.sol
│ │ │ ├── dev_return_name_no_description.sol
│ │ │ ├── dev_return_no_params.sol
│ │ │ ├── dev_struct_getter_override.sol
│ │ │ ├── dev_struct_getter_override_different_return_parameter_names.sol
│ │ │ ├── dev_struct_getter_override_no_return_name.sol
│ │ │ ├── dev_title_at_function_error.sol
│ │ │ ├── docstring_double_empty.sol
│ │ │ ├── docstring_named_return_parameter.sol
│ │ │ ├── docstring_parameter.sol
│ │ │ ├── docstring_private_state_variable.sol
│ │ │ ├── docstring_state_variable.sol
│ │ │ ├── docstring_struct.sol
│ │ │ ├── docstring_variable.sol
│ │ │ ├── emit_event_from_foreign_contract.sol
│ │ │ ├── emit_event_from_foreign_contract_no_inheritance.sol
│ │ │ ├── emit_event_from_foreign_contract_with_same_signature.sol
│ │ │ ├── emit_event_from_module_via_member_access.sol
│ │ │ ├── emit_file_level_event.sol
│ │ │ ├── emit_file_level_event_inheritance.sol
│ │ │ ├── emit_file_level_event_with_same_signature_as_foreign_event.sol
│ │ │ ├── emit_same_signature_event_different_libraries.sol
│ │ │ ├── emit_same_signature_event_different_libraries_missing_natspec.sol
│ │ │ ├── emit_same_signature_event_library_contract.sol
│ │ │ ├── emit_same_signature_event_library_contract_missing_natspec.sol
│ │ │ ├── emit_same_signature_event_library_inherited.sol
│ │ │ ├── emit_same_signature_event_library_inherited_missing_natspec.sol
│ │ │ ├── empty_comment.sol
│ │ │ ├── enum.sol
│ │ │ ├── enum_value.sol
│ │ │ ├── error.sol
│ │ │ ├── error_from_module_via_member_access.sol
│ │ │ ├── error_multiple.sol
│ │ │ ├── event.sol
│ │ │ ├── event_inheritance.sol
│ │ │ ├── event_inheritance_interface.sol
│ │ │ ├── invalid/
│ │ │ │ ├── docstring_author_function.sol
│ │ │ │ ├── docstring_author_title_state_variable.sol
│ │ │ │ ├── docstring_empty_description.sol
│ │ │ │ ├── docstring_empty_tag.sol
│ │ │ │ ├── docstring_inherit_modifier_no_return.sol
│ │ │ │ ├── docstring_inherit_modifier_no_return2.sol
│ │ │ │ ├── docstring_inheritdoc.sol
│ │ │ │ ├── docstring_inheritdoc2.sol
│ │ │ │ ├── docstring_inheritdoc3.sol
│ │ │ │ ├── docstring_inheritdoc_emptys.sol
│ │ │ │ ├── docstring_inheritdoc_twice.sol
│ │ │ │ ├── docstring_inheritdoc_wrong_type.sol
│ │ │ │ ├── docstring_named_return_param_mismatch.sol
│ │ │ │ ├── docstring_non_public_state_variable_with_return.sol
│ │ │ │ ├── docstring_parameter.sol
│ │ │ │ ├── docstring_return_size_mismatch.sol
│ │ │ │ ├── docstring_state_variable_too_many_return_tags.sol
│ │ │ │ ├── docstring_too_many_return_tags.sol
│ │ │ │ ├── inherit_doc_events.sol
│ │ │ │ └── invalid_tag.sol
│ │ │ ├── multiline_notice_without_tag.sol
│ │ │ ├── notice_without_tag.sol
│ │ │ ├── private_state_variable.sol
│ │ │ ├── public_state_variable.sol
│ │ │ ├── public_state_variable_struct.sol
│ │ │ ├── public_state_variable_struct_repeated.sol
│ │ │ ├── return_param_amount_differs.sol
│ │ │ ├── return_param_amount_differs2.sol
│ │ │ ├── slash3_slash3.sol
│ │ │ ├── slash3_slash4.sol
│ │ │ ├── slash4.sol
│ │ │ ├── star3.sol
│ │ │ ├── storage_layout_specifier_no_doc.sol
│ │ │ ├── struct_no_docs.sol
│ │ │ ├── unused_file_level_event.sol
│ │ │ ├── user_basic_test.sol
│ │ │ ├── user_constructor.sol
│ │ │ ├── user_constructor_and_function.sol
│ │ │ ├── user_default_inherit.sol
│ │ │ ├── user_default_inherit_variable.sol
│ │ │ ├── user_empty_contract.sol
│ │ │ ├── user_empty_natspec_test.sol
│ │ │ ├── user_explicit_inherit.sol
│ │ │ ├── user_explicit_inherit2.sol
│ │ │ ├── user_explicit_inherit_partial.sol
│ │ │ ├── user_explicit_inherit_partial2.sol
│ │ │ ├── user_explicit_inherit_variable.sol
│ │ │ ├── user_inherit_parameter_mismatch.sol
│ │ │ ├── user_multiline_comment.sol
│ │ │ ├── user_multiline_empty_lines.sol
│ │ │ ├── user_multiple_functions.sol
│ │ │ └── user_newline_break.sol
│ │ ├── optimizedIRCaching/
│ │ │ ├── bytecode_dependency_creation.sol
│ │ │ ├── bytecode_dependency_creation_and_runtime.sol
│ │ │ ├── bytecode_dependency_creation_and_runtime_shared.sol
│ │ │ ├── bytecode_dependency_runtime.sol
│ │ │ ├── bytecode_dependency_shared_by_multiple_contracts.sol
│ │ │ ├── multiple_contracts.sol
│ │ │ ├── no_contracts.sol
│ │ │ └── single_contract.sol
│ │ ├── semanticTests/
│ │ │ ├── abiEncodeDecode/
│ │ │ │ ├── abi_decode_calldata.sol
│ │ │ │ ├── abi_decode_simple.sol
│ │ │ │ ├── abi_decode_simple_storage.sol
│ │ │ │ ├── abi_encode_call.sol
│ │ │ │ ├── abi_encode_call_declaration.sol
│ │ │ │ ├── abi_encode_call_is_consistent.sol
│ │ │ │ ├── abi_encode_call_memory.sol
│ │ │ │ ├── abi_encode_call_special_args.sol
│ │ │ │ ├── abi_encode_call_uint_bytes.sol
│ │ │ │ ├── abi_encode_empty_string_v1.sol
│ │ │ │ ├── abi_encode_with_selector.sol
│ │ │ │ ├── abi_encode_with_selectorv2.sol
│ │ │ │ ├── abi_encode_with_signature.sol
│ │ │ │ ├── abi_encode_with_signaturev2.sol
│ │ │ │ ├── contract_array.sol
│ │ │ │ ├── contract_array_v2.sol
│ │ │ │ ├── offset_overflow_in_array_decoding.sol
│ │ │ │ ├── offset_overflow_in_array_decoding_2.sol
│ │ │ │ └── offset_overflow_in_array_decoding_3.sol
│ │ │ ├── abiEncoderV1/
│ │ │ │ ├── abi_decode_dynamic_array.sol
│ │ │ │ ├── abi_decode_fixed_arrays.sol
│ │ │ │ ├── abi_decode_static_array.sol
│ │ │ │ ├── abi_decode_static_array_v2.sol
│ │ │ │ ├── abi_decode_trivial.sol
│ │ │ │ ├── abi_decode_v2.sol
│ │ │ │ ├── abi_decode_v2_calldata.sol
│ │ │ │ ├── abi_decode_v2_storage.sol
│ │ │ │ ├── abi_encode.sol
│ │ │ │ ├── abi_encode_call.sol
│ │ │ │ ├── abi_encode_calldata_slice.sol
│ │ │ │ ├── abi_encode_decode_simple.sol
│ │ │ │ ├── abi_encode_empty_string.sol
│ │ │ │ ├── abi_encode_rational.sol
│ │ │ │ ├── bool_out_of_bounds.sol
│ │ │ │ ├── byte_arrays.sol
│ │ │ │ ├── calldata_arrays_too_large.sol
│ │ │ │ ├── calldata_bytes_bytes32_arrays.sol
│ │ │ │ ├── cleanup/
│ │ │ │ │ └── cleanup.sol
│ │ │ │ ├── decode_slice.sol
│ │ │ │ ├── dynamic_arrays.sol
│ │ │ │ ├── dynamic_memory_copy.sol
│ │ │ │ ├── enums.sol
│ │ │ │ ├── memory_dynamic_array_and_calldata_bytes.sol
│ │ │ │ ├── memory_params_in_external_function.sol
│ │ │ │ ├── return_dynamic_types_cross_call_advanced.sol
│ │ │ │ ├── return_dynamic_types_cross_call_out_of_range_1.sol
│ │ │ │ ├── return_dynamic_types_cross_call_out_of_range_2.sol
│ │ │ │ ├── return_dynamic_types_cross_call_simple.sol
│ │ │ │ └── struct/
│ │ │ │ └── struct_storage_ptr.sol
│ │ │ ├── abiEncoderV2/
│ │ │ │ ├── abi_encode_calldata_slice.sol
│ │ │ │ ├── abi_encode_empty_string_v2.sol
│ │ │ │ ├── abi_encode_rational_v2.sol
│ │ │ │ ├── abi_encode_v2.sol
│ │ │ │ ├── abi_encode_v2_in_function_inherited_in_v1_contract.sol
│ │ │ │ ├── abi_encode_v2_in_modifier_used_in_v1_contract.sol
│ │ │ │ ├── abi_encoder_v2_head_overflow_with_static_array_cleanup_bug.sol
│ │ │ │ ├── bool_out_of_bounds.sol
│ │ │ │ ├── byte_arrays.sol
│ │ │ │ ├── calldata_array.sol
│ │ │ │ ├── calldata_array_dynamic.sol
│ │ │ │ ├── calldata_array_dynamic_index_access.sol
│ │ │ │ ├── calldata_array_dynamic_static_dynamic.sol
│ │ │ │ ├── calldata_array_dynamic_static_in_library.sol
│ │ │ │ ├── calldata_array_dynamic_static_short_decode.sol
│ │ │ │ ├── calldata_array_dynamic_static_short_reencode.sol
│ │ │ │ ├── calldata_array_function_types.sol
│ │ │ │ ├── calldata_array_multi_dynamic.sol
│ │ │ │ ├── calldata_array_short.sol
│ │ │ │ ├── calldata_array_short_no_revert_string.sol
│ │ │ │ ├── calldata_array_static.sol
│ │ │ │ ├── calldata_array_static_dynamic_static.sol
│ │ │ │ ├── calldata_array_static_index_access.sol
│ │ │ │ ├── calldata_array_struct_dynamic.sol
│ │ │ │ ├── calldata_array_two_dynamic.sol
│ │ │ │ ├── calldata_array_two_static.sol
│ │ │ │ ├── calldata_dynamic_array_to_memory.sol
│ │ │ │ ├── calldata_nested_array_reencode.sol
│ │ │ │ ├── calldata_nested_array_static_reencode.sol
│ │ │ │ ├── calldata_overlapped_dynamic_arrays.sol
│ │ │ │ ├── calldata_overlapped_nested_dynamic_arrays.sol
│ │ │ │ ├── calldata_struct_array_reencode.sol
│ │ │ │ ├── calldata_struct_dynamic.sol
│ │ │ │ ├── calldata_struct_member_offset.sol
│ │ │ │ ├── calldata_struct_simple.sol
│ │ │ │ ├── calldata_three_dimensional_dynamic_array_index_access.sol
│ │ │ │ ├── calldata_with_garbage.sol
│ │ │ │ ├── cleanup/
│ │ │ │ │ ├── address.sol
│ │ │ │ │ ├── bool.sol
│ │ │ │ │ ├── bytesx.sol
│ │ │ │ │ ├── cleanup.sol
│ │ │ │ │ ├── dynamic_array.sol
│ │ │ │ │ ├── function.sol
│ │ │ │ │ ├── intx.sol
│ │ │ │ │ ├── reencoded_calldata_string.sol
│ │ │ │ │ ├── simple_struct.sol
│ │ │ │ │ ├── static_array.sol
│ │ │ │ │ └── uintx.sol
│ │ │ │ ├── dynamic_arrays.sol
│ │ │ │ ├── dynamic_nested_arrays.sol
│ │ │ │ ├── enums.sol
│ │ │ │ ├── memory_dynamic_array_and_calldata_bytes.sol
│ │ │ │ ├── memory_dynamic_array_and_calldata_static_array.sol
│ │ │ │ ├── memory_params_in_external_function.sol
│ │ │ │ ├── storage_array_encoding.sol
│ │ │ │ └── struct/
│ │ │ │ ├── mediocre2_struct.sol
│ │ │ │ ├── mediocre_struct.sol
│ │ │ │ ├── struct_function.sol
│ │ │ │ ├── struct_short.sol
│ │ │ │ ├── struct_simple.sol
│ │ │ │ ├── struct_validation.sol
│ │ │ │ └── validation_function_type_inside_struct.sol
│ │ │ ├── accessor/
│ │ │ │ ├── accessor_for_const_state_variable.sol
│ │ │ │ └── accessor_for_state_variable.sol
│ │ │ ├── arithmetics/
│ │ │ │ ├── addmod_mulmod.sol
│ │ │ │ ├── addmod_mulmod_zero.sol
│ │ │ │ ├── block_inside_unchecked.sol
│ │ │ │ ├── check_var_init.sol
│ │ │ │ ├── checked_add_v1.sol
│ │ │ │ ├── checked_add_v2.sol
│ │ │ │ ├── checked_called_by_unchecked.sol
│ │ │ │ ├── checked_modifier_called_by_unchecked.sol
│ │ │ │ ├── divisiod_by_zero.sol
│ │ │ │ ├── exp_associativity.sol
│ │ │ │ ├── signed_mod.sol
│ │ │ │ ├── unchecked_called_by_checked.sol
│ │ │ │ └── unchecked_div_by_zero.sol
│ │ │ ├── array/
│ │ │ │ ├── arrayMemoryAllocation/
│ │ │ │ │ ├── array_2d_zeroed_memory_index_access.sol
│ │ │ │ │ ├── array_array_static.sol
│ │ │ │ │ ├── array_static_return_param_zeroed_memory_index_access.sol
│ │ │ │ │ ├── array_static_zeroed_memory_index_access.sol
│ │ │ │ │ └── array_zeroed_memory_index_access.sol
│ │ │ │ ├── array_2d_assignment.sol
│ │ │ │ ├── array_2d_new.sol
│ │ │ │ ├── array_3d_assignment.sol
│ │ │ │ ├── array_3d_new.sol
│ │ │ │ ├── array_function_pointers.sol
│ │ │ │ ├── array_memory_as_parameter.sol
│ │ │ │ ├── array_memory_create.sol
│ │ │ │ ├── array_memory_index_access.sol
│ │ │ │ ├── array_push_return_reference.sol
│ │ │ │ ├── array_push_with_arg.sol
│ │ │ │ ├── array_storage_index_access.sol
│ │ │ │ ├── array_storage_index_boundary_test.sol
│ │ │ │ ├── array_storage_index_zeroed_test.sol
│ │ │ │ ├── array_storage_length_access.sol
│ │ │ │ ├── array_storage_pop_zero_length.sol
│ │ │ │ ├── array_storage_push_empty.sol
│ │ │ │ ├── array_storage_push_empty_length_address.sol
│ │ │ │ ├── array_storage_push_pop.sol
│ │ │ │ ├── arrays_complex_from_and_to_storage.sol
│ │ │ │ ├── byte_array_storage_layout.sol
│ │ │ │ ├── byte_array_transitional_2.sol
│ │ │ │ ├── bytes_length_member.sol
│ │ │ │ ├── bytes_to_fixed_bytes_cleanup.sol
│ │ │ │ ├── bytes_to_fixed_bytes_simple.sol
│ │ │ │ ├── bytes_to_fixed_bytes_too_long.sol
│ │ │ │ ├── calldata_array.sol
│ │ │ │ ├── calldata_array_as_argument_internal_function.sol
│ │ │ │ ├── calldata_array_dynamic_invalid.sol
│ │ │ │ ├── calldata_array_dynamic_invalid_static_middle.sol
│ │ │ │ ├── calldata_array_of_struct.sol
│ │ │ │ ├── calldata_array_two_dimensional.sol
│ │ │ │ ├── calldata_array_two_dimensional_1.sol
│ │ │ │ ├── calldata_bytes_array_bounds.sol
│ │ │ │ ├── calldata_slice_access.sol
│ │ │ │ ├── concat/
│ │ │ │ │ ├── bytes_concat_2_args.sol
│ │ │ │ │ ├── bytes_concat_3_args.sol
│ │ │ │ │ ├── bytes_concat_as_argument.sol
│ │ │ │ │ ├── bytes_concat_different_types.sol
│ │ │ │ │ ├── bytes_concat_empty_argument_list.sol
│ │ │ │ │ ├── bytes_concat_empty_strings.sol
│ │ │ │ │ └── bytes_concat_nested.sol
│ │ │ │ ├── constant_var_as_array_length.sol
│ │ │ │ ├── copying/
│ │ │ │ │ ├── array_copy_calldata_storage.sol
│ │ │ │ │ ├── array_copy_cleanup_uint128.sol
│ │ │ │ │ ├── array_copy_cleanup_uint40.sol
│ │ │ │ │ ├── array_copy_clear_storage.sol
│ │ │ │ │ ├── array_copy_clear_storage_packed.sol
│ │ │ │ │ ├── array_copy_different_packing.sol
│ │ │ │ │ ├── array_copy_including_array.sol
│ │ │ │ │ ├── array_copy_memory_to_storage.sol
│ │ │ │ │ ├── array_copy_nested_array.sol
│ │ │ │ │ ├── array_copy_storage_abi_signed.sol
│ │ │ │ │ ├── array_copy_storage_storage_different_base.sol
│ │ │ │ │ ├── array_copy_storage_storage_different_base_nested.sol
│ │ │ │ │ ├── array_copy_storage_storage_dyn_dyn.sol
│ │ │ │ │ ├── array_copy_storage_storage_dynamic_dynamic.sol
│ │ │ │ │ ├── array_copy_storage_storage_static_dynamic.sol
│ │ │ │ │ ├── array_copy_storage_storage_static_simple.sol
│ │ │ │ │ ├── array_copy_storage_storage_static_static.sol
│ │ │ │ │ ├── array_copy_storage_storage_struct.sol
│ │ │ │ │ ├── array_copy_storage_to_memory.sol
│ │ │ │ │ ├── array_copy_storage_to_memory_nested.sol
│ │ │ │ │ ├── array_copy_target_leftover.sol
│ │ │ │ │ ├── array_copy_target_leftover2.sol
│ │ │ │ │ ├── array_copy_target_simple.sol
│ │ │ │ │ ├── array_copy_target_simple_2.sol
│ │ │ │ │ ├── array_elements_to_mapping.sol
│ │ │ │ │ ├── array_nested_calldata_to_memory.sol
│ │ │ │ │ ├── array_nested_calldata_to_storage.sol
│ │ │ │ │ ├── array_nested_memory_to_storage.sol
│ │ │ │ │ ├── array_nested_storage_to_memory.sol
│ │ │ │ │ ├── array_of_function_external_storage_to_storage_dynamic.sol
│ │ │ │ │ ├── array_of_function_external_storage_to_storage_dynamic_different_mutability.sol
│ │ │ │ │ ├── array_of_struct_calldata_to_memory.sol
│ │ │ │ │ ├── array_of_struct_calldata_to_storage.sol
│ │ │ │ │ ├── array_of_struct_memory_to_storage.sol
│ │ │ │ │ ├── array_of_structs_containing_arrays_calldata_to_memory.sol
│ │ │ │ │ ├── array_of_structs_containing_arrays_calldata_to_storage.sol
│ │ │ │ │ ├── array_of_structs_containing_arrays_memory_to_storage.sol
│ │ │ │ │ ├── array_storage_multi_items_per_slot.sol
│ │ │ │ │ ├── array_to_mapping.sol
│ │ │ │ │ ├── arrays_from_and_to_storage.sol
│ │ │ │ │ ├── bytes_calldata_to_string_calldata.sol
│ │ │ │ │ ├── bytes_inside_mappings.sol
│ │ │ │ │ ├── bytes_memory_to_storage.sol
│ │ │ │ │ ├── bytes_storage_to_memory.sol
│ │ │ │ │ ├── bytes_storage_to_storage.sol
│ │ │ │ │ ├── calldata_1d_array_into_2d_memory_array_element.sol
│ │ │ │ │ ├── calldata_2d_bytes_to_memory.sol
│ │ │ │ │ ├── calldata_2d_bytes_to_memory_2.sol
│ │ │ │ │ ├── calldata_array_dynamic_to_storage.sol
│ │ │ │ │ ├── calldata_array_of_struct_to_memory.sol
│ │ │ │ │ ├── calldata_array_static_to_memory.sol
│ │ │ │ │ ├── calldata_array_to_mapping.sol
│ │ │ │ │ ├── calldata_bytes_array_to_memory.sol
│ │ │ │ │ ├── calldata_bytes_to_storage.sol
│ │ │ │ │ ├── calldata_dyn_2d_bytes_to_memory.sol
│ │ │ │ │ ├── calldata_dynamic_array_to_memory.sol
│ │ │ │ │ ├── calldata_nested_array_copy_to_memory.sol
│ │ │ │ │ ├── calldata_to_storage_different_base.sol
│ │ │ │ │ ├── cleanup_during_multi_element_per_slot_copy.sol
│ │ │ │ │ ├── copy_byte_array_in_struct_to_storage.sol
│ │ │ │ │ ├── copy_byte_array_to_storage.sol
│ │ │ │ │ ├── copy_function_internal_storage_array.sol
│ │ │ │ │ ├── copy_internal_function_array_to_storage.sol
│ │ │ │ │ ├── copy_removes_bytes_data.sol
│ │ │ │ │ ├── copying_bytes_multiassign.sol
│ │ │ │ │ ├── dirty_memory_bytes_to_storage_copy.sol
│ │ │ │ │ ├── dirty_memory_bytes_to_storage_copy_ir.sol
│ │ │ │ │ ├── elements_of_nested_array_of_structs_calldata_to_storage.sol
│ │ │ │ │ ├── elements_of_nested_array_of_structs_memory_to_storage.sol
│ │ │ │ │ ├── empty_bytes_copy.sol
│ │ │ │ │ ├── function_type_array_to_storage.sol
│ │ │ │ │ ├── memory_dyn_2d_bytes_to_storage.sol
│ │ │ │ │ ├── memory_to_storage_different_base.sol
│ │ │ │ │ ├── nested_array_element_calldata_to_memory.sol
│ │ │ │ │ ├── nested_array_element_calldata_to_storage.sol
│ │ │ │ │ ├── nested_array_element_memory_to_memory.sol
│ │ │ │ │ ├── nested_array_element_memory_to_storage.sol
│ │ │ │ │ ├── nested_array_element_storage_to_memory.sol
│ │ │ │ │ ├── nested_array_element_storage_to_storage.sol
│ │ │ │ │ ├── nested_array_of_structs_calldata_to_memory.sol
│ │ │ │ │ ├── nested_array_of_structs_calldata_to_storage.sol
│ │ │ │ │ ├── nested_array_of_structs_memory_to_memory.sol
│ │ │ │ │ ├── nested_array_of_structs_memory_to_storage.sol
│ │ │ │ │ ├── nested_array_of_structs_storage_to_storage.sol
│ │ │ │ │ ├── nested_array_of_structs_with_nested_array_from_storage_to_memory.sol
│ │ │ │ │ ├── nested_dynamic_array_element_calldata_to_storage.sol
│ │ │ │ │ ├── storage_memory_nested.sol
│ │ │ │ │ ├── storage_memory_nested_bytes.sol
│ │ │ │ │ ├── storage_memory_nested_from_pointer.sol
│ │ │ │ │ ├── storage_memory_nested_struct.sol
│ │ │ │ │ ├── storage_memory_packed.sol
│ │ │ │ │ ├── storage_memory_packed_dyn.sol
│ │ │ │ │ └── string_calldata_to_bytes_calldata.sol
│ │ │ │ ├── create_dynamic_array_with_zero_length.sol
│ │ │ │ ├── create_memory_array.sol
│ │ │ │ ├── create_memory_array_too_large.sol
│ │ │ │ ├── create_memory_byte_array.sol
│ │ │ │ ├── create_multiple_dynamic_arrays.sol
│ │ │ │ ├── delete/
│ │ │ │ │ ├── bytes_delete_element.sol
│ │ │ │ │ ├── delete_bytes_array.sol
│ │ │ │ │ ├── delete_memory_array.sol
│ │ │ │ │ ├── delete_on_array_of_structs.sol
│ │ │ │ │ ├── delete_removes_bytes_data.sol
│ │ │ │ │ ├── delete_storage_array.sol
│ │ │ │ │ ├── delete_storage_array_packed.sol
│ │ │ │ │ └── memory_arrays_delete.sol
│ │ │ │ ├── dynamic_array_cleanup.sol
│ │ │ │ ├── dynamic_arrays_in_storage.sol
│ │ │ │ ├── dynamic_multi_array_cleanup.sol
│ │ │ │ ├── dynamic_out_of_bounds_array_access.sol
│ │ │ │ ├── evm_exceptions_out_of_band_access.sol
│ │ │ │ ├── external_array_args.sol
│ │ │ │ ├── fixed_array_cleanup.sol
│ │ │ │ ├── fixed_arrays_as_return_type.sol
│ │ │ │ ├── fixed_arrays_in_constructors.sol
│ │ │ │ ├── fixed_arrays_in_storage.sol
│ │ │ │ ├── fixed_bytes_length_access.sol
│ │ │ │ ├── fixed_out_of_bounds_array_access.sol
│ │ │ │ ├── function_array_cross_calls.sol
│ │ │ │ ├── function_memory_array.sol
│ │ │ │ ├── indexAccess/
│ │ │ │ │ ├── arrays_complex_memory_index_access.sol
│ │ │ │ │ ├── bytes_index_access.sol
│ │ │ │ │ ├── bytes_index_access_memory.sol
│ │ │ │ │ ├── bytes_memory_index_access.sol
│ │ │ │ │ ├── fixed_bytes_index_access.sol
│ │ │ │ │ ├── index_access.sol
│ │ │ │ │ ├── inline_array_index_access_ints.sol
│ │ │ │ │ ├── inline_array_index_access_strings.sol
│ │ │ │ │ ├── memory_arrays_dynamic_index_access_write.sol
│ │ │ │ │ └── memory_arrays_index_access_write.sol
│ │ │ │ ├── inline_array_return.sol
│ │ │ │ ├── inline_array_singleton.sol
│ │ │ │ ├── inline_array_storage_to_memory_conversion_ints.sol
│ │ │ │ ├── inline_array_storage_to_memory_conversion_strings.sol
│ │ │ │ ├── inline_array_strings_from_document.sol
│ │ │ │ ├── invalid_encoding_for_storage_byte_array.sol
│ │ │ │ ├── long_byte_array_cleanup_after_delete.sol
│ │ │ │ ├── long_byte_array_cleanup_after_overwrite_with_long.sol
│ │ │ │ ├── memory.sol
│ │ │ │ ├── memory_arrays_of_various_sizes.sol
│ │ │ │ ├── nested_calldata_storage.sol
│ │ │ │ ├── nested_calldata_storage2.sol
│ │ │ │ ├── pop/
│ │ │ │ │ ├── array_pop.sol
│ │ │ │ │ ├── array_pop_array_transition.sol
│ │ │ │ │ ├── array_pop_empty_exception.sol
│ │ │ │ │ ├── array_pop_isolated.sol
│ │ │ │ │ ├── array_pop_storage_empty.sol
│ │ │ │ │ ├── array_pop_uint16_transition.sol
│ │ │ │ │ ├── array_pop_uint24_transition.sol
│ │ │ │ │ ├── byte_array_pop.sol
│ │ │ │ │ ├── byte_array_pop_copy_long.sol
│ │ │ │ │ ├── byte_array_pop_empty_exception.sol
│ │ │ │ │ ├── byte_array_pop_isolated.sol
│ │ │ │ │ ├── byte_array_pop_long_storage_empty.sol
│ │ │ │ │ ├── byte_array_pop_long_storage_empty_garbage_ref.sol
│ │ │ │ │ ├── byte_array_pop_masking_long.sol
│ │ │ │ │ ├── byte_array_pop_storage_empty.sol
│ │ │ │ │ └── parenthesized.sol
│ │ │ │ ├── push/
│ │ │ │ │ ├── array_push.sol
│ │ │ │ │ ├── array_push_nested.sol
│ │ │ │ │ ├── array_push_nested_from_calldata.sol
│ │ │ │ │ ├── array_push_nested_from_memory.sol
│ │ │ │ │ ├── array_push_packed_array.sol
│ │ │ │ │ ├── array_push_struct.sol
│ │ │ │ │ ├── array_push_struct_from_calldata.sol
│ │ │ │ │ ├── byte_array_push.sol
│ │ │ │ │ ├── byte_array_push_transition.sol
│ │ │ │ │ ├── nested_bytes_push.sol
│ │ │ │ │ ├── push_no_args_1d.sol
│ │ │ │ │ ├── push_no_args_2d.sol
│ │ │ │ │ ├── push_no_args_bytes.sol
│ │ │ │ │ └── push_no_args_struct.sol
│ │ │ │ ├── reusing_memory.sol
│ │ │ │ ├── short_fixed_array_cleanup.sol
│ │ │ │ ├── slices/
│ │ │ │ │ ├── array_calldata_assignment.sol
│ │ │ │ │ ├── array_slice_calldata_as_argument_of_external_calls.sol
│ │ │ │ │ ├── array_slice_calldata_to_calldata.sol
│ │ │ │ │ ├── array_slice_calldata_to_memory.sol
│ │ │ │ │ └── array_slice_calldata_to_storage.sol
│ │ │ │ ├── storage_array_ref.sol
│ │ │ │ ├── string_allocation_bug.sol
│ │ │ │ ├── string_bytes_conversion.sol
│ │ │ │ ├── string_literal_assign_to_storage_bytes.sol
│ │ │ │ └── strings_in_struct.sol
│ │ │ ├── builtinFunctions/
│ │ │ │ ├── assignment_to_const_var_involving_keccak.sol
│ │ │ │ ├── blobhash.sol
│ │ │ │ ├── blobhash_shadow_resolution.sol
│ │ │ │ ├── blockhash.sol
│ │ │ │ ├── blockhash_shadow_resolution.sol
│ │ │ │ ├── erc7201_equivalent_solidity_spec.sol
│ │ │ │ ├── erc7201_equivalent_solidity_spec_comptime.sol
│ │ │ │ ├── erc7201_layout_specifier_slot_match_comptime.sol
│ │ │ │ ├── erc7201_overflow_expression.sol
│ │ │ │ ├── erc7201_param_abi_encode.sol
│ │ │ │ ├── erc7201_param_array_string_literal.sol
│ │ │ │ ├── erc7201_param_locations.sol
│ │ │ │ ├── erc7201_param_pure_function.sol
│ │ │ │ ├── erc7201_param_string_concat.sol
│ │ │ │ ├── erc7201_param_string_literal_with_escaped_chars.sol
│ │ │ │ ├── erc7201_param_ternary_operator.sol
│ │ │ │ ├── erc7201_param_unicode_string_literal.sol
│ │ │ │ ├── erc7201_param_unicode_string_variable.sol
│ │ │ │ ├── erc7201_param_with_zero_last_byte_of_inner_hash.sol
│ │ │ │ ├── erc7201_param_with_zero_last_byte_of_inner_hash_comptime.sol
│ │ │ │ ├── function_types_sig.sol
│ │ │ │ ├── iterated_keccak256_with_bytes.sol
│ │ │ │ ├── keccak256.sol
│ │ │ │ ├── keccak256_empty.sol
│ │ │ │ ├── keccak256_multiple_arguments.sol
│ │ │ │ ├── keccak256_multiple_arguments_with_numeric_literals.sol
│ │ │ │ ├── keccak256_multiple_arguments_with_string_literals.sol
│ │ │ │ ├── keccak256_packed.sol
│ │ │ │ ├── keccak256_packed_complex_types.sol
│ │ │ │ ├── keccak256_with_bytes.sol
│ │ │ │ ├── msg_sig.sol
│ │ │ │ ├── msg_sig_after_internal_call_is_same.sol
│ │ │ │ ├── ripemd160.sol
│ │ │ │ ├── ripemd160_empty.sol
│ │ │ │ ├── ripemd160_packed.sol
│ │ │ │ ├── sha256.sol
│ │ │ │ ├── sha256_empty.sol
│ │ │ │ └── sha256_packed.sol
│ │ │ ├── calldata/
│ │ │ │ ├── calldata_array_access.sol
│ │ │ │ ├── calldata_array_dynamic_bytes.sol
│ │ │ │ ├── calldata_array_index_range_access.sol
│ │ │ │ ├── calldata_array_length.sol
│ │ │ │ ├── calldata_array_three_dimensional.sol
│ │ │ │ ├── calldata_attached_to_bytes.sol
│ │ │ │ ├── calldata_attached_to_dynamic_array_or_slice.sol
│ │ │ │ ├── calldata_attached_to_static_array.sol
│ │ │ │ ├── calldata_attached_to_struct.sol
│ │ │ │ ├── calldata_bytes_array_bounds.sol
│ │ │ │ ├── calldata_bytes_external.sol
│ │ │ │ ├── calldata_bytes_internal.sol
│ │ │ │ ├── calldata_bytes_to_memory.sol
│ │ │ │ ├── calldata_bytes_to_memory_encode.sol
│ │ │ │ ├── calldata_internal_function_pointer.sol
│ │ │ │ ├── calldata_internal_library.sol
│ │ │ │ ├── calldata_internal_multi_array.sol
│ │ │ │ ├── calldata_internal_multi_fixed_array.sol
│ │ │ │ ├── calldata_memory_mixed.sol
│ │ │ │ ├── calldata_string_array.sol
│ │ │ │ ├── calldata_struct.sol
│ │ │ │ ├── calldata_struct_cleaning.sol
│ │ │ │ ├── calldata_struct_internal.sol
│ │ │ │ └── copy_from_calldata_removes_bytes_data.sol
│ │ │ ├── cleanup/
│ │ │ │ ├── bool_conversion_v1.sol
│ │ │ │ ├── bool_conversion_v2.sol
│ │ │ │ ├── byte_array_to_storage_cleanup.sol
│ │ │ │ ├── cleanup_address_types_shortening.sol
│ │ │ │ ├── cleanup_address_types_v1.sol
│ │ │ │ ├── cleanup_address_types_v2.sol
│ │ │ │ ├── cleanup_bytes_types_shortening_OldCodeGen.sol
│ │ │ │ ├── cleanup_bytes_types_shortening_newCodeGen.sol
│ │ │ │ ├── cleanup_bytes_types_v1.sol
│ │ │ │ ├── cleanup_bytes_types_v2.sol
│ │ │ │ ├── cleanup_in_compound_assign.sol
│ │ │ │ ├── dirty_calldata_bytes.sol
│ │ │ │ ├── dirty_calldata_dynamic_array.sol
│ │ │ │ ├── exp_cleanup.sol
│ │ │ │ ├── exp_cleanup_direct.sol
│ │ │ │ ├── exp_cleanup_nonzero_base.sol
│ │ │ │ ├── exp_cleanup_smaller_base.sol
│ │ │ │ ├── indexed_log_topic_during_explicit_downcast.sol
│ │ │ │ └── indexed_log_topic_during_explicit_downcast_during_emissions.sol
│ │ │ ├── constantEvaluator/
│ │ │ │ ├── negative_fractional_mod.sol
│ │ │ │ └── rounding.sol
│ │ │ ├── constants/
│ │ │ │ ├── asm_address_constant_regression.sol
│ │ │ │ ├── asm_constant_file_level.sol
│ │ │ │ ├── assign_type_info.sol
│ │ │ │ ├── constant_string.sol
│ │ │ │ ├── constant_string_at_file_level.sol
│ │ │ │ ├── constant_variables.sol
│ │ │ │ ├── constants_at_file_level_referencing.sol
│ │ │ │ ├── consteval_array_length.sol
│ │ │ │ ├── function_unreferenced.sol
│ │ │ │ ├── same_constants_different_files.sol
│ │ │ │ └── simple_constant_variables_test.sol
│ │ │ ├── constructor/
│ │ │ │ ├── arrays_in_constructors.sol
│ │ │ │ ├── base_constructor_arguments.sol
│ │ │ │ ├── bytes_in_constructors_packer.sol
│ │ │ │ ├── bytes_in_constructors_unpacker.sol
│ │ │ │ ├── callvalue_check.sol
│ │ │ │ ├── constructor_arguments_external.sol
│ │ │ │ ├── constructor_arguments_internal.sol
│ │ │ │ ├── constructor_function_argument.sol
│ │ │ │ ├── constructor_function_complex.sol
│ │ │ │ ├── constructor_static_array_argument.sol
│ │ │ │ ├── evm_exceptions_in_constructor_call_fail.sol
│ │ │ │ ├── function_usage_in_constructor_arguments.sol
│ │ │ │ ├── functions_called_by_constructor.sol
│ │ │ │ ├── functions_called_by_constructor_through_dispatch.sol
│ │ │ │ ├── inline_member_init_inheritence_without_constructor.sol
│ │ │ │ ├── no_callvalue_check.sol
│ │ │ │ ├── order_of_evaluation.sol
│ │ │ │ ├── payable_constructor.sol
│ │ │ │ ├── state_variable_initialization.sol
│ │ │ │ ├── store_function_in_constructor.sol
│ │ │ │ ├── store_function_in_constructor_packed.sol
│ │ │ │ ├── store_internal_unused_function_in_constructor.sol
│ │ │ │ ├── store_internal_unused_library_function_in_constructor.sol
│ │ │ │ └── transient_state_variable_initialization.sol
│ │ │ ├── conversions/
│ │ │ │ ├── function_type_array_to_storage.sol
│ │ │ │ └── string_to_bytes.sol
│ │ │ ├── deployedCodeExclusion/
│ │ │ │ ├── bound_function.sol
│ │ │ │ ├── library_function.sol
│ │ │ │ ├── library_function_deployed.sol
│ │ │ │ ├── module_function.sol
│ │ │ │ ├── module_function_deployed.sol
│ │ │ │ ├── static_base_function.sol
│ │ │ │ ├── static_base_function_deployed.sol
│ │ │ │ ├── subassembly_deduplication.sol
│ │ │ │ ├── super_function.sol
│ │ │ │ ├── super_function_deployed.sol
│ │ │ │ ├── virtual_function.sol
│ │ │ │ └── virtual_function_deployed.sol
│ │ │ ├── ecrecover/
│ │ │ │ ├── ecrecover.sol
│ │ │ │ ├── ecrecover_abiV2.sol
│ │ │ │ ├── failing_ecrecover_invalid_input.sol
│ │ │ │ ├── failing_ecrecover_invalid_input_asm.sol
│ │ │ │ └── failing_ecrecover_invalid_input_proper.sol
│ │ │ ├── enums/
│ │ │ │ ├── constructing_enums_from_ints.sol
│ │ │ │ ├── enum_explicit_overflow.sol
│ │ │ │ ├── enum_explicit_overflow_homestead.sol
│ │ │ │ ├── enum_referencing.sol
│ │ │ │ ├── enum_with_256_members.sol
│ │ │ │ ├── invalid_enum_logged.sol
│ │ │ │ ├── minmax.sol
│ │ │ │ ├── using_contract_enums_with_explicit_contract_name.sol
│ │ │ │ ├── using_enums.sol
│ │ │ │ ├── using_inherited_enum.sol
│ │ │ │ └── using_inherited_enum_excplicitly.sol
│ │ │ ├── errors/
│ │ │ │ ├── error_in_library_and_interface.sol
│ │ │ │ ├── error_selector.sol
│ │ │ │ ├── error_static_calldata_uint_array_and_dynamic_array.sol
│ │ │ │ ├── error_throw_from_module_via_member_access.sol
│ │ │ │ ├── errors_by_parameter_type.sol
│ │ │ │ ├── named_error_args.sol
│ │ │ │ ├── named_parameters_shadowing_types.sol
│ │ │ │ ├── panic_via_import.sol
│ │ │ │ ├── require_different_errors_same_parameters.sol
│ │ │ │ ├── require_error_condition_evaluated_only_once.sol
│ │ │ │ ├── require_error_evaluation_order_1.sol
│ │ │ │ ├── require_error_evaluation_order_2.sol
│ │ │ │ ├── require_error_evaluation_order_3.sol
│ │ │ │ ├── require_error_function_join_control_flow.sol
│ │ │ │ ├── require_error_function_pointer_parameter.sol
│ │ │ │ ├── require_error_multiple_arguments.sol
│ │ │ │ ├── require_error_stack_check.sol
│ │ │ │ ├── require_error_string_literal.sol
│ │ │ │ ├── require_error_string_memory.sol
│ │ │ │ ├── require_error_uint256.sol
│ │ │ │ ├── require_inherited_error.sol
│ │ │ │ ├── revert_conversion.sol
│ │ │ │ ├── simple.sol
│ │ │ │ ├── small_error_optimization.sol
│ │ │ │ ├── using_structs.sol
│ │ │ │ ├── via_contract_type.sol
│ │ │ │ ├── via_import.sol
│ │ │ │ └── weird_name.sol
│ │ │ ├── events/
│ │ │ │ ├── emit_three_identical_events.sol
│ │ │ │ ├── emit_two_identical_events.sol
│ │ │ │ ├── event.sol
│ │ │ │ ├── event_access_through_base_name_emit.sol
│ │ │ │ ├── event_anonymous.sol
│ │ │ │ ├── event_anonymous_with_signature_collision.sol
│ │ │ │ ├── event_anonymous_with_signature_collision2.sol
│ │ │ │ ├── event_anonymous_with_topics.sol
│ │ │ │ ├── event_constructor.sol
│ │ │ │ ├── event_dynamic_array_memory.sol
│ │ │ │ ├── event_dynamic_array_memory_v2.sol
│ │ │ │ ├── event_dynamic_array_storage.sol
│ │ │ │ ├── event_dynamic_array_storage_v2.sol
│ │ │ │ ├── event_dynamic_nested_array_memory_v2.sol
│ │ │ │ ├── event_dynamic_nested_array_storage_v2.sol
│ │ │ │ ├── event_emit.sol
│ │ │ │ ├── event_emit_file_level.sol
│ │ │ │ ├── event_emit_from_a_foreign_contract.sol
│ │ │ │ ├── event_emit_from_a_foreign_contract_same_name.sol
│ │ │ │ ├── event_emit_from_module_via_member_access.sol
│ │ │ │ ├── event_emit_from_other_contract.sol
│ │ │ │ ├── event_emit_interface_event_via_library.sol
│ │ │ │ ├── event_emit_via_interface.sol
│ │ │ │ ├── event_indexed_function.sol
│ │ │ │ ├── event_indexed_function2.sol
│ │ │ │ ├── event_indexed_mixed.sol
│ │ │ │ ├── event_indexed_string.sol
│ │ │ │ ├── event_lots_of_data.sol
│ │ │ │ ├── event_no_arguments.sol
│ │ │ │ ├── event_really_lots_of_data.sol
│ │ │ │ ├── event_really_lots_of_data_from_storage.sol
│ │ │ │ ├── event_really_really_lots_of_data_from_storage.sol
│ │ │ │ ├── event_selector.sol
│ │ │ │ ├── event_selector_file_level.sol
│ │ │ │ ├── event_shadowing_file_level.sol
│ │ │ │ ├── event_signature_in_library.sol
│ │ │ │ ├── event_static_calldata_uint_array_and_dynamic_array.sol
│ │ │ │ ├── event_string.sol
│ │ │ │ ├── event_struct_memory_v2.sol
│ │ │ │ ├── event_struct_storage_v2.sol
│ │ │ │ ├── events_with_same_name.sol
│ │ │ │ ├── events_with_same_name_file_level.sol
│ │ │ │ ├── events_with_same_name_inherited_emit.sol
│ │ │ │ └── simple.sol
│ │ │ ├── experimental/
│ │ │ │ ├── stub.sol
│ │ │ │ └── type_class.sol
│ │ │ ├── exponentiation/
│ │ │ │ ├── literal_base.sol
│ │ │ │ ├── signed_base.sol
│ │ │ │ └── small_exp.sol
│ │ │ ├── expressions/
│ │ │ │ ├── bit_operators.sol
│ │ │ │ ├── bytes_comparison.sol
│ │ │ │ ├── conditional_expression_different_types.sol
│ │ │ │ ├── conditional_expression_false_literal.sol
│ │ │ │ ├── conditional_expression_functions.sol
│ │ │ │ ├── conditional_expression_multiple.sol
│ │ │ │ ├── conditional_expression_storage_memory_1.sol
│ │ │ │ ├── conditional_expression_storage_memory_2.sol
│ │ │ │ ├── conditional_expression_true_literal.sol
│ │ │ │ ├── conditional_expression_tuples.sol
│ │ │ │ ├── conditional_expression_with_return_values.sol
│ │ │ │ ├── exp_operator_const.sol
│ │ │ │ ├── exp_operator_const_signed.sol
│ │ │ │ ├── exp_zero_literal.sol
│ │ │ │ ├── inc_dec_operators.sol
│ │ │ │ ├── module_from_ternary_expression.sol
│ │ │ │ ├── tuple_from_ternary_expression.sol
│ │ │ │ ├── unary_too_long_literal.sol
│ │ │ │ └── uncalled_address_transfer_send.sol
│ │ │ ├── externalContracts/
│ │ │ │ ├── FixedFeeRegistrar.sol
│ │ │ │ ├── _base64/
│ │ │ │ │ ├── base64_inline_asm.sol
│ │ │ │ │ └── base64_no_inline_asm.sol
│ │ │ │ ├── _prbmath/
│ │ │ │ │ ├── LICENSE.md
│ │ │ │ │ ├── PRBMathCommon.sol
│ │ │ │ │ ├── PRBMathSD59x18.sol
│ │ │ │ │ ├── PRBMathUD60x18.sol
│ │ │ │ │ └── README.md
│ │ │ │ ├── _stringutils/
│ │ │ │ │ ├── LICENSE
│ │ │ │ │ ├── README.md
│ │ │ │ │ └── stringutils.sol
│ │ │ │ ├── base64.sol
│ │ │ │ ├── deposit_contract.sol
│ │ │ │ ├── prbmath_signed.sol
│ │ │ │ ├── prbmath_unsigned.sol
│ │ │ │ ├── ramanujan_pi.sol
│ │ │ │ ├── snark.sol
│ │ │ │ └── strings.sol
│ │ │ ├── externalSource/
│ │ │ │ ├── _external/
│ │ │ │ │ ├── external.sol
│ │ │ │ │ ├── external.sol=sol
│ │ │ │ │ ├── import.sol
│ │ │ │ │ ├── import_with_subdir.sol
│ │ │ │ │ ├── other_external.sol
│ │ │ │ │ └── subdir/
│ │ │ │ │ ├── import.sol
│ │ │ │ │ └── sub_external.sol
│ │ │ │ ├── _nonNormalizedPaths/
│ │ │ │ │ ├── a.sol
│ │ │ │ │ ├── c.sol
│ │ │ │ │ └── d.sol
│ │ │ │ ├── _relativeImports/
│ │ │ │ │ ├── D/
│ │ │ │ │ │ └── d.sol
│ │ │ │ │ ├── c.sol
│ │ │ │ │ ├── dir/
│ │ │ │ │ │ ├── B/
│ │ │ │ │ │ │ └── b.sol
│ │ │ │ │ │ ├── G/
│ │ │ │ │ │ │ └── g.sol
│ │ │ │ │ │ ├── a.sol
│ │ │ │ │ │ └── contract.sol
│ │ │ │ │ └── h.sol
│ │ │ │ ├── _sourceNameStartingWithDots/
│ │ │ │ │ ├── b.sol
│ │ │ │ │ ├── dir/
│ │ │ │ │ │ ├── a.sol
│ │ │ │ │ │ └── contract.sol
│ │ │ │ │ ├── dot_a.sol
│ │ │ │ │ └── dot_dot_b.sol
│ │ │ │ ├── multiple_equals_signs.sol
│ │ │ │ ├── multiple_external_source.sol
│ │ │ │ ├── multisource.sol
│ │ │ │ ├── non_normalized_paths.sol
│ │ │ │ ├── relative_imports.sol
│ │ │ │ ├── source.sol
│ │ │ │ ├── source_import.sol
│ │ │ │ ├── source_import_subdir.sol
│ │ │ │ ├── source_name_starting_with_dots.sol
│ │ │ │ └── source_remapping.sol
│ │ │ ├── fallback/
│ │ │ │ ├── call_forward_bytes.sol
│ │ │ │ ├── falback_return.sol
│ │ │ │ ├── fallback_argument.sol
│ │ │ │ ├── fallback_argument_to_storage.sol
│ │ │ │ ├── fallback_or_receive.sol
│ │ │ │ ├── fallback_override.sol
│ │ │ │ ├── fallback_override2.sol
│ │ │ │ ├── fallback_override_multi.sol
│ │ │ │ ├── fallback_return_data.sol
│ │ │ │ ├── inherited.sol
│ │ │ │ └── short_data_calls_fallback.sol
│ │ │ ├── freeFunctions/
│ │ │ │ ├── easy.sol
│ │ │ │ ├── free_namesake_contract_function.sol
│ │ │ │ ├── free_runtimecode.sol
│ │ │ │ ├── import.sol
│ │ │ │ ├── libraries_from_free.sol
│ │ │ │ ├── new_operator.sol
│ │ │ │ ├── overloads.sol
│ │ │ │ ├── recursion.sol
│ │ │ │ └── storage_calldata_refs.sol
│ │ │ ├── functionCall/
│ │ │ │ ├── array_multiple_local_vars.sol
│ │ │ │ ├── bare_call_no_returndatacopy.sol
│ │ │ │ ├── call_attached_library_function_on_function.sol
│ │ │ │ ├── call_attached_library_function_on_storage_variable.sol
│ │ │ │ ├── call_attached_library_function_on_string.sol
│ │ │ │ ├── call_function_returning_function.sol
│ │ │ │ ├── call_function_returning_nothing_via_pointer.sol
│ │ │ │ ├── call_internal_function_via_expression.sol
│ │ │ │ ├── call_internal_function_with_multislot_arguments_via_pointer.sol
│ │ │ │ ├── call_options_overload.sol
│ │ │ │ ├── calling_nonexisting_contract_throws.sol
│ │ │ │ ├── calling_other_functions.sol
│ │ │ │ ├── calling_uninitialized_function.sol
│ │ │ │ ├── calling_uninitialized_function_in_detail.sol
│ │ │ │ ├── calling_uninitialized_function_through_array.sol
│ │ │ │ ├── conditional_with_arguments.sol
│ │ │ │ ├── creation_function_call_no_args.sol
│ │ │ │ ├── creation_function_call_with_args.sol
│ │ │ │ ├── creation_function_call_with_salt.sol
│ │ │ │ ├── delegatecall_return_value.sol
│ │ │ │ ├── delegatecall_return_value_pre_byzantium.sol
│ │ │ │ ├── disordered_named_args.sol
│ │ │ │ ├── eof/
│ │ │ │ │ ├── call_options_overload.sol
│ │ │ │ │ ├── calling_nonexisting_contract.sol
│ │ │ │ │ ├── external_call_at_construction_time.sol
│ │ │ │ │ └── external_call_to_nonexisting.sol
│ │ │ │ ├── external_call.sol
│ │ │ │ ├── external_call_at_construction_time.sol
│ │ │ │ ├── external_call_dynamic_returndata.sol
│ │ │ │ ├── external_call_to_nonexisting.sol
│ │ │ │ ├── external_call_to_nonexisting_debugstrings.sol
│ │ │ │ ├── external_call_value.sol
│ │ │ │ ├── external_function.sol
│ │ │ │ ├── external_public_override.sol
│ │ │ │ ├── failed_create.sol
│ │ │ │ ├── file_level_call_via_module.sol
│ │ │ │ ├── gas_and_value_basic.sol
│ │ │ │ ├── inheritance/
│ │ │ │ │ ├── base_base_overload.sol
│ │ │ │ │ ├── base_overload.sol
│ │ │ │ │ ├── call_base.sol
│ │ │ │ │ ├── call_base_base.sol
│ │ │ │ │ ├── call_base_base_explicit.sol
│ │ │ │ │ ├── call_base_explicit.sol
│ │ │ │ │ ├── call_unimplemented_base.sol
│ │ │ │ │ ├── super_skip_unimplemented_in_abstract_contract.sol
│ │ │ │ │ └── super_skip_unimplemented_in_interface.sol
│ │ │ │ ├── mapping_array_internal_argument.sol
│ │ │ │ ├── mapping_internal_argument.sol
│ │ │ │ ├── mapping_internal_return.sol
│ │ │ │ ├── member_accessors.sol
│ │ │ │ ├── multiple_functions.sol
│ │ │ │ ├── multiple_return_values.sol
│ │ │ │ ├── named_args.sol
│ │ │ │ ├── named_args_overload.sol
│ │ │ │ ├── precompile_extcodesize_check.sol
│ │ │ │ ├── return_size_bigger_than_expected.sol
│ │ │ │ ├── return_size_shorter_than_expected.sol
│ │ │ │ ├── return_size_shorter_than_expected_evm_version_after_homestead.sol
│ │ │ │ ├── send_zero_ether.sol
│ │ │ │ ├── transaction_status.sol
│ │ │ │ └── value_test.sol
│ │ │ ├── functionSelector/
│ │ │ │ └── function_selector_via_contract_name.sol
│ │ │ ├── functionTypes/
│ │ │ │ ├── address_member.sol
│ │ │ │ ├── call_to_zero_initialized_function_type_ir.sol
│ │ │ │ ├── call_to_zero_initialized_function_type_legacy.sol
│ │ │ │ ├── comparison_operator_for_external_function_cleans_dirty_bits.sol
│ │ │ │ ├── comparison_operators_for_external_functions.sol
│ │ │ │ ├── duplicated_function_definition_with_same_id_in_internal_dispatcher.sol
│ │ │ │ ├── external_functions_with_calldata_args_assigned_to_function_pointers_with_memory_type.sol
│ │ │ │ ├── function_delete_stack.sol
│ │ │ │ ├── function_delete_storage.sol
│ │ │ │ ├── function_external_delete_storage.sol
│ │ │ │ ├── function_type_library_internal.sol
│ │ │ │ ├── inline_array_with_value_call_option.sol
│ │ │ │ ├── mapping_of_functions.sol
│ │ │ │ ├── pass_function_types_externally.sol
│ │ │ │ ├── pass_function_types_internally.sol
│ │ │ │ ├── same_function_in_construction_and_runtime.sol
│ │ │ │ ├── same_function_in_construction_and_runtime_equality_check.sol
│ │ │ │ ├── selector_1.sol
│ │ │ │ ├── selector_2.sol
│ │ │ │ ├── selector_assignment_expression.sol
│ │ │ │ ├── selector_expression_side_effect.sol
│ │ │ │ ├── selector_ternary.sol
│ │ │ │ ├── selector_ternary_function_pointer_from_function_call.sol
│ │ │ │ ├── stack_height_check_on_adding_gas_variable_to_function.sol
│ │ │ │ ├── store_function.sol
│ │ │ │ ├── struct_with_external_function.sol
│ │ │ │ ├── struct_with_functions.sol
│ │ │ │ ├── ternary_contract_internal_function.sol
│ │ │ │ ├── ternary_contract_library_internal_function.sol
│ │ │ │ ├── ternary_contract_public_function.sol
│ │ │ │ └── uninitialized_internal_storage_function_call.sol
│ │ │ ├── getters/
│ │ │ │ ├── array_mapping_struct.sol
│ │ │ │ ├── arrays.sol
│ │ │ │ ├── bytes.sol
│ │ │ │ ├── mapping.sol
│ │ │ │ ├── mapping_array_struct.sol
│ │ │ │ ├── mapping_of_string.sol
│ │ │ │ ├── mapping_to_struct.sol
│ │ │ │ ├── mapping_with_names.sol
│ │ │ │ ├── string_and_bytes.sol
│ │ │ │ ├── struct_with_bytes.sol
│ │ │ │ ├── struct_with_bytes_simple.sol
│ │ │ │ ├── transient_value_types.sol
│ │ │ │ ├── transient_value_types_multi_frame_call.sol
│ │ │ │ └── value_types.sol
│ │ │ ├── immutable/
│ │ │ │ ├── assign_at_declaration.sol
│ │ │ │ ├── assign_from_immutables.sol
│ │ │ │ ├── delete.sol
│ │ │ │ ├── fun_read_in_ctor.sol
│ │ │ │ ├── getter.sol
│ │ │ │ ├── getter_call_in_constructor.sol
│ │ │ │ ├── immutable_signed.sol
│ │ │ │ ├── immutable_tag_too_large_bug.sol
│ │ │ │ ├── increment_decrement.sol
│ │ │ │ ├── inheritance.sol
│ │ │ │ ├── internal_function_pointer.sol
│ │ │ │ ├── multi_creation.sol
│ │ │ │ ├── multiple_initializations.sol
│ │ │ │ ├── read_in_ctor.sol
│ │ │ │ ├── small_types_in_reverse.sol
│ │ │ │ ├── stub.sol
│ │ │ │ ├── uninitialized.sol
│ │ │ │ └── use_scratch.sol
│ │ │ ├── inheritance/
│ │ │ │ ├── access_base_storage.sol
│ │ │ │ ├── address_overload_resolution.sol
│ │ │ │ ├── base_access_to_function_type_variables.sol
│ │ │ │ ├── constructor_inheritance_init_order.sol
│ │ │ │ ├── constructor_inheritance_init_order_2.sol
│ │ │ │ ├── constructor_inheritance_init_order_3_legacy.sol
│ │ │ │ ├── constructor_inheritance_init_order_3_viaIR.sol
│ │ │ │ ├── constructor_with_params.sol
│ │ │ │ ├── constructor_with_params_diamond_inheritance.sol
│ │ │ │ ├── constructor_with_params_inheritance.sol
│ │ │ │ ├── constructor_with_params_inheritance_2.sol
│ │ │ │ ├── dataLocation/
│ │ │ │ │ └── external_public_calldata.sol
│ │ │ │ ├── derived_overload_base_function_direct.sol
│ │ │ │ ├── derived_overload_base_function_indirect.sol
│ │ │ │ ├── explicit_base_class.sol
│ │ │ │ ├── inherited_constant_state_var.sol
│ │ │ │ ├── inherited_function.sol
│ │ │ │ ├── inherited_function_calldata_calldata_interface.sol
│ │ │ │ ├── inherited_function_calldata_memory.sol
│ │ │ │ ├── inherited_function_calldata_memory_interface.sol
│ │ │ │ ├── inherited_function_from_a_library.sol
│ │ │ │ ├── inherited_function_through_dispatch.sol
│ │ │ │ ├── interface_inheritance_conversions.sol
│ │ │ │ ├── member_notation_ctor.sol
│ │ │ │ ├── overloaded_function_call_resolve_to_first.sol
│ │ │ │ ├── overloaded_function_call_resolve_to_second.sol
│ │ │ │ ├── overloaded_function_call_with_if_else.sol
│ │ │ │ ├── pass_dynamic_arguments_to_the_base.sol
│ │ │ │ ├── pass_dynamic_arguments_to_the_base_base.sol
│ │ │ │ ├── pass_dynamic_arguments_to_the_base_base_with_gap.sol
│ │ │ │ ├── state_variables_init_order.sol
│ │ │ │ ├── state_variables_init_order_2.sol
│ │ │ │ ├── state_variables_init_order_3.sol
│ │ │ │ ├── super_in_constructor.sol
│ │ │ │ ├── super_in_constructor_assignment.sol
│ │ │ │ ├── super_overload.sol
│ │ │ │ ├── transient_storage_state_variable.sol
│ │ │ │ ├── transient_storage_state_variable_abstract_contract.sol
│ │ │ │ └── value_for_constructor.sol
│ │ │ ├── inlineAssembly/
│ │ │ │ ├── basefee_berlin_function.sol
│ │ │ │ ├── blobbasefee_shanghai_function.sol
│ │ │ │ ├── blobhash.sol
│ │ │ │ ├── blobhash_index_exceeding_blob_count.sol
│ │ │ │ ├── blobhash_pre_cancun.sol
│ │ │ │ ├── calldata_array_assign_dynamic.sol
│ │ │ │ ├── calldata_array_assign_static.sol
│ │ │ │ ├── calldata_array_read.sol
│ │ │ │ ├── calldata_assign.sol
│ │ │ │ ├── calldata_assign_from_nowhere.sol
│ │ │ │ ├── calldata_length_read.sol
│ │ │ │ ├── calldata_offset_read.sol
│ │ │ │ ├── calldata_offset_read_write.sol
│ │ │ │ ├── calldata_struct_assign.sol
│ │ │ │ ├── calldata_struct_assign_and_return.sol
│ │ │ │ ├── chainid.sol
│ │ │ │ ├── clz.sol
│ │ │ │ ├── clz_pre_osaka.sol
│ │ │ │ ├── constant_access.sol
│ │ │ │ ├── constant_access_referencing.sol
│ │ │ │ ├── difficulty.sol
│ │ │ │ ├── external_function_pointer_address.sol
│ │ │ │ ├── external_function_pointer_address_assignment.sol
│ │ │ │ ├── external_function_pointer_selector.sol
│ │ │ │ ├── external_function_pointer_selector_assignment.sol
│ │ │ │ ├── external_identifier_access_shadowing.sol
│ │ │ │ ├── for_loop_break.sol
│ │ │ │ ├── for_loop_continue.sol
│ │ │ │ ├── for_loop_nested.sol
│ │ │ │ ├── function_name_clash.sol
│ │ │ │ ├── inline_assembly_embedded_function_call.sol
│ │ │ │ ├── inline_assembly_for.sol
│ │ │ │ ├── inline_assembly_for2.sol
│ │ │ │ ├── inline_assembly_function_call.sol
│ │ │ │ ├── inline_assembly_function_call2.sol
│ │ │ │ ├── inline_assembly_function_call_assignment.sol
│ │ │ │ ├── inline_assembly_if.sol
│ │ │ │ ├── inline_assembly_in_modifiers.sol
│ │ │ │ ├── inline_assembly_memory_access.sol
│ │ │ │ ├── inline_assembly_read_and_write_stack.sol
│ │ │ │ ├── inline_assembly_recursion.sol
│ │ │ │ ├── inline_assembly_storage_access.sol
│ │ │ │ ├── inline_assembly_storage_access_inside_function.sol
│ │ │ │ ├── inline_assembly_storage_access_local_var.sol
│ │ │ │ ├── inline_assembly_storage_access_via_pointer.sol
│ │ │ │ ├── inline_assembly_switch.sol
│ │ │ │ ├── inline_assembly_transient_storage_access_inside_function.sol
│ │ │ │ ├── inline_assembly_write_to_stack.sol
│ │ │ │ ├── inlineasm_empty_let.sol
│ │ │ │ ├── keccak256_assembly.sol
│ │ │ │ ├── keccak256_optimization.sol
│ │ │ │ ├── keccak256_optimizer_bug_different_memory_location.sol
│ │ │ │ ├── keccak256_optimizer_cache_bug.sol
│ │ │ │ ├── keccak_optimization_bug_string.sol
│ │ │ │ ├── keccak_yul_optimization.sol
│ │ │ │ ├── leave.sol
│ │ │ │ ├── mcopy.sol
│ │ │ │ ├── mcopy_as_identifier_pre_cancun.sol
│ │ │ │ ├── mcopy_empty.sol
│ │ │ │ ├── mcopy_overlap.sol
│ │ │ │ ├── optimize_memory_store_multi_block.sol
│ │ │ │ ├── optimize_memory_store_multi_block_bugreport.sol
│ │ │ │ ├── prevrandao.sol
│ │ │ │ ├── selfbalance.sol
│ │ │ │ ├── shadowing_local_function_opcode.sol
│ │ │ │ ├── slot_access.sol
│ │ │ │ ├── slot_access_via_mapping_pointer.sol
│ │ │ │ ├── tload_tstore_not_reserved_before_cancun.sol
│ │ │ │ ├── transient_storage_creation.sol
│ │ │ │ ├── transient_storage_low_level_calls.sol
│ │ │ │ ├── transient_storage_multiple_calls_different_transactions.sol
│ │ │ │ ├── transient_storage_multiple_transactions.sol
│ │ │ │ ├── transient_storage_reset_between_creation_runtime.sol
│ │ │ │ ├── transient_storage_sanity_checks.sol
│ │ │ │ ├── transient_storage_selfdestruct.sol
│ │ │ │ ├── transient_storage_simple_reentrancy_lock.sol
│ │ │ │ ├── truefalse.sol
│ │ │ │ └── tstore_hidden_staticcall.sol
│ │ │ ├── integer/
│ │ │ │ ├── basic.sol
│ │ │ │ ├── int.sol
│ │ │ │ ├── many_local_variables.sol
│ │ │ │ ├── small_signed_types.sol
│ │ │ │ └── uint.sol
│ │ │ ├── interfaceID/
│ │ │ │ ├── homer.sol
│ │ │ │ ├── homer_interfaceId.sol
│ │ │ │ ├── interfaceId_events.sol
│ │ │ │ ├── interfaces.sol
│ │ │ │ ├── lisa.sol
│ │ │ │ └── lisa_interfaceId.sol
│ │ │ ├── isoltestTesting/
│ │ │ │ ├── account.sol
│ │ │ │ ├── balance_other_contract.sol
│ │ │ │ ├── balance_with_balance.sol
│ │ │ │ ├── balance_with_balance2.sol
│ │ │ │ ├── balance_without_balance.sol
│ │ │ │ ├── builtins.sol
│ │ │ │ ├── effects.sol
│ │ │ │ ├── empty_contract.sol
│ │ │ │ ├── format_raw_string_with_control_chars.sol
│ │ │ │ ├── isoltestFormatting.sol
│ │ │ │ ├── precompiles_ignoring_trailing_input.sol
│ │ │ │ └── storage/
│ │ │ │ ├── storage_empty.sol
│ │ │ │ └── storage_nonempty.sol
│ │ │ ├── libraries/
│ │ │ │ ├── attached_internal_library_function_accepting_calldata.sol
│ │ │ │ ├── attached_internal_library_function_returning_calldata.sol
│ │ │ │ ├── attached_public_library_function_accepting_calldata.sol.sol
│ │ │ │ ├── attached_public_library_function_returning_calldata.sol
│ │ │ │ ├── external_call_with_function_pointer_parameter.sol
│ │ │ │ ├── external_call_with_storage_array_parameter.sol
│ │ │ │ ├── external_call_with_storage_mapping_parameter.sol
│ │ │ │ ├── internal_call_attached_with_parentheses.sol
│ │ │ │ ├── internal_call_unattached_with_parentheses.sol
│ │ │ │ ├── internal_library_function.sol
│ │ │ │ ├── internal_library_function_attached_to_address.sol
│ │ │ │ ├── internal_library_function_attached_to_address_named_send_transfer.sol
│ │ │ │ ├── internal_library_function_attached_to_array_named_pop_push.sol
│ │ │ │ ├── internal_library_function_attached_to_bool.sol
│ │ │ │ ├── internal_library_function_attached_to_contract.sol
│ │ │ │ ├── internal_library_function_attached_to_dynamic_array.sol
│ │ │ │ ├── internal_library_function_attached_to_enum.sol
│ │ │ │ ├── internal_library_function_attached_to_external_function_type.sol
│ │ │ │ ├── internal_library_function_attached_to_fixed_array.sol
│ │ │ │ ├── internal_library_function_attached_to_fixed_bytes.sol
│ │ │ │ ├── internal_library_function_attached_to_integer.sol
│ │ │ │ ├── internal_library_function_attached_to_interface.sol
│ │ │ │ ├── internal_library_function_attached_to_internal_function_type.sol
│ │ │ │ ├── internal_library_function_attached_to_internal_function_type_named_selector.sol
│ │ │ │ ├── internal_library_function_attached_to_literal.sol
│ │ │ │ ├── internal_library_function_attached_to_mapping.sol
│ │ │ │ ├── internal_library_function_attached_to_string_accepting_memory.sol
│ │ │ │ ├── internal_library_function_attached_to_string_accepting_storage.sol
│ │ │ │ ├── internal_library_function_attached_to_struct.sol
│ │ │ │ ├── internal_library_function_calling_private.sol
│ │ │ │ ├── internal_library_function_pointer.sol
│ │ │ │ ├── internal_library_function_return_var_size.sol
│ │ │ │ ├── internal_types_in_library.sol
│ │ │ │ ├── library_address.sol
│ │ │ │ ├── library_address_homestead.sol
│ │ │ │ ├── library_address_via_module.sol
│ │ │ │ ├── library_call_in_homestead.sol
│ │ │ │ ├── library_delegatecall_guard_pure.sol
│ │ │ │ ├── library_delegatecall_guard_view_needed.sol
│ │ │ │ ├── library_delegatecall_guard_view_not_needed.sol
│ │ │ │ ├── library_delegatecall_guard_view_staticcall.sol
│ │ │ │ ├── library_enum_as_an_expression.sol
│ │ │ │ ├── library_function_selectors.sol
│ │ │ │ ├── library_function_selectors_struct.sol
│ │ │ │ ├── library_references_preserve.sol
│ │ │ │ ├── library_return_struct_with_mapping.sol
│ │ │ │ ├── library_staticcall_delegatecall.sol
│ │ │ │ ├── library_stray_values.sol
│ │ │ │ ├── library_struct_as_an_expression.sol
│ │ │ │ ├── mapping_arguments_in_library.sol
│ │ │ │ ├── mapping_returns_in_library.sol
│ │ │ │ ├── mapping_returns_in_library_named.sol
│ │ │ │ ├── payable_function_calls_library.sol
│ │ │ │ ├── stub.sol
│ │ │ │ ├── stub_internal.sol
│ │ │ │ ├── using_for_by_name.sol
│ │ │ │ ├── using_for_function_on_int.sol
│ │ │ │ ├── using_for_overload.sol
│ │ │ │ ├── using_for_storage_structs.sol
│ │ │ │ ├── using_library_mappings_public.sol
│ │ │ │ ├── using_library_mappings_return.sol
│ │ │ │ └── using_library_structs.sol
│ │ │ ├── literals/
│ │ │ │ ├── denominations.sol
│ │ │ │ ├── denominations_in_array_sizes.sol
│ │ │ │ ├── escape.sol
│ │ │ │ ├── ether.sol
│ │ │ │ ├── fractional_denominations.sol
│ │ │ │ ├── gwei.sol
│ │ │ │ ├── hex_string_with_non_printable_characters.sol
│ │ │ │ ├── hex_string_with_underscore.sol
│ │ │ │ ├── scientific_notation.sol
│ │ │ │ ├── ternary_operator_with_literal_types_overflow.sol
│ │ │ │ └── wei.sol
│ │ │ ├── memoryManagement/
│ │ │ │ ├── assembly_access.sol
│ │ │ │ ├── memory_types_initialisation.sol
│ │ │ │ ├── return_variable.sol
│ │ │ │ ├── static_memory_array_allocation.sol
│ │ │ │ └── struct_allocation.sol
│ │ │ ├── metaTypes/
│ │ │ │ └── name_other_contract.sol
│ │ │ ├── modifiers/
│ │ │ │ ├── access_through_contract_name.sol
│ │ │ │ ├── access_through_module_name.sol
│ │ │ │ ├── break_in_modifier.sol
│ │ │ │ ├── continue_in_modifier.sol
│ │ │ │ ├── evaluation_order.sol
│ │ │ │ ├── function_modifier.sol
│ │ │ │ ├── function_modifier_calling_functions_in_creation_context.sol
│ │ │ │ ├── function_modifier_empty.sol
│ │ │ │ ├── function_modifier_for_constructor.sol
│ │ │ │ ├── function_modifier_library.sol
│ │ │ │ ├── function_modifier_library_inheritance.sol
│ │ │ │ ├── function_modifier_local_variables.sol
│ │ │ │ ├── function_modifier_loop.sol
│ │ │ │ ├── function_modifier_loop_viair.sol
│ │ │ │ ├── function_modifier_multi_invocation.sol
│ │ │ │ ├── function_modifier_multi_invocation_viair.sol
│ │ │ │ ├── function_modifier_multi_with_return.sol
│ │ │ │ ├── function_modifier_multiple_times.sol
│ │ │ │ ├── function_modifier_multiple_times_local_vars.sol
│ │ │ │ ├── function_modifier_overriding.sol
│ │ │ │ ├── function_modifier_return_reference.sol
│ │ │ │ ├── function_return_parameter.sol
│ │ │ │ ├── function_return_parameter_complex.sol
│ │ │ │ ├── modifer_recursive.sol
│ │ │ │ ├── modifier_in_constructor_ice.sol
│ │ │ │ ├── modifier_init_return.sol
│ │ │ │ ├── modifiers_in_construction_context.sol
│ │ │ │ ├── return_does_not_skip_modifier.sol
│ │ │ │ ├── return_in_modifier.sol
│ │ │ │ ├── stacked_return_with_modifiers.sol
│ │ │ │ └── transient_state_variable_value_type.sol
│ │ │ ├── multiSource/
│ │ │ │ ├── circular_import.sol
│ │ │ │ ├── circular_import_2.sol
│ │ │ │ ├── circular_reimport.sol
│ │ │ │ ├── circular_reimport_2.sol
│ │ │ │ ├── free_different_interger_types.sol
│ │ │ │ ├── free_function_resolution_base_contract.sol
│ │ │ │ ├── free_function_resolution_override_virtual.sol
│ │ │ │ ├── free_function_resolution_override_virtual_super.sol
│ │ │ │ ├── free_function_resolution_override_virtual_transitive.sol
│ │ │ │ ├── free_function_transitive_import.sol
│ │ │ │ ├── import.sol
│ │ │ │ ├── import_overloaded_function.sol
│ │ │ │ ├── imported_free_function_via_alias.sol
│ │ │ │ ├── imported_free_function_via_alias_direct_call.sol
│ │ │ │ └── reimport_imported_function.sol
│ │ │ ├── operators/
│ │ │ │ ├── compound_assign.sol
│ │ │ │ ├── compound_assign_transient_storage.sol
│ │ │ │ ├── shifts/
│ │ │ │ │ ├── bitwise_shifting_constantinople.sol
│ │ │ │ │ ├── bitwise_shifting_constantinople_combined.sol
│ │ │ │ │ ├── bitwise_shifting_constants_constantinople.sol
│ │ │ │ │ ├── shift_bytes_cleanup.sol
│ │ │ │ │ ├── shift_bytes_cleanup_viaYul.sol
│ │ │ │ │ ├── shift_cleanup.sol
│ │ │ │ │ ├── shift_cleanup_garbled.sol
│ │ │ │ │ ├── shift_constant_left.sol
│ │ │ │ │ ├── shift_constant_left_assignment.sol
│ │ │ │ │ ├── shift_constant_right.sol
│ │ │ │ │ ├── shift_constant_right_assignment.sol
│ │ │ │ │ ├── shift_left.sol
│ │ │ │ │ ├── shift_left_assignment.sol
│ │ │ │ │ ├── shift_left_assignment_different_type.sol
│ │ │ │ │ ├── shift_left_larger_type.sol
│ │ │ │ │ ├── shift_left_uint32.sol
│ │ │ │ │ ├── shift_left_uint8.sol
│ │ │ │ │ ├── shift_negative_constant_left.sol
│ │ │ │ │ ├── shift_negative_constant_right.sol
│ │ │ │ │ ├── shift_overflow.sol
│ │ │ │ │ ├── shift_right.sol
│ │ │ │ │ ├── shift_right_assignment.sol
│ │ │ │ │ ├── shift_right_garbled_signed_v1.sol
│ │ │ │ │ ├── shift_right_garbled_signed_v2.sol
│ │ │ │ │ ├── shift_right_garbled_v1.sol
│ │ │ │ │ ├── shift_right_garbled_v2.sol
│ │ │ │ │ ├── shift_right_negative_literal.sol
│ │ │ │ │ ├── shift_right_negative_lvalue.sol
│ │ │ │ │ ├── shift_right_negative_lvalue_assignment.sol
│ │ │ │ │ ├── shift_right_negative_lvalue_int16.sol
│ │ │ │ │ ├── shift_right_negative_lvalue_int32.sol
│ │ │ │ │ ├── shift_right_negative_lvalue_int8.sol
│ │ │ │ │ ├── shift_right_negative_lvalue_signextend_int16_v1.sol
│ │ │ │ │ ├── shift_right_negative_lvalue_signextend_int16_v2.sol
│ │ │ │ │ ├── shift_right_negative_lvalue_signextend_int32_v1.sol
│ │ │ │ │ ├── shift_right_negative_lvalue_signextend_int32_v2.sol
│ │ │ │ │ ├── shift_right_negative_lvalue_signextend_int8_v1.sol
│ │ │ │ │ ├── shift_right_negative_lvalue_signextend_int8_v2.sol
│ │ │ │ │ ├── shift_right_uint32.sol
│ │ │ │ │ ├── shift_right_uint8.sol
│ │ │ │ │ ├── shift_underflow_negative_rvalue.sol
│ │ │ │ │ └── shifts.sol
│ │ │ │ ├── transient_storage_variable_increment_decrement.sol
│ │ │ │ └── userDefined/
│ │ │ │ ├── all_possible_operators.sol
│ │ │ │ ├── all_possible_user_defined_value_types_with_operators.sol
│ │ │ │ ├── attaching_and_defining_operator_with_same_function.sol
│ │ │ │ ├── checked_operators.sol
│ │ │ │ ├── consecutive_operator_invocations.sol
│ │ │ │ ├── fixed_point_udvt_with_operators.sol
│ │ │ │ ├── multiple_operator_definitions_different_types_different_functions_separate_directives.sol
│ │ │ │ ├── multiple_operator_definitions_same_type_same_function_same_directive.sol
│ │ │ │ ├── operator_definition_shadowing_builtin_keccak256.sol
│ │ │ │ ├── operator_evaluation_order.sol
│ │ │ │ ├── operator_making_pure_external_call.sol
│ │ │ │ ├── operator_making_view_external_call.sol
│ │ │ │ ├── operator_parameter_and_return_cleanup_between_calls.sol
│ │ │ │ ├── operator_parameter_cleanup.sol
│ │ │ │ ├── operator_precendence.sol
│ │ │ │ ├── operator_return_parameter_cleanup.sol
│ │ │ │ ├── recursive_operator.sol
│ │ │ │ └── unchecked_operators.sol
│ │ │ ├── optimizer/
│ │ │ │ ├── shift_bytes.sol
│ │ │ │ └── unused_store_storage_removal_bug.sol
│ │ │ ├── payable/
│ │ │ │ └── no_nonpayable_circumvention_by_modifier.sol
│ │ │ ├── receive/
│ │ │ │ ├── empty_calldata_calls_receive.sol
│ │ │ │ ├── ether_and_data.sol
│ │ │ │ └── inherited.sol
│ │ │ ├── revertStrings/
│ │ │ │ ├── array_slices.sol
│ │ │ │ ├── bubble.sol
│ │ │ │ ├── calldata_array_dynamic_invalid.sol
│ │ │ │ ├── calldata_array_dynamic_static_short_decode.sol
│ │ │ │ ├── calldata_array_dynamic_static_short_reencode.sol
│ │ │ │ ├── calldata_array_invalid_length.sol
│ │ │ │ ├── calldata_arrays_too_large.sol
│ │ │ │ ├── calldata_tail_short.sol
│ │ │ │ ├── calldata_too_short_v1.sol
│ │ │ │ ├── called_contract_has_code.sol
│ │ │ │ ├── empty_v1.sol
│ │ │ │ ├── empty_v2.sol
│ │ │ │ ├── enum_v1.sol
│ │ │ │ ├── enum_v2.sol
│ │ │ │ ├── ether_non_payable_function.sol
│ │ │ │ ├── function_entry_checks_v1.sol
│ │ │ │ ├── function_entry_checks_v2.sol
│ │ │ │ ├── invalid_abi_decoding_calldata_v1.sol
│ │ │ │ ├── invalid_abi_decoding_memory_v1.sol
│ │ │ │ ├── library_non_view_call.sol
│ │ │ │ ├── short_input_array.sol
│ │ │ │ ├── short_input_bytes.sol
│ │ │ │ ├── transfer.sol
│ │ │ │ └── unknown_sig_no_fallback.sol
│ │ │ ├── reverts/
│ │ │ │ ├── assert_require.sol
│ │ │ │ ├── eof/
│ │ │ │ │ └── revert_return_area.sol
│ │ │ │ ├── error_struct.sol
│ │ │ │ ├── invalid_enum_as_external_arg.sol
│ │ │ │ ├── invalid_enum_as_external_ret.sol
│ │ │ │ ├── invalid_enum_compared.sol
│ │ │ │ ├── invalid_enum_stored.sol
│ │ │ │ ├── invalid_instruction.sol
│ │ │ │ ├── revert.sol
│ │ │ │ ├── revert_return_area.sol
│ │ │ │ └── simple_throw.sol
│ │ │ ├── saltedCreate/
│ │ │ │ ├── eof/
│ │ │ │ │ └── salted_create_with_value.sol
│ │ │ │ ├── prediction_example.sol
│ │ │ │ ├── salted_create.sol
│ │ │ │ └── salted_create_with_value.sol
│ │ │ ├── scoping/
│ │ │ │ └── c99_scoping_activation.sol
│ │ │ ├── shanghai/
│ │ │ │ ├── evmone_support.sol
│ │ │ │ └── push0.sol
│ │ │ ├── smoke/
│ │ │ │ ├──
================================================
FILE CONTENTS
================================================
================================================
FILE: .circleci/README.md
================================================
## CircleCI integration
### Docker images
The docker images are built locally on the developer machine:
```sh
cd .circleci/docker/
docker build -t ethereum/solidity-buildpack-deps:ubuntu2404-<revision> -f Dockerfile.ubuntu2404 .
docker push ethereum/solidity-buildpack-deps:ubuntu2404-<revision>
```
The current revisions per docker image are stored in [circle ci pipeline parameters](https://github.com/CircleCI-Public/api-preview-docs/blob/master/docs/pipeline-parameters.md#pipeline-parameters) called `<image-desc>-docker-image-rev` (e.g., `ubuntu-2404-docker-image-rev`). Please update the value assigned to the parameter(s) corresponding to the docker image(s) being updated at the time of the update. Please verify that the value assigned to the parameter matches the revision part of the docker image tag (`<revision>` in the docker build/push snippet shown above). Otherwise, the docker image used by circle ci and the one actually pushed to docker hub will differ.
Once the docker image has been built and pushed to Docker Hub, you can find it at:
https://hub.docker.com/r/ethereum/solidity-buildpack-deps:ubuntu2404-<revision>
where the image tag reflects the target OS and revision to build Solidity and run its tests on.
### Testing docker images locally
```sh
cd solidity
# Mounts your local solidity directory in docker container for testing
docker run -v `pwd`:/src/solidity -ti ethereum/solidity-buildpack-deps:ubuntu2404-<revision> /bin/bash
cd /src/solidity
<commands_to_test_build_with_new_docker_image>
```
================================================
FILE: .circleci/cln-asan.supp
================================================
leak:*libcln*
================================================
FILE: .circleci/compare_bytecode_reports.sh
================================================
#!/usr/bin/env bash
set -euo pipefail
#------------------------------------------------------------------------------
# Compares bytecode reports generated by prepare_report.py/.js.
#
# ------------------------------------------------------------------------------
# This file is part of solidity.
#
# solidity is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# solidity is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with solidity. If not, see <http://www.gnu.org/licenses/>
#
# (c) 2023 solidity contributors.
#------------------------------------------------------------------------------
no_cli_platforms=(
emscripten
)
native_platforms=(
ubuntu2004-static
ubuntu_arm
ubuntu
osx
osx_intel
windows
)
interfaces=(
cli
standard-json
)
for preset in "$@"; do
report_files=()
for platform in "${no_cli_platforms[@]}"; do
report_files+=("bytecode-report-${platform}-${preset}.txt")
done
for platform in "${native_platforms[@]}"; do
for interface in "${interfaces[@]}"; do
report_files+=("bytecode-report-${platform}-${interface}-${preset}.txt")
done
done
echo "Reports to compare:"
printf -- "- %s\n" "${report_files[@]}"
if ! diff --brief --report-identical-files --from-file "${report_files[@]}"; then
diff --unified=0 --report-identical-files --from-file "${report_files[@]}" | head --lines 50
zip "bytecode-reports-${preset}.zip" "${report_files[@]}"
exit 1
fi
done
================================================
FILE: .circleci/config.yml
================================================
# vim:ts=2:sw=2:et
# --------------------------------------------------------------------------
# Prefixes used in order to keep CircleCI workflow overview more readable:
# - b: build
# - t: test
# - ubu: ubuntu
# - ems: Emscripten
version: 2.1
parameters:
ubuntu-2004-docker-image:
type: string
# ghcr.io/argotorg/solidity-buildpack-deps:ubuntu2004-26
default: "ghcr.io/argotorg/solidity-buildpack-deps@sha256:1f387a77be889f65a2a25986a5c5eccc88cec23fabe6aeaf351790751145c81e"
ubuntu-2404-docker-image:
type: string
# ghcr.io/argotorg/solidity-buildpack-deps:ubuntu2404-7
default: "ghcr.io/argotorg/solidity-buildpack-deps@sha256:e52bd8fbb38908f203c6866e39562548faf26e5b7a5174f9860b44aae2b8f0cd"
ubuntu-2404-arm-docker-image:
type: string
# ghcr.io/argotorg/solidity-buildpack-deps:ubuntu2404.arm-3
default: "ghcr.io/argotorg/solidity-buildpack-deps@sha256:1e6dbf9a9173f2645449281a1e11918a95ca6dc04e59aa9d70824cffc44697ed"
ubuntu-2404-clang-docker-image:
type: string
# ghcr.io/argotorg/solidity-buildpack-deps:ubuntu2404.clang-8
default: "ghcr.io/argotorg/solidity-buildpack-deps@sha256:e283c8ec6a59c76565c89b856d8019af2fa5beb96f27d3064fc4dda42bf3524d"
ubuntu-clang-ossfuzz-docker-image:
type: string
# ghcr.io/argotorg/solidity-buildpack-deps:ubuntu.clang.ossfuzz-13
default: "ghcr.io/argotorg/solidity-buildpack-deps@sha256:2acb5d6f254ece25a96096f26960b5fe114eb86ceca92312cd20d59c096bf6e4"
emscripten-docker-image:
type: string
# NOTE: Please remember to update the `scripts/build_emscripten.sh` whenever the hash of this image changes.
# ghcr.io/argotorg/solidity-buildpack-deps:emscripten-22
default: "ghcr.io/argotorg/solidity-buildpack-deps@sha256:b9c953144d82cca5553f65626bc43b8af456dbc8966f8732ff9522f33ca8d722"
evm-version:
type: string
default: osaka
orbs:
win: circleci/windows@2.2.0
commands:
matrix_notify_unless_pr:
description: "Posts a notification to the solidity-dev room on Matrix (if not running on a PR)."
parameters:
event:
type: enum
enum: ["failure", "success", "release"]
condition:
type: string
steps:
- run:
name: "Matrix notification"
when: << parameters.condition >>
command: scripts/ci/notification/matrix_notification.sh << parameters.event >>
matrix_notify_failure_unless_pr:
description: "Posts a failure notification to the main room on Matrix (if not running on a PR)."
steps:
- matrix_notify_unless_pr:
event: failure
condition: on_fail
matrix_notify_success_unless_pr:
description: "Posts a success notification to the main room on Matrix (if not running on a PR)."
steps:
- matrix_notify_unless_pr:
event: success
condition: on_success
matrix_notify_release_unless_pr:
description: "Posts a release notification to the main room on Matrix (if not running on a PR)."
steps:
- matrix_notify_unless_pr:
event: release
condition: on_success
restore_ccache_if_allowed:
description: "Restore ccache unless on a tag or a skipped branch."
parameters:
skip_branches_regex:
description: "Regex of branches that should skip restoring the cache."
type: string
default: "^(develop|breaking)$"
steps:
# Tags always skip ccache. Selected branches intentionally start from scratch.
- when:
condition:
and:
- equal: ["", << pipeline.git.tag >>]
- not:
matches:
pattern: "<< parameters.skip_branches_regex >>"
value: << pipeline.git.branch >>
steps:
- restore_cache:
keys:
# Reuse cache produced on develop (prefix match; restores the most recent).
- v1-ccache-{{ .Environment.CIRCLE_JOB }}-develop-
save_ccache_if_develop:
description: "Save a fresh ccache only on the develop branch."
steps:
# On `develop` we always generate a fresh cache by never restoring and by saving under a unique key.
- when:
condition:
equal: ["develop", << pipeline.git.branch >>]
steps:
- save_cache:
key: v1-ccache-{{ .Environment.CIRCLE_JOB }}-develop-{{ .Revision }}
paths:
- ~/.ccache
run_with_ccache_unless_tag:
description: "Run a command with ccache enabled unless building a tag."
parameters:
command:
type: string
step_name:
type: string
steps:
- when:
condition:
equal: ["", << pipeline.git.tag >>]
steps:
- run:
name: << parameters.step_name >> (ccache)
command: << parameters.command >>
- when:
condition:
not:
equal: ["", << pipeline.git.tag >>]
steps:
- run:
name: << parameters.step_name >> (no ccache)
command: CCACHE_DISABLE=1 << parameters.command >>
prepare_bytecode_report:
description: "Generate bytecode report and upload it as an artifact."
parameters:
label:
type: string
binary_type:
type: enum
enum:
- solcjs
- native
- osx_intel
binary_path:
type: string
preset:
type: string
steps:
- run:
name: Generate bytecode reports for the selected preset
command: |
.circleci/parallel_bytecode_report.sh \
"<< parameters.label >>" \
"<< parameters.binary_type >>" \
"${PWD}/<< parameters.binary_path >>" \
"<< parameters.preset >>"
- store_artifacts:
path: bytecode-report-<< parameters.label >>-standard-json-<< parameters.preset >>.txt
- store_artifacts:
path: bytecode-report-<< parameters.label >>-cli-<< parameters.preset >>.txt
- store_artifacts:
path: bytecode-report-<< parameters.label >>-<< parameters.preset >>.txt
- persist_to_workspace:
root: .
paths:
- bytecode-report-<< parameters.label >>*.txt
- matrix_notify_failure_unless_pr
install_python3:
description: "Install python3 and given packages."
parameters:
packages:
description: "List of extra Python packages to be installed (separated by space)."
type: string
default: ""
steps:
- run:
name: Install python and dependencies
command: |
sudo apt update
sudo apt install python3 python3-pip --assume-yes --no-install-recommends
if [[ "<< parameters.packages >>" != "" ]]
then
echo "Installing additional packages..."
python3 -m pip install --user --break-system-packages << parameters.packages >>
fi
install_foundry:
description: "Install Foundry."
parameters:
version:
type: string
default: "stable"
install_path:
type: string
default: /home/circleci/bin
steps:
- run:
name: Setup Foundry environment variables
command: |
FOUNDRY_REPO="foundry-rs/foundry"
FOUNDRY_VERSION="<< parameters.version >>"
RELEASE_URL="https://github.com/${FOUNDRY_REPO}/releases/download/${FOUNDRY_VERSION}"
echo "export FOUNDRY_VERSION=${FOUNDRY_VERSION}" >> "$BASH_ENV"
echo "export RELEASE_URL=${RELEASE_URL}" >> "$BASH_ENV"
ATTESTATION_URL=$(curl --silent --location --fail "${RELEASE_URL}/foundry_${FOUNDRY_VERSION}_linux_amd64.attestation.txt") || {
echo "Failed to fetch attestation file"
exit 1
}
ATTESTATION_JSON=$(curl --silent --location --fail --header "Accept: application/json" "${ATTESTATION_URL}") || {
echo "Failed to fetch attestation JSON"
exit 1
}
RELEASE_SHA=$(echo "${ATTESTATION_JSON}" | jq --raw-output '.payload.attestation.sourceRepositoryDigest')
if [[ -z "$RELEASE_SHA" || "$RELEASE_SHA" == "null" ]]; then
echo "Failed to extract release SHA from attestation"
exit 1
fi
echo "${RELEASE_SHA}" > /tmp/workspace/foundry-release-sha
# Extract forge checksum from the attestation
EXPECTED_FORGE_CHECKSUM=$(echo "${ATTESTATION_JSON}" | jq --raw-output '.payload.attestation.subjects[] | select(.subjectName=="forge") | .subjectDigest' | sed 's/sha256://')
if [[ -z "$EXPECTED_FORGE_CHECKSUM" || "$EXPECTED_FORGE_CHECKSUM" == "null" ]]; then
echo "Failed to extract forge checksum from attestation"
exit 1
fi
echo "export EXPECTED_FORGE_CHECKSUM=${EXPECTED_FORGE_CHECKSUM}" >> "$BASH_ENV"
- restore_cache:
keys:
- foundry-v1-<< parameters.version >>-{{ arch }}-{{ checksum "/tmp/workspace/foundry-release-sha" }}
# WARNING! If you edit anything between here and save_cache, remember to invalidate the cache manually.
- run:
name: Install foundry
command: |
if forge --version 2> /dev/null; then
echo "Foundry already cached, skipping install"
else
curl --fail --location --output /tmp/foundry.tar.gz "${RELEASE_URL}/foundry_${FOUNDRY_VERSION}_linux_amd64.tar.gz"
cd "<< parameters.install_path >>"
tar --extract --gzip --file /tmp/foundry.tar.gz --one-top-level
# TODO: Use `gh attestation verify foundry/forge --owner foundry-rs` for signature verification.
# Current approach only verifies checksum without validating the signature.
# https://docs.github.com/en/actions/how-tos/secure-your-work/use-artifact-attestations/use-artifact-attestations#verifying-an-artifact-attestation-for-binaries
ACTUAL=$(sha256sum foundry/forge | cut --delimiter=' ' --fields=1)
if [[ "$EXPECTED_FORGE_CHECKSUM" != "$ACTUAL" ]]; then
echo "Checksum mismatch: expected $EXPECTED_FORGE_CHECKSUM, got $ACTUAL"
exit 1
fi
ln --symbolic --force foundry/{forge,anvil,cast,chisel} .
fi
- save_cache:
key: foundry-v1-<< parameters.version >>-{{ arch }}-{{ checksum "/tmp/workspace/foundry-release-sha" }}
paths:
- << parameters.install_path >>
# --------------------------------------------------------------------------
# Build Commands
setup_prerelease:
steps:
- run:
name: Store prerelease suffix
command: |
"scripts/prerelease_suffix.sh" nightly "$CIRCLE_TAG" > prerelease.txt
install_and_check_minimum_requirements:
parameters:
compiler:
description: "Compiler to check: gcc or clang"
type: enum
enum:
- gcc
- clang
steps:
- run:
name: Install and check minimum requirements
command: scripts/ci/install_and_check_minimum_requirements.sh "--<< parameters.compiler >>"
run_build:
steps:
- restore_ccache_if_allowed
# WARNING! If you edit anything between here and save_cache, remember to invalidate the cache manually by bumping the version
- run_with_ccache_unless_tag:
step_name: Build
command: scripts/ci/build.sh
- save_ccache_if_develop
run_build_ossfuzz:
steps:
- restore_ccache_if_allowed
# WARNING! If you edit anything between here and save_cache, remember to invalidate the cache manually by bumping the version
- run_with_ccache_unless_tag:
step_name: Build_ossfuzz
command: scripts/ci/build_ossfuzz.sh
- save_ccache_if_develop
run_proofs:
steps:
- run:
name: Correctness proofs for optimization rules
command: scripts/run_proofs.sh
run_soltest:
steps:
- run:
name: soltest
no_output_timeout: 30m
command: .circleci/soltest.sh
run_soltest_all:
parameters:
# NOTE: If not specified, soltest_all.sh will use the default values as specified in the script.
# In other words, it will execute for all EVM versions that are not marked as low priority.
evm_versions:
description: "List of EVM versions (separated by space)."
type: string
default: ""
steps:
- run:
name: soltest_all
no_output_timeout: 30m
command: .circleci/soltest_all.sh "<< parameters.evm_versions >>"
run_cmdline_tests:
steps:
- run:
name: command line tests
no_output_timeout: 30m
command: .circleci/parallel_cli_tests.py
run_docs_pragma_min_version:
steps:
- run:
name: docs pragma version check
command: scripts/docs_version_pragma_check.sh
# --------------------------------------------------------------------------
# Artifact Commands
store_artifacts_solc:
description: Store compiled solc executable as artifact
steps:
- store_artifacts:
path: build/solc/solc
destination: solc
store_artifacts_yul_phaser:
steps:
- store_artifacts:
path: build/tools/yul-phaser
destination: yul-phaser
persist_executables_to_workspace:
description: Persist compiled target executables to workspace
steps:
- persist_to_workspace:
root: build
paths:
- solc/solc
- test/soltest
- test/tools/solfuzzer
persist_executables_to_workspace_arm:
description: Persist compiled target executables to workspace on Linux arm64
steps:
- persist_to_workspace:
root: build
paths:
- solc/solc-static-linux-arm
- test/soltest-linux-arm
- test/tools/solfuzzer-linux-arm
persist_executables_to_workspace_osx:
description: Persist compiled target executables to workspace on macOS
steps:
- persist_to_workspace:
root: .
paths:
- build/solc/solc
- build/test/soltest
- build/test/tools/solfuzzer
persist_ossfuzz_executables_to_workspace:
description: Persist compiled OSSFUZZ executables to workspace
steps:
- persist_to_workspace:
root: build
paths:
- test/tools/ossfuzz/abiv2_proto_ossfuzz
- test/tools/ossfuzz/abiv2_isabelle_ossfuzz
- test/tools/ossfuzz/const_opt_ossfuzz
- test/tools/ossfuzz/solc_mutator_ossfuzz
- test/tools/ossfuzz/solc_ossfuzz
- test/tools/ossfuzz/stack_reuse_codegen_ossfuzz
- test/tools/ossfuzz/strictasm_assembly_ossfuzz
- test/tools/ossfuzz/strictasm_diff_ossfuzz
- test/tools/ossfuzz/strictasm_opt_ossfuzz
- test/tools/ossfuzz/yul_proto_diff_ossfuzz
- test/tools/ossfuzz/yul_proto_diff_custom_mutate_ossfuzz
- test/tools/ossfuzz/yul_proto_ossfuzz
- test/tools/ossfuzz/sol_proto_ossfuzz
store_artifacts_test_results:
description: Store test output dir as artifact
steps:
- store_artifacts:
path: test_results/
destination: test_results/
# --------------------------------------------------------------------------
# Complex Build Commands
soltest:
steps:
- checkout
- attach_workspace:
at: build
# NOTE: Different build jobs produce different soltest executables (release/debug,
# clang/gcc, windows/linux/macos, etc.). The executable used by these steps comes from the
# attached workspace and we only see the items added to the workspace by jobs we depend on.
- run_soltest
- store_test_results:
path: test_results/
- store_artifacts_test_results
- matrix_notify_failure_unless_pr
test_lsp:
steps:
- checkout
- attach_workspace:
at: build
- run:
name: Executing solc LSP test suite
command: test/lsp.py build/solc/solc --non-interactive
- matrix_notify_failure_unless_pr
build:
steps:
- checkout
- run_build
- store_artifacts_solc
- store_artifacts_yul_phaser
- persist_executables_to_workspace
- matrix_notify_failure_unless_pr
soltest_all:
steps:
- checkout
- attach_workspace:
at: build
- run_soltest_all
- store_test_results:
path: test_results/
- store_artifacts_test_results
- matrix_notify_failure_unless_pr
cmdline_tests:
steps:
- checkout
- attach_workspace:
at: build
- run_cmdline_tests
- store_test_results:
path: test_results/
- store_artifacts_test_results
- matrix_notify_failure_unless_pr
install_dependencies_osx:
# An extra cache key is used to only save the flag that communicates whether the cache exists.
# if this flag was set (the cache exist) we remove all files located in /usr/local & /opt/homebrew.
# With this simple trick restoring the cache is much faster. Otherwise CircleCI is generating
# warning messages if a file from the cache is overwriting an already existing file on disk.
# Restoring the cache is much faster if we remove all potentially conflicting files beforehand.
steps:
- restore_cache:
keys:
- macos-dependencies-cached-{{ arch }}-{{ checksum ".circleci/osx_install_dependencies.sh" }}
- run:
name: Installing dependencies / Restoring dependency cache
command: |
if [[ -f ~/macos-dependencies-cached ]]; then
echo "Dependency flag exists. Removing /usr/local/, /opt/homebrew/, and /opt/boost. These directories will be restored from cache."
# CircleCI is providing the circleci cli tools via some kind of symlink magic.
# So we just save the original symlinks and restore them later.
circleci_binary_path=$(command -v circleci)
circleci_agent_binary_path=$(command -v circleci-agent)
cp "${circleci_binary_path}" /tmp/circleci
cp "${circleci_agent_binary_path}" /tmp/circleci-agent
# Homebrew is installed in /usr/local on intel macs, but in /opt/homebrew on apple silicon.
if [[ -d /opt/homebrew ]]; then
sudo rm -rf /opt/homebrew
sudo mkdir -p /opt/homebrew/bin
sudo chmod 777 /opt/{homebrew,homebrew/bin}
fi
# under macos /usr/local itself is read-only, so we just remove its sub-directories.
sudo rm -rf /usr/local/*
sudo mkdir -p /usr/local/bin
sudo chmod 777 /usr/{local,local/bin}
sudo rm -rf /opt/boost
sudo mkdir -p /opt/boost
sudo chmod 777 /opt/boost
mv /tmp/circleci "${circleci_binary_path}"
mv /tmp/circleci-agent "${circleci_agent_binary_path}"
fi
- restore_cache:
keys:
- macos-dependencies-{{ arch }}-{{ checksum ".circleci/osx_install_dependencies.sh" }}
# DO NOT EDIT between here and save_cache, but rather edit ./circleci/osx_install_dependencies.sh
# WARNING! If you do edit anything here instead, remember to invalidate the cache manually.
- run:
name: Install build dependencies
command: .circleci/osx_install_dependencies.sh
- run:
name: Mark dependencies as cached
command: touch ~/macos-dependencies-cached
- save_cache:
key: macos-dependencies-{{ arch }}-{{ checksum ".circleci/osx_install_dependencies.sh" }}
paths:
# Homebrew is installed in /usr/local on intel macs, but in /opt/homebrew on apple silicon.
- /usr/local
- /opt/homebrew
- /opt/boost
- save_cache:
key: macos-dependencies-cached-{{ arch }}-{{ checksum ".circleci/osx_install_dependencies.sh" }}
paths:
- ~/macos-dependencies-cached
defaults:
# --------------------------------------------------------------------------
# Matrix templates
- bytecode_compare_env_presets: &bytecode_compare_env_presets
PRESETS:
legacy-optimize
legacy-no-optimize
via-ir-optimize
via-ir-no-optimize
- bytecode_compare_preset_matrix: &bytecode_compare_preset_matrix
parameters:
preset:
# NOTE: Keep in sync with preset list in bytecode_compare_env_presets
- legacy-optimize
- legacy-no-optimize
- via-ir-optimize
- via-ir-no-optimize
# --------------------------------------------------------------------------
# --------------------------------------------------------------------------
# Base Image Templates
- base_archlinux: &base_archlinux
docker:
- image: archlinux:base
environment: &base_archlinux_env
TERM: xterm
MAKEFLAGS: -j 3
CPUs: 3
- base_archlinux_large: &base_archlinux_large
<<: *base_archlinux
resource_class: large
environment: &base_archlinux_large_env
<<: *base_archlinux_env
MAKEFLAGS: -j 5
CPUs: 5
- base_cimg_small: &base_cimg_small
docker:
- image: cimg/base:current
resource_class: small
environment: &base_cimg_small_env
TERM: xterm
MAKEFLAGS: -j 2
CPUs: 2
- base_ems_large: &base_ems_large
docker:
- image: << pipeline.parameters.emscripten-docker-image >>
resource_class: large
environment: &base_ems_large_env
TERM: xterm
MAKEFLAGS: -j 5
CPUs: 5
- base_node_small: &base_node_small
docker:
- image: cimg/node:current
resource_class: small
environment: &base_node_small_env
TERM: xterm
MAKEFLAGS: -j 2
CPUs: 2
- base_osx: &base_osx
macos:
xcode: 15.4.0
resource_class: m4pro.medium
environment: &base_osx_env
TERM: xterm
MAKEFLAGS: -j8
CPUs: 8
- base_ubuntu_clang: &base_ubuntu_clang
docker:
- image: << pipeline.parameters.ubuntu-clang-ossfuzz-docker-image >>
environment: &base_ubuntu_clang_env
TERM: xterm
MAKEFLAGS: -j 3
CPUs: 3
- base_ubuntu_clang_small: &base_ubuntu_clang_small
<<: *base_ubuntu_clang
resource_class: small
environment: &base_ubuntu_clang_small_env
<<: *base_ubuntu_clang_env
MAKEFLAGS: -j 2
CPUs: 2
- base_ubuntu_clang_large: &base_ubuntu_clang_large
<<: *base_ubuntu_clang
resource_class: large
environment: &base_ubuntu_clang_small_env
<<: *base_ubuntu_clang_env
MAKEFLAGS: -j 5
CPUs: 5
- base_ubuntu2004: &base_ubuntu2004
docker:
- image: << pipeline.parameters.ubuntu-2004-docker-image >>
environment: &base_ubuntu2004_env
TERM: xterm
MAKEFLAGS: -j 3
CPUs: 3
- base_ubuntu2004_small: &base_ubuntu2004_small
<<: *base_ubuntu2004
resource_class: small
environment: &base_ubuntu2004_small_env
<<: *base_ubuntu2004_env
MAKEFLAGS: -j 2
CPUs: 2
- base_ubuntu2004_xlarge: &base_ubuntu2004_xlarge
<<: *base_ubuntu2004
resource_class: xlarge
environment: &base_ubuntu2004_xlarge_env
<<: *base_ubuntu2004_env
MAKEFLAGS: -j 10
CPUs: 10
- base_ubuntu2404: &base_ubuntu2404
docker:
- image: << pipeline.parameters.ubuntu-2404-docker-image >>
environment: &base_ubuntu2404_env
TERM: xterm
MAKEFLAGS: -j 3
CPUs: 3
- base_ubuntu2404_clang: &base_ubuntu2404_clang
docker:
- image: << pipeline.parameters.ubuntu-2404-clang-docker-image >>
environment: &base_ubuntu2404_clang_env
TERM: xterm
CC: clang
CXX: clang++
MAKEFLAGS: -j 3
CPUs: 3
- base_ubuntu2404_clang_large: &base_ubuntu2404_clang_large
<<: *base_ubuntu2404_clang
resource_class: large
environment: &base_ubuntu2404_clang_large_env
<<: *base_ubuntu2404_clang_env
MAKEFLAGS: -j 5
CPUs: 5
- base_ubuntu2404_small: &base_ubuntu2404_small
<<: *base_ubuntu2404
resource_class: small
environment: &base_ubuntu2404_small_env
<<: *base_ubuntu2404_env
MAKEFLAGS: -j 2
CPUs: 2
- base_ubuntu2404_large: &base_ubuntu2404_large
<<: *base_ubuntu2404
resource_class: large
environment: &base_ubuntu2404_large_env
<<: *base_ubuntu2404_env
MAKEFLAGS: -j 5
CPUs: 5
- base_ubuntu2404_arm_medium: &base_ubuntu2404_arm_medium
docker:
- image: << pipeline.parameters.ubuntu-2404-arm-docker-image >>
resource_class: arm.medium
environment: &base_ubuntu2404_arm_medium_env
TERM: xterm
MAKEFLAGS: -j 2
CPUs: 2
- base_ubuntu2404_arm_large: &base_ubuntu2404_arm_large
docker:
- image: << pipeline.parameters.ubuntu-2404-arm-docker-image >>
resource_class: arm.large
environment: &base_ubuntu2404_arm_large_env
TERM: xterm
MAKEFLAGS: -j 7
CPUs: 7
- base_ubuntu2404_xlarge: &base_ubuntu2404_xlarge
<<: *base_ubuntu2404
resource_class: xlarge
environment: &base_ubuntu2404_xlarge_env
<<: *base_ubuntu2404_env
MAKEFLAGS: -j 10
CPUs: 10
- base_win: &base_win
executor:
name: win/default
shell: bash.exe
- base_win_large: &base_win_large
executor:
name: win/default
size: large
shell: bash.exe
# --------------------------------------------------------------------------
# Workflow Templates
- on_all_tags_and_branches: &on_all_tags_and_branches
filters:
tags:
only: /.*/
- on_version_tags: &on_version_tags
filters:
tags:
only: /^v.*/
branches:
ignore: /.*/
- on_develop: &on_develop
filters:
branches:
only:
- develop
- requires_nothing: &requires_nothing
<<: *on_all_tags_and_branches
- requires_b_ubu: &requires_b_ubu
<<: *on_all_tags_and_branches
requires:
- b_ubu
- requires_b_ubu_clang: &requires_b_ubu_clang
<<: *on_all_tags_and_branches
requires:
- b_ubu_clang
- requires_b_ubu_force_release: &requires_b_ubu_force_release
<<: *on_all_tags_and_branches
requires:
- b_ubu_force_release
- requires_b_ubu_static: &requires_b_ubu_static
<<: *on_all_tags_and_branches
requires:
- b_ubu_static
- requires_b_ubu_static_arm: &requires_b_ubu_static_arm
<<: *on_all_tags_and_branches
requires:
- b_ubu_static_arm
- requires_b_archlinux: &requires_b_archlinux
<<: *on_all_tags_and_branches
requires:
- b_archlinux
- requires_b_osx: &requires_b_osx
<<: *on_all_tags_and_branches
requires:
- b_osx
- requires_b_ubu_asan: &requires_b_ubu_asan
<<: *on_all_tags_and_branches
requires:
- b_ubu_asan
- requires_b_ubu_asan_clang: &requires_b_ubu_asan_clang
<<: *on_all_tags_and_branches
requires:
- b_ubu_asan_clang
- requires_b_ubu_ubsan_clang: &requires_b_ubu_ubsan_clang
<<: *on_all_tags_and_branches
requires:
- b_ubu_ubsan_clang
- requires_b_ems: &requires_b_ems
<<: *on_all_tags_and_branches
requires:
- b_ems
- requires_b_ubu_ossfuzz: &requires_b_ubu_ossfuzz
<<: *on_all_tags_and_branches
requires:
- b_ubu_ossfuzz
- requires_b_win: &requires_b_win
<<: *on_all_tags_and_branches
requires:
- b_win
# --------------------------------------------------------------------------
# Parameterized Job Templates
# Separate compile-only runs of those external tests where a full run takes much longer.
# Also see https://github.com/argotorg/solidity/pull/14234 for why we excluded those
# external tests from the nightly jobs.
- job_ems_compile_ext_colony: &job_ems_compile_ext_colony
<<: *requires_b_ems
name: t_ems_compile_ext_colony
project: colony
binary_type: solcjs
compile_only: 1
image: cimg/node:14.20
python2: true
- job_native_compile_ext_gnosis: &job_native_compile_ext_gnosis
<<: *requires_b_ubu_static
name: t_native_compile_ext_gnosis
project: gnosis
binary_type: native
# NOTE: We are disabling the gnosis test suite due to version discrepancies that are difficult to fix.
# Check again after (and if) https://github.com/safe-global/safe-contracts/pull/644 is merged.
compile_only: 1
image: cimg/node:18.16
- job_native_test_ext_zeppelin: &job_native_test_ext_zeppelin
<<: *requires_b_ubu_static
name: t_native_test_ext_zeppelin
project: zeppelin
binary_type: native
image: cimg/node:lts
resource_class: large
- job_native_test_ext_ens: &job_native_test_ext_ens
<<: *requires_b_ubu_static
name: t_native_test_ext_ens
project: ens
binary_type: native
image: cimg/node:lts
- job_native_compile_ext_trident: &job_native_compile_ext_trident
<<: *requires_b_ubu_static
name: t_native_compile_ext_trident
project: trident
binary_type: native
# NOTE: test suite disabled due to dependence on a specific version of Hardhat
# which does not support shanghai EVM.
compile_only: 1
image: cimg/node:18.16
- job_native_compile_ext_euler: &job_native_compile_ext_euler
<<: *requires_b_ubu_static
name: t_native_compile_ext_euler
project: euler
binary_type: native
resource_class: medium
- job_native_test_ext_yield_liquidator: &job_native_test_ext_yield_liquidator
<<: *requires_b_ubu_static
name: t_native_test_ext_yield_liquidator
project: yield-liquidator
binary_type: native
image: cimg/node:18.16
- job_native_compile_ext_bleeps: &job_native_compile_ext_bleeps
<<: *requires_b_ubu_static
name: t_native_compile_ext_bleeps
project: bleeps
binary_type: native
# NOTE: test suite disabled due to dependence on a specific version of Hardhat
# which does not support shanghai EVM.
compile_only: 1
resource_class: medium
- job_native_compile_ext_pool_together: &job_native_compile_ext_pool_together
<<: *requires_b_ubu_static
name: t_native_compile_ext_pool_together
project: pool-together
binary_type: native
# NOTE: test suite disabled due to dependence on a specific version of Hardhat
# which does not support shanghai EVM.
compile_only: 1
image: cimg/node:lts
- job_native_test_ext_uniswap: &job_native_test_ext_uniswap
<<: *requires_b_ubu_static
name: t_native_test_ext_uniswap
project: uniswap
binary_type: native
image: cimg/node:lts
resource_class: large # Tests run out of memory on a smaller machine
- job_native_test_ext_prb_math: &job_native_test_ext_prb_math
<<: *requires_b_ubu_static
name: t_native_test_ext_prb_math
project: prb-math
binary_type: native
image: cimg/rust:1.74.0-node
resource_class: large # Tests run out of memory on a smaller machine
- job_native_test_ext_elementfi: &job_native_test_ext_elementfi
<<: *requires_b_ubu_static
name: t_native_test_ext_elementfi
project: elementfi
binary_type: native
image: cimg/node:lts
resource_class: medium
- job_native_test_ext_brink: &job_native_test_ext_brink
<<: *requires_b_ubu_static
name: t_native_test_ext_brink
project: brink
binary_type: native
image: cimg/node:lts
- job_native_compile_ext_chainlink: &job_native_compile_ext_chainlink
<<: *requires_b_ubu_static
name: t_native_compile_ext_chainlink
project: chainlink
binary_type: native
# NOTE: test suite disabled due to dependence on a specific version of Hardhat
# which does not support shanghai EVM.
compile_only: 1
image: cimg/node:16.20
resource_class: large # Tests run out of memory on a smaller machine
- job_native_compile_ext_gp2: &job_native_compile_ext_gp2
<<: *requires_b_ubu_static
name: t_native_compile_ext_gp2
project: gp2
binary_type: native
# NOTE: test suite disabled due to constant failures.
compile_only: 1
image: cimg/node:lts
- job_b_ubu_asan_clang: &job_b_ubu_asan_clang
<<: *on_all_tags_and_branches
name: b_ubu_asan_clang
cmake_options: -DSANITIZE=address
- job_b_ubu_ubsan_clang: &job_b_ubu_ubsan_clang
<<: *on_all_tags_and_branches
name: b_ubu_ubsan_clang
cmake_options: -DSANITIZE=undefined
# -----------------------------------------------------------------------------------------------
jobs:
chk_spelling:
<<: *base_ubuntu2404_small
steps:
- checkout
- attach_workspace:
at: build
- run:
name: Install dependencies
command: |
pip install --user codespell
- run:
name: Check spelling
command: ~/.local/bin/codespell
- matrix_notify_failure_unless_pr
chk_docs_examples:
<<: *base_node_small
steps:
- checkout
- attach_workspace:
at: build
- run:
name: JS deps
command: sudo npm install -g solhint
- run:
name: Test Docs examples
command: test/docsCodeStyle.sh
- matrix_notify_failure_unless_pr
chk_coding_style:
<<: *base_cimg_small
steps:
- checkout
- run:
name: Install shellcheck
command: |
sudo apt -q update
sudo apt install -y shellcheck
- run:
name: Check for C++ coding style
command: scripts/check_style.sh
- run:
name: checking shell scripts
command: scripts/chk_shellscripts/chk_shellscripts.sh
- run:
name: Check for broken symlinks
command: scripts/check_symlinks.sh
- matrix_notify_failure_unless_pr
chk_errorcodes:
<<: *base_ubuntu2404_small
steps:
- checkout
- run:
name: Check for error codes
command: scripts/error_codes.py --check
- matrix_notify_failure_unless_pr
chk_pylint:
<<: *base_ubuntu2404_small
steps:
- install_python3:
packages: pyyaml jsonschema pytest
- checkout
- run: pylint --version
- run:
name: Linting Python Scripts
command: scripts/pylint_all.py
- matrix_notify_failure_unless_pr
chk_antlr_grammar:
<<: *base_cimg_small
steps:
- checkout
- run:
name: Install Java
command: |
sudo apt -q update
sudo apt install -y openjdk-17-jdk
- run:
name: Run tests
command: scripts/test_antlr_grammar.sh
- matrix_notify_failure_unless_pr
chk_buglist:
<<: *base_node_small
steps:
- checkout
- run:
name: JS deps
command: |
npm install download
npm install JSONPath
npm install mktemp
- run:
name: Test buglist
command: test/buglistTests.js
- matrix_notify_failure_unless_pr
chk_proofs:
<<: *base_ubuntu2404_small
steps:
- checkout
- run_proofs
- matrix_notify_failure_unless_pr
chk_docs_pragma_min_version:
<<: *base_ubuntu2404_small
steps:
- checkout
- run_docs_pragma_min_version
- matrix_notify_failure_unless_pr
t_ubu_pyscripts:
<<: *base_ubuntu2404_small
steps:
- checkout
- run:
name: Python unit tests
command: python3 test/pyscriptTests.py
- run:
name: Smoke test for gas_diff_stats.py
command: scripts/gas_diff_stats.py
- matrix_notify_failure_unless_pr
t_win_pyscripts:
<<: *base_win
steps:
- run: git config --global core.autocrlf false
- checkout
- run:
name: Install dependencies
command: python -m pip install --user requests parsec tabulate
- run:
name: Python unit tests
command: python.exe test/pyscriptTests.py
- matrix_notify_failure_unless_pr
b_ubu: &b_ubu
# this runs 2x faster on xlarge but takes 4x more resources (compared to medium).
# Enough other jobs depend on it that it's worth it though.
<<: *base_ubuntu2404_xlarge
steps:
- build
- run: cat prerelease.txt
# x64 ASAN build, for testing for memory related bugs
b_ubu_asan: &b_ubu_asan
# Runs slightly faster on large and xlarge but we only run it nightly so efficiency matters more.
<<: *base_ubuntu2404
environment:
<<: *base_ubuntu2404_env
# NOTE: Sanitizers may alter the intermediate code, potentially causing false warnings.
# As a result, treating warnings as errors in instrumented builds can lead to build failures due to these false positives.
# Therefore, we disable pedantic builds in such cases.
# See: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105562#c27
CMAKE_OPTIONS: -DSANITIZE=address -DPEDANTIC=OFF
CMAKE_BUILD_TYPE: Release
# Set the number of jobs to two instead of the default three, so that we do not run out of memory
MAKEFLAGS: -j 2
steps:
- build
b_ubu_clang: &b_ubu_clang
<<: *base_ubuntu2404_clang_large
environment:
<<: *base_ubuntu2404_clang_large_env
MAKEFLAGS: -j 10
steps:
- build
b_ubu_san_clang:
# This runs a bit faster on large and xlarge but on nightly efficiency matters more.
parameters:
cmake_options:
type: string
<<: *base_ubuntu2404_clang
environment:
<<: *base_ubuntu2404_clang_env
# NOTE: Disabled pedantic builds to avoid false positives, see b_ubu_asan for a more detailed explanation.
CMAKE_OPTIONS: -DPEDANTIC=OFF << parameters.cmake_options >>
steps:
- build
b_ubu_force_release: &b_ubu_force_release
<<: *b_ubu
environment:
<<: *base_ubuntu2404_xlarge_env
FORCE_RELEASE: ON
b_ubu_static:
# We temporarily keep building static release binaries on ubuntu 20.04
# to avoid glibc incompatibilities.
# See: https://github.com/argotorg/solidity/issues/13954
# On large runs 2x faster than on medium. 3x on xlarge.
<<: *base_ubuntu2404_xlarge
environment:
<<: *base_ubuntu2404_xlarge_env
CMAKE_OPTIONS: -DCMAKE_BUILD_TYPE=Release -DSOLC_LINK_STATIC=ON
steps:
- checkout
- run_build
- run:
name: strip binary
command: strip build/solc/solc
- store_artifacts:
path: build/solc/solc
destination: solc-static-linux
- run: mv build/solc/solc build/solc/solc-static-linux
- persist_to_workspace:
root: build
paths:
- solc/solc-static-linux
- matrix_notify_failure_unless_pr
b_ubu_static_arm: &b_ubu_static_arm
<<: *base_ubuntu2404_arm_large
environment:
<<: *base_ubuntu2404_arm_large_env
CMAKE_OPTIONS: -DCMAKE_BUILD_TYPE=Release -DSOLC_LINK_STATIC=ON
steps:
- checkout
- run_build
- run:
name: strip binary
command: strip build/solc/solc
- store_artifacts:
path: build/solc/solc
destination: solc-static-linux-arm
- run: mv build/solc/solc build/solc/solc-static-linux-arm
- run: mv build/test/soltest build/test/soltest-linux-arm
- run: mv build/test/tools/solfuzzer build/test/tools/solfuzzer-linux-arm
- persist_executables_to_workspace_arm
- matrix_notify_failure_unless_pr
b_ubu_min_req:
<<: *base_ubuntu2404_large
steps:
- checkout
- install_and_check_minimum_requirements:
compiler: gcc
- run_build
- store_artifacts_solc
- persist_executables_to_workspace
- matrix_notify_failure_unless_pr
- build
b_ubu_min_req_clang:
<<: *base_ubuntu2404_clang_large
environment:
<<: *base_ubuntu2404_clang_large_env
MAKEFLAGS: -j 10
steps:
- checkout
- install_and_check_minimum_requirements:
compiler: clang
- run_build
- matrix_notify_failure_unless_pr
t_ubu_min_req_soltest:
<<: *base_ubuntu2404_large
parallelism: 20
environment:
<<: *base_ubuntu2404_large_env
EVM: << pipeline.parameters.evm-version >>
EOF_VERSION: 0
OPTIMIZE: 0
steps:
- soltest
b_ubu_ossfuzz: &b_ubu_ossfuzz
<<: *base_ubuntu_clang_large
steps:
- checkout
- setup_prerelease
- run_build_ossfuzz
- persist_ossfuzz_executables_to_workspace
- matrix_notify_failure_unless_pr
t_ubu_ossfuzz: &t_ubu_ossfuzz
<<: *base_ubuntu_clang_small
steps:
- checkout
- attach_workspace:
at: build
- run:
name: Regression tests
command: |
git clone https://github.com/argotorg/solidity-fuzzing-corpus /tmp/solidity-fuzzing-corpus
mkdir -p test_results
scripts/regressions.py -o test_results
- store_test_results:
path: test_results/
- store_artifacts_test_results
b_archlinux:
<<: *base_archlinux_large
environment:
<<: *base_archlinux_large_env
steps:
- run:
name: Install build dependencies
command: |
pacman --noconfirm -Syu --noprogressbar --needed base-devel boost cmake ccache git openssh tar
- checkout
- run_build
- store_artifacts_solc
- persist_executables_to_workspace
- matrix_notify_failure_unless_pr
b_osx:
<<: *base_osx
environment:
<<: *base_osx_env
CMAKE_BUILD_TYPE: Release
# boost root configured to the prefix used in `osx_install_dependencies.sh`
CMAKE_OPTIONS: -DCMAKE_OSX_ARCHITECTURES:STRING=x86_64;arm64 -DBoost_ROOT=/opt/boost
steps:
- checkout
- install_dependencies_osx
- run_build
- store_artifacts_solc
- store_artifacts_yul_phaser
- persist_executables_to_workspace_osx
- matrix_notify_failure_unless_pr
t_osx_soltest: &t_osx_soltest
<<: *base_osx
environment:
<<: *base_osx_env
EVM: << pipeline.parameters.evm-version >>
EOF_VERSION: 0
OPTIMIZE: 0
steps:
- checkout
- install_dependencies_osx
- attach_workspace:
at: .
- run_soltest
- store_test_results:
path: test_results/
- store_artifacts_test_results
- matrix_notify_failure_unless_pr
t_osx_cli:
<<: *base_osx
parallelism: 8 # Should match number of tests in .circleci/parallel_cli_tests.py
steps:
- checkout
- install_dependencies_osx
- attach_workspace:
at: .
- run_cmdline_tests
- store_artifacts_test_results
- matrix_notify_failure_unless_pr
b_ems:
<<: *base_ems_large
environment:
<<: *base_ems_large_env
MAKEFLAGS: -j 10
steps:
- checkout
- restore_ccache_if_allowed
# WARNING! If you edit anything between here and save_cache, remember to invalidate the cache manually by bumping the version
- run_with_ccache_unless_tag:
step_name: Build
command: scripts/ci/build_emscripten.sh
- save_ccache_if_develop
- store_artifacts:
path: upload/soljson.js
destination: soljson.js
- run: mkdir -p workspace
- run: cp upload/soljson.js workspace/soljson.js
- run: scripts/get_version.sh > workspace/version.txt
- persist_to_workspace:
root: workspace
paths:
- soljson.js
- version.txt
- matrix_notify_failure_unless_pr
b_docs:
<<: *base_ubuntu2404_small
steps:
- checkout
- setup_prerelease
- run:
name: Install build system dependencies
command: |
apt-get update
apt-get install --quiet=2 --no-install-recommends python3-dev libcairo2-dev pkg-config
- run:
name: Build documentation
command: docs/docs.sh
- store_artifacts:
path: docs/_build/html/
destination: docs-html
- matrix_notify_failure_unless_pr
t_ubu_soltest: &t_ubu_soltest
<<: *base_ubuntu2404_large
parallelism: 20
environment:
<<: *base_ubuntu2404_large_env
EVM: << pipeline.parameters.evm-version >>
EOF_VERSION: 0
OPTIMIZE: 0
steps:
- soltest
t_ubu_arm_soltest: &t_ubu_arm_soltest
<<: *base_ubuntu2404_arm_medium
parallelism: 20
environment:
<<: *base_ubuntu2404_arm_medium_env
EVM: << pipeline.parameters.evm-version >>
EOF_VERSION: 0
OPTIMIZE: 0
steps:
- checkout
- attach_workspace:
at: build
- run:
name: Create symbolic link with expected soltest binary name
command: |
ln --symbolic --relative build/test/soltest-linux-arm build/test/soltest
- run_soltest
- store_test_results:
path: test_results/
- store_artifacts_test_results
- matrix_notify_failure_unless_pr
t_ubu_soltest_low_priority_evm_versions: &t_ubu_soltest_low_priority_evm_versions
<<: *base_ubuntu2404_large
parallelism: 50
steps:
- checkout
- attach_workspace:
at: build
- run_soltest_all:
# We test most EVM versions on every PR. The ones below are the exceptions.
#
# We do not test these at all. We were never doing that and no point starting now since
# they are deprecated anyway:
# - tangerineWhistle
# - spuriousDragon
#
# These have a low chance of breaking so we only run them in nightly to save credits:
# - byzantium: deprecated, if it breaks, homestead likely will as well
# - petersburg: no changes compared to constantinople
# - prague: no changes compared to cancun
evm_versions: byzantium petersburg prague
- store_test_results:
path: test_results/
- store_artifacts_test_results
- matrix_notify_failure_unless_pr
t_ubu_lsp: &t_ubu_lsp
<<: *base_ubuntu2404_small
steps:
- test_lsp
t_archlinux_soltest: &t_archlinux_soltest
<<: *base_archlinux
parallelism: 20
environment:
<<: *base_archlinux_env
EVM: << pipeline.parameters.evm-version >>
EOF_VERSION: 0
OPTIMIZE: 0
# For Archlinux we do not have prebuilt docker images and we would need to build evmone from source,
# thus we forgo semantics tests to speed things up.
SOLTEST_FLAGS: --no-semantic-tests --no-smt
steps:
- run:
name: Install runtime dependencies
command: |
pacman --noconfirm -Syu --noprogressbar --needed z3 git
- soltest
t_ubu_clang_soltest: &t_ubu_clang_soltest
<<: *base_ubuntu2404_clang
parallelism: 20
environment:
<<: *base_ubuntu2404_clang_env
EVM: << pipeline.parameters.evm-version >>
EOF_VERSION: 0
OPTIMIZE: 0
# The high parallelism in this job is causing the SMT tests to run out of memory,
# so disabling for now.
SOLTEST_FLAGS: --no-smt
steps:
- soltest
t_ubu_force_release_soltest_all: &t_ubu_force_release_soltest_all
<<: *base_ubuntu2404_large
parallelism: 50
steps:
- soltest_all
t_ubu_cli: &t_ubu_cli
<<: *base_ubuntu2404_small
parallelism: 8 # Should match number of tests in .circleci/parallel_cli_tests.py
steps:
- cmdline_tests
t_ubu_arm_cli: &t_ubu_arm_cli
<<: *base_ubuntu2404_arm_medium
parallelism: 8 # Should match number of tests in .circleci/parallel_cli_tests.py
steps:
- checkout
- attach_workspace:
at: build
- run:
name: Create symbolic link with expected solc and solfuzzer binaries name
command: |
ln --symbolic --relative build/solc/solc-static-linux-arm build/solc/solc
ln --symbolic --relative build/test/tools/solfuzzer-linux-arm build/test/tools/solfuzzer
- run_cmdline_tests
- store_test_results:
path: test_results/
- store_artifacts_test_results
- matrix_notify_failure_unless_pr
t_ubu_force_release_cli: &t_ubu_force_release_cli
<<: *t_ubu_cli
t_ubu_locale:
<<: *base_ubuntu2404_small
steps:
- checkout
- attach_workspace:
at: build
- run: test/localeTest.sh build/solc/solc
- matrix_notify_failure_unless_pr
t_ubu_asan_cli:
# Runs slightly faster on medium but we only run it nightly so efficiency matters more.
<<: *base_ubuntu2404
parallelism: 8 # Should match number of tests in .circleci/parallel_cli_tests.py
environment:
<<: *base_ubuntu2404_env
ASAN_OPTIONS: check_initialization_order=true:detect_stack_use_after_return=true:strict_init_order=true:strict_string_checks=true:detect_invalid_pointer_pairs=2
# Suppress CLN memory leak.
# See: https://github.com/argotorg/solidity/issues/13891 for details.
LSAN_OPTIONS: suppressions=/root/project/.circleci/cln-asan.supp:print_suppressions=0
steps:
- cmdline_tests
t_ubu_asan_soltest:
<<: *base_ubuntu2404
parallelism: 20
environment:
<<: *base_ubuntu2404_env
EVM: << pipeline.parameters.evm-version >>
EOF_VERSION: 0
OPTIMIZE: 0
SOLTEST_FLAGS: --no-smt
ASAN_OPTIONS: check_initialization_order=true:detect_stack_use_after_return=true:strict_init_order=true:strict_string_checks=true:detect_invalid_pointer_pairs=2
# Suppress CLN memory leak.
# See: https://github.com/argotorg/solidity/issues/13891 for details.
LSAN_OPTIONS: suppressions=/root/project/.circleci/cln-asan.supp
steps:
- soltest
t_ubu_asan_clang_soltest:
<<: *base_ubuntu2404_clang
parallelism: 20
environment:
<<: *base_ubuntu2404_clang_env
EVM: << pipeline.parameters.evm-version >>
EOF_VERSION: 0
OPTIMIZE: 0
SOLTEST_FLAGS: --no-smt
ASAN_OPTIONS: check_initialization_order=true:detect_stack_use_after_return=true:strict_init_order=true:strict_string_checks=true:detect_invalid_pointer_pairs=2
steps:
- soltest
t_ubu_ubsan_clang_soltest:
<<: *base_ubuntu2404_clang
parallelism: 20
environment:
<<: *base_ubuntu2404_clang_env
EVM: << pipeline.parameters.evm-version >>
EOF_VERSION: 0
SOLTEST_FLAGS: --no-smt
steps:
- soltest
t_ubu_ubsan_clang_cli:
<<: *base_ubuntu2404_clang
parallelism: 8 # Should match number of tests in .circleci/parallel_cli_tests.py
steps:
- cmdline_tests
t_ems_solcjs:
# Unlike other t_ems jobs this one actually runs 2x faster on medium (compared to small).
<<: *base_ubuntu2404
steps:
- checkout
- attach_workspace:
at: /tmp/workspace
- run:
name: Install test dependencies
command: |
apt-get update
apt-get install -qqy --no-install-recommends nodejs npm
- run:
name: Test solcjs
no_output_timeout: 30m
command: |
node --version
npm --version
test/externalTests/solc-js/solc-js.sh /tmp/workspace/soljson.js $(cat /tmp/workspace/version.txt)
- matrix_notify_failure_unless_pr
t_ems_ext_edr:
# Runs out of memory on the small instance
<<: *base_ubuntu2404
docker:
- image: cimg/rust:1.79.0-node
environment:
<<: *base_ubuntu2404_env
EDR_TESTS_SOLC_PATH: /tmp/workspace/soljson.js
steps:
- checkout
- attach_workspace:
at: /tmp/workspace
- run:
name: Ensure pnpm is installed if npm is present
command: sudo npm install -g pnpm
- run:
name: Retrieve EDR latest release tag
command: |
# Make authenticated requests when the Github token is available
if [[ -n "$GITHUB_READ_TOKEN" ]]; then
EXTRA_HEADERS=(--header "Authorization: Bearer ${GITHUB_READ_TOKEN}")
fi
EDR_LATEST_RELEASE_TAG=$(
curl \
--silent \
--location \
--fail \
--show-error \
"${EXTRA_HEADERS[@]}" \
https://api.github.com/repos/nomicfoundation/edr/releases/latest \
| jq --raw-output .tag_name \
)
echo "export EDR_LATEST_RELEASE_TAG='${EDR_LATEST_RELEASE_TAG}'" >> "$BASH_ENV"
- run: git clone --depth 1 https://github.com/nomicfoundation/edr.git --branch "$EDR_LATEST_RELEASE_TAG"
- run:
name: Install dependencies
command: |
cd edr
pnpm install --no-frozen-lockfile
- run:
name: Run hardhat-tests in EDR repo
command: |
EDR_TESTS_SOLC_VERSION=$(scripts/get_version.sh)
export EDR_TESTS_SOLC_VERSION
cd edr/hardhat-tests
pnpm test
- matrix_notify_failure_unless_pr
t_ext:
parameters:
project:
type: string
binary_type:
type: enum
enum:
- solcjs
- native
compile_only:
type: integer
default: 0
image:
type: string
default: cimg/node:current
resource_class:
type: string
default: small
python2:
type: boolean
default: false
docker:
- image: << parameters.image >>
resource_class: << parameters.resource_class >>
# NOTE: Each external test runs up to 6 independent settings presets. If parallelism is higher than
# actual preset count, some runs will exit immediately. If it's lower, some runs will get more than one preset.
parallelism: 6
environment:
TERM: xterm
COMPILE_ONLY: << parameters.compile_only >>
steps:
- checkout
- attach_workspace:
at: /tmp/workspace
- install_foundry
- run:
name: Ensure pnpm is installed if npm is present
command: |
if command -v npm &> /dev/null; then
sudo npm install -g pnpm
fi
- when:
condition: << parameters.python2 >>
steps:
- run:
name: Install Python 2 and make it the default
command: |
sudo apt update
# python is used by node-gyp to build native modules (needed for Colony).
# In the 14.x image node-gyp still requires Python 2.
sudo apt install python2 --assume-yes --no-install-recommends
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 1
- when:
condition:
equal: [<< parameters.binary_type >>, "solcjs"]
steps:
- run:
name: External << parameters.project >> tests (<< parameters.binary_type >>)
command: |
test/external_tests.py test --solc-binary-type "<< parameters.binary_type >>" --solc-binary-path /tmp/workspace/soljson.js --run "<< parameters.project >>"
- when:
condition:
equal: [<< parameters.binary_type >>, "native"]
steps:
- run:
name: External << parameters.project >> tests (<< parameters.binary_type >>)
command: |
test/external_tests.py test --solc-binary-type "<< parameters.binary_type >>" --solc-binary-path /tmp/workspace/solc/solc-static-linux --run "<< parameters.project >>"
- store_artifacts:
path: reports/externalTests/
# persist_to_workspace fails if the directory does not exist and the test script will create
# it only if it actually has benchmark results.
- run: mkdir -p reports/externalTests/
- persist_to_workspace:
root: .
paths:
- reports/externalTests/
- matrix_notify_failure_unless_pr
t_ethdebug_output_validity:
<<: *base_node_small
steps:
- checkout
- attach_workspace:
at: /tmp/workspace
- install_python3:
packages: pyyaml jsonschema pytest
- run:
name: Ethdebug validity tests
command: |
pytest test/ethdebugSchemaTests --solc-binary-path=/tmp/workspace/solc/solc-static-linux -v
c_ext_benchmarks:
<<: *base_node_small
steps:
- install_python3:
packages: requests
- checkout
- attach_workspace:
at: .
- run:
name: Combine benchmark reports
command: cat reports/externalTests/benchmark-*.json | scripts/externalTests/merge_benchmarks.sh > reports/externalTests/all-benchmarks.json
- run:
name: Summarize reports
command: cat reports/externalTests/all-benchmarks.json | scripts/externalTests/summarize_benchmarks.sh > reports/externalTests/summarized-benchmarks.json
- store_artifacts:
path: reports/externalTests/all-benchmarks.json
- store_artifacts:
path: reports/externalTests/summarized-benchmarks.json
- run:
name: Check CircleCI token presence; Skip remaining steps if the token is not present.
command: |
# NOTE: download_benchmarks.py requires CIRCLECI_TOKEN environment variable to be set to
# a valid CircleCI API token to download the benchmark artifacts.
if [[ -z "$CIRCLECI_TOKEN" ]]; then
echo "Skipping download benchmarks..."
circleci-agent step halt
fi
- run:
name: Download reports from base branch
command: |
if [[ $CIRCLE_PULL_REQUEST != "" ]]; then
mkdir reports/externalTests/base-branch/
cd reports/externalTests/base-branch/
pr_id=$(echo "$CIRCLE_PULL_REQUEST" | sed 's|\(.*\)\/||')
scripts_dir=../../../scripts
# Our main goal here is to provide new benchmarks, the diff is optional. When benchmarks from
# the previous run are not available for whatever reason, we still succeed and just skip the diff.
# download_benchmarks.py exits with status 2 in that case.
if "${scripts_dir}/externalTests/download_benchmarks.py" --base-of-pr "$pr_id" || [[ $? == 2 ]]; then
echo 'export SKIP_BENCHMARK_DIFF=true' >> $BASH_ENV
fi
fi
- run:
name: Diff benchmarks
command: |
if [[ $CIRCLE_PULL_REQUEST != "" && $SKIP_BENCHMARK_DIFF != "true" ]]; then
cd reports/externalTests/
mkdir diff/
scripts_dir=../../scripts
"${scripts_dir}/externalTests/benchmark_diff.py" table \
--output-format markdown \
--style humanized \
base-branch/summarized-benchmarks-*.json \
summarized-benchmarks.json > diff/benchmark-diff-summarized-table-markdown-humanized.md
"${scripts_dir}/externalTests/benchmark_diff.py" table \
--output-format markdown \
--style absolute \
base-branch/summarized-benchmarks-*.json \
summarized-benchmarks.json > diff/benchmark-diff-summarized-table-markdown-absolute.md
"${scripts_dir}/externalTests/benchmark_diff.py" inplace \
--style absolute \
base-branch/summarized-benchmarks-*.json \
summarized-benchmarks.json > diff/benchmark-diff-summarized-inplace-absolute.md
"${scripts_dir}/externalTests/benchmark_diff.py" inplace \
--style absolute \
base-branch/all-benchmarks-*.json \
all-benchmarks.json > diff/benchmark-diff-all-table-inplace-absolute.md
fi
- store_artifacts:
path: reports/externalTests/diff/
- store_artifacts:
path: reports/externalTests/base-branch/
b_win: &b_win
<<: *base_win_large
steps:
# NOTE: Not disabling git's core.autocrlf here because we want to build using the typical Windows config.
- checkout
- restore_cache:
keys:
- dependencies-win-{{ arch }}-{{ checksum "scripts/install_deps.ps1" }}
# DO NOT EDIT between here and save_cache, but rather edit .\scripts\install_deps.ps1
# WARNING! If you do edit anything here instead, remember to invalidate the cache manually.
- run:
name: "Installing dependencies"
command: .\scripts\install_deps.ps1
shell: powershell.exe
- save_cache:
key: dependencies-win-{{ arch }}-{{ checksum "scripts/install_deps.ps1" }}
paths:
- .\deps
- restore_ccache_if_allowed
# WARNING! If you edit anything between here and save_cache, remember to invalidate the cache manually by bumping the version
- run_with_ccache_unless_tag:
step_name: "Building solidity"
command: scripts/ci/build_win.sh
- save_ccache_if_develop
- run:
name: "Run solc.exe to make sure build was successful."
command: .\build\solc\Release\solc.exe --version
shell: powershell.exe
- store_artifacts:
path: upload/
- persist_to_workspace:
root: build
paths:
- .\solc\*\solc.exe
- .\test\*\soltest.exe
- matrix_notify_failure_unless_pr
t_win_soltest: &t_win_soltest
<<: *base_win
steps:
# NOTE: Git's default core.autocrlf is fine for running soltest. We get additional coverage
# for files using CRLF that way.
- checkout
- attach_workspace:
at: build
- run:
name: "Install evmone"
command: scripts/install_evmone.ps1
shell: powershell.exe
- run:
name: "Run soltest"
command: .circleci/soltest.ps1
shell: powershell.exe
- run:
name: Install LSP test dependencies
command: python -m pip install --user numpy deepdiff colorama
- run:
name: Executing solc LSP test suite
command: python test/lsp.py build\solc\Release\solc.exe --non-interactive
shell: powershell.exe
- store_test_results:
path: test_results/
- store_artifacts_test_results
- matrix_notify_failure_unless_pr
# Note: b_bytecode_ubu_static is required because b_ubu_static and b_ubu
# are currently built on different Ubuntu base images.
# It can be safely removed once we move both to the same Ubuntu version.
b_bytecode_ubu_static:
parameters:
preset:
type: string
<<: *base_ubuntu2004_small
parallelism: 2 # For prepare_bytecode_report
steps:
- checkout
- attach_workspace:
at: build
- prepare_bytecode_report:
label: "ubuntu2004-static"
binary_type: native
binary_path: "build/solc/solc-static-linux"
preset: "<< parameters.preset >>"
b_bytecode_ubu:
parameters:
preset:
type: string
<<: *base_ubuntu2404_small
parallelism: 2 # For prepare_bytecode_report
steps:
- checkout
- attach_workspace:
at: build
- prepare_bytecode_report:
label: "ubuntu"
binary_type: native
binary_path: "build/solc/solc"
preset: "<< parameters.preset >>"
b_bytecode_osx:
parameters:
preset:
type: string
<<: *base_osx
parallelism: 2 # For prepare_bytecode_report
steps:
- checkout
- attach_workspace:
at: .
- prepare_bytecode_report:
label: "osx"
binary_type: native
binary_path: "build/solc/solc"
preset: "<< parameters.preset >>"
b_bytecode_osx_intel:
parameters:
preset:
type: string
<<: *base_osx
parallelism: 2 # For prepare_bytecode_report
steps:
- checkout
- attach_workspace:
at: .
- prepare_bytecode_report:
label: "osx_intel"
binary_type: osx_intel
binary_path: "build/solc/solc"
preset: "<< parameters.preset >>"
b_bytecode_win:
parameters:
preset:
type: string
<<: *base_win
parallelism: 2 # For prepare_bytecode_report
steps:
# NOTE: For bytecode generation we need the input files to be byte-for-byte identical on all
# platforms so line ending conversions must absolutely be disabled.
- run: git config --global core.autocrlf false
- checkout
- run:
name: Force install python3.12
command: choco install python312 --pre --force
- run:
name: Create a symlink for python3
command: ln -s /c/ProgramData/chocolatey/bin/python3.12 /c/ProgramData/chocolatey/bin/python3
- attach_workspace:
at: build
- prepare_bytecode_report:
label: "windows"
binary_type: native
binary_path: "build/solc/Release/solc.exe"
preset: "<< parameters.preset >>"
b_bytecode_ubu_arm:
parameters:
preset:
type: string
<<: *base_ubuntu2404_arm_medium
parallelism: 2 # For prepare_bytecode_report
steps:
- checkout
- attach_workspace:
at: build
- prepare_bytecode_report:
label: "ubuntu_arm"
binary_type: native
binary_path: "build/solc/solc-static-linux-arm"
preset: "<< parameters.preset >>"
b_bytecode_ems:
parameters:
preset:
type: string
<<: *base_node_small
steps:
- checkout
- attach_workspace:
at: emscripten_build/libsolc
- prepare_bytecode_report:
label: "emscripten"
binary_type: solcjs
binary_path: "emscripten_build/libsolc/soljson.js"
preset: "<< parameters.preset >>"
t_bytecode_compare:
<<: *base_ubuntu2404_small
environment:
<<: *base_ubuntu2404_small_env
<<: *bytecode_compare_env_presets
steps:
- checkout
- attach_workspace:
at: .
- run: .circleci/compare_bytecode_reports.sh $PRESETS
- store_artifacts:
# NOTE: store_artifacts does not support the 'when' attribute.
# Fortunately when the artifact does not exist it just says "No artifact files found" and ignores it.
path: bytecode-reports-*.zip
- matrix_notify_failure_unless_pr
c_release_binaries:
<<: *base_ubuntu2404
steps:
- checkout
- attach_workspace:
at: workspace
- run:
name: Gather and rename binaries from dependent jobs
command: |
mkdir github/
cp workspace/solc/solc-static-linux github/solc-static-linux
cp workspace/solc/solc-static-linux-arm github/solc-static-linux-arm
cp workspace/build/solc/solc github/solc-macos
cp workspace/solc/Release/solc.exe github/solc-windows.exe
cp workspace/soljson.js github/soljson.js
cd github/
tar --create --file ../github-binaries.tar *
- store_artifacts:
path: github-binaries.tar
- run:
name: Rename binaries to solc-bin naming convention
command: |
full_version=$(
github/solc-static-linux --version |
sed -En 's/^Version: ([0-9.]+.*\+commit\.[0-9a-f]+(\.mod)?).*$/\1/p'
)
mkdir -p solc-bin/{linux-amd64,linux-arm64,macosx-amd64,windows-amd64,bin}
mv github/solc-static-linux-arm "solc-bin/linux-arm64/solc-linux-arm64-v${full_version}"
mv github/solc-static-linux "solc-bin/linux-amd64/solc-linux-amd64-v${full_version}"
mv github/solc-macos "solc-bin/macosx-amd64/solc-macosx-amd64-v${full_version}"
mv github/solc-windows.exe "solc-bin/windows-amd64/solc-windows-amd64-v${full_version}.exe"
mv github/soljson.js "solc-bin/bin/soljson-v${full_version}.js"
cd solc-bin/
tar --create --file ../solc-bin-binaries.tar *
- store_artifacts:
path: solc-bin-binaries.tar
- matrix_notify_failure_unless_pr
- matrix_notify_release_unless_pr
c_source_tarball:
<<: *base_ubuntu2404_small
steps:
- checkout
- setup_prerelease
- run: scripts/create_source_tarball.sh
- store_artifacts:
path: upload/
- matrix_notify_failure_unless_pr
- matrix_notify_release_unless_pr
b_alpine_docker:
<<: *base_cimg_small
steps:
- setup_remote_docker:
# Always build from scratch to use current packages.
# This job is only meant to run nightly so build time is not an issue.
docker_layer_caching: false
- checkout
- run:
name: Disable partial clone and fetch all objects
command: |
git config remote.origin.promisor false
git config --unset remote.origin.partialclonefilter
git fetch --refetch origin
- run:
name: Build and tag the container
command: scripts/docker_deploy_manual.sh develop "file://$PWD" --no-push
- run:
name: Smoke test
command: docker run --pull=never ghcr.io/argotorg/solc:build-alpine --version
- matrix_notify_failure_unless_pr
workflows:
version: 2
main:
jobs:
# basic checks
- chk_spelling: *requires_nothing
- chk_coding_style: *requires_nothing
# DISABLED FOR 0.6.0 - chk_docs_examples: *requires_nothing
- chk_buglist: *requires_nothing
- chk_proofs: *requires_nothing
- chk_pylint: *requires_nothing
- chk_errorcodes: *requires_nothing
- chk_antlr_grammar: *requires_nothing
- chk_docs_pragma_min_version: *requires_nothing
- t_ubu_pyscripts: *requires_nothing
- t_win_pyscripts: *requires_nothing
# build-only
- b_docs: *requires_nothing
- b_ubu_ossfuzz: *requires_nothing
# build and test with minimum supported versions of dependencies
- b_ubu_min_req_clang: *requires_nothing
- b_ubu_min_req: *requires_nothing
- t_ubu_min_req_soltest:
<<: *on_all_tags_and_branches
requires:
- b_ubu_min_req
# OS/X build and tests
- b_osx: *requires_nothing
- t_osx_cli: *requires_b_osx
- t_osx_soltest: *requires_b_osx
# ArchLinux build and tests
- b_archlinux: *requires_nothing
- t_archlinux_soltest: *requires_b_archlinux
# Static build
- b_ubu_static: *requires_nothing
- b_ubu_static_arm: *requires_nothing
# Ubuntu build and tests
- b_ubu: *requires_nothing
- t_ubu_cli: *requires_b_ubu
- t_ubu_arm_cli: *requires_b_ubu_static_arm
- t_ubu_locale: *requires_b_ubu
- t_ubu_soltest: *requires_b_ubu
- t_ubu_arm_soltest: *requires_b_ubu_static_arm
- b_ubu_clang: *requires_nothing
- t_ubu_clang_soltest: *requires_b_ubu_clang
- t_ubu_lsp: *requires_b_ubu
# Ubuntu fake release build and tests
- b_ubu_force_release: *requires_nothing
- t_ubu_force_release_cli: *requires_b_ubu_force_release
- t_ubu_force_release_soltest_all: *requires_b_ubu_force_release
# Emscripten build and tests that take 15 minutes or less
- b_ems: *requires_nothing
- t_ems_solcjs: *requires_b_ems
- t_ems_ext_edr: *requires_b_ems
- t_ext: *job_ems_compile_ext_colony
- t_ext: *job_native_compile_ext_gnosis
- t_ext: *job_native_test_ext_zeppelin
- t_ext: *job_native_test_ext_ens
- t_ext: *job_native_test_ext_yield_liquidator
- t_ext: *job_native_test_ext_uniswap
- t_ext: *job_native_test_ext_prb_math
- t_ext: *job_native_test_ext_elementfi
- t_ext: *job_native_test_ext_brink
- t_ext: *job_native_compile_ext_gp2
- t_ext: *job_native_compile_ext_euler
- t_ext: *job_native_compile_ext_pool_together
# TODO: Dropping the external tests below since they are based on old forks and
# fail after update the default evm version to cancun.
#- t_ext: *job_native_compile_ext_trident
#- t_ext: *job_native_compile_ext_chainlink
#- t_ext: *job_native_compile_ext_bleeps
- t_ethdebug_output_validity:
<<: *requires_b_ubu_static
- c_ext_benchmarks:
<<: *requires_nothing
requires:
- t_ems_compile_ext_colony
- t_native_compile_ext_gnosis
- t_native_test_ext_zeppelin
- t_native_test_ext_ens
- t_native_test_ext_yield_liquidator
- t_native_test_ext_uniswap
- t_native_test_ext_elementfi
- t_native_test_ext_brink
- t_native_compile_ext_gp2
# TODO: Dropping prb-math from the benchmarks since it is not implemented yet
# in the new Foundry external testing infrastructure.
# - t_native_test_ext_prb_math
- t_native_compile_ext_euler
- t_native_compile_ext_pool_together
# TODO: Dropping the external tests below since they are based on old forks and
# fail after update the default evm version to cancun.
#- t_native_compile_ext_trident
#- t_native_compile_ext_chainlink
#- t_native_compile_ext_bleeps
# Windows build and tests
- b_win: *requires_nothing
- t_win_soltest: *requires_b_win
# Bytecode comparison:
- b_bytecode_ubu_static:
<<: *on_all_tags_and_branches
matrix: *bytecode_compare_preset_matrix
requires:
- b_ubu_static
- b_bytecode_ubu:
<<: *on_all_tags_and_branches
matrix: *bytecode_compare_preset_matrix
requires:
- b_ubu
- b_bytecode_ubu_arm:
<<: *on_all_tags_and_branches
matrix: *bytecode_compare_preset_matrix
requires:
- b_ubu_static_arm
- b_bytecode_win:
<<: *on_all_tags_and_branches
matrix: *bytecode_compare_preset_matrix
requires:
- b_win
- b_bytecode_osx:
<<: *on_all_tags_and_branches
matrix: *bytecode_compare_preset_matrix
requires:
- b_osx
- b_bytecode_osx_intel:
<<: *on_all_tags_and_branches
matrix: *bytecode_compare_preset_matrix
requires:
- b_osx
- b_bytecode_ems:
<<: *on_all_tags_and_branches
matrix: *bytecode_compare_preset_matrix
requires:
- b_ems
- t_bytecode_compare:
<<: *on_all_tags_and_branches
requires:
- b_bytecode_ubu_static
- b_bytecode_ubu
- b_bytecode_ubu_arm
- b_bytecode_win
- b_bytecode_osx
- b_bytecode_osx_intel
- b_bytecode_ems
# Final artifacts
- c_release_binaries:
<<: *on_version_tags
requires:
- b_ubu_static_arm
- b_ubu_static
- b_osx
- b_win
- b_ems
- c_source_tarball: *requires_nothing
nightly:
triggers:
- schedule:
cron: "0 0 * * *"
<<: *on_develop
jobs:
# ASan build and tests
- b_ubu_asan: *requires_nothing
- b_ubu_san_clang: *job_b_ubu_asan_clang
- t_ubu_asan_soltest: *requires_b_ubu_asan
- t_ubu_asan_clang_soltest: *requires_b_ubu_asan_clang
- t_ubu_asan_cli: *requires_b_ubu_asan
# UBSan build and tests
- b_ubu_san_clang: *job_b_ubu_ubsan_clang
- t_ubu_ubsan_clang_soltest: *requires_b_ubu_ubsan_clang
- t_ubu_ubsan_clang_cli: *requires_b_ubu_ubsan_clang
# Deprecated EVM versions tests
- b_ubu: *requires_nothing
- t_ubu_soltest_low_priority_evm_versions: *requires_b_ubu
# Build in a Docker container (on Alpine Linux)
- b_alpine_docker: *requires_nothing
nightly-ossfuzz:
triggers:
- schedule:
cron: "0 0 * * *"
<<: *on_develop
jobs:
# OSSFUZZ builds and (regression) tests
- b_ubu_ossfuzz: *requires_nothing
- t_ubu_ossfuzz: *requires_b_ubu_ossfuzz
================================================
FILE: .circleci/osx_install_dependencies.sh
================================================
#! /bin/bash
#------------------------------------------------------------------------------
# Bash script to install osx dependencies
#
# The documentation for solidity is hosted at:
#
# https://docs.soliditylang.org
#
# ------------------------------------------------------------------------------
# This file is part of solidity.
#
# solidity is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# solidity is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with solidity. If not, see <http://www.gnu.org/licenses/>
#
# (c) 2016-2019 solidity contributors.
# ------------------------------------------------------------------------------
# note that the following directories may be cached by circleci:
# - /usr/local
# - /opt/homebrew
set -eu
function validate_checksum {
local package="$1"
local expected_checksum="$2"
local actual_checksum
actual_checksum=$(sha256sum "$package")
if [[ $actual_checksum != "${expected_checksum} ${package}" ]]
then
>&2 echo "ERROR: Wrong checksum for package $package."
>&2 echo "Actual: $actual_checksum"
>&2 echo "Expected: $expected_checksum"
exit 1
fi
}
if [ ! -f /usr/local/lib/libz3.a ] # if this file does not exists (cache was not restored), rebuild dependencies
then
brew update
brew upgrade
brew install cmake
brew install ccache
brew install wget
brew install coreutils
brew install diffutils
brew install grep
# JRE is required to run eldarica solver
brew install openjdk@11
brew install unzip
# boost
boost_version="1.84.0"
boost_package="boost_${boost_version//./_}.tar.bz2"
boost_dir="boost_${boost_version//./_}"
wget "https://archives.boost.io/release/$boost_version/source/$boost_package"
tar xf "$boost_package"
rm "$boost_package"
cd "$boost_dir"
./bootstrap.sh --with-toolset=clang --with-libraries=thread,system,filesystem,program_options,serialization,test
# the default number of jobs that b2 is taking, is the number of detected available CPU threads.
# install boost to /opt/boost, to use it in CMake, specify Boost_ROOT
sudo ./b2 -a address-model=64 architecture=arm+x86 --prefix=/opt/boost install
cd ..
sudo rm -rf "$boost_dir"
# eldarica
eldarica_version="2.1"
wget "https://github.com/uuverifiers/eldarica/releases/download/v${eldarica_version}/eldarica-bin-${eldarica_version}.zip" -O /tmp/eld_binaries.zip
validate_checksum /tmp/eld_binaries.zip 0ac43f45c0925383c9d2077f62bbb515fd792375f3b2b101b30c9e81dcd7785c
unzip /tmp/eld_binaries.zip -d /tmp
sudo mv /tmp/eldarica/{eld,eld-client,target,eldEnv} /usr/local/bin
rm -rf /tmp/{eldarica,eld_binaries.zip}
#cvc5
cvc5_version="1.2.0"
cvc5_archive_name="cvc5-macOS-arm64-static"
wget "https://github.com/cvc5/cvc5/releases/download/cvc5-${cvc5_version}/${cvc5_archive_name}.zip" -O /tmp/cvc5.zip
validate_checksum /tmp/cvc5.zip 57d2d4855af3f3865110a254e415098b4e150a655f297010e27eb292f48f7da7
sudo unzip -j /tmp/cvc5.zip "${cvc5_archive_name}/bin/cvc5" -d /usr/local/bin
rm -f /tmp/cvc5.zip
# z3
z3_version="4.13.3"
z3_dir="z3-z3-$z3_version"
z3_package="z3-$z3_version.tar.gz"
wget "https://github.com/Z3Prover/z3/archive/refs/tags/$z3_package"
validate_checksum "$z3_package" f59c9cf600ea57fb64ffeffbffd0f2d2b896854f339e846f48f069d23bc14ba0
tar xf "$z3_package"
rm "$z3_package"
cd "$z3_dir"
mkdir build
cd build
cmake -DCMAKE_OSX_ARCHITECTURES:STRING="x86_64;arm64" -DZ3_BUILD_LIBZ3_SHARED=false ..
make -j "$(nproc)"
sudo make install
cd ../..
rm -rf "$z3_dir"
# evmone
evmone_version="0.16.0"
evmone_package="evmone-${evmone_version}-darwin-arm64.tar.gz"
wget "https://github.com/ipsilon/evmone/releases/download/v${evmone_version}/${evmone_package}"
validate_checksum "$evmone_package" d26bcf7ada6c712b669ee70cbd8b534f80dadb6207fa15e15d1517d2b6823aa8
sudo tar xzpf "$evmone_package" -C /usr/local
rm "$evmone_package"
fi
================================================
FILE: .circleci/parallel_bytecode_report.sh
================================================
#!/usr/bin/env bash
set -euo pipefail
#------------------------------------------------------------------------------
# Splits all test source code into multiple files, generates bytecode and metadata
# for each file and combines it into a single report.txt file.
#
# The script is meant to be executed in CI on all supported platforms. All generated
# reports must be identical for a given compiler version.
#
# ------------------------------------------------------------------------------
# This file is part of solidity.
#
# solidity is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# solidity is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with solidity. If not, see <http://www.gnu.org/licenses/>
#
# (c) 2023 solidity contributors.
#------------------------------------------------------------------------------
(( $# == 4 )) || { >&2 echo "Wrong number of arguments."; exit 1; }
label="$1"
binary_type="$2"
binary_path="$3" # This path must be absolute
preset="$4"
[[ $binary_type == native || $binary_type == "osx_intel" || $binary_type == solcjs ]] || { >&2 echo "Invalid binary type: ${binary_type}"; exit 1; }
# NOTE: Locale affects the order of the globbed files.
export LC_ALL=C
mkdir test-cases/
cd test-cases/
echo "Preparing input files"
python3 ../scripts/isolate_tests.py ../test/
if [[ $binary_type == native || $binary_type == "osx_intel" ]]; then
interface=$(echo -e "standard-json\ncli" | circleci tests split)
echo "Selected interface: ${interface}"
echo "Generating bytecode reports"
python3 ../scripts/bytecodecompare/prepare_report.py \
"$binary_path" \
--interface "$interface" \
--preset "$preset" \
--execution-arch "$binary_type" \
--report-file "../bytecode-report-${label}-${interface}-${preset}.txt"
else
echo "Installing solc-js"
git clone --depth 1 https://github.com/argotorg/solc-js.git solc-js
cp "$binary_path" solc-js/soljson.js
cd solc-js/
npm install
npm run build
cd ..
npm install ./solc-js/dist
cp ../scripts/bytecodecompare/prepare_report.js .
echo "Generating bytecode reports"
# shellcheck disable=SC2035
./prepare_report.js \
--preset "$preset" \
*.sol --report-file "../bytecode-report-${label}-${preset}.txt"
fi
================================================
FILE: .circleci/parallel_cli_tests.py
================================================
#!/usr/bin/env python3
import subprocess
import sys
# Slowest CLI tests, whose execution takes time on the order of minutes (as of June 2023).
# When adding/removing items here, remember to update `parallelism` value in jobs that run this script.
# TODO: We should switch to time-based splitting but that requires JUnit XML report support in cmdlineTests.sh.
tests_to_run_in_parallel = [
'~ast_import_export', # ~7 min
'~evmasm_import_export', # ~5 min
'~ast_export_with_stop_after_parsing', # ~4 min
'~soljson_via_fuzzer', # ~3 min
'~via_ir_equivalence', # ~1 min
'~compilation_tests', # ~1 min
'~documentation_examples', # ~1 min
'*', # This item represents all the remaining tests
]
# Ask CircleCI to select a subset of tests for this parallel execution.
# If `parallelism` in CI config is set correctly, we should get just one but we can handle any split.
selected_tests = subprocess.check_output(
['circleci', 'tests', 'split'],
input='\n'.join(tests_to_run_in_parallel),
encoding='ascii',
).strip().split('\n')
selected_tests = set(selected_tests) - {''}
excluded_tests = set(tests_to_run_in_parallel) - selected_tests
assert selected_tests.issubset(set(tests_to_run_in_parallel))
if len(selected_tests) == 0:
print("No tests to run.")
sys.exit(0)
if '*' in selected_tests:
filters = [arg for test_name in excluded_tests for arg in ['--exclude', test_name]]
else:
filters = list(selected_tests)
try:
subprocess.run(
['test/cmdlineTests.sh'] + filters,
stdin=sys.stdin,
stdout=sys.stdout,
stderr=sys.stderr,
check=True,
)
except subprocess.CalledProcessError as exception:
sys.exit(exception)
================================================
FILE: .circleci/soltest.ps1
================================================
$ErrorActionPreference = "Stop"
cd "$PSScriptRoot\.."
.\build\solc\Release\solc.exe --version
if ( -not $? ) { throw "Cannot execute solc --version." }
mkdir test_results
.\build\test\Release\soltest.exe --color_output=no --show_progress=yes --logger=JUNIT,error,test_results/result.xml --logger=HRF,error,stdout -- --no-smt
if ( -not $? ) { throw "Unoptimized soltest run failed." }
.\build\test\Release\soltest.exe --color_output=no --show_progress=yes --logger=JUNIT,error,test_results/result_opt.xml --logger=HRF,error,stdout -- --optimize --no-smt
if ( -not $? ) { throw "Optimized soltest run failed." }
================================================
FILE: .circleci/soltest.sh
================================================
#!/usr/bin/env bash
#------------------------------------------------------------------------------
# Bash script to execute the Solidity tests by CircleCI.
#
# The documentation for solidity is hosted at:
#
# https://docs.soliditylang.org
#
# ------------------------------------------------------------------------------
# Configuration Environment Variables:
#
# EVM=version_string Specifies EVM version to compile for (such as homestead, etc)
# OPTIMIZE=1 Enables backend optimizer
# ABI_ENCODER_V1=1 Forcibly enables ABI coder version 1
# SOLTEST_FLAGS=<flags> Appends <flags> to default SOLTEST_ARGS
#
# ------------------------------------------------------------------------------
# This file is part of solidity.
#
# solidity is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# solidity is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with solidity. If not, see <http://www.gnu.org/licenses/>
#
# (c) 2016-2019 solidity contributors.
# ------------------------------------------------------------------------------
set -e
OPTIMIZE=${OPTIMIZE:-"0"}
EVM=${EVM:-"invalid"}
EOF_VERSION=${EOF_VERSION:-0}
CPUs=${CPUs:-3}
REPODIR="$(realpath "$(dirname "$0")/..")"
IFS=" " read -r -a BOOST_TEST_ARGS <<< "$BOOST_TEST_ARGS"
IFS=" " read -r -a SOLTEST_FLAGS <<< "$SOLTEST_FLAGS"
# TODO: [EOF] These won't pass on EOF yet. Reenable them when the implementation is complete.
EOF_EXCLUDES=(
--run_test='!yulStackLayout/literal_loop'
)
# shellcheck source=scripts/common.sh
source "${REPODIR}/scripts/common.sh"
# Test result output directory (CircleCI is reading test results from here)
mkdir -p test_results
# in case we run with ASAN enabled, we must increase stack size.
ulimit -s 16384
get_logfile_basename() {
local run="$1"
local filename="${EVM}"
test "${OPTIMIZE}" = "1" && filename="${filename}_opt"
test "${ABI_ENCODER_V1}" = "1" && filename="${filename}_abiv1"
(( EOF_VERSION != 0 )) && filename="${filename}_eofv${EOF_VERSION}"
filename="${filename}_${run}"
echo -ne "${filename}"
}
[ -z "$CIRCLE_NODE_TOTAL" ] || [ "$CIRCLE_NODE_TOTAL" = 0 ] && CIRCLE_NODE_TOTAL=1
[ -z "$CIRCLE_NODE_INDEX" ] && CIRCLE_NODE_INDEX=0
[ -z "$INDEX_SHIFT" ] && INDEX_SHIFT=0
# Multiply by a prime number to get better spread, just in case
# long-running test cases are next to each other.
CIRCLE_NODE_INDEX=$(((CIRCLE_NODE_INDEX + 23 * INDEX_SHIFT) % CIRCLE_NODE_TOTAL))
PIDs=()
for run in $(seq 0 $((CPUs - 1)))
do
BOOST_TEST_ARGS_RUN=(
"--color_output=no"
"--show_progress=yes"
"--logger=JUNIT,error,test_results/$(get_logfile_basename "$((CPUs * CIRCLE_NODE_INDEX + run))").xml"
"--logger=HRF,error,stdout"
"${BOOST_TEST_ARGS[@]}"
)
(( EOF_VERSION != 0 )) && BOOST_TEST_ARGS_RUN+=("${EOF_EXCLUDES[@]}")
SOLTEST_ARGS=("--evm-version=$EVM" "${SOLTEST_FLAGS[@]}")
test "${OPTIMIZE}" = "1" && SOLTEST_ARGS+=(--optimize)
test "${ABI_ENCODER_V1}" = "1" && SOLTEST_ARGS+=(--abiencoderv1)
(( EOF_VERSION != 0 )) && SOLTEST_ARGS+=(--eof-version "$EOF_VERSION")
BATCH_ARGS=("--batches" "$((CPUs * CIRCLE_NODE_TOTAL))" "--selected-batch" "$((CPUs * CIRCLE_NODE_INDEX + run))")
echo "Running ${REPODIR}/build/test/soltest ${BOOST_TEST_ARGS_RUN[*]} -- ${SOLTEST_ARGS[*]}"
"${REPODIR}/build/test/soltest" -l test_suite "${BOOST_TEST_ARGS_RUN[@]}" -- "${SOLTEST_ARGS[@]}" "${BATCH_ARGS[@]}" &
PIDs+=($!)
done
# wait for individual processes to get their exit status
for pid in "${PIDs[@]}"
do
wait "$pid"
done
================================================
FILE: .circleci/soltest_all.sh
================================================
#! /bin/bash
#------------------------------------------------------------------------------
# Bash script to execute the Solidity tests by CircleCI.
#
# The documentation for solidity is hosted at:
#
# https://docs.soliditylang.org
#
# ------------------------------------------------------------------------------
# This file is part of solidity.
#
# solidity is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# solidity is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with solidity. If not, see <http://www.gnu.org/licenses/>
#
# (c) 2016-2019 solidity contributors.
# ------------------------------------------------------------------------------
set -e
REPODIR="$(realpath "$(dirname "$0")"/..)"
# shellcheck source=scripts/common.sh
source "${REPODIR}/scripts/common.sh"
DEFAULT_EVM_VALUES=(
homestead
constantinople
istanbul
berlin
london
paris
shanghai
cancun
osaka
)
EVMS_WITH_EOF=(osaka)
# Deserialize the EVM_VALUES array if it was provided as argument or
# set EVM_VALUES to the default values.
IFS=" " read -ra EVM_VALUES <<< "${1:-${DEFAULT_EVM_VALUES[@]}}"
DEFAULT_EVM=osaka
OPTIMIZE_VALUES=(0 1)
# TODO: EOF is marked as experimental in evmone. Reenable when proper handling for that is added here.
EOF_VERSIONS=(0)
# Run for ABI encoder v1, without SMTChecker tests.
EVM="${DEFAULT_EVM}" \
OPTIMIZE=1 \
ABI_ENCODER_V1=1 \
BOOST_TEST_ARGS="-t !smtCheckerTests" \
"${REPODIR}/.circleci/soltest.sh"
# We shift the batch index so that long-running tests
# do not always run in the same executor for all EVM versions
INDEX_SHIFT=0
for OPTIMIZE in "${OPTIMIZE_VALUES[@]}"
do
for EVM in "${EVM_VALUES[@]}"
do
for EOF_VERSION in "${EOF_VERSIONS[@]}"
do
if (( EOF_VERSION > 0 )) && [[ ! " ${EVMS_WITH_EOF[*]} " == *" $EVM "* ]]; then
continue
fi
ENFORCE_GAS_ARGS=""
[ "${EVM}" = "${DEFAULT_EVM}" ] && ENFORCE_GAS_ARGS="--enforce-gas-cost"
# Run SMTChecker tests only when OPTIMIZE == 0
DISABLE_SMTCHECKER=""
[ "${OPTIMIZE}" != "0" ] && DISABLE_SMTCHECKER="-t !smtCheckerTests"
EVM="$EVM" \
EOF_VERSION="$EOF_VERSION" \
OPTIMIZE="$OPTIMIZE" \
SOLTEST_FLAGS="$SOLTEST_FLAGS $ENFORCE_GAS_ARGS" \
BOOST_TEST_ARGS="-t !@nooptions $DISABLE_SMTCHECKER" \
INDEX_SHIFT="$INDEX_SHIFT" \
"${REPODIR}/.circleci/soltest.sh"
INDEX_SHIFT=$((INDEX_SHIFT + 1))
done
done
done
================================================
FILE: .clang-format
================================================
# Formatting approximately used in Solidity's C++
#
# See https://clang.llvm.org/docs/ClangFormatStyleOptions.html
# For an online formatter to test settings, see
# https://zed0.co.uk/clang-format-configurator/
# Note that clang-format cannot express the style that closing parentheses
# behave similar to closing curly braces in a multi-line setting in that
# they have to be on a line of their own at the same indentation level
# as the opening part (aka "dangling parenthesis", see https://reviews.llvm.org/D33029).
Language: Cpp
BasedOnStyle: LLVM
AccessModifierOffset: -4
AlignAfterOpenBracket: AlwaysBreak
AlignEscapedNewlines: Left
AlwaysBreakAfterReturnType: None
AlwaysBreakTemplateDeclarations: Yes
BinPackArguments: false
BinPackParameters: false
BreakBeforeBinaryOperators: All
BreakBeforeBraces: Allman
ColumnLimit: 120
ContinuationIndentWidth: 4
FixNamespaceComments: false
IndentWidth: 4
KeepEmptyLinesAtTheStartOfBlocks: false
MaxEmptyLinesToKeep: 2
PenaltyBreakBeforeFirstCallParameter: 2000
PointerAlignment: Left
SpaceAfterCStyleCast: true
SpaceAfterTemplateKeyword: false
SpaceBeforeCtorInitializerColon: false
SpaceBeforeInheritanceColon: false
SpaceBeforeParens: ControlStatements
SpaceBeforeRangeBasedForLoopColon: false
TabWidth: 4
UseTab: Always
# Local Variables:
# mode: yaml
# End:
================================================
FILE: .codespellrc
================================================
[codespell]
skip = .git,deps,LICENSE,*.enc,Dockerfile*,codespell_whitelist.txt,codespell_ignored_lines.txt
ignore-words = scripts/codespell_whitelist.txt
exclude-file = scripts/codespell_ignored_lines.txt
================================================
FILE: .dockerignore
================================================
# out-of-tree builds usually go here. This helps improving performance of uploading
# the build context to the docker image build server
/build
================================================
FILE: .editorconfig
================================================
root = true
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
[*.{cpp,h}]
indent_style = tab
indent_size = 4
[*.{py,rst,sh,yml}]
indent_style = space
indent_size = 4
[*.{sol,yul}]
indent_style = space
indent_size = 4
[*.{txt,cmake,json}]
indent_style = tab
indent_size = 4
================================================
FILE: .gitattributes
================================================
*.sol linguist-language=Solidity
================================================
FILE: .github/CODEOWNERS
================================================
/docs/style-guide.rst @fulldecent
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug Report
about: Problems, deficiencies, inaccuracies or crashes discovered on Solidity.
title: ''
labels: 'bug :bug:'
assignees: ''
---
<!--## Prerequisites
- First, many thanks for taking part in the community. We really appreciate that.
- We realize there is a lot of information requested here. We ask only that you do your best to provide as much information as possible so we can better help you.
- Support questions are better asked in one of the following locations:
- [Solidity chat](https://gitter.im/ethereum/solidity)
- [Stack Overflow](https://ethereum.stackexchange.com/)
- Ensure the issue isn't already reported.
- The issue should be reproducible with the latest solidity version; however, this isn't a hard requirement and being reproducible with an older version is sufficient.
-->
## Description
<!--Please shortly describe the bug you have found, and what you expect instead.-->
## Environment
- Compiler version:
- Compilation pipeline (legacy, IR, EOF):
- Target EVM version (as per compiler settings):
- Framework/IDE (e.g. Foundry, Hardhat, Remix):
- EVM execution environment / backend / blockchain client:
- Operating system:
## Steps to Reproduce
<!--
Please provide a *minimal* source code example to trigger the bug you have found.
Please also mention any command-line flags that are necessary for triggering the bug.
Provide as much information as necessary to reproduce the bug.
```solidity
// Some *minimal* Solidity source code to reproduce the bug.
// ...
```
-->
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
- name: Initiate a language design or feedback discussion
url: https://forum.soliditylang.org
about: Open a thread on the Solidity forum.
================================================
FILE: .github/ISSUE_TEMPLATE/documentation_issue.md
================================================
---
name: Documentation Issue
about: Corrections, improvements or requests for new content on Solidity's documentation.
title: ''
labels: 'documentation :book:'
assignees: ''
---
## Page
<!--Please link directly to the page which you think has a problem.-->
## Abstract
<!--Please describe in detail what is wrong.-->
## Pull request
<!--Please link to your pull request which resolves this issue.-->
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature Request
about: Ideas, comments or messages asking for a particular functionality to be added
to Solidity.
title: ''
labels: feature
assignees: ''
---
<!--## Prerequisites
- First, many thanks for taking part in the community. We really appreciate that.
- We realize there is a lot of data requested here. We ask only that you do your best to provide as much information as possible so we can better help you.
- Support questions are better asked in one of the following locations:
- [Solidity chat](https://gitter.im/ethereum/solidity)
- [Stack Overflow](https://ethereum.stackexchange.com/)
- Ensure the issue isn't already reported (check `feature` and `language design` labels).
- If you feel uncertain about your feature request, perhaps it's better to open a language design or feedback forum thread via the issue selector, or by going to the forum directly.
- [Solidity forum](https://forum.soliditylang.org/)
-->
## Abstract
<!--Please describe by example what problem you see in the current Solidity language and reason about it.-->
## Motivation
<!--In this section you describe how you propose to address the problem you described earlier, including by giving one or more exemplary source code snippets for demonstration.-->
## Specification
<!--The technical specification should describe the syntax and semantics of any new feature. The specification should be detailed enough to allow any developer to implement the functionality.-->
## Backwards Compatibility
<!--
All language changes that introduce backwards incompatibilities must include a section describing these incompatibilities and their severity.
Please describe how you propose to deal with these incompatibilities.
-->
================================================
FILE: .github/workflows/buildpack-deps.yml
================================================
name: buildpack-deps
permissions:
packages: write
pull-requests: write
on:
pull_request:
branches: [ develop ]
paths:
- 'scripts/docker/buildpack-deps/Dockerfile.emscripten'
- 'scripts/docker/buildpack-deps/Dockerfile.ubuntu.clang.ossfuzz'
- 'scripts/docker/buildpack-deps/Dockerfile.ubuntu2404'
- 'scripts/docker/buildpack-deps/Dockerfile.ubuntu2404.clang'
- 'scripts/docker/buildpack-deps/Dockerfile.ubuntu2404.arm'
jobs:
buildpack-deps:
runs-on: ${{ matrix.runs-on }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DOCKER_REPOSITORY: ghcr.io/argotorg/solidity-buildpack-deps
IMAGE_NAME: buildpack-deps
strategy:
fail-fast: false
matrix:
include:
- image_variant: emscripten
runs-on: ubuntu-latest
- image_variant: ubuntu.clang.ossfuzz
runs-on: ubuntu-latest
- image_variant: ubuntu2404
runs-on: ubuntu-latest
- image_variant: ubuntu2404.clang
runs-on: ubuntu-latest
- image_variant: ubuntu2404.arm
runs-on: ubuntu-24.04-arm
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
fetch-depth: 0
- name: Log in to GitHub Container Registry
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Upgrade ${{ env.IMAGE_NAME }}-${{ matrix.image_variant }}
run: |
scripts/ci/docker_upgrade.sh ${{ env.IMAGE_NAME }} ${{ matrix.image_variant }} ${{ env.DOCKER_REPOSITORY }}
- name: comment PR
if: "env.DOCKER_IMAGE"
uses: thollander/actions-comment-pull-request@24bffb9b452ba05a4f3f77933840a6a841d1b32b # v3.0.1
with:
message: "`${{ env.DOCKER_IMAGE }} ${{ env.DOCKER_REPO_DIGEST }}`."
================================================
FILE: .github/workflows/stale.yml
================================================
name: Check stale pull requests
on:
workflow_dispatch:
schedule:
- cron: '0 12 * * *'
permissions:
pull-requests: write
env:
# NOTE: We set the parameters below to -1, so issues will never be marked as stale or closed automatically.
BEFORE_ISSUE_STALE: -1
BEFORE_ISSUE_CLOSE: -1
BEFORE_PR_STALE: 14
BEFORE_PR_CLOSE: 7
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@3a9db7e6a41a89f618792c92c0e97cc736e1b13f # v10.0.0
with:
debug-only: false
days-before-issue-stale: ${{ env.BEFORE_ISSUE_STALE }}
days-before-issue-close: ${{ env.BEFORE_ISSUE_CLOSE }}
ascending: true
stale-pr-message: |
This pull request is stale because it has been open for ${{ env.BEFORE_PR_STALE }} days with no activity.
It will be closed in ${{ env.BEFORE_PR_CLOSE }} days unless the `stale` label is removed.
close-pr-message: |
This pull request was closed due to a lack of activity for ${{ env.BEFORE_PR_CLOSE }} days after it was stale.
stale-pr-label: stale
close-pr-label: closed-due-inactivity
days-before-pr-stale: ${{ env.BEFORE_PR_STALE }}
days-before-pr-close: ${{ env.BEFORE_PR_CLOSE }}
exempt-pr-labels: 'external contribution :star:,roadmap,epic'
exempt-draft-pr: false
exempt-all-milestones: true
remove-stale-when-updated: true
operations-per-run: 256
================================================
FILE: .github/workflows/welcome-external-pr.yml
================================================
name: External contributor greeter
on:
pull_request_target:
types:
- opened
permissions:
pull-requests: write
contents: read
env:
DRY_RUN: false
jobs:
comment-external-pr:
runs-on: ubuntu-latest
steps:
# Note: this step requires that the INTERNAL_CONTRIBUTORS environment variable
# is already defined in the repository with the current json list of internal contributors.
- name: Comment on external contribution PR
if: "!contains(fromJSON(vars.INTERNAL_CONTRIBUTORS), github.event.pull_request.user.login)"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PR: ${{ github.event.pull_request.html_url }}
run: |
echo "Commenting in a newly submitted or reopened external PR: $PR"
if [[ $DRY_RUN == 'false' ]]; then
gh pr edit "$PR" --add-label "external contribution :star:"
comment_body=(
"Thank you for your contribution to the Solidity compiler! A team member will follow up shortly."
"\n\n"
"If you haven't read our [contributing guidelines](https://docs.soliditylang.org/en/latest/contributing.html) and our "
"[review checklist](https://github.com/argotorg/solidity/blob/develop/ReviewChecklist.md) before, "
"please do it now, this makes the reviewing process and accepting your contribution smoother."
"\n\n"
"If you have any questions or need our help, feel free to post them in the PR or talk to us directly on the "
"[#solidity-dev](https://matrix.to/#/#ethereum_solidity-dev:gitter.im) channel on Matrix."
)
gh pr comment $PR --body "$(IFS='' ; echo -e "${comment_body[*]}")"
fi
================================================
FILE: .gitignore
================================================
/commit_hash.txt
/prerelease.txt
# Compiled Object files
*.slo
*.lo
*.o
*.obj
*.pyc
__pycache__/
# Precompiled Headers
*.gch
*.pch
# Compiled Dynamic libraries
*.so
*.dylib
*.dll
# Compiled Static libraries
*.lai
*.la
*.a
*.lib
# ignore git mergetool backup files
*.orig
# Executables
*.exe
*.out
*.app
# Build directory
/cmake-build-*/
/build*/
emscripten_build/
/docs/_build/
/docs/_static/robots.txt
/deps/
# Reports and benchmarks
/reports/
/benchmarks/
# vim stuff
[._]*.sw[a-p]
[._]sw[a-p]
# emacs stuff
*~
# IDE files
/.idea/
/.vscode/
/browse.VC.db
/CMakeLists.txt.user
/CMakeSettings.json
/.vs
/.cproject
/.project
# OS specific local files
.DS_Store
Thumbs.db
# AI tooling
/.claude/
================================================
FILE: .gitmodules
================================================
[submodule "deps/nlohmann-json"]
path = deps/nlohmann-json
url = https://github.com/nlohmann/json.git
[submodule "deps/range-v3"]
path = deps/range-v3
url = https://github.com/ericniebler/range-v3.git
[submodule "deps/fmtlib"]
path = deps/fmtlib
url = https://github.com/fmtlib/fmt.git
================================================
FILE: .readthedocs.yml
================================================
version: 2
build:
os: ubuntu-24.04
tools:
python: "3.13"
sphinx:
builder: html
configuration: docs/conf.py
formats:
- pdf
- epub
python:
install:
- requirements: docs/requirements.txt
================================================
FILE: CMakeLists.txt
================================================
cmake_minimum_required(VERSION 3.13.0)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(ETH_CMAKE_DIR "${CMAKE_CURRENT_LIST_DIR}/cmake" CACHE PATH "The path to the cmake directory")
list(APPEND CMAKE_MODULE_PATH ${ETH_CMAKE_DIR})
# Set the build type, if none was specified.
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
if(EXISTS "${PROJECT_SOURCE_DIR}/.git")
set(DEFAULT_BUILD_TYPE "RelWithDebInfo")
else()
set(DEFAULT_BUILD_TYPE "Release")
endif()
set(CMAKE_BUILD_TYPE "${DEFAULT_BUILD_TYPE}" CACHE STRING "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel" FORCE)
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "RelWithDebInfo" "MinSizeRel")
endif()
include(EthToolchains)
# Set cmake_policies
include(EthPolicy)
eth_policy()
# project name and version should be set after cmake_policy CMP0048
set(PROJECT_VERSION "0.8.35")
# OSX target needed in order to support std::visit
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.14")
project(solidity VERSION ${PROJECT_VERSION} LANGUAGES C CXX)
include(TestBigEndian)
TEST_BIG_ENDIAN(IS_BIG_ENDIAN)
if (IS_BIG_ENDIAN)
message(FATAL_ERROR "${PROJECT_NAME} currently does not support big endian systems.")
endif()
option(SOLC_LINK_STATIC "Link solc executable statically on supported platforms" OFF)
option(SOLC_STATIC_STDLIBS "Link solc against static versions of libgcc and libstdc++ on supported platforms" OFF)
option(STRICT_Z3_VERSION "Require the exact version of Z3 solver expected by our test suite." ON)
option(PEDANTIC "Enable extra warnings and pedantic build flags. Treat all warnings as errors." ON)
option(PROFILE_OPTIMIZER_STEPS "Output performance metrics for the optimiser steps." OFF)
option(
IGNORE_VENDORED_DEPENDENCIES
"Ignore libraries provided as submodules of the repository and allow CMake to look for \
them in the typical locations, including system-wide dirs."
OFF
)
option(
ONLY_BUILD_SOLIDITY_LIBRARIES
"Only build library targets that can be statically linked against. Do not build executables or tests."
OFF
)
mark_as_advanced(PROFILE_OPTIMIZER_STEPS)
mark_as_advanced(IGNORE_VENDORED_DEPENDENCIES)
mark_as_advanced(ONLY_BUILD_SOLIDITY_LIBRARIES)
# Setup cccache.
include(EthCcache)
# Let's find our dependencies
include(EthDependencies)
if (NOT IGNORE_VENDORED_DEPENDENCIES)
include(fmtlib)
include(nlohmann-json)
include(range-v3)
else ()
message(WARNING "-- Ignoring vendored dependencies. Will use installed versions if found. Versions may differ from the ones the compiler was tested with. Make sure to run the test suite and thoroughly test the resulting binaries before using them in production.")
find_package(fmt REQUIRED)
find_package(nlohmann_json REQUIRED)
find_package(range-v3 REQUIRED)
endif()
find_package(Threads)
if(NOT PEDANTIC)
message(WARNING "-- Pedantic build flags turned off. Warnings will not make compilation fail. This is NOT recommended in development builds.")
endif()
if (PROFILE_OPTIMIZER_STEPS)
add_definitions(-DPROFILE_OPTIMIZER_STEPS)
endif()
# Figure out what compiler and system are we using
include(EthCompilerSettings)
# Include utils
include(EthUtils)
# Create license.h from LICENSE.txt and template
# Converting to char array is required due to MSVC's string size limit.
file(READ ${PROJECT_SOURCE_DIR}/LICENSE.txt LICENSE_TEXT HEX)
string(REGEX MATCHALL ".." LICENSE_TEXT "${LICENSE_TEXT}")
string(REGEX REPLACE ";" ",\n\t0x" LICENSE_TEXT "${LICENSE_TEXT}")
set(LICENSE_TEXT "0x${LICENSE_TEXT}")
configure_file("${PROJECT_SOURCE_DIR}/cmake/templates/license.h.in" include/license.h)
include(EthOptions)
configure_project(TESTS)
if(EMSCRIPTEN)
set(TESTED_Z3_VERSION "4.13.3")
set(MINIMUM_Z3_VERSION "4.8.16")
find_package(Z3)
if (${Z3_FOUND})
add_definitions(-DEMSCRIPTEN_BUILD)
if (${STRICT_Z3_VERSION})
if (NOT ("${Z3_VERSION_STRING}" VERSION_EQUAL ${TESTED_Z3_VERSION}))
message(
FATAL_ERROR
"SMTChecker tests require Z3 ${TESTED_Z3_VERSION} for all tests to pass.\n"
)
endif()
else()
if ("${Z3_VERSION_STRING}" VERSION_LESS ${MINIMUM_Z3_VERSION})
message(
FATAL_ERROR
"Solidity requires Z3 ${MINIMUM_Z3_VERSION} or newer."
)
endif()
endif()
else()
message(FATAL_ERROR "Solidity requires Z3 for emscripten build.")
endif()
endif()
add_subdirectory(libsolutil)
add_subdirectory(liblangutil)
add_subdirectory(libsmtutil)
add_subdirectory(libevmasm)
add_subdirectory(libyul)
add_subdirectory(libsolidity)
add_subdirectory(libsolc)
add_subdirectory(libstdlib)
if (NOT ONLY_BUILD_SOLIDITY_LIBRARIES)
add_subdirectory(tools)
if (NOT EMSCRIPTEN)
add_subdirectory(solc)
endif()
if (TESTS AND NOT EMSCRIPTEN)
add_subdirectory(test)
endif()
endif()
================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to make participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socioeconomic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at solidity@ethereum.org.
To report an issue involving the Solidity team please email José Pedro Cabrita at zepedro@ethereum.org.
All complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
[homepage]: https://www.contributor-covenant.org
================================================
FILE: CODING_STYLE.md
================================================
## 0. Formatting
**GOLDEN RULE**: Follow the style of the existing code when you make changes.
1. Use tabs for leading indentation:
- tab stops are every 4 characters (only relevant for line length).
- one indentation level -> exactly one byte (i.e. a tab character) in the source file.
2. Line widths:
- Lines should be at most 99 characters wide to make diff views readable and reduce merge conflicts.
- Lines of comments should be formatted according to ease of viewing, but simplicity is to be preferred over beauty.
3. Single-statement blocks should not have braces, unless required for clarity.
4. Never place condition bodies on same line as condition.
5. Space between keyword and opening parenthesis, but not following opening parenthesis or before final parenthesis.
6. No spaces for unary operators, `->` or `.`.
7. No space before `:` but one after it, except in the ternary operator: one on both sides.
8. Add spaces around all other operators.
9. Braces, when used, always have their own lines and are at same indentation level as "parent" scope.
10. If lines are broken, a list of elements enclosed with parentheses (of any kind) and separated by a separator (of any kind) are formatted such that there is exactly one element per line, followed by the separator, the opening parenthesis is on the first line, followed by a line break and the closing parenthesis is on a line of its own unindented). See example below.
Yes:
```cpp
if (a == b[i])
printf("Hello\n"); // NOTE spaces used instead of tab here for clarity - first byte should be '\t'.
foo->bar(
someLongVariableName,
anotherLongVariableName,
anotherLongVariableName,
anotherLongVariableName,
anotherLongVariableName
);
cout <<
"some very long string that contains completely irrelevant " <<
"text that talks about this and that and contains the words " <<
"\"lorem\" and \"ipsum\"" <<
endl;
```
No:
```cpp
if( a==b[ i ] ) { printf ("Hello\n"); }
foo->bar(someLongVariableName,
anotherLongVariableName,
anotherLongVariableName,
anotherLongVariableName,
anotherLongVariableName);
cout << "some very long string that contains completely irrelevant text that talks about this and that and contains the words \"lorem\" and \"ipsum\"" << endl;
```
To set indentation and tab width settings uniformly, the repository contains an [EditorConfig](https://editorconfig.org/) [`.editorconfig`](https://github.com/argotorg/solidity/blob/develop/.editorconfig) file, which describes some of the styles used and which is recognized by many IDE's and editors.
## 1. Namespaces
1. No `using namespace` declarations in header files.
2. `using namespace solidity;` and other project local namespaces is fine in cpp files, and generally encouraged.
3. Avoid `using namespace` at file level for third party libraries, such as boost, ranges, etc.
4. All symbols should be declared in a namespace except for final applications.
5. Use anonymous namespaces for helpers whose scope is a cpp file only.
6. Preprocessor symbols should be prefixed with the namespace in all-caps and an underscore.
Only in the header:
```cpp
#include <cassert>
namespace myNamespace
{
std::tuple<float, float> meanAndSigma(std::vector<float> const& _v);
}
```
## 2. Preprocessor
1. File comment is always at top, and includes:
- Copyright
- License (e.g. see COPYING)
2. Never use `#ifdef`/`#define`/`#endif` file guards. Prefer `#pragma` once as first line below file comment.
3. Prefer static constexpr variables to value macros.
4. Prefer inline constexpr functions to function macros.
5. Split complex macro on multiple lines with `\`.
## 3. Capitalization
**GOLDEN RULE**: Preprocessor: `ALL_CAPS`; C++: `camelCase`.
1. Use camelCase for splitting words in names, except where obviously extending STL/boost functionality in which case follow those naming conventions.
2. The following entities' first alpha is upper case:
- Type names
- Template parameters
- Enum members
- static const variables that form an external API.
3. All preprocessor symbols (macros, macro arguments) in full uppercase with underscore word separation.
All other entities' first alpha is lower case.
## 4. Variable prefixes
1. Leading underscore "_" to parameter names:
- Exception: "o_parameterName" when it is used exclusively for output. See 6(f).
- Exception: "io_parameterName" when it is used for both input and output. See 6(f).
2. Leading "g_" to global (non-const) variables.
3. Leading "s_" to static (non-const, non-global) variables.
## 5. Assertions
Use `solAssert` and `solUnimplementedAssert` generously to check assumptions that span across different parts of the code base, for example before dereferencing a pointer.
## 6. Declarations
1. {Typename} + {qualifiers} + {name}.
2. Only one per line.
3. Associate */& with type, not variable (at ends with parser, but more readable, and safe if in conjunction with (b)).
4. Favour declarations close to use; do not habitually declare at top of scope ala C.
5. Pass non-trivial parameters as const reference, unless the data is to be copied into the function, then either pass by const reference or by value and use std::move.
6. If a function returns multiple values, use std::tuple (std::pair acceptable) or better introduce a struct type. Do not use */& arguments.
7. Use parameters of pointer type only if `nullptr` is a valid argument, use references otherwise. Often, `std::optional` is better suited than a raw pointer.
8. Never use a macro where adequate non-preprocessor C++ can be written.
9. Only use `auto` if the type is very long and rather irrelevant.
10. Do not pass bools: prefer enumerations instead.
11. Prefer enum class to straight enum.
12. Always initialize POD variables, even if their value is overwritten later.
Yes:
```cpp
enum class Accuracy
{
Approximate,
Exact
};
struct MeanSigma
{
float mean = 0.0f;
float standardDeviation = 1.0f;
};
double const d = 0;
int i = 0;
int j = 0;
char* s = nullptr;
MeanAndSigma ms meanAndSigma(std::vector<float> const& _v, Accuracy _a);
Derived* x = dynamic_cast<Derived*>(base);
for (auto i = x->begin(); i != x->end(); ++i) {}
```
No:
```cpp
const double d = 0;
int i, j;
char *s;
float meanAndSigma(std::vector<float> _v, float* _sigma, bool _approximate);
Derived* x(dynamic_cast<Derived*>(base));
for (map<ComplexTypeOne, ComplexTypeTwo>::iterator i = l.begin(); i != l.end(); ++l) {}
```
## 7. Structs & classes
1. Structs to be used when all members public and no virtual functions:
- In this case, members should be named naturally and not prefixed with `m_`.
2. Classes to be used in all other circumstances.
## 8. Members
1. One member per line only.
2. Private, non-static, non-const fields prefixed with `m_`.
3. Avoid public fields, except in structs.
4. Use override, final and const as much as possible.
5. No implementations with the class declaration, except:
- template or force-inline method (though prefer implementation at bottom of header file).
- one-line implementation (in which case include it in same line as declaration).
6. For a property `foo`
- Member: `m_foo`
- Getter: `foo()` [ also: for booleans, `isFoo()` ]
- Setter: `setFoo()`
## 9. Naming
1. Avoid unpronounceable names.
2. Names should be shortened only if they are extremely common, but shortening should be generally avoided
3. Avoid prefixes of initials (e.g. do not use `IMyInterface`, `CMyImplementation`)
4. Find short, memorable & (at least semi-) descriptive names for commonly used classes or name-fragments:
- A dictionary and thesaurus are your friends;
- Spell correctly;
- Think carefully about the class's purpose;
- Imagine it as an isolated component to try to decontextualise it when considering its name;
- Don't be trapped into naming it (purely) in terms of its implementation.
## 10. Type definitions
1. Prefer `using` to `typedef`. e.g. `using ints = std::vector<int>;` rather than typedef `std::vector<int> ints;`
2. Generally avoid shortening a standard form that already includes all important information:
- e.g. stick to `shared_ptr<X>` rather than shortening to `ptr<X>`.
3. Where there are exceptions to this (due to excessive use and clear meaning), note the change prominently and use it consistently:
- e.g. `using Guard = std::lock_guard<std::mutex>;` ///< Guard is used throughout the codebase since it is clear in meaning and used commonly.
4. In general expressions should be roughly as important/semantically meaningful as the space they occupy.
5. Avoid introducing aliases for types unless they are very complicated. Consider the number of items a brain can keep track of at the same time.
## 11. Commenting
1. Comments should be doxygen-compilable, using @notation rather than \notation.
2. Document the interface, not the implementation:
- Documentation should be able to remain completely unchanged, even if the method is reimplemented;
- Comment in terms of the method properties and intended alteration to class state (or what aspects of the state it reports);
- Be careful to scrutinise documentation that extends only to intended purpose and usage;
- Reject documentation that is simply an English transaction of the implementation.
3. Avoid in-code comments. Instead, try to extract blocks of functionality into functions. This often already eliminates the need for an in-code comment.
## 12. Include Headers
1. Includes should go in increasing order of generality (`libsolidity` -> `libevmasm` -> `libsolutil` -> `boost` -> `STL`).
2. The corresponding `.h` file should be the first include in the respective `.cpp` file.
3. Insert empty lines between blocks of include files.
Example:
```cpp
#include <libsolidity/codegen/ExpressionCompiler.h>
#include <libsolidity/ast/AST.h>
#include <libsolidity/codegen/CompilerContext.h>
#include <libsolidity/codegen/CompilerUtils.h>
#include <libsolidity/codegen/LValue.h>
#include <libevmasm/GasMeter.h>
#include <libsolutil/Common.h>
#include <libsolutil/SHA3.h>
#include <boost/range/adaptor/reversed.hpp>
#include <boost/algorithm/string/replace.hpp>
#include <utility>
#include <numeric>
```
See [this issue](https://stackoverflow.com/questions/614302/c-header-order/614333#614333 "C header order") for the reason: this makes it easier to find missing includes in header files.
## 13. Recommended reading
- Herb Sutter and Bjarne Stroustrup:
- [C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md)
- Herb Sutter and Andrei Alexandrescu:
- "C++ Coding Standards: 101 Rules, Guidelines, and Best Practices"
- Scott Meyers:
- "Effective C++: 55 Specific Ways to Improve Your Programs and Designs (3rd Edition)"
- "More Effective C++: 35 New Ways to Improve Your Programs and Designs"
- "Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14"
================================================
FILE: CONTRIBUTING.md
================================================
# Contribution Guidelines
Please see our contribution guidelines in [the Solidity documentation](https://docs.soliditylang.org/en/latest/contributing.html).
Thank you for your help!
================================================
FILE: Changelog.md
================================================
### 0.8.35 (unreleased)
Language Features:
* General: Add a builtin that computes the base slot of a storage namespace using the `erc7201` formula from ERC-7201.
Compiler Features:
* Commandline Interface: Disallow selecting the deprecated assembly input mode that was only accessible via `--assemble` instead of treating it as equivalent to `--strict-assembly`.
* Commandline Interface: Introduce `--experimental` flag required for enabling the experimental mode.
* General: Introduce the SSA CFG codegen (experimental).
* General: Restrict the existing experimental features (`generic-solidity`, `lsp`, `ethdebug`, `eof`, `evm`, `ast-import`, `evmasm-import`, `ir-ast`, `ssa-cfg`) to experimental mode.
* Metadata: Store the state of the experimental mode in JSON and CBOR metadata. In CBOR this broadens the meaning of the existing `experimental` field, which used to indicate only the presence of certain experimental pragmas in the source.
* Standard JSON Interface: Introduce `settings.experimental` setting required for enabling the experimental mode.
* Yul Optimizer: Improve performance of control flow side effects collector and function references resolver.
Bugfixes:
* Yul: Fix incorrect serialization of Yul object names containing double quotes and escape sequences, producing output that could not be parsed as valid Yul.
* Yul EVM Code Transform: Improve stack shuffler performance by fixing a BFS deduplication issue.
### 0.8.34 (2026-02-18)
Important Bugfixes:
* Yul IR Code Generation: Fix a bug that could result in clearing a storage variable instead of a transient storage variable at the same position in the layout (and vice-versa).
Compiler Features:
* Yul Optimizer: Remove redundant prerequisite steps from the default optimizer sequence.
### 0.8.33 (2025-12-18)
Bugfixes:
* TypeChecker: Fix internal error when accessing getters of constant variables.
### 0.8.32 (2025-12-18)
Important Bugfixes:
* Code Generator: Fix a bug in clearing/copying of arrays that straddle the end of storage, potentially resulting in assignment/initialization/`delete`/`push()`/`pop()` skipping some or all of the intended storage writes.
Bugfixes:
* Codegen: Fix internal compiler error when emitting events via module member access.
* TypeChecker: Fix error and event selectors not being considered compile-time constant.
* TypeChecker: Fix `string.concat` and `bytes.concat` with constant arguments not being considered compile-time constant.
### 0.8.31 (2025-12-03)
Language Features:
* Custom Storage Layout: Allow using `constant` state variables in the base slot expression.
* DocString Parser: Warn about deprecation of inline assembly special comment `memory-safe-assembly`.
* Syntax Checker: Warn about deprecation of ABI coder v1.
* Syntax Checker: Warn about deprecation of virtual modifiers.
* Type Checker: Warn about deprecation of `send` and `transfer` functions on instances of `address`.
* Type Checker: Warn about deprecation of comparisons between variables of contract types.
* Yul: Introduce builtin `clz(x)` for counting the number of leading zero bits in a 256-bit word.
Compiler Features:
* ethdebug: Experimental support for instructions and source locations under EOF.
* EVM: Set default EVM Version to `osaka`.
Bugfixes:
* Assembler: Fix not using a fixed-width type for IDs being assigned to subassemblies nested more than one level away, resulting in inconsistent `--asm-json` output between target architectures.
* Yul Optimizer: Fix edge case in which invalid Yul code is produced by ExpressionSimplifier due to expressions being substituted that contain out-of-scope variables.
Build System:
* Enable Linux arm64 binaries for testing and releases.
* Ubuntu PPA Packages: Discontinue the PPA as a binary distribution channel.
* Update minimum version requirements of Boost to 1.83.0 for non-windows builds and of GCC and Clang to 13.3 and 18.1.3, respectively. Fixes infinite recursion on `boost::rational` comparison affecting compiler binaries built with GCC<14.0 and Boost<1.75.
### 0.8.30 (2025-05-07)
Compiler Features:
* EVM: Set default EVM Version to `prague`.
* NatSpec: Capture Natspec documentation of `enum` values in the AST.
Bugfixes:
* SMTChecker: Do not consider loop conditions as constant-condition verification target as this could cause incorrect reports and internal compiler errors.
* SMTChecker: Fix incorrect analysis when only a subset of contracts is selected with `--model-checker-contracts`.
* SMTChecker: Fix internal compiler error when string literal is used to initialize user-defined type based on fixed bytes.
### 0.8.29 (2025-03-12)
Language Features:
* Allow relocating contract storage to an arbitrary location.
Compiler Features:
* Error Reporting: Errors reported during code generation now point at the location of the contract when more fine-grained location is not available.
* ethdebug: Experimental support for instructions and source locations.
* EVM: Support for the EVM version "Osaka".
* EVM Assembly Import: Allow enabling opcode-based optimizer.
* General: The experimental EOF backend implements a subset of EOF sufficient to compile arbitrary high-level Solidity syntax via IR with optimization enabled.
* SMTChecker: Support ``block.blobbasefee`` and ``blobhash``.
* SMTChecker: The option ``--model-checker-print-query`` no longer requires ``--model-checker-solvers smtlib2``.
* SMTChecker: Z3 is now a runtime dependency, not a build dependency (except for emscripten build).
* Yul Parser: Make name clash with a builtin a non-fatal error.
Bugfixes:
* Commandline Interface: Report StackTooDeep errors in compiler mode as proper errors instead of printing diagnostic information meant for internal compiler errors.
* Error Reporting: Fix error locations not being shown for source files with empty names.
* General: Fix internal compiler error when requesting IR AST outputs for interfaces and abstract contracts.
* Metadata: Fix custom cleanup sequence missing from metadata when other optimizer settings have default values.
* SMTChecker: Fix internal compiler error when analyzing overflowing expressions or bitwise negation of unsigned types involving constants.
* SMTChecker: Fix reporting on targets that are safe in the context of one contract but unsafe in the context of another contract.
* SMTChecker: Fix SMT logic error when analyzing cross-contract getter call with BMC.
* SMTChecker: Fix SMT logic error when contract deployment involves string literal to fixed bytes conversion.
* SMTChecker: Fix SMT logic error when external call has extra effectless parentheses.
* SMTChecker: Fix SMT logic error when initializing a fixed-sized-bytes array using string literals.
* SMTChecker: Fix SMT logic error when translating invariants involving array store and select operations.
* SMTChecker: Fix wrong encoding of string literals as arguments of ``ecrecover`` precompile.
* Standard JSON Interface: Fix ``generatedSources`` and ``sourceMap`` being generated internally even when not requested.
* TypeChecker: Fix spurious compilation errors due to incorrect computation of contract storage size which erroneously included transient storage variables.
* Yul: Fix internal compiler error when a code generation error should be reported instead.
* Yul Optimizer: Fix failing debug assertion due to dereferencing of an empty ``optional`` value.
Build system:
* Linux release builds are fully static again and no longer depend on ``glibc``.
* Switch from C++17 to C++20 as the target standard.
Solc-Js:
* The wrapper now requires at least nodejs v12.
### 0.8.28 (2024-10-09)
Language Features:
* Transient storage state variables of value types are now fully supported.
Compiler Features:
* General: Generate JSON representations of Yul ASTs only on demand to reduce memory usage.
* Standard JSON Interface: Bytecode or IR can now be requested for a subset of all contracts without triggering unnecessary code generation for other contracts.
Bugfixes:
* SMTChecker: Fix SMT logic error when assigning to an array of addresses.
* Yul AST: Fix shifted native source locations when debug info selection included code snippets.
Build system:
* Removed ``USE_LD_GOLD`` option and default to use the compiler default linker. For custom linkers, ``CMAKE_CXX_FLAGS`` can be used.
### 0.8.27 (2024-09-04)
Language Features:
* Accept declarations of state variables with ``transient`` data location (parser support only, no code generation yet).
* Make ``require(bool, Error)`` available when using the legacy pipeline.
* Yul: Parsing rules for source location comments have been relaxed: Whitespace between the location components as well as single-quoted code snippets are now allowed.
Compiler Features:
* Commandline Interface: Add ``--transient-storage-layout`` output.
* Commandline Interface: Allow the use of ``--asm-json`` output option in assembler mode to export EVM assembly of the contracts in JSON format.
* Commandline Interface: Do not perform IR optimization when only unoptimized IR is requested.
* Constant Optimizer: Uses ``PUSH0`` if supported by the selected evm version.
* Error Reporting: Unimplemented features are now properly reported as errors instead of being handled as if they were bugs.
* EVM: Support for the EVM version "Prague".
* Peephole Optimizer: ``PUSH0``, when supported, is duplicated explicitly instead of using ``DUP1``.
* Peephole Optimizer: Remove identical code snippets that terminate the control flow if they occur one after another.
* SMTChecker: Add CHC engine check for underflow and overflow in unary minus operation.
* SMTChecker: Replace CVC4 as a possible BMC backend with cvc5.
* Standard JSON Interface: Add ``transientStorageLayout`` output.
* Standard JSON Interface: Do not perform IR optimization when only unoptimized IR is requested.
* Yul: Drop the deprecated typed Yul dialect that was only accessible via ``--yul`` in the CLI.
* Yul: The presence of types in untyped Yul dialects is now a parser error.
* Yul Optimizer: Caching of optimized IR to speed up optimization of contracts with bytecode dependencies.
* Yul Optimizer: The optimizer now treats some previously unrecognized identical literals as identical.
Bugfixes:
* Assembler: Fix ICE caused by imprecise calculation of required size of tags in bytecode when code size is above 255.
* Parser: Fix spuriously emitted parser error for unary plus operations when used as binary operator in some cases.
* SMTChecker: Fix error that reports invalid number of verified checks for BMC and CHC engines.
* SMTChecker: Fix formatting of unary minus expressions in invariants.
* SMTChecker: Fix internal compiler error when reporting proved targets for BMC engine.
* SMTChecker: Fix SMT logic error when assigning to an array of contracts or functions.
* Standard JSON Interface: For Yul input, properly produce output artifacts in case of warnings.
* TypeChecker: Fix segfault when assigning nested tuple to tuple.
* Yul IR Code Generation: Deterministic order of Yul subobjects.
* Yul Optimizer: Fix Yul source locations always referring to unoptimized source, even in optimized outputs.
* Yul Optimizer: Fix warnings being generated twice when there are no errors.
* Yul Optimizer: Name simplification could lead to forbidden identifiers with a leading and/or trailing dot, e.g., ``x._`` would get simplified into ``x.``.
* Yul Parser: Fix segfault when parsing very long location comments.
Build System:
* Change build system to use git submodules for some dependencies (nlohmann-json, fmtlib & range-v3).
### 0.8.26 (2024-05-21)
Language Features:
* Introduce a new overload ``require(bool, Error)`` that allows usage of ``require`` functions with custom errors. This feature is available in the ``via-ir`` pipeline only.
Compiler Features:
* SMTChecker: Create balance check verification target for CHC engine.
* Yul IR Code Generation: Cheaper code for reverting with errors of a small static encoding size.
* Yul Optimizer: New, faster default optimizer step sequence.
Bugfixes:
* Commandline Interface: Fix ICE when the optimizer is disabled and an empty/blank string is used for ``--yul-optimizations`` sequence.
* SMTChecker: Fix false positive when comparing hashes of same array or string literals.
* SMTChecker: Fix internal error on mapping access caused by too strong requirements on sort compatibility of the index and mapping domain.
* SMTChecker: Fix internal error when using an empty tuple in a conditional operator.
* SMTChecker: Fix internal error when using bitwise operators with an array element as argument.
* Standard JSON Interface: Fix ICE when the optimizer is disabled and an empty/blank string is used for ``optimizerSteps`` sequence.
* StaticAnalyzer: Only raise a compile time error for division and modulo by zero when it's between literals.
* TypeChecker: Fix compiler crash when the left-hand side of an assignment was a parenthesized non-tuple expression of a tuple type.
* Yul Optimizer: Fix optimizer executing each repeating part of the step sequence at least twice, even if the code size already became stable after the first iteration.
* Yul Optimizer: Fix the order of assignments generated by ``SSATransform`` being dependent on AST IDs, sometimes resulting in different (but equivalent) bytecode when unrelated files were added to the compilation pipeline.
Build System:
* Replace internal JSON library jsoncpp with nlohmann::json.
### 0.8.25 (2024-03-14)
Compiler Features:
* Code Generator: Use ``MCOPY`` instead of ``MLOAD``/``MSTORE`` loop when copying byte arrays.
* EVM: Set default EVM version to ``cancun``.
* Yul Analyzer: Emit transient storage warning only for the first occurrence of ``tstore``.
Bugfixes:
* Assembler: Prevent incorrect calculation of tag sizes.
* Commandline Interface: Do not run IR pipeline when ``--via-ir`` is used but no output that depends on the IR is requested.
* EVM Assembly Import: Fix handling of missing source locations during import.
* SMTChecker: Ensure query is properly flushed to a file before calling solver when using SMT-LIB interface.
* SMTChecker: Fix internal error caused by not respecting the sign of an integer type when constructing zero-value SMT expressions.
* SMTChecker: Run Eldarica only when explicitly requested with `--model-checker-solvers eld`, even when it is present on the system.
### 0.8.24 (2024-01-25)
Language Features:
* Introduce global ``block.blobbasefee`` for retrieving the blob base fee of the current block.
* Introduce global function ``blobhash(uint)`` for retrieving versioned hashes of blobs, akin to the homonymous Yul builtin.
* Yul: Introduce builtin ``blobbasefee()`` for retrieving the blob base fee of the current block.
* Yul: Introduce builtin ``blobhash()`` for retrieving versioned hashes of blobs associated with the transaction.
* Yul: Introduce builtin ``mcopy()`` for cheaply copying data between memory areas.
* Yul: Introduce builtins ``tload()`` and ``tstore()`` for transient storage access.
Compiler Features:
* EVM: Support for the EVM Version "Cancun".
* SMTChecker: Support `bytes.concat` except when string literals are passed as arguments.
* SMTChecker: Print a message that function parameter name was used instead of a concrete value in a counterexample when the concrete value found by the solver is too long to print.
* Standard JSON Interface: Add experimental support to import EVM assembly in the format used by ``--asm-json``.
* TypeChecker: Comparison of internal function pointers now yields a warning, as it can produce unexpected results with the legacy pipeline enabled.
Bugfixes:
* AST import: Fix bug when importing inline assembly with empty ``let`` variable declaration.
### 0.8.23 (2023-11-08)
Important Bugfixes:
* Optimizer: Fix block deduplicator bug which led to blocks which are identical apart from the contents of ``verbatim`` instructions to be treated as equivalent and thus collapsed into a single one.
Compiler Features:
* Commandline Interface: An empty ``--yul-optimizations`` sequence can now be always provided.
* Standard JSON Interface: An empty ``optimizerSteps`` sequence can now always be provided.
### 0.8.22 (2023-10-25)
Language Features:
* Allow defining events at file level.
Compiler Features:
* Code Generator: Remove redundant overflow checks of certain ``for`` loops when the counter variable cannot overflow.
* Commandline Interface: Add ``--no-import-callback`` option that prevents the compiler from loading source files not given explicitly on the CLI or in Standard JSON input.
* Commandline Interface: Add an experimental ``--import-asm-json`` option that can import EVM assembly in the format used by ``--asm-json``.
* Commandline Interface: Use proper severity and coloring also for error messages produced outside of the compilation pipeline.
* EVM: Deprecate support for "homestead", "tangerineWhistle", "spuriousDragon" and "byzantium" EVM versions.
* Parser: Remove the experimental error recovery mode (``--error-recovery`` / ``settings.parserErrorRecovery``).
* SMTChecker: Support user-defined operators.
* Yul Optimizer: If ``PUSH0`` is supported, favor zero literals over storing zero values in variables.
* Yul Optimizer: Run the ``Rematerializer`` and ``UnusedPruner`` steps at the end of the default clean-up sequence.
Bugfixes:
* AST: Fix wrong initial ID for Yul nodes in the AST.
* Code Generator: Fix output from via-IR code generator being dependent on which files were discovered by import callback. In some cases, a different AST ID assignment would alter the order of functions in internal dispatch, resulting in superficially different but semantically equivalent bytecode.
* NatSpec: Fix internal error when requesting userdoc or devdoc for a contract that emits an event defined in a foreign contract or interface.
* SMTChecker: Fix encoding error that causes loops to unroll after completion.
* SMTChecker: Fix inconsistency on constant condition checks when ``while`` or ``for`` loops are unrolled before the condition check.
* Yul Optimizer: Fix replacement decisions during CSE being affected by Yul variable names generated by the compiler, resulting in different (but equivalent) bytecode in some situations.
### 0.8.21 (2023-07-19)
Important Bugfixes:
* Code Generator: Always generate code for the expression in ``<expression>.selector`` in the legacy code generation pipeline.
* Yul Optimizer: Fix ``FullInliner`` step (``i``) not preserving the evaluation order of arguments passed into inlined functions in code that is not in expression-split form (i.e. when using a custom optimizer sequence in which the step not preceded by ``ExpressionSplitter`` (``x``)).
Language Features:
* Allow qualified access to events from other contracts.
* Relax restrictions on initialization of immutable variables. Reads and writes may now happen at any point at construction time outside of functions and modifiers. Explicit initialization is no longer mandatory.
Compiler Features:
* Commandline Interface: Add ``--ast-compact-json`` output in assembler mode.
* Commandline Interface: Add ``--ir-ast-json`` and ``--ir-optimized-ast-json`` outputs for Solidity input, providing AST in compact JSON format for IR and optimized IR.
* Commandline Interface: Respect ``--optimize-yul`` and ``--no-optimize-yul`` in compiler mode and accept them in assembler mode as well. ``--optimize --no-optimize-yul`` combination now allows enabling EVM assembly optimizer without enabling Yul optimizer.
* EWasm: Remove EWasm backend.
* Parser: Introduce ``pragma experimental solidity``, which will enable an experimental language mode that in particular has no stability guarantees between non-breaking releases and is not suited for production use.
* SMTChecker: Add ``--model-checker-print-query`` CLI option and ``settings.modelChecker.printQuery`` JSON option to output the SMTChecker queries in the SMTLIB2 format. This requires using ``smtlib2`` solver only.
* Standard JSON Interface: Add ``ast`` file-level output for Yul input.
* Standard JSON Interface: Add ``irAst`` and ``irOptimizedAst`` contract-level outputs for Solidity input, providing AST in compact JSON format for IR and optimized IR.
* Yul Optimizer: Remove experimental ``ReasoningBasedSimplifier`` optimization step.
* Yul Optimizer: Stack-to-memory mover is now enabled by default whenever possible for via IR code generation and pure Yul compilation.
Bugfixes:
* Code Generator: Disallow complex expressions whose results are types, built-ins, modules or some unassignable functions. The legacy code generation pipeline would not actually evaluate them, discarding any side-effects they might have.
* Code Generator: Fix not entirely deterministic order of functions in unoptimized Yul output. The choice of C++ compiler in some cases would result in different (but equivalent) bytecode (especially from native binaries vs emscripten binaries).
* Commandline Interface: Fix internal error when using ``--stop-after parsing`` and requesting some of the outputs that require full analysis or compilation.
* Commandline Interface: It is no longer possible to specify both ``--optimize-yul`` and ``--no-optimize-yul`` at the same time.
* SMTChecker: Fix encoding of side-effects inside ``if`` and ``ternary conditional``statements in the BMC engine.
* SMTChecker: Fix false negative when a verification target can be violated only by trusted external call from another public function.
* SMTChecker: Fix generation of invalid SMT-LIB2 scripts in BMC engine with trusted mode for external calls when CHC engine times out.
* SMTChecker: Fix internal error caused by incorrectly classifying external function call using function pointer as a public getter.
* SMTChecker: Fix internal error caused by using external identifier to encode member access to functions that take an internal function as a parameter.
* Standard JSON Interface: Fix an incomplete AST being returned when analysis is interrupted by certain kinds of fatal errors.
* Type Checker: Disallow using certain unassignable function types in complex expressions.
* Type Checker: Function declaration types referring to different declarations are no longer convertible to each other.
* Yul Optimizer: Ensure that the assignment of memory slots for variables moved to memory does not depend on AST IDs that may depend on whether additional files are included during compilation.
* Yul Optimizer: Fix ``FullInliner`` step not ignoring code that is not in expression-split form.
* Yul Optimizer: Fix optimized IR being unnecessarily passed through the Yul optimizer again before bytecode generation.
AST Changes:
* AST: Add the ``experimentalSolidity`` field to the ``SourceUnit`` nodes, which indicate whether the experimental parsing mode has been enabled via ``pragma experimental solidity``.
### 0.8.20 (2023-05-10)
Compiler Features:
* Assembler: Use ``push0`` for placing ``0`` on the stack for EVM versions starting from "Shanghai". This decreases the deployment and runtime costs.
* EVM: Set default EVM version to "Shanghai".
* EVM: Support for the EVM Version "Shanghai".
* NatSpec: Add support for NatSpec documentation in ``enum`` definitions.
* NatSpec: Add support for NatSpec documentation in ``struct`` definitions.
* NatSpec: Include NatSpec from events that are emitted by a contract but defined outside of it in userdoc and devdoc output.
* Optimizer: Re-implement simplified version of ``UnusedAssignEliminator`` and ``UnusedStoreEliminator``. It can correctly remove some unused assignments in deeply nested loops that were ignored by the old version.
* Parser: Unary plus is no longer recognized as a unary operator in the AST and triggers an error at the parsing stage (rather than later during the analysis).
* SMTChecker: Add CLI option ``--model-checker-bmc-loop-iterations`` and a JSON option ``settings.modelChecker.bmcLoopIterations`` that specify how many loop iterations the BMC engine should unroll. Note that false negatives are possible when unrolling loops. This is due to the possibility that bmc loop iteration setting is less than actual number of iterations needed to complete a loop.
* SMTChecker: Group all messages about unsupported language features in a single warning. The CLI option ``--model-checker-show-unsupported`` and the JSON option ``settings.modelChecker.showUnsupported`` can be enabled to show the full list.
* SMTChecker: Properties that are proved safe are now reported explicitly at the end of analysis. By default, only the number of safe properties is shown. The CLI option ``--model-checker-show-proved-safe`` and the JSON option ``settings.modelChecker.showProvedSafe`` can be enabled to show the full list of safe properties.
* Standard JSON Interface: Add experimental support for importing ASTs via Standard JSON.
* Yul EVM Code Transform: If available, use ``push0`` instead of ``codesize`` to produce an arbitrary value on stack in order to create equal stack heights between branches.
Bugfixes:
* ABI: Include events in the ABI that are emitted by a contract but defined outside of it.
* Immutables: Disallow initialization of immutables in try/catch statements.
* SMTChecker: Fix false positives in ternary operators that contain verification targets in its branches, directly or indirectly.
AST Changes:
* AST: Add the ``internalFunctionIDs`` field to the AST nodes of contracts containing IDs of functions that may be called via the internal dispatch. The field is a map from function AST IDs to internal dispatch function IDs. These IDs are always generated, but they are only used in via-IR code generation.
* AST: Add the ``usedEvents`` field to ``ContractDefinition`` which contains the AST IDs of all events emitted by the contract as well as all events defined and inherited by the contract.
### 0.8.19 (2023-02-22)
Language Features:
* Allow defining custom operators for user-defined value types via ``using {f as +} for T global`` syntax.
Compiler Features:
* SMTChecker: New trusted mode that assumes that any compile-time available code is the actual used code even in external calls. This can be used via the CLI option ``--model-checker-ext-calls trusted`` or the JSON field ``settings.modelChecker.extCalls: "trusted"``.
Bugfixes:
* Assembler: Avoid duplicating subassembly bytecode where possible.
* Code Generator: Avoid including references to the deployed label of referenced functions if they are called right away.
* ContractLevelChecker: Properly distinguish the case of missing base constructor arguments from having an unimplemented base function.
* SMTChecker: Fix internal error caused by unhandled ``z3`` expressions that come from the solver when bitwise operators are used.
* SMTChecker: Fix internal error when using the custom NatSpec annotation to abstract free functions.
* TypeChecker: Also allow external library functions in ``using for``.
AST Changes:
* AST: Add ``function`` field to ``UnaryOperation`` and ``BinaryOperation`` AST nodes. ``functionList`` in ``UsingForDirective`` AST nodes will now contain ``operator`` and ``definition`` members instead of ``function`` when the list entry defines an operator.
### 0.8.18 (2023-02-01)
Language Features:
* Allow named parameters in mapping types.
Compiler Features:
* Commandline Interface: Add ``--no-cbor-metadata`` that skips CBOR metadata from getting appended at the end of the bytecode.
* Commandline Interface: Return exit code ``2`` on uncaught exceptions.
* EVM: Deprecate ``block.difficulty`` and disallow ``difficulty()`` in inline assembly for EVM versions >= paris. The change is due to the renaming introduced by [EIP-4399](https://eips.ethereum.org/EIPS/eip-4399).
* EVM: Introduce ``block.prevrandao`` in Solidity and ``prevrandao()`` in inline assembly for EVM versions >= paris.
* EVM: Set the default EVM version to "Paris".
* EVM: Support for the EVM version "Paris".
* Language Server: Add basic document hover support.
* Natspec: Add event Natspec inheritance for devdoc.
* Optimizer: Added optimization rule ``and(shl(X, Y), shl(X, Z)) => shl(X, and(Y, Z))``.
* Parser: More detailed error messages about invalid version pragmas.
* SMTChecker: Make ``z3`` the default solver for the BMC and CHC engines instead of all solvers.
* SMTChecker: Support Eldarica as a Horn solver for the CHC engine when using the CLI option ``--model-checker-solvers eld``. The binary ``eld`` must be available in the system.
* Solidity Upgrade Tool: Remove ``solidity-upgrade`` tool.
* Standard JSON: Add a boolean field ``settings.metadata.appendCBOR`` that skips CBOR metadata from getting appended at the end of the bytecode.
* TypeChecker: Warn when using deprecated builtin ``selfdestruct``.
* Yul EVM Code Transform: Generate more optimal code for user-defined functions that always terminate a transaction. No return labels will be pushed for calls to functions that always terminate.
* Yul Optimizer: Allow replacing the previously hard-coded cleanup sequence by specifying custom steps after a colon delimiter (``:``) in the sequence string.
* Yul Optimizer: Eliminate ``keccak256`` calls if the value was already calculated by a previous call and can be reused.
Bugfixes:
* Parser: Disallow several ``indexed`` attributes for the same event parameter.
* Parser: Disallow usage of the ``indexed`` attribute for modifier parameters.
* SMTChecker: Fix display error for negative integers that are one more than powers of two.
* SMTChecker: Fix internal error on chain assignments using static fully specified state variables.
* SMTChecker: Fix internal error on multiple wrong SMTChecker natspec entries.
* SMTChecker: Fix internal error when a public library function is called internally.
* SMTChecker: Fix internal error when deleting struct member of function type.
* SMTChecker: Fix internal error when using user-defined types as mapping indices or struct members.
* SMTChecker: Improved readability for large integers that are powers of two or almost powers of two in error messages.
* TypeChecker: Fix bug where private library functions could be attached with ``using for`` outside of their declaration scope.
* Yul Optimizer: Hash hex and decimal literals according to their value instead of their representation, improving the detection of equivalent functions.
### 0.8.17 (2022-09-08)
Important Bugfixes:
* Yul Optimizer: Prevent the incorrect removal of storage writes before calls to Yul functions that conditionally terminate the external EVM call.
Compiler Features:
* Code Generator: More efficient overflow checks for multiplication.
* Language Server: Analyze all files in a project by default (can be customized by setting ``'file-load-strategy'`` to ``'directly-opened-and-on-import'`` in LSP settings object).
* Yul Optimizer: Simplify the starting offset of zero-length operations to zero.
Bugfixes:
* Type Checker: Fix internal compiler error on tuple assignments with invalid left-hand side.
* Yul IR Code Generation: Fix internal compiler error when accessing the ``.slot`` member of a mapping through a storage reference in inline assembly.
Build System:
* Allow disabling pedantic warnings and do not treat warnings as errors during compiler build when ``-DPEDANTIC=OFF`` flag is passed to CMake.
* Update emscripten to version 3.1.19.
### 0.8.16 (2022-08-08)
Important Bugfixes:
* Code Generation: Fix data corruption that affected ABI-encoding of calldata values represented by tuples: structs at any nesting level; argument lists of external functions, events and errors; return value lists of external functions. The 32 leading bytes of the first dynamically-encoded value in the tuple would get zeroed when the last component contained a statically-encoded array.
Compiler Features:
* Code Generator: More efficient code for checked addition and subtraction.
* TypeChecker: Support using library constants in initializers of other constants.
* Yul IR Code Generation: Improved copy routines for arrays with packed storage layout.
* Yul Optimizer: Add rule to convert ``mod(add(X, Y), A)`` into ``addmod(X, Y, A)``, if ``A`` is a power of two.
* Yul Optimizer: Add rule to convert ``mod(mul(X, Y), A)`` into ``mulmod(X, Y, A)``, if ``A`` is a power of two.
Bugfixes:
* Commandline Interface: Disallow the following options outside of the compiler mode: ``--via-ir``,``--metadata-literal``, ``--metadata-hash``, ``--model-checker-show-unproved``, ``--model-checker-div-mod-no-slacks``, ``--model-checker-engine``, ``--model-checker-invariants``, ``--model-checker-solvers``, ``--model-checker-timeout``, ``--model-checker-contracts``, ``--model-checker-targets``.
* Type Checker: Fix compiler crash on tuple assignments involving certain patterns with unary tuples on the left-hand side.
* Type Checker: Fix compiler crash when ``abi.encodeCall`` received a tuple expression instead of an inline tuple.
* Type Checker: Fix null dereference in ``abi.encodeCall`` type checking of free function.
### 0.8.15 (2022-06-15)
Important Bugfixes:
* Code Generation: Avoid writing dirty bytes to storage when copying ``bytes`` arrays.
* Yul Optimizer: Keep all memory side-effects of inline assembly blocks.
Language Features:
* Add `E.selector` for a non-anonymous event `E` to access the 32-byte selector topic.
Compiler Features:
* Language Server: Add rudimentary support for semantic highlighting.
* Language Server: Adds support for configuring ``include-paths`` JSON settings object that can be passed during LSP configuration stage.
* Language Server: Always add ``{project_root}/node_modules`` to include search paths.
* Type Checker: Warn about assignments involving multiple pushes to storage ``bytes`` that may invalidate references.
* Yul Optimizer: Improve inlining heuristics for via IR code generation and pure Yul compilation.
Bugfixes:
* ABI Encoder: When encoding an empty string coming from storage do not add a superfluous empty slot for data.
* Common Subexpression Eliminator: Process assembly items in chunks with maximum size of 2000. It helps to avoid extremely time-consuming searches during code optimization.
* DocString Parser: Fix ICE caused by an immutable struct with mapping.
* Yul IR Code Generation: More robust cleanup in corner cases during memory to storage copies.
* Yul Optimizer: Do not remove ``returndatacopy`` in cases in which it might perform out-of-bounds reads that unconditionally revert as out-of-gas. Previously, any ``returndatacopy`` that wrote to memory that was never read from was removed without accounting for the out-of-bounds condition.
### 0.8.14 (2022-05-17)
Important Bugfixes:
* ABI Encoder: When ABI-encoding values from calldata that contain nested arrays, correctly validate the nested array length against ``calldatasize()`` in all cases.
* Override Checker: Allow changing data location for parameters only when overriding external functions.
Compiler Features:
* Assembly-Json Exporter: Include source list in `sourceList` field.
* Commandline Interface: Option ``--pretty-json`` works also with the following options: ``--abi``, ``--asm-json``, ``--ast-compact-json``, ``--devdoc``, ``--storage-layout``, ``--userdoc``.
* Language Server: Allow full filesystem access to language server.
* Peephole Optimizer: Remove operations without side effects before simple terminations.
* SMTChecker: Support ``abi.encodeCall`` taking into account the called selector.
Bugfixes:
* Assembly-Json Exporter: Fix assembly json export to store jump types of operations in `jumpType` field instead of `value`.
* SMTChecker: Fix ABI compatibility with z3 >=4.8.16.
* SMTChecker: Fix bug when z3 is selected but not available at runtime.
* Type Checker: Properly check restrictions of ``using ... global`` in conjunction with libraries.
* TypeChecker: Convert parameters of function type to how they would be called for ``abi.encodeCall``.
### 0.8.13 (2022-03-16)
Important Bugfixes:
* Code Generator: Correctly encode literals used in ``abi.encodeCall`` in place of fixed bytes arguments.
Language Features:
* General: Allow annotating inline assembly as memory-safe to allow optimizations and stack limit evasion that rely on respecting Solidity's memory model.
* General: ``using M for Type;`` is allowed at file level and ``M`` can now also be a brace-enclosed list of free functions or library functions.
* General: ``using ... for T global;`` is allowed at file level where the user-defined type ``T`` has been defined, resulting in the effect of the statement being available everywhere ``T`` is available.
Compiler Features:
* Commandline Interface: Allow the use of ``--via-ir`` in place of ``--experimental-via-ir``.
* Compilation via Yul IR is no longer marked as experimental.
* JSON-AST: Added selector field for errors and events.
* Language Server: Implements goto-definition.
* Peephole Optimizer: Optimize comparisons in front of conditional jumps and conditional jumps across a single unconditional jump.
* Yul EVM Code Transform: Avoid unnecessary ``pop``s on terminating control flow.
* Yul IR Code Generation: When the result of an external call is statically-sized, ignore any returndata past the size expected by the compiler.
* Yul Optimizer: Remove ``sstore`` and ``mstore`` operations that are never read from.
Bugfixes:
* General: Fix internal error for locales with unusual capitalization rules. Locale set in the environment is now completely ignored.
* Type Checker: Fix incorrect type checker errors when importing overloaded functions.
* Yul IR Code Generation: Optimize embedded creation code with correct settings. This fixes potential mismatches between the constructor code of a contract compiled in isolation and the bytecode in ``type(C).creationCode``, resp. the bytecode used for ``new C(...)``.
### 0.8.12 (2022-02-16)
Language Features:
* General: Add equality-comparison operators for external function types.
* General: Support ``ContractName.functionName`` for ``abi.encodeCall``, in addition to external function pointers.
Compiler Features:
* Commandline Interface: Event and error signatures are also returned when using ``--hashes``.
* Yul Optimizer: Remove ``mstore`` and ``sstore`` operations if the slot already contains the same value.
* Yul: Emit immutable references for pure yul code when requested.
Bugfixes:
* Antlr Grammar: Allow builtin names in ``yulPath`` to support ``.address`` in function pointers.
* Code Generator: Fix internal error when accessing the members of external functions occupying more than two stack slots.
* Code Generator: Fix internal error when doing an explicit conversion from ``string calldata`` to ``bytes``.
* Control Flow Graph: Perform proper virtual lookup for modifiers for uninitialized variable and unreachable code analysis.
* General: ``string.concat`` now properly takes strings as arguments and returns ``string memory``. It was accidentally introduced as a copy of ``bytes.concat`` before.
* Immutables: Fix wrong error when the constructor of a base contract uses ``return`` and the derived contract contains immutable variables.
* Inheritance: Consider functions in all ancestors during override analysis.
* IR Generator: Add missing cleanup during the conversion of fixed bytes types to smaller fixed bytes types.
* IR Generator: Add missing cleanup for indexed event arguments of value type.
* IR Generator: Fix internal error when copying reference types in calldata and storage to struct or array members in memory.
* IR Generator: Fix IR syntax error when copying storage arrays of structs containing functions.
* Natspec: Fix internal error when overriding a struct getter with a Natspec-documented return value and the name in the struct is different.
* Type Checker: Fix internal error when a constant variable declaration forward references a struct.
* Yul EVM Code Transform: Improved stack shuffling in corner cases.
Solc-Js:
* The wrapper now requires at least nodejs v10.
* The code has been ported to TypeScript.
Build System:
* Emscripten builds store the embedded WebAssembly binary in LZ4 compressed format and transparently decompress on loading.
### 0.8.11 (2021-12-20)
Language Features:
* General: New builtin function ``abi.encodeCall(functionPointer, (arg1, arg2, ...))`` that type-checks the arguments and returns the ABI-encoded function call data.
Compiler Features:
* Commandline Interface: Add ``--lsp`` option to get ``solc`` to act as a Language Server (LSP) communicating over stdio.
Bugfixes:
* Code Generator: Fix a crash when using ``@use-src`` and compiling from Yul to ewasm.
* SMTChecker: Fix internal error when an unsafe target is solved more than once and the counterexample messages are different.
* SMTChecker: Fix soundness of assigned storage/memory local pointers that were not erasing enough knowledge.
* Fix internal error when a function has a calldata struct argument with an internal type inside.
* IR Generator: Fix IR syntax error when copying storage arrays of functions.
### 0.8.10 (2021-11-09)
Language Features:
* Inline Assembly: Support ``.address`` and ``.selector`` on external function pointers to access their address and function selector.
Compiler Features:
* Code Generator: Skip existence check for external contract if return data is expected. In this case, the ABI decoder will revert if the contract does not exist.
* Commandline Interface: Accept nested brackets in step sequences passed to ``--yul-optimizations``.
* Commandline Interface: Add ``--debug-info`` option for selecting how much extra debug information should be included in the produced EVM assembly and Yul code.
* Commandline Interface: Support ``--asm``, ``--bin``, ``--ir-optimized``, ``--ewasm`` and ``--ewasm-ir`` output selection options in assembler mode.
* Commandline Interface: Use different colors when printing errors, warnings and infos.
* JSON AST: Set absolute paths of imports earlier, in the ``parsing`` stage.
* SMTChecker: Output values for ``block.*``, ``msg.*`` and ``tx.*`` variables that are present in the called functions.
* SMTChecker: Report contract invariants and reentrancy properties. This can be enabled via the CLI option ``--model-checker-invariants`` or the Standard JSON option ``settings.modelChecker.invariants``.
* Standard JSON: Accept nested brackets in step sequences passed to ``settings.optimizer.details.yulDetails.optimizerSteps``.
* Standard JSON: Add ``settings.debug.debugInfo`` option for selecting how much extra debug information should be included in the produced EVM assembly and Yul code.
* Yul EVM Code Transform: Switch to new optimized code transform when compiling via Yul with enabled optimizer.
* Yul Optimizer: Take control-flow side-effects of user-defined functions into account in various optimizer steps.
Bugfixes:
* Code Generator: Fix constructor source mappings for immutables.
* Commandline Interface: Disallow ``--error-recovery`` option outside of the compiler mode.
* Commandline Interface: Don't return zero exit code when writing linked files to disk fails.
* Commandline Interface: Fix extra newline character being appended to sources passed through standard input, affecting their hashes.
* Commandline Interface: Report output selection options unsupported by the selected input mode instead of ignoring them.
* Commandline Interface: When linking only accept exact matches for library names passed to the ``--libraries`` option. Library names not prefixed with a file name used to match any library with that name.
* SMTChecker: Fix internal error in magic type access (``block``, ``msg``, ``tx``).
* SMTChecker: Fix internal error in the CHC engine when passing gas in the function options.
* TypeChecker: Fix internal error when using arrays and structs with user defined value types before declaration.
* TypeChecker: Fix internal error when using user defined value types in public library functions.
* TypeChecker: Improved error message for constant variables with (nested) mapping types.
* Yul Assembler: Fix internal error when function names are not unique.
* Yul IR Generator: Do not output empty switches/if-bodies for empty contracts.
Important Bugfixes in Experimental Features:
* Yul IR Generator: Changes to function return variables referenced in modifier invocation arguments were not properly forwarded if there was more than one return variable.
Build System:
* Pass linker-only emscripten options only when linking.
* Remove obsolete compatibility workaround for emscripten builds.
* Update emscripten to version 2.0.33.
### 0.8.9 (2021-09-29)
Important Bugfixes:
* Immutables: Properly perform sign extension on signed immutables.
* User Defined Value Type: Fix storage layout of user defined value types for underlying types shorter than 32 bytes.
Bugfixes:
* AST: Export ``canonicalName`` for ``UserDefinedValueTypeDefinition`` and ``ContractDefinition``.
### 0.8.8 (2021-09-27)
Language Features:
* Inheritance: A function that overrides only a single interface function does not require the ``override`` specifier.
* Type System: Support ``type(E).min`` and ``type(E).max`` for enums.
* User Defined Value Type: allows creating a zero cost abstraction over a value type with stricter type requirements.
Compiler Features:
* Commandline Interface: Add ``--include-path`` option for specifying extra directories that may contain importable code (e.g. packaged third-party libraries).
* Commandline Interface: Do not implicitly run evm bytecode generation unless needed for the requested output.
* Commandline Interface: Normalize paths specified on the command line and make them relative for files located inside base path and/or include paths.
* Immutable variables can be read at construction time once they are initialized.
* SMTChecker: Add constraints to better correlate ``address(this).balance`` and ``msg.value``.
* SMTChecker: Support constants via modules.
* SMTChecker: Support low level ``call`` as external calls to unknown code.
* SMTChecker: Support the ``value`` option for external function calls.
* SMTChecker: Support user defined value types.
Bugfixes:
* Code Generator: Fix ICE on assigning to calldata structs and statically-sized calldata arrays in inline assembly.
* Code Generator: Use stable source order for ABI functions.
* Commandline Interface: Disallow the ``--experimental-via-ir`` option in Standard JSON, Assembler and Linker modes.
* Commandline Interface: Fix resolution of paths whitelisted with ``--allowed-paths`` or implicitly due to base path, remappings and files being compiled. Correctly handle paths that do not match imports exactly due to being relative, non-normalized or empty.
* Commandline Interface: Report optimizer options as invalid in Standard JSON and linker modes instead of ignoring them.
* Name Resolver: Fix that when importing an aliased symbol using ``import {AliasedName} from "a.sol"`` it would use the original name of the symbol and not the aliased one.
* Opcode Optimizer: Prevent the optimizer from running multiple times to avoid potential bytecode differences for referenced code.
* Parser: Properly check for multiple SPDX license identifiers next to each other and validate them.
* SMTChecker: Fix BMC's constraints regarding internal functions.
* SMTChecker: Fix false negative caused by ``push`` on storage array references returned by internal functions.
* SMTChecker: Fix false positive in external calls from constructors.
* SMTChecker: Fix internal error on some multi-source uses of ``abi.*``, cryptographic functions and constants.
* Standard JSON: Fix non-fatal errors in Yul mode being discarded if followed by a fatal error.
* Type Checker: Correct wrong error message in inline assembly complaining about ``.slot`` or ``.offset`` not valid when actually ``.length`` was used.
* Type Checker: Disallow modifier declarations and definitions in interfaces.
* Yul Optimizer: Fix a crash in LoadResolver, when ``keccak256`` has particular non-identifier arguments.
### 0.8.7 (2021-08-11)
Language Features:
* Introduce global ``block.basefee`` for retrieving the base fee of the current block.
* Yul: Introduce builtin ``basefee()`` for retrieving the base fee of the current block.
Compiler Features:
* AssemblyStack: Also run opcode-based optimizer when compiling Yul code.
* Commandline Interface: option ``--pretty-json`` works also with ``--standard--json``.
* EVM: Set the default EVM version to "London".
* SMTChecker: Do not check underflow and overflow by default.
* SMTChecker: Unproved targets are hidden by default, and the SMTChecker only states how many unproved targets there are. They can be listed using the command line option ``--model-checker-show-unproved`` or the JSON option ``settings.modelChecker.showUnproved``.
* SMTChecker: new setting to enable/disable encoding of division and modulo with slack variables. The command line option is ``--model-checker-div-mod-slacks`` and the JSON option is ``settings.modelChecker.divModWithSlacks``.
* Yul EVM Code Transform: Also pop unused argument slots for functions without return variables (under the same restrictions as for functions with return variables).
* Yul EVM Code Transform: Do not reuse stack slots that immediately become unreachable.
* Yul Optimizer: Move function arguments and return variables to memory with the experimental Stack Limit Evader (which is not enabled by default).
Bugfixes:
* Code Generator: Fix crash when passing an empty string literal to ``bytes.concat()``.
* Code Generator: Fix internal compiler error when calling functions bound to calldata structs and arrays.
* Code Generator: Fix internal compiler error when passing a 32-byte hex literal or a zero literal to ``bytes.concat()`` by disallowing such literals.
* Commandline Interface: Apply ``--optimizer-runs`` option in assembly / yul mode.
* Commandline Interface: Fix crash when a directory path is passed to ``--standard-json``.
* Commandline Interface: Read JSON from standard input when ``--standard-json`` gets ``-`` as a file name.
* Standard JSON: Include source location for errors in files with empty name.
* Type Checker: Fix internal error and prevent static calls to unimplemented modifiers.
* Yul Code Generator: Fix internal compiler error when using a long literal with bitwise negation.
* Yul Code Generator: Fix source location references for calls to builtin functions.
* Yul Parser: Fix source location references for ``if`` statements.
### 0.8.6 (2021-06-22)
Language Features:
* Yul: Special meaning of ``".metadata"`` data object in Yul object.
Bugfixes:
* Control Flow Graph: Fix incorrectly reported unreachable code.
* Solc-Js: When running ``solcjs`` without the ``--optimize`` flag, use ``settings.optimizer.enabled=false`` in Standard JSON instead of omitting the key.
* Standard JSON: Omitting ``settings.optimizer.enabled`` was not equivalent to setting it to ``false``. It meant disabling also the peephole optimizer and jumpdest remover which by default still run with ``enabled=false``.
### 0.8.5 (2021-06-10)
Language Features:
* Allowing conversion from ``bytes`` and ``bytes`` slices to ``bytes1``/.../``bytes32``.
* Yul: Add ``verbatim`` builtin function to inject arbitrary bytecode.
Compiler Features:
* Code Generator: Insert helper functions for panic codes instead of inlining unconditionally. This can reduce costs if many panics (checks) are inserted, but can increase costs where few panics are used.
* EVM: Set the default EVM version to "Berlin".
* SMTChecker: Function definitions can be annotated with the custom Natspec tag ``custom:smtchecker abstract-function-nondet`` to be abstracted by a nondeterministic value when called.
* Standard JSON / combined JSON: New artifact "functionDebugData" that contains bytecode offsets of entry points of functions and potentially more information in the future.
* Yul Optimizer: Evaluate ``keccak256(a, c)``, when the value at memory location ``a`` is known at compile time and ``c`` is a constant ``<= 32``.
Bugfixes:
* AST: Do not output value of Yul literal if it is not a valid UTF-8 string.
* Code Generator: Fix internal error when function arrays are assigned to storage variables and the function types can be implicitly converted but are not identical.
* Code Generator: Fix internal error when super would have to skip an unimplemented function in the virtual resolution order.
* Control Flow Graph: Assume unimplemented modifiers use a placeholder.
* Control Flow Graph: Take internal calls to functions that always revert into account for reporting unused or unassigned variables.
* Function Call Graph: Fix internal error connected with circular constant references.
* Name Resolver: Do not issue shadowing warning if the shadowing name is not directly accessible.
* Natspec: Allow multiple ``@return`` tags on public state variable documentation.
* SMTChecker: Fix internal error on conversion from ``bytes`` to ``fixed bytes``.
* SMTChecker: Fix internal error on external calls from the constructor.
* SMTChecker: Fix internal error on struct constructor with fixed bytes member initialized with string literal.
* Source Locations: Properly set source location of scoped blocks.
* Standard JSON: Properly allow the ``inliner`` setting under ``settings.optimizer.details``.
* Type Checker: Fix internal compiler error related to having mapping types in constructor parameter for abstract contracts.
* Type Checker: Fix internal compiler error when attempting to use an invalid external function type on pre-byzantium EVMs.
* Type Checker: Fix internal compiler error when overriding receive ether function with one having different parameters during inheritance.
* Type Checker: Make errors about (nested) mapping type in event or error parameter into fatal type errors.
* Type Checker: Fix internal compiler error when overriding an implemented modifier with an unimplemented one.
AST Changes:
* Add member `hexValue` for Yul string and hex literals.
### 0.8.4 (2021-04-21)
Important Bugfixes:
* ABI Decoder V2: For two-dimensional arrays and specially crafted data in memory, the result of ``abi.decode`` can depend on data elsewhere in memory. Calldata decoding is not affected.
Language Features:
* Assembly / Yul: Allow hex string literals.
* Possibility to use ``bytes.concat`` with variable number of ``bytes`` and ``bytesNN`` arguments which behaves as a restricted version of `abi.encodePacked` with a more descriptive name.
* Support custom errors via the ``error`` keyword and introduce the ``revert`` statement.
Compiler Features:
* Analysis: Properly detect circular references to the bytecode of other contracts across all function calls.
* Commandline Interface: Model checker option ``--model-checker-targets`` also accepts ``outOfBounds``.
* Commandline Interface: New model checker option ``--model-checker-contracts`` allows users to select which contracts should be analyzed as the most derived.
* Low-Level Inliner: Inline ordinary jumps to small blocks and jumps to small blocks that terminate.
* NatSpec: Allow ``@notice`` tag on non-public state variables and local variable declarations. The documentation will only be part of the AST, under the field ``documentation``.
* SMTChecker: Deprecate ``pragma experimental SMTChecker;`` and set default model checker engine to ``none``.
* SMTChecker: Report local variables in CHC counterexamples.
* SMTChecker: Report out of bounds index access for arrays and fixed bytes.
* SMTChecker: Support file level functions and constants.
* Standard JSON: Model checker option ``settings.modelChecker.targets`` also accepts ``outOfBounds``.
* Standard JSON: Model checker option ``settings.modelChecker.targets`` takes an array of string targets instead of string of comma separated targets.
* Standard JSON: New model checker option ``settings.modelChecker.contracts`` allows users to select which contracts should be analyzed as the most derived.
* Yul EVM Code Transform: Stack Optimization: Reuse slots of unused function arguments and defer allocating stack slots for return variables until after expression statements and assignments that do not reference them.
* Yul Optimizer: Added a new step FunctionSpecializer, that specializes a function with its literal arguments.
Bugfixes:
* Antlr Grammar: Fix parsing of import paths involving properly distinguishing between empty and non-empty string literals in general.
* AST Output: Fix ``kind`` field of ``ModifierInvocation`` for base constructor calls.
* Commandline interface: Fix internal error when printing AST and using ``--base-path`` or ``file://`` prefix in imports.
* Commandline interface: Fix standard input bypassing allowed path checks.
* Natspec: Fix internal error related to the `@returns` documentation for a public state variable overriding a function.
* SMTChecker: Fix false positive and false negative on ``push`` as LHS of a compound assignment.
* SMTChecker: Fix false positive in contracts that cannot be deployed.
* SMTChecker: Fix internal error on public getter returning dynamic data on older EVM versions where these are not available.
* SMTChecker: Fix internal error on try-catch with function call in catch block.
* Type Checker: Fix missing error when events are used without an emit statement.
AST Changes:
* New property for ``ContractDefinition`` nodes: ``usedErrors`` lists AST IDs of all errors used by the contract (even if defined outside).
### 0.8.3 (2021-03-23)
Important Bugfixes:
* Optimizer: Fix bug on incorrect caching of Keccak-256 hashes.
Compiler Features:
* Command Line Interface: Drop experimental support for ``--machine evm15``.
* Optimizer: Try to move ``and`` with constant inside ``or`` to improve storage writes of small types.
* Optimizer: Replace multiplications and divisions with powers of two by shifts.
Bugfixes:
* AST Import: For constructors, a public visibility is ignored during importing.
* Error Reporter: Fix handling of carriage return.
* SMTChecker: Fix internal error in BMC on resolving virtual functions inside branches.
* SMTChecker: Fix internal error on ``array.pop`` nested inside 1-tuple.
* SMTChecker: Fix internal error on ``FixedBytes`` constant initialized with string literal.
* SMTChecker: Fix internal error on array slices.
* SMTChecker: Fix internal error on calling public getter on a state variable of type array (possibly nested) of structs.
* SMTChecker: Fix internal error on pushing to ``string`` casted to ``bytes``.
* SMTChecker: Fix bug in virtual functions called by constructors.
AST Changes:
* ModifierInvocation: Add ``kind`` field which can be ``modifierInvocation`` or ``baseConstructorSpecifier``.
### 0.8.2 (2021-03-02)
Compiler Features:
* AST: Export NatSpec comments above each statement as their documentation.
* Inline Assembly: Do not warn anymore about variables or functions being shadowed by EVM opcodes.
* NatSpec: Provide source locations for parsing errors.
* Optimizer: Simple inlining when jumping to small blocks that jump again after a few side-effect free opcodes.
* NatSpec: Allow and export all tags that start with ``@custom:``.
Bugfixes:
* AST: Added ``referencedDeclaration`` for enum members.
* Code Generator: Fix internal error when functions are passed as parameters of other callables, when the function types can be implicitly converted, but not identical.
* Parser: Properly parse ``.address`` in some situations.
* SMTChecker: Fix missing type constraints on block and transaction variables in the deployment phase.
* Type Checker: Fix internal error when override specifier is not a contract.
* Type Checker: Make function-hash collision errors into fatal type errors.
AST Changes:
* Adds ``nameLocation`` to declarations to represent the exact location of the symbolic name.
* Removed the redundant function type "bytearraypush" - replaced by "arraypush".
* Support field ``documentation`` to hold NatSpec comments above each statement.
### 0.8.1 (2021-01-27)
Language Features:
* Possibility to use ``catch Panic(uint code)`` to catch a panic failure from an external call.
Compiler Features:
* Code Generator: Reduce the cost of ``<address>.code.length`` by using ``extcodesize`` directly.
* Command Line Interface: Allow ``=`` as separator between library name and address in ``--libraries`` commandline option.
* Command Line Interface: New option ``--model-checker-targets`` allows specifying which targets should be checked. The valid options are ``all``, ``constantCondition``, ``underflow``, ``overflow``, ``divByZero``, ``balance``, ``assert``, ``popEmptyArray``, where the default is ``all``. Multiple targets can be chosen at the same time, separated by a comma without spaces: ``underflow,overflow,assert``.
* Command Line Interface: Only accept library addresses with a prefix of ``0x`` in ``--libraries`` commandline option.
* Optimizer: Add rule to replace ``iszero(sub(x,y))`` by ``eq(x,y)``.
* Parser: Report meaningful error if parsing a version pragma failed.
* SMTChecker: Output internal and trusted external function calls in a counterexample's transaction trace.
* SMTChecker: Show ``msg.value`` in counterexample transaction traces when greater than 0.
* SMTChecker: Show contract name in counterexample function call.
* SMTChecker: Support ABI functions as uninterpreted functions.
* SMTChecker: Support try/catch statements.
* SMTChecker: Synthesize untrusted functions called externally.
* SMTChecker: Use checked arithmetic by default and support ``unchecked`` blocks.
* Standard JSON: New option ``modelCheckerSettings.targets`` allows specifying which targets should be checked. The valid options are ``all``, ``constantCondition``, ``underflow``, ``overflow``, ``divByZero``, ``balance``, ``assert``, ``popEmptyArray``, where the default is ``all``. Multiple targets can be chosen at the same time, separated by a comma without spaces: ``underflow,overflow,assert``.
Bugfixes:
* Code Generator: Fix length check when decoding malformed error data in catch clause.
* Control Flow Graph: Fix missing error caused by read from/write to uninitialized variables.
* SMTChecker: Fix false negatives in overriding modifiers and functions.
* SMTChecker: Fix false negatives in the presence of inline assembly.
* SMTChecker: Fix false negatives when analyzing external function calls.
* SMTChecker: Fix internal error on ``block.chainid``.
* SMTChecker: Fix internal error on pushing string literal to ``bytes`` array.
* SMTChecker: Fix missing type constraints for block variables.
* Type Checker: Fix infinite loop when accessing circular constants from inline assembly.
* Type Checker: Fix internal error caused by constant structs containing mappings.
* Type System: Disallow implicit conversion from ``uintN`` to ``intM`` when ``M > N``, and by extension, explicit conversion between the same types is also disallowed.
Build System:
* Update the soljson.js build to emscripten 2.0.12 and boost 1.75.0.
### 0.8.0 (2020-12-16)
Breaking Changes:
* Code Generator: All arithmetic is checked by default. These checks can be disabled using ``unchecked { ... }``.
* Code Generator: Cause a panic if a byte array in storage is accessed whose length is encoded incorrectly.
* Code Generator: Use ``revert`` with error signature ``Panic(uint256)`` and error codes instead of invalid opcode on failing assertions.
* Command Line Interface: JSON fields `abi`, `devdoc`, `userdoc` and `storage-layout` are now sub-objects rather than strings.
* Command Line Interface: Remove the ``--old-reporter`` option.
* Command Line Interface: Remove the legacy ``--ast-json`` option. Only the ``--ast-compact-json`` option is supported now.
* General: Enable ABI coder v2 by default.
* General: Remove global functions ``log0``, ``log1``, ``log2``, ``log3`` and ``log4``.
* Parser: Exponentiation is right associative. ``a**b**c`` is parsed as ``a**(b**c)``.
* Scanner: Remove support for the ``\b``, ``\f``, and ``\v`` escape sequences.
* Standard JSON: Remove the ``legacyAST`` option.
* Type Checker: Function call options can only be given once.
* Type System: Declarations with the name ``this``, ``super`` and ``_`` are disallowed, with the exception of public functions and events.
* Type System: Disallow ``msg.data`` in ``receive()`` function.
* Type System: Disallow ``type(super)``.
* Type System: Disallow enums with more than 256 members.
* Type System: Disallow explicit conversions from negative literals and literals larger than ``type(uint160).max`` to ``address`` type.
* Type System: Disallow the ``byte`` type. It was an alias to ``bytes1``.
* Type System: Explicit conversion to ``address`` type always returns a non-payable ``address`` type. In particular, ``address(u)``, ``address(b)``, ``address(c)`` and ``address(this)`` have the type ``address`` instead of ``address payable`` (Here ``u``, ``b``, and ``c`` are arbitrary variables of type ``uint160``, ``bytes20`` and contract type respectively.)
* Type System: Explicit conversions between two types are disallowed if it changes more than one of sign, width or kind at the same time.
* Type System: Explicit conversions from literals to enums are only allowed if the value fits in the enum.
* Type System: Explicit conversions from literals to integer type is as strict as implicit conversions.
* Type System: Introduce ``address(...).code`` to retrieve the code as ``bytes memory``. The size can be obtained via ``address(...).code.length``, but it will currently always include copying the code.
* Type System: Introduce ``block.chainid`` for retrieving the current chain id.
* Type System: Support ``address(...).codehash`` to retrieve the codehash of an account.
* Type System: The global variables ``tx.origin`` and ``msg.sender`` have type ``address`` instead of ``address payable``.
* Type System: Unary negation can only be used on signed integers, not on unsigned integers.
* View Pure Checker: Mark ``chainid`` as view.
* Yul: Disallow the use of reserved identifiers, such as EVM instructions, even if they are not available in the given dialect / EVM version.
* Yul: The ``assignimmutable`` builtin in the "EVM with objects" dialect takes the base offset of the code to modify as an additional argument.
Language Features:
* Super constructors
Showing preview only (559K chars total). Download the full file or copy to clipboard to get everything.
gitextract_thz9iz3f/ ├── .circleci/ │ ├── README.md │ ├── cln-asan.supp │ ├── compare_bytecode_reports.sh │ ├── config.yml │ ├── osx_install_dependencies.sh │ ├── parallel_bytecode_report.sh │ ├── parallel_cli_tests.py │ ├── soltest.ps1 │ ├── soltest.sh │ └── soltest_all.sh ├── .clang-format ├── .codespellrc ├── .dockerignore ├── .editorconfig ├── .gitattributes ├── .github/ │ ├── CODEOWNERS │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ ├── config.yml │ │ ├── documentation_issue.md │ │ └── feature_request.md │ └── workflows/ │ ├── buildpack-deps.yml │ ├── stale.yml │ └── welcome-external-pr.yml ├── .gitignore ├── .gitmodules ├── .readthedocs.yml ├── CMakeLists.txt ├── CODE_OF_CONDUCT.md ├── CODING_STYLE.md ├── CONTRIBUTING.md ├── Changelog.md ├── LICENSE.txt ├── README.md ├── ReleaseChecklist.md ├── ReviewChecklist.md ├── SECURITY.md ├── cmake/ │ ├── EthBuildInfo.cmake │ ├── EthCcache.cmake │ ├── EthCheckCXXCompilerFlag.cmake │ ├── EthCompilerSettings.cmake │ ├── EthDependencies.cmake │ ├── EthOptions.cmake │ ├── EthPolicy.cmake │ ├── EthToolchains.cmake │ ├── EthUtils.cmake │ ├── FindCLN.cmake │ ├── FindGMP.cmake │ ├── FindZ3.cmake │ ├── fmtlib.cmake │ ├── nlohmann-json.cmake │ ├── range-v3.cmake │ ├── scripts/ │ │ └── buildinfo.cmake │ ├── submodules.cmake │ ├── templates/ │ │ ├── BuildInfo.h.in │ │ └── license.h.in │ └── toolchains/ │ ├── default.cmake │ ├── libfuzzer.cmake │ └── ossfuzz.cmake ├── docs/ │ ├── 050-breaking-changes.rst │ ├── 060-breaking-changes.rst │ ├── 070-breaking-changes.rst │ ├── 080-breaking-changes.rst │ ├── Makefile │ ├── README.md │ ├── _static/ │ │ ├── css/ │ │ │ ├── custom-dark.css │ │ │ ├── custom.css │ │ │ ├── fonts.css │ │ │ ├── pygments.css │ │ │ └── toggle.css │ │ └── js/ │ │ ├── constants.js │ │ ├── initialize.js │ │ └── toggle.js │ ├── _templates/ │ │ ├── footer.html │ │ ├── layout.html │ │ └── versions.html │ ├── abi-spec.rst │ ├── analysing-compilation-output.rst │ ├── assembly.rst │ ├── brand-guide.rst │ ├── bugs.json │ ├── bugs.rst │ ├── bugs_by_version.json │ ├── cheatsheet.rst │ ├── common-patterns.rst │ ├── conf.py │ ├── contracts/ │ │ ├── abstract-contracts.rst │ │ ├── constant-state-variables.rst │ │ ├── creating-contracts.rst │ │ ├── custom-storage-layout.rst │ │ ├── errors.rst │ │ ├── events.rst │ │ ├── function-modifiers.rst │ │ ├── functions.rst │ │ ├── inheritance.rst │ │ ├── interfaces.rst │ │ ├── libraries.rst │ │ ├── transient-storage.rst │ │ ├── using-for.rst │ │ └── visibility-and-getters.rst │ ├── contracts.rst │ ├── contributing.rst │ ├── control-structures.rst │ ├── credits-and-attribution.rst │ ├── docs.sh │ ├── examples/ │ │ ├── blind-auction.rst │ │ ├── micropayment.rst │ │ ├── modular.rst │ │ ├── safe-remote.rst │ │ └── voting.rst │ ├── ext/ │ │ ├── html_extra_template_renderer.py │ │ └── remix_code_links.py │ ├── grammar/ │ │ ├── SolidityLexer.g4 │ │ └── SolidityParser.g4 │ ├── grammar.rst │ ├── index.rst │ ├── installing-solidity.rst │ ├── internals/ │ │ ├── layout_in_calldata.rst │ │ ├── layout_in_memory.rst │ │ ├── layout_in_storage.rst │ │ ├── optimizer.rst │ │ ├── source_mappings.rst │ │ └── variable_cleanup.rst │ ├── introduction-to-smart-contracts.rst │ ├── ir-breaking-changes.rst │ ├── language-influences.rst │ ├── layout-of-source-files.rst │ ├── make.bat │ ├── metadata.rst │ ├── natspec-format.rst │ ├── path-resolution.rst │ ├── requirements.txt │ ├── resources.rst │ ├── robots.txt.template │ ├── security-considerations.rst │ ├── smtchecker.rst │ ├── solidity-by-example.rst │ ├── structure-of-a-contract.rst │ ├── style-guide.rst │ ├── types/ │ │ ├── conversion.rst │ │ ├── mapping-types.rst │ │ ├── operator-precedence-table.rst │ │ ├── operators.rst │ │ ├── reference-types.rst │ │ └── value-types.rst │ ├── types.rst │ ├── units-and-global-variables.rst │ ├── using-the-compiler.rst │ └── yul.rst ├── funding.json ├── libevmasm/ │ ├── AbstractAssemblyStack.h │ ├── Assembly.cpp │ ├── Assembly.h │ ├── AssemblyItem.cpp │ ├── AssemblyItem.h │ ├── BlockDeduplicator.cpp │ ├── BlockDeduplicator.h │ ├── CMakeLists.txt │ ├── CommonSubexpressionEliminator.cpp │ ├── CommonSubexpressionEliminator.h │ ├── ConstantOptimiser.cpp │ ├── ConstantOptimiser.h │ ├── ControlFlowGraph.cpp │ ├── ControlFlowGraph.h │ ├── Disassemble.cpp │ ├── Disassemble.h │ ├── EVMAssemblyStack.cpp │ ├── EVMAssemblyStack.h │ ├── Ethdebug.cpp │ ├── Ethdebug.h │ ├── EthdebugSchema.cpp │ ├── EthdebugSchema.h │ ├── Exceptions.h │ ├── ExpressionClasses.cpp │ ├── ExpressionClasses.h │ ├── GasMeter.cpp │ ├── GasMeter.h │ ├── Inliner.cpp │ ├── Inliner.h │ ├── Instruction.cpp │ ├── Instruction.h │ ├── JumpdestRemover.cpp │ ├── JumpdestRemover.h │ ├── KnownState.cpp │ ├── KnownState.h │ ├── LinkerObject.cpp │ ├── LinkerObject.h │ ├── PathGasMeter.cpp │ ├── PathGasMeter.h │ ├── PeepholeOptimiser.cpp │ ├── PeepholeOptimiser.h │ ├── RuleList.h │ ├── SemanticInformation.cpp │ ├── SemanticInformation.h │ ├── SimplificationRule.h │ ├── SimplificationRules.cpp │ ├── SimplificationRules.h │ └── SubAssemblyID.h ├── liblangutil/ │ ├── CMakeLists.txt │ ├── CharStream.cpp │ ├── CharStream.h │ ├── CharStreamProvider.h │ ├── Common.h │ ├── DebugData.h │ ├── DebugInfoSelection.cpp │ ├── DebugInfoSelection.h │ ├── EVMVersion.cpp │ ├── EVMVersion.h │ ├── ErrorReporter.cpp │ ├── ErrorReporter.h │ ├── Exceptions.cpp │ ├── Exceptions.h │ ├── ParserBase.cpp │ ├── ParserBase.h │ ├── Scanner.cpp │ ├── Scanner.h │ ├── SemVerHandler.cpp │ ├── SemVerHandler.h │ ├── SourceLocation.cpp │ ├── SourceLocation.h │ ├── SourceReferenceExtractor.cpp │ ├── SourceReferenceExtractor.h │ ├── SourceReferenceFormatter.cpp │ ├── SourceReferenceFormatter.h │ ├── Token.cpp │ ├── Token.h │ └── UniqueErrorReporter.h ├── libsmtutil/ │ ├── BMCSolverInterface.h │ ├── CHCSmtLib2Interface.cpp │ ├── CHCSmtLib2Interface.h │ ├── CHCSolverInterface.h │ ├── CMakeLists.txt │ ├── Exceptions.h │ ├── Helpers.h │ ├── SMTLib2Context.cpp │ ├── SMTLib2Context.h │ ├── SMTLib2Interface.cpp │ ├── SMTLib2Interface.h │ ├── SMTLib2Parser.cpp │ ├── SMTLib2Parser.h │ ├── SMTPortfolio.cpp │ ├── SMTPortfolio.h │ ├── SolverInterface.h │ ├── Sorts.cpp │ └── Sorts.h ├── libsolc/ │ ├── CMakeLists.txt │ ├── libsolc.cpp │ └── libsolc.h ├── libsolidity/ │ ├── CMakeLists.txt │ ├── analysis/ │ │ ├── ConstantEvaluator.cpp │ │ ├── ConstantEvaluator.h │ │ ├── ContractLevelChecker.cpp │ │ ├── ContractLevelChecker.h │ │ ├── ControlFlowAnalyzer.cpp │ │ ├── ControlFlowAnalyzer.h │ │ ├── ControlFlowBuilder.cpp │ │ ├── ControlFlowBuilder.h │ │ ├── ControlFlowGraph.cpp │ │ ├── ControlFlowGraph.h │ │ ├── ControlFlowRevertPruner.cpp │ │ ├── ControlFlowRevertPruner.h │ │ ├── DeclarationContainer.cpp │ │ ├── DeclarationContainer.h │ │ ├── DeclarationTypeChecker.cpp │ │ ├── DeclarationTypeChecker.h │ │ ├── DocStringAnalyser.cpp │ │ ├── DocStringAnalyser.h │ │ ├── DocStringTagParser.cpp │ │ ├── DocStringTagParser.h │ │ ├── FunctionCallGraph.cpp │ │ ├── FunctionCallGraph.h │ │ ├── GlobalContext.cpp │ │ ├── GlobalContext.h │ │ ├── ImmutableValidator.cpp │ │ ├── ImmutableValidator.h │ │ ├── NameAndTypeResolver.cpp │ │ ├── NameAndTypeResolver.h │ │ ├── OverrideChecker.cpp │ │ ├── OverrideChecker.h │ │ ├── PostTypeChecker.cpp │ │ ├── PostTypeChecker.h │ │ ├── PostTypeContractLevelChecker.cpp │ │ ├── PostTypeContractLevelChecker.h │ │ ├── ReferencesResolver.cpp │ │ ├── ReferencesResolver.h │ │ ├── Scoper.cpp │ │ ├── Scoper.h │ │ ├── StaticAnalyzer.cpp │ │ ├── StaticAnalyzer.h │ │ ├── SyntaxChecker.cpp │ │ ├── SyntaxChecker.h │ │ ├── TypeChecker.cpp │ │ ├── TypeChecker.h │ │ ├── ViewPureChecker.cpp │ │ └── ViewPureChecker.h │ ├── ast/ │ │ ├── AST.cpp │ │ ├── AST.h │ │ ├── ASTAnnotations.cpp │ │ ├── ASTAnnotations.h │ │ ├── ASTEnums.h │ │ ├── ASTForward.h │ │ ├── ASTJsonExporter.cpp │ │ ├── ASTJsonExporter.h │ │ ├── ASTJsonImporter.cpp │ │ ├── ASTJsonImporter.h │ │ ├── ASTUtils.cpp │ │ ├── ASTUtils.h │ │ ├── ASTVisitor.h │ │ ├── AST_accept.h │ │ ├── CallGraph.cpp │ │ ├── CallGraph.h │ │ ├── ExperimentalFeatures.h │ │ ├── TypeProvider.cpp │ │ ├── TypeProvider.h │ │ ├── Types.cpp │ │ ├── Types.h │ │ └── UserDefinableOperators.h │ ├── codegen/ │ │ ├── ABIFunctions.cpp │ │ ├── ABIFunctions.h │ │ ├── ArrayUtils.cpp │ │ ├── ArrayUtils.h │ │ ├── Compiler.cpp │ │ ├── Compiler.h │ │ ├── CompilerContext.cpp │ │ ├── CompilerContext.h │ │ ├── CompilerUtils.cpp │ │ ├── CompilerUtils.h │ │ ├── ContractCompiler.cpp │ │ ├── ContractCompiler.h │ │ ├── ExpressionCompiler.cpp │ │ ├── ExpressionCompiler.h │ │ ├── LValue.cpp │ │ ├── LValue.h │ │ ├── MultiUseYulFunctionCollector.cpp │ │ ├── MultiUseYulFunctionCollector.h │ │ ├── ReturnInfo.cpp │ │ ├── ReturnInfo.h │ │ ├── YulUtilFunctions.cpp │ │ ├── YulUtilFunctions.h │ │ └── ir/ │ │ ├── Common.cpp │ │ ├── Common.h │ │ ├── IRGenerationContext.cpp │ │ ├── IRGenerationContext.h │ │ ├── IRGenerator.cpp │ │ ├── IRGenerator.h │ │ ├── IRGeneratorForStatements.cpp │ │ ├── IRGeneratorForStatements.h │ │ ├── IRLValue.h │ │ ├── IRVariable.cpp │ │ ├── IRVariable.h │ │ └── README.md │ ├── experimental/ │ │ ├── analysis/ │ │ │ ├── Analysis.cpp │ │ │ ├── Analysis.h │ │ │ ├── DebugWarner.cpp │ │ │ ├── DebugWarner.h │ │ │ ├── FunctionDependencyAnalysis.cpp │ │ │ ├── FunctionDependencyAnalysis.h │ │ │ ├── SyntaxRestrictor.cpp │ │ │ ├── SyntaxRestrictor.h │ │ │ ├── TypeClassRegistration.cpp │ │ │ ├── TypeClassRegistration.h │ │ │ ├── TypeInference.cpp │ │ │ ├── TypeInference.h │ │ │ ├── TypeRegistration.cpp │ │ │ └── TypeRegistration.h │ │ ├── ast/ │ │ │ ├── FunctionCallGraph.h │ │ │ ├── Type.cpp │ │ │ ├── Type.h │ │ │ ├── TypeSystem.cpp │ │ │ ├── TypeSystem.h │ │ │ ├── TypeSystemHelper.cpp │ │ │ └── TypeSystemHelper.h │ │ └── codegen/ │ │ ├── Common.cpp │ │ ├── Common.h │ │ ├── IRGenerationContext.h │ │ ├── IRGenerator.cpp │ │ ├── IRGenerator.h │ │ ├── IRGeneratorForStatements.cpp │ │ └── IRGeneratorForStatements.h │ ├── formal/ │ │ ├── ArraySlicePredicate.cpp │ │ ├── ArraySlicePredicate.h │ │ ├── BMC.cpp │ │ ├── BMC.h │ │ ├── CHC.cpp │ │ ├── CHC.h │ │ ├── Cvc5SMTLib2Interface.cpp │ │ ├── Cvc5SMTLib2Interface.h │ │ ├── EldaricaCHCSmtLib2Interface.cpp │ │ ├── EldaricaCHCSmtLib2Interface.h │ │ ├── EncodingContext.cpp │ │ ├── EncodingContext.h │ │ ├── ExpressionFormatter.cpp │ │ ├── ExpressionFormatter.h │ │ ├── ModelChecker.cpp │ │ ├── ModelChecker.h │ │ ├── ModelCheckerSettings.cpp │ │ ├── ModelCheckerSettings.h │ │ ├── Predicate.cpp │ │ ├── Predicate.h │ │ ├── PredicateInstance.cpp │ │ ├── PredicateInstance.h │ │ ├── PredicateSort.cpp │ │ ├── PredicateSort.h │ │ ├── SMTEncoder.cpp │ │ ├── SMTEncoder.h │ │ ├── SSAVariable.cpp │ │ ├── SSAVariable.h │ │ ├── SymbolicState.cpp │ │ ├── SymbolicState.h │ │ ├── SymbolicTypes.cpp │ │ ├── SymbolicTypes.h │ │ ├── SymbolicVariables.cpp │ │ ├── SymbolicVariables.h │ │ ├── Z3CHCSmtLib2Interface.cpp │ │ ├── Z3CHCSmtLib2Interface.h │ │ ├── Z3SMTLib2Interface.cpp │ │ └── Z3SMTLib2Interface.h │ ├── interface/ │ │ ├── ABI.cpp │ │ ├── ABI.h │ │ ├── CompilerStack.cpp │ │ ├── CompilerStack.h │ │ ├── DebugSettings.h │ │ ├── FileReader.cpp │ │ ├── FileReader.h │ │ ├── GasEstimator.cpp │ │ ├── GasEstimator.h │ │ ├── ImportRemapper.cpp │ │ ├── ImportRemapper.h │ │ ├── Natspec.cpp │ │ ├── Natspec.h │ │ ├── OptimiserSettings.h │ │ ├── ReadFile.h │ │ ├── SMTSolverCommand.cpp │ │ ├── SMTSolverCommand.h │ │ ├── StandardCompiler.cpp │ │ ├── StandardCompiler.h │ │ ├── StorageLayout.cpp │ │ ├── StorageLayout.h │ │ ├── UniversalCallback.h │ │ ├── Version.cpp │ │ └── Version.h │ ├── lsp/ │ │ ├── DocumentHoverHandler.cpp │ │ ├── DocumentHoverHandler.h │ │ ├── FileRepository.cpp │ │ ├── FileRepository.h │ │ ├── GotoDefinition.cpp │ │ ├── GotoDefinition.h │ │ ├── HandlerBase.cpp │ │ ├── HandlerBase.h │ │ ├── LanguageServer.cpp │ │ ├── LanguageServer.h │ │ ├── RenameSymbol.cpp │ │ ├── RenameSymbol.h │ │ ├── SemanticTokensBuilder.cpp │ │ ├── SemanticTokensBuilder.h │ │ ├── Transport.cpp │ │ ├── Transport.h │ │ ├── Utils.cpp │ │ └── Utils.h │ └── parsing/ │ ├── DocStringParser.cpp │ ├── DocStringParser.h │ ├── Parser.cpp │ ├── Parser.h │ └── Token.h ├── libsolutil/ │ ├── Algorithms.h │ ├── AnsiColorized.h │ ├── Assertions.h │ ├── CMakeLists.txt │ ├── Common.h │ ├── CommonData.cpp │ ├── CommonData.h │ ├── CommonIO.cpp │ ├── CommonIO.h │ ├── DisjointSet.cpp │ ├── DisjointSet.h │ ├── DominatorFinder.h │ ├── ErrorCodes.h │ ├── Exceptions.cpp │ ├── Exceptions.h │ ├── FixedHash.h │ ├── FunctionSelector.h │ ├── IpfsHash.cpp │ ├── IpfsHash.h │ ├── JSON.cpp │ ├── JSON.h │ ├── Keccak256.cpp │ ├── Keccak256.h │ ├── LEB128.h │ ├── LazyInit.h │ ├── Numeric.cpp │ ├── Numeric.h │ ├── Profiler.cpp │ ├── Profiler.h │ ├── Result.h │ ├── SetOnce.h │ ├── StackTooDeepString.h │ ├── StringUtils.cpp │ ├── StringUtils.h │ ├── SwarmHash.cpp │ ├── SwarmHash.h │ ├── TemporaryDirectory.cpp │ ├── TemporaryDirectory.h │ ├── UTF8.cpp │ ├── UTF8.h │ ├── Views.h │ ├── Visitor.h │ ├── Whiskers.cpp │ ├── Whiskers.h │ ├── picosha2.h │ └── vector_ref.h ├── libstdlib/ │ ├── CMakeLists.txt │ ├── src/ │ │ └── stub.sol │ ├── stdlib.h.in │ └── stdlib.src.h.in ├── libyul/ │ ├── AST.cpp │ ├── AST.h │ ├── ASTForward.h │ ├── ASTLabelRegistry.cpp │ ├── ASTLabelRegistry.h │ ├── AsmAnalysis.cpp │ ├── AsmAnalysis.h │ ├── AsmAnalysisInfo.h │ ├── AsmJsonConverter.cpp │ ├── AsmJsonConverter.h │ ├── AsmJsonImporter.cpp │ ├── AsmJsonImporter.h │ ├── AsmParser.cpp │ ├── AsmParser.h │ ├── AsmPrinter.cpp │ ├── AsmPrinter.h │ ├── Builtins.h │ ├── CMakeLists.txt │ ├── CompilabilityChecker.cpp │ ├── CompilabilityChecker.h │ ├── ControlFlowSideEffects.h │ ├── ControlFlowSideEffectsCollector.cpp │ ├── ControlFlowSideEffectsCollector.h │ ├── Dialect.cpp │ ├── Dialect.h │ ├── Exceptions.h │ ├── FunctionReferenceResolver.cpp │ ├── FunctionReferenceResolver.h │ ├── Object.cpp │ ├── Object.h │ ├── ObjectOptimizer.cpp │ ├── ObjectOptimizer.h │ ├── ObjectParser.cpp │ ├── ObjectParser.h │ ├── Scope.cpp │ ├── Scope.h │ ├── ScopeFiller.cpp │ ├── ScopeFiller.h │ ├── SideEffects.h │ ├── Utilities.cpp │ ├── Utilities.h │ ├── YulName.h │ ├── YulStack.cpp │ ├── YulStack.h │ ├── YulString.h │ ├── backends/ │ │ └── evm/ │ │ ├── AbstractAssembly.h │ │ ├── AsmCodeGen.cpp │ │ ├── AsmCodeGen.h │ │ ├── ConstantOptimiser.cpp │ │ ├── ConstantOptimiser.h │ │ ├── ControlFlowGraph.h │ │ ├── ControlFlowGraphBuilder.cpp │ │ ├── ControlFlowGraphBuilder.h │ │ ├── EVMBuiltins.cpp │ │ ├── EVMBuiltins.h │ │ ├── EVMCodeTransform.cpp │ │ ├── EVMCodeTransform.h │ │ ├── EVMDialect.cpp │ │ ├── EVMDialect.h │ │ ├── EVMMetrics.cpp │ │ ├── EVMMetrics.h │ │ ├── EVMObjectCompiler.cpp │ │ ├── EVMObjectCompiler.h │ │ ├── EthAssemblyAdapter.cpp │ │ ├── EthAssemblyAdapter.h │ │ ├── NoOutputAssembly.cpp │ │ ├── NoOutputAssembly.h │ │ ├── OptimizedEVMCodeTransform.cpp │ │ ├── OptimizedEVMCodeTransform.h │ │ ├── StackHelpers.h │ │ ├── StackLayoutGenerator.cpp │ │ ├── StackLayoutGenerator.h │ │ ├── VariableReferenceCounter.cpp │ │ ├── VariableReferenceCounter.h │ │ └── ssa/ │ │ ├── BridgeFinder.h │ │ ├── CodeTransform.cpp │ │ ├── CodeTransform.h │ │ ├── ControlFlow.cpp │ │ ├── ControlFlow.h │ │ ├── JunkAdmittingBlocksFinder.cpp │ │ ├── JunkAdmittingBlocksFinder.h │ │ ├── LivenessAnalysis.cpp │ │ ├── LivenessAnalysis.h │ │ ├── PhiInverse.cpp │ │ ├── PhiInverse.h │ │ ├── SSACFG.cpp │ │ ├── SSACFG.h │ │ ├── SSACFGBuilder.cpp │ │ ├── SSACFGBuilder.h │ │ ├── SSACFGLoopNestingForest.cpp │ │ ├── SSACFGLoopNestingForest.h │ │ ├── Stack.cpp │ │ ├── Stack.h │ │ ├── StackLayout.h │ │ ├── StackLayoutGenerator.cpp │ │ ├── StackLayoutGenerator.h │ │ ├── StackShuffler.cpp │ │ ├── StackShuffler.h │ │ ├── StackUtils.cpp │ │ ├── StackUtils.h │ │ ├── io/ │ │ │ ├── DotExporterBase.cpp │ │ │ ├── DotExporterBase.h │ │ │ ├── JSONExporter.cpp │ │ │ └── JSONExporter.h │ │ └── traversal/ │ │ ├── ForwardTopologicalSort.cpp │ │ └── ForwardTopologicalSort.h │ └── optimiser/ │ ├── ASTCopier.cpp │ ├── ASTCopier.h │ ├── ASTWalker.cpp │ ├── ASTWalker.h │ ├── BlockFlattener.cpp │ ├── BlockFlattener.h │ ├── BlockHasher.cpp │ ├── BlockHasher.h │ ├── CallGraphGenerator.cpp │ ├── CallGraphGenerator.h │ ├── CircularReferencesPruner.cpp │ ├── CircularReferencesPruner.h │ ├── CommonSubexpressionEliminator.cpp │ ├── CommonSubexpressionEliminator.h │ ├── ConditionalSimplifier.cpp │ ├── ConditionalSimplifier.h │ ├── ConditionalUnsimplifier.cpp │ ├── ConditionalUnsimplifier.h │ ├── ControlFlowSimplifier.cpp │ ├── ControlFlowSimplifier.h │ ├── DataFlowAnalyzer.cpp │ ├── DataFlowAnalyzer.h │ ├── DeadCodeEliminator.cpp │ ├── DeadCodeEliminator.h │ ├── Disambiguator.cpp │ ├── Disambiguator.h │ ├── EqualStoreEliminator.cpp │ ├── EqualStoreEliminator.h │ ├── EquivalentFunctionCombiner.cpp │ ├── EquivalentFunctionCombiner.h │ ├── EquivalentFunctionDetector.cpp │ ├── EquivalentFunctionDetector.h │ ├── ExpressionInliner.cpp │ ├── ExpressionInliner.h │ ├── ExpressionJoiner.cpp │ ├── ExpressionJoiner.h │ ├── ExpressionSimplifier.cpp │ ├── ExpressionSimplifier.h │ ├── ExpressionSplitter.cpp │ ├── ExpressionSplitter.h │ ├── ForLoopConditionIntoBody.cpp │ ├── ForLoopConditionIntoBody.h │ ├── ForLoopConditionOutOfBody.cpp │ ├── ForLoopConditionOutOfBody.h │ ├── ForLoopInitRewriter.cpp │ ├── ForLoopInitRewriter.h │ ├── FullInliner.cpp │ ├── FullInliner.h │ ├── FunctionCallFinder.cpp │ ├── FunctionCallFinder.h │ ├── FunctionGrouper.cpp │ ├── FunctionGrouper.h │ ├── FunctionHoister.cpp │ ├── FunctionHoister.h │ ├── FunctionSpecializer.cpp │ ├── FunctionSpecializer.h │ ├── InlinableExpressionFunctionFinder.cpp │ ├── InlinableExpressionFunctionFinder.h │ ├── KnowledgeBase.cpp │ ├── KnowledgeBase.h │ ├── LabelIDDispenser.cpp │ ├── LabelIDDispenser.h │ ├── LoadResolver.cpp │ ├── LoadResolver.h │ ├── LoopInvariantCodeMotion.cpp │ ├── LoopInvariantCodeMotion.h │ ├── Metrics.cpp │ ├── Metrics.h │ ├── NameCollector.cpp │ ├── NameCollector.h │ ├── NameDispenser.cpp │ ├── NameDispenser.h │ ├── NameDisplacer.cpp │ ├── NameDisplacer.h │ ├── NameSimplifier.cpp │ ├── NameSimplifier.h │ ├── OptimiserStep.h │ ├── OptimizerUtilities.cpp │ ├── OptimizerUtilities.h │ ├── README.md │ ├── Rematerialiser.cpp │ ├── Rematerialiser.h │ ├── SSAReverser.cpp │ ├── SSAReverser.h │ ├── SSATransform.cpp │ ├── SSATransform.h │ ├── SSAValueTracker.cpp │ ├── SSAValueTracker.h │ ├── Semantics.cpp │ ├── Semantics.h │ ├── SimplificationRules.cpp │ ├── SimplificationRules.h │ ├── StackCompressor.cpp │ ├── StackCompressor.h │ ├── StackLimitEvader.cpp │ ├── StackLimitEvader.h │ ├── StackToMemoryMover.cpp │ ├── StackToMemoryMover.h │ ├── StructuralSimplifier.cpp │ ├── StructuralSimplifier.h │ ├── Substitution.cpp │ ├── Substitution.h │ ├── Suite.cpp │ ├── Suite.h │ ├── SyntacticalEquality.cpp │ ├── SyntacticalEquality.h │ ├── UnusedAssignEliminator.cpp │ ├── UnusedAssignEliminator.h │ ├── UnusedFunctionParameterPruner.cpp │ ├── UnusedFunctionParameterPruner.h │ ├── UnusedFunctionsCommon.cpp │ ├── UnusedFunctionsCommon.h │ ├── UnusedPruner.cpp │ ├── UnusedPruner.h │ ├── UnusedStoreBase.cpp │ ├── UnusedStoreBase.h │ ├── UnusedStoreEliminator.cpp │ ├── UnusedStoreEliminator.h │ ├── VarDeclInitializer.cpp │ ├── VarDeclInitializer.h │ ├── VarNameCleaner.cpp │ └── VarNameCleaner.h ├── scripts/ │ ├── ASTImportTest.sh │ ├── AntlrBatchTestRig.java │ ├── Dockerfile │ ├── Dockerfile_alpine │ ├── build.sh │ ├── build_emscripten.sh │ ├── bytecodecompare/ │ │ ├── prepare_report.js │ │ └── prepare_report.py │ ├── check_style.sh │ ├── check_symlinks.sh │ ├── chk_shellscripts/ │ │ └── chk_shellscripts.sh │ ├── ci/ │ │ ├── base64DecToArr.js │ │ ├── build.sh │ │ ├── build_emscripten.sh │ │ ├── build_ossfuzz.sh │ │ ├── build_win.sh │ │ ├── docker_upgrade.sh │ │ ├── install_and_check_minimum_requirements.sh │ │ ├── mini-lz4.js │ │ ├── notification/ │ │ │ ├── matrix_notification.sh │ │ │ └── templates/ │ │ │ ├── build_fail.json │ │ │ ├── build_release.json │ │ │ └── build_success.json │ │ ├── pack_soljson.sh │ │ └── post_style_errors_on_github.sh │ ├── codespell_ignored_lines.txt │ ├── codespell_whitelist.txt │ ├── common/ │ │ ├── cmdline_helpers.py │ │ ├── git_helpers.py │ │ └── rest_api_helpers.py │ ├── common.sh │ ├── common_cmdline.sh │ ├── create_source_tarball.sh │ ├── docker/ │ │ └── buildpack-deps/ │ │ ├── Dockerfile.emscripten │ │ ├── Dockerfile.ubuntu.clang.ossfuzz │ │ ├── Dockerfile.ubuntu2404 │ │ ├── Dockerfile.ubuntu2404.arm │ │ ├── Dockerfile.ubuntu2404.clang │ │ ├── README.md │ │ └── emscripten.jam │ ├── docker_deploy_manual.sh │ ├── docs_version_pragma_check.sh │ ├── download_ossfuzz_corpus.sh │ ├── error_codes.py │ ├── externalTests/ │ │ ├── benchmark_diff.py │ │ ├── common.sh │ │ ├── download_benchmarks.py │ │ ├── merge_benchmarks.sh │ │ ├── parse_eth_gas_report.py │ │ ├── runners/ │ │ │ ├── base.py │ │ │ └── foundry.py │ │ ├── summarize_benchmarks.sh │ │ ├── test_helpers.py │ │ └── update_external_repos.sh │ ├── extract_test_cases.py │ ├── gas_diff_stats.py │ ├── get_nightly_version.sh │ ├── get_version.sh │ ├── install_deps.ps1 │ ├── install_evmone.ps1 │ ├── isolate_tests.py │ ├── isoltest.sh │ ├── list_contributors.sh │ ├── prerelease_suffix.sh │ ├── pylint_all.py │ ├── pylintrc │ ├── regressions.py │ ├── run_proofs.sh │ ├── solc-bin/ │ │ ├── bytecode_reports_for_modified_binaries.sh │ │ └── compare_bytecode_reports.sh │ ├── soltest.sh │ ├── splitSources.py │ ├── test_antlr_grammar.sh │ ├── test_emscripten.sh │ ├── tests.sh │ ├── uniqueErrors.sh │ ├── update_bugs_by_version.py │ ├── wasm-rebuild/ │ │ ├── README │ │ ├── docker-scripts/ │ │ │ ├── genbytecode.sh │ │ │ ├── isolate_tests.py │ │ │ ├── patch.sh │ │ │ ├── rebuild_current.sh │ │ │ └── rebuild_tags.sh │ │ └── rebuild.sh │ └── yul_coverage.sh ├── snap/ │ └── snapcraft.yaml ├── solc/ │ ├── CMakeLists.txt │ ├── CommandLineInterface.cpp │ ├── CommandLineInterface.h │ ├── CommandLineParser.cpp │ ├── CommandLineParser.h │ ├── Exceptions.h │ └── main.cpp ├── test/ │ ├── .solhint.json │ ├── .solhintignore │ ├── CMakeLists.txt │ ├── Common.cpp │ ├── Common.h │ ├── CommonSyntaxTest.cpp │ ├── CommonSyntaxTest.h │ ├── EVMHost.cpp │ ├── EVMHost.h │ ├── ExecutionFramework.cpp │ ├── ExecutionFramework.h │ ├── FilesystemUtils.cpp │ ├── FilesystemUtils.h │ ├── InteractiveTests.h │ ├── Metadata.cpp │ ├── Metadata.h │ ├── TestCase.cpp │ ├── TestCase.h │ ├── TestCaseReader.cpp │ ├── TestCaseReader.h │ ├── benchmarks/ │ │ ├── OptimizorClub.sol │ │ ├── chains.sol │ │ ├── external-setup.sh │ │ ├── external.sh │ │ ├── local.sh │ │ └── verifier.sol │ ├── buglistTests.js │ ├── buglist_test_vectors.md │ ├── cmdlineTests/ │ │ ├── abi_via_ir/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── abiencoderv2_no_warning/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── input.sol │ │ │ └── output │ │ ├── asm_json/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── asm_json_import_sourcelist_with_null_elements/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── stdin │ │ ├── asm_json_no_pretty_print/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── asm_json_subassembly_id_representation/ │ │ │ ├── args │ │ │ ├── input.yul │ │ │ └── output │ │ ├── asm_json_yul_export_evm_asm_import/ │ │ │ ├── args │ │ │ ├── output │ │ │ └── stdin │ │ ├── ast_compact_json_no_pretty_json/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── ast_compact_json_storage_layout_specifier/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── ast_compact_json_with_base_path/ │ │ │ ├── args │ │ │ ├── c.sol │ │ │ ├── input.sol │ │ │ └── output │ │ ├── ast_ir/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── ast_json_import_wrong_evmVersion/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── combined_json_abi/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── combined_json_generated_sources/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── combined_json_no_pretty_print/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── combined_json_stop_after_parsing/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── combined_json_with_base_path/ │ │ │ ├── args │ │ │ ├── c.sol │ │ │ ├── input.sol │ │ │ └── output │ │ ├── combined_json_with_devdoc/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── combined_json_with_userdoc/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── constant_optimizer_yul/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── input.sol │ │ │ └── output │ │ ├── debug_info_in_yul_and_evm_asm_print_all/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── debug_info_in_yul_and_evm_asm_print_all_and_none/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── debug_info_in_yul_and_evm_asm_print_location_only/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── debug_info_in_yul_and_evm_asm_print_none/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── debug_info_in_yul_and_evm_asm_print_snippet_only/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── debug_info_in_yul_snippet_escaping/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── dup_opt_peephole/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── eof_unavailable_before_osaka/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── error_codes/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── ethdebug_debuginfo_without_experimental_flag/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── ethdebug_eof_container_osaka/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── ethdebug_on_abstract/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── ethdebug_on_interface/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── events_in_abi/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── evm_version_byzantium/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── evm_version_constantinople/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── evmasm_difficulty_post_paris/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── input.sol │ │ │ └── output │ │ ├── evmasm_difficulty_pre_paris/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── evmasm_prevrandao_post_paris/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── evmasm_prevrandao_pre_paris/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── input.sol │ │ │ └── output │ │ ├── evmasm_transient_storage_inline_assembly/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── input.sol │ │ │ └── output │ │ ├── evmasm_transient_storage_inline_assembly_via_ir/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── input.sol │ │ │ └── output │ │ ├── evmasm_transient_storage_state_variable/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── evmasm_transient_storage_state_variable_via_ir/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── exp_base_literal/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── input.sol │ │ │ └── output │ │ ├── experimental_feature_without_experimental_flag/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── experimental_flag_with_standard_json/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.json │ │ ├── function_debug_info/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── input.sol │ │ │ └── output │ │ ├── function_debug_info_via_yul/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── input.sol │ │ │ └── output │ │ ├── hashes/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── import_asm_json_all_valid_flags/ │ │ │ ├── args │ │ │ ├── output │ │ │ └── stdin │ │ ├── import_asm_json_difficulty_prevrandao/ │ │ │ ├── args │ │ │ ├── output │ │ │ └── stdin │ │ ├── import_asm_json_eof_unavailable_before_osaka/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── stdin │ │ ├── import_asm_json_hex_subassembly_indices/ │ │ │ ├── args │ │ │ ├── output │ │ │ └── stdin │ │ ├── import_asm_json_invalid_data_not_hex/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── stdin │ │ ├── import_asm_json_invalid_data_not_object/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── stdin │ │ ├── import_asm_json_invalid_jumptype_instruction/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── stdin │ │ ├── import_asm_json_invalid_value/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── stdin │ │ ├── import_asm_json_missing_subobject_indices/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── stdin │ │ ├── import_asm_json_no_optimize/ │ │ │ ├── args │ │ │ ├── output │ │ │ └── stdin │ │ ├── import_asm_json_no_value/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── stdin │ │ ├── import_asm_json_non_unique_sources/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── stdin │ │ ├── import_asm_json_optimize/ │ │ │ ├── args │ │ │ ├── exit │ │ │ ├── output │ │ │ └── stdin │ │ ├── import_asm_json_out_of_range_data_index/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── stdin │ │ ├── import_asm_json_random_order_data_index/ │ │ │ ├── args │ │ │ ├── output │ │ │ └── stdin │ │ ├── import_asm_json_unrecognized_field/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── stdin │ │ ├── import_asm_json_untagged_jumpdest/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── stdin │ │ ├── import_asm_json_verbatim/ │ │ │ ├── args │ │ │ ├── output │ │ │ └── stdin │ │ ├── import_asm_json_yul_more_subobjects/ │ │ │ ├── args │ │ │ ├── output │ │ │ └── stdin │ │ ├── import_asm_json_yul_subobjects/ │ │ │ ├── args │ │ │ ├── output │ │ │ └── stdin │ │ ├── inheritance_repeated_definition_error/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── stdin │ │ ├── inline_assembly_function_name_clash/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── input.sol │ │ │ └── output │ │ ├── ir_compiler_inheritance_nosubobjects/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── ir_compiler_subobjects/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── input.sol │ │ │ └── output │ │ ├── ir_optimized_transient_storage_value_type/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── ir_optimized_with_optimize/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── ir_subobject_order/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── ir_unoptimized_with_optimize/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── ir_unoptimized_with_optimize_via_ir/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── ir_with_assembly_no_memoryguard_creation/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── ir_with_assembly_no_memoryguard_runtime/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── keccak_optimization_deploy_code/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── input.sol │ │ │ └── output │ │ ├── keccak_optimization_low_runs/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── input.sol │ │ │ └── output │ │ ├── linker_mode_invalid_option_no_optimize_yul/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── exit │ │ ├── linker_mode_invalid_option_optimize/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── exit │ │ ├── linker_mode_invalid_option_optimize_runs/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── exit │ │ ├── linker_mode_invalid_option_optimize_yul/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── exit │ │ ├── linker_mode_invalid_option_yul_optimizations/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── exit │ │ ├── linker_mode_output_selection_invalid/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── exit │ │ ├── linking_qualified_library_name/ │ │ │ ├── args │ │ │ ├── contract1.sol │ │ │ ├── math.sol │ │ │ └── output │ │ ├── linking_solidity/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── linking_solidity_unresolved_references/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── linking_standard_solidity/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── linking_standard_solidity_quote_in_file_name/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── linking_standard_solidity_unresolved_references/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── linking_standard_yul/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── linking_standard_yul_quote_in_file_name/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── linking_standard_yul_unresolved_references/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── linking_strict_assembly/ │ │ │ ├── args │ │ │ ├── input.yul │ │ │ └── output │ │ ├── linking_strict_assembly_duplicate_library_name/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.yul │ │ ├── linking_strict_assembly_qualified_library_qualified_reference/ │ │ │ ├── args │ │ │ ├── input.yul │ │ │ └── output │ │ ├── linking_strict_assembly_qualified_library_unqualified_reference/ │ │ │ ├── args │ │ │ ├── input.yul │ │ │ └── output │ │ ├── linking_strict_assembly_same_library_name_different_files/ │ │ │ ├── args │ │ │ ├── input.yul │ │ │ └── output │ │ ├── linking_strict_assembly_same_library_name_different_files_in_link_references/ │ │ │ ├── args │ │ │ ├── input.yul │ │ │ └── output │ │ ├── linking_strict_assembly_unqualified_library_qualified_reference/ │ │ │ ├── args │ │ │ ├── input.yul │ │ │ └── output │ │ ├── linking_strict_assembly_unqualified_library_unqualified_reference/ │ │ │ ├── args │ │ │ ├── input.yul │ │ │ └── output │ │ ├── linking_strict_assembly_unresolved_references/ │ │ │ ├── args │ │ │ ├── input.yul │ │ │ └── output │ │ ├── linking_unqualified_library_name/ │ │ │ ├── args │ │ │ ├── contract1.sol │ │ │ ├── contract2.sol │ │ │ ├── error.sol │ │ │ ├── math.sol │ │ │ └── output │ │ ├── mcopy_bytes_array_abi_decode/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── input.sol │ │ │ └── output │ │ ├── mcopy_bytes_array_returned_from_function/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── mcopy_string_literal_returned_from_function/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── memoryguard_shadowing_by_inline_assembly_identifiers/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── message_format/ │ │ │ ├── err │ │ │ └── input.sol │ │ ├── message_format_utf8/ │ │ │ ├── err │ │ │ └── input.sol │ │ ├── metadata/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── metadata_experimental/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── metadata_via_ssa_cfg/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── model_checker_bmc_loop_iterations/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_bmc_loop_iterations_invalid_arg/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── model_checker_bmc_loop_iterations_no_argument/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── model_checker_contracts_all/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_contracts_all_explicit/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_contracts_contract_missing/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── model_checker_contracts_empty_contract/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── model_checker_contracts_empty_source/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── model_checker_contracts_inexistent_contract/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_contracts_inexistent_source/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_contracts_one_contract_missing/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── model_checker_contracts_only_one/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_contracts_source_missing/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── model_checker_divModSlacks_default_all/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_divModSlacks_default_bmc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_divModSlacks_default_chc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_divModSlacks_false_all/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_divModSlacks_false_bmc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_divModSlacks_false_chc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_engine_all/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_engine_bmc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_engine_chc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_engine_none/ │ │ │ ├── args │ │ │ └── input.sol │ │ ├── model_checker_ext_calls_empty_arg/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── model_checker_ext_calls_trusted_chc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_ext_calls_untrusted_chc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_ext_calls_wrong_arg/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── model_checker_invariants_all/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_invariants_contract/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_invariants_contract_eld/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_invariants_contract_reentrancy/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_invariants_reentrancy/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_invariants_wrong/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── model_checker_print_query_all/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_print_query_bmc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_print_query_chc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_show_proved_safe_default_all_engines/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_show_proved_safe_default_bmc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_show_proved_safe_default_chc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_show_proved_safe_true_all_engines/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_show_proved_safe_true_bmc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_show_proved_safe_true_chc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_show_unproved_default_all_engines/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_show_unproved_default_bmc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_show_unproved_default_chc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_show_unproved_true_all_engines/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_show_unproved_true_bmc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_show_unproved_true_chc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_show_unsupported_default_all_engines/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_show_unsupported_default_bmc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_show_unsupported_default_chc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_show_unsupported_true_all_engines/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_show_unsupported_true_bmc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_show_unsupported_true_chc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_solvers_cvc5/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_solvers_cvc5_eld/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_solvers_eld/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_solvers_smtlib2/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_solvers_wrong/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── model_checker_solvers_wrong2/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── model_checker_solvers_z3/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_solvers_z3_implicit/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_solvers_z3_smtlib2/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_targets_all_all_engines/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_targets_all_bmc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_targets_all_chc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_targets_assert_bmc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_targets_assert_chc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_targets_balance_bmc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_targets_balance_chc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_targets_constant_condition_bmc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_targets_constant_condition_chc/ │ │ │ ├── args │ │ │ └── input.sol │ │ ├── model_checker_targets_default_all_engines/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_targets_default_bmc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_targets_default_chc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_targets_div_by_zero_bmc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_targets_div_by_zero_chc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_targets_error/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── model_checker_targets_out_of_bounds_bmc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_targets_out_of_bounds_chc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_targets_overflow_bmc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_targets_overflow_chc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_targets_pop_empty_bmc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_targets_pop_empty_chc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_targets_underflow_bmc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_targets_underflow_chc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_targets_underflow_overflow_assert_bmc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_targets_underflow_overflow_assert_chc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_targets_underflow_overflow_bmc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_targets_underflow_overflow_chc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_timeout_all/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_timeout_bmc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── model_checker_timeout_chc/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── input.sol │ │ ├── name_simplifier/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── no_cbor_metadata/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── no_cbor_metadata_with_metadata_hash/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── no_contract_combined_json/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── no_import_callback/ │ │ │ ├── args │ │ │ ├── contract_1.sol │ │ │ ├── contract_2.sol │ │ │ ├── err │ │ │ └── exit │ │ ├── object_compiler/ │ │ │ ├── args │ │ │ ├── input.yul │ │ │ └── output │ │ ├── optimize_full_storage_write/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── optimizer_BlockDeDuplicator/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── input.sol │ │ │ └── output │ │ ├── optimizer_array_sload/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── optimizer_enabled_invalid_yul_optimizer_enabled_and_disabled/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── optimizer_inliner_add/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── optimizer_inliner_call_from_constructor/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── optimizer_inliner_dynamic_reference/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── optimizer_inliner_dynamic_reference_constructor/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── optimizer_inliner_inc/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── optimizer_inliner_multireturn/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── optimizer_user_yul/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── pretty_json_indent_only/ │ │ │ ├── args │ │ │ ├── input.json │ │ │ ├── no-pretty-print │ │ │ ├── output │ │ │ └── output.json │ │ ├── pretty_json_standard/ │ │ │ ├── args │ │ │ ├── input.json │ │ │ ├── no-pretty-print │ │ │ └── output.json │ │ ├── pretty_json_standard_indent/ │ │ │ ├── args │ │ │ ├── input.json │ │ │ ├── no-pretty-print │ │ │ ├── output │ │ │ └── output.json │ │ ├── require_overload/ │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── require_with_error_ir/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── require_with_string_ir/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── revert_strings/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── stack_too_deep_from_code_transform/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── standard_cli_import_ast_storage_layout_specifier_missing_expression/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── stdin │ │ ├── standard_cli_output_selection_invalid/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.json │ │ ├── standard_debug_info_in_evm_asm_via_ir_location/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_debug_info_in_yul_and_evm_asm_print_all/ │ │ │ ├── args │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_debug_info_in_yul_and_evm_asm_print_location_only/ │ │ │ ├── args │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_debug_info_in_yul_and_evm_asm_print_none/ │ │ │ ├── args │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_debug_info_in_yul_and_evm_asm_print_snippet_only/ │ │ │ ├── args │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_debug_info_in_yul_location/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_default_success/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_empty_file_name/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_eof_no_experimental/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_eof_unavailable_before_osaka/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_evm_version_byzantium/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_evm_version_constantinople/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_file_not_found/ │ │ │ ├── args │ │ │ ├── err │ │ │ └── exit │ │ ├── standard_function_debug_info/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_generatedSources/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_immutable_references/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_import_asm_json/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_import_asm_json_eof_unavailable_before_osaka/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_import_asm_json_immutable_references/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_import_asm_json_invalid_input_array/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_import_asm_json_invalid_key_inside_source/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_import_asm_json_invalid_key_other_source/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_import_asm_json_invalid_no_source/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_import_asm_json_invalid_opcode/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_import_asm_json_invalid_two_sources/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_import_asm_json_link_references/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_import_asm_json_multiple_keys_inside_source/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_import_asm_json_no_optimize/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_import_asm_json_no_output_selection/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_import_asm_json_optimize/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_import_ast/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_import_ast_no_experimental/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_import_ast_select_bytecode/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_import_with_comments/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_import_with_comments_simple/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_import_with_invalid_utf8/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_invalid_option_no_optimize_yul/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.json │ │ ├── standard_invalid_option_optimize/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.json │ │ ├── standard_invalid_option_optimize_runs/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.json │ │ ├── standard_invalid_option_optimize_yul/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.json │ │ ├── standard_invalid_option_yul_optimizations/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.json │ │ ├── standard_irOptimized_ast_requested/ │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_irOptimized_requested/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_ir_ast_requested/ │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_ir_requested/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_ir_unoptimized_with_optimize/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_ir_unoptimized_with_optimize_via_ir/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_json_no_pretty_print/ │ │ │ ├── input.json │ │ │ ├── no-pretty-print │ │ │ └── output.json │ │ ├── standard_metadata/ │ │ │ ├── args │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_metadata_experimental/ │ │ │ ├── args │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_method_identifiers_requested/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_method_identifiers_requested_empty/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_missing_key_useLiteralContent/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_bmc_loop_iterations/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_bmc_loop_iterations_invalid_arg/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_contracts_all/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_contracts_all_explicit/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_contracts_empty_array/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_contracts_empty_contract/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_contracts_empty_source/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_contracts_inexistent_contract/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_contracts_multi_source/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_contracts_only_one/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_contracts_wrong_key_sources/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_contracts_wrong_key_sources_2/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_contracts_wrong_key_sources_3/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_contracts_wrong_key_sources_4/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_divModSlacks_default_all/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_divModSlacks_default_bmc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_divModSlacks_default_chc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_divModSlacks_false_all/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_divModSlacks_false_bmc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_divModSlacks_false_chc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_divModSlacks_wrong/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_engine_all/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_engine_bmc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_engine_chc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_engine_none/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_ext_calls_empty_arg/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_ext_calls_trusted_chc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_ext_calls_untrusted_chc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_ext_calls_wrong_arg_1/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_ext_calls_wrong_arg_2/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_invariants_contract/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_invariants_contract_reentrancy/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_invariants_reentrancy/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_invariants_wrong_key/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_invariants_wrong_type/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_invariants_wrong_type_2/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_print_query_all/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_print_query_bmc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_print_query_chc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_print_query_invalid_arg/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_show_proved_safe_default_all_engines/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_show_proved_safe_default_bmc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_show_proved_safe_default_chc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_show_proved_safe_false_all_engines/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_show_proved_safe_false_bmc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_show_proved_safe_false_chc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_show_proved_safe_true_all_engines/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_show_proved_safe_true_bmc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_show_proved_safe_true_chc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_show_proved_safe_wrong/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_show_unproved_default_all_engines/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_show_unproved_false_all_engines/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_show_unproved_false_bmc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_show_unproved_false_chc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_show_unproved_true_all_engines/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_show_unproved_true_bmc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_show_unproved_true_chc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_show_unproved_wrong/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_show_unsupported_default_all_engines/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_show_unsupported_default_bmc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_show_unsupported_default_chc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_show_unsupported_false_all_engines/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_show_unsupported_false_bmc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_show_unsupported_false_chc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_show_unsupported_true_all_engines/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_show_unsupported_true_bmc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_show_unsupported_true_chc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_show_unsupported_wrong/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_solvers_none/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_solvers_smtlib2/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_solvers_z3/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_solvers_z3_smtlib2/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_targets_assert_bmc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_targets_assert_chc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_targets_balance_bmc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_targets_balance_chc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_targets_constantCondition_bmc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_targets_constantCondition_chc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_targets_default_all_engines/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_targets_default_bmc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_targets_default_chc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_targets_div_by_zero_bmc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_targets_div_by_zero_chc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_targets_empty_array/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_targets_out_of_bounds_bmc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_targets_out_of_bounds_chc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_targets_overflow_bmc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_targets_overflow_chc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_targets_pop_empty_bmc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_targets_pop_empty_chc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_targets_underflow_bmc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_targets_underflow_chc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_targets_underflow_overflow_assert_bmc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_targets_underflow_overflow_assert_chc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_targets_underflow_overflow_bmc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_targets_underflow_overflow_chc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_targets_wrong_target_types/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_targets_wrong_target_types_2/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_targets_wrong_targets/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_timeout_all/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_timeout_bmc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_timeout_chc/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_timeout_wrong_key/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_model_checker_timeout_wrong_value/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_no_append_cbor/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_no_append_cbor_with_metadata_hash/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_no_import_callback/ │ │ │ ├── B.sol │ │ │ ├── args │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_non_utf8_filename/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_non_utf8_filename2/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_only_ast_requested/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_optimizer_generatedSources/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_optimizer_invalid_detail_type/ │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_optimizer_invalid_details/ │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_optimizer_no_yul/ │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_optimizer_yul/ │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_optimizer_yulDetails/ │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_optimizer_yulDetails_no_object/ │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_optimizer_yulDetails_optimiserSteps/ │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_optimizer_yulDetails_optimiserSteps_empty_sequence_metadata/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_optimizer_yulDetails_optimiserSteps_empty_sequence_whitespaces_metadata/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_optimizer_yulDetails_optimiserSteps_invalid_abbreviation/ │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_optimizer_yulDetails_optimiserSteps_invalid_nested_delimiter/ │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_optimizer_yulDetails_optimiserSteps_mutliple_delimiters/ │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_optimizer_yulDetails_optimiserSteps_nested_brackets/ │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_optimizer_yulDetails_optimiserSteps_nesting_too_deep/ │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_optimizer_yulDetails_optimiserSteps_no_yul/ │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_optimizer_yulDetails_optimiserSteps_no_yul_empty_string/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_optimizer_yulDetails_optimiserSteps_no_yul_whitespaces/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_optimizer_yulDetails_optimiserSteps_type/ │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_optimizer_yulDetails_optimiserSteps_unbalanced_closing_bracket/ │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_optimizer_yulDetails_optimiserSteps_unbalanced_opening_bracket/ │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_optimizer_yulDetails_optimiserSteps_with_cleanup_sequence/ │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_optimizer_yulDetails_optimiserSteps_with_empty_cleanup_sequence/ │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_optimizer_yulDetails_optimiserSteps_with_empty_optimisation_sequence/ │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_optimizer_yulDetails_optimiserSteps_with_empty_sequence/ │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_optimizer_yulDetails_optimiserSteps_with_empty_sequence_no_yul/ │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_optimizer_yulDetails_optimiserSteps_with_whitespace_newline_sequence_no_yul/ │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_optimizer_yulDetails_without_yul/ │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_output_debuginfo_ethdebug_compatible/ │ │ │ ├── input.json │ │ │ ├── output.json │ │ │ └── strip-ethdebug │ │ ├── standard_output_debuginfo_ethdebug_incompatible/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_output_debuginfo_ethdebug_with_interfaces_and_abstracts/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_output_selection_all_blank/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_output_selection_all_sources_blank_contract_named_blank/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_output_selection_all_sources_single_contract_multiple_matches/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_output_selection_all_sources_single_contract_single_match/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_output_selection_all_sources_star_contract_named_star/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_output_selection_all_star/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_output_selection_duplicate_matching_source_and_contract_selectors/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_output_selection_empty/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_output_selection_ethdebug_bytecode_and_deployedbytecode_ir/ │ │ │ ├── input.json │ │ │ ├── output.json │ │ │ └── strip-ethdebug │ │ ├── standard_output_selection_ethdebug_bytecode_and_deployedbytecode_iroptimized/ │ │ │ ├── input.json │ │ │ ├── output.json │ │ │ └── strip-ethdebug │ │ ├── standard_output_selection_ethdebug_bytecode_and_deployedbytecode_optimizer_ir/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_output_selection_ethdebug_bytecode_and_deployedbytecode_optimizer_iroptimized/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_output_selection_ethdebug_bytecode_ir/ │ │ │ ├── input.json │ │ │ ├── output.json │ │ │ └── strip-ethdebug │ │ ├── standard_output_selection_ethdebug_bytecode_iroptimized/ │ │ │ ├── input.json │ │ │ ├── output.json │ │ │ └── strip-ethdebug │ │ ├── standard_output_selection_ethdebug_deployedbytecode_ir/ │ │ │ ├── input.json │ │ │ ├── output.json │ │ │ └── strip-ethdebug │ │ ├── standard_output_selection_ethdebug_deployedbytecode_iroptimized/ │ │ │ ├── input.json │ │ │ ├── output.json │ │ │ └── strip-ethdebug │ │ ├── standard_output_selection_ethdebug_ir/ │ │ │ ├── input.json │ │ │ ├── output.json │ │ │ └── strip-ethdebug │ │ ├── standard_output_selection_ethdebug_iroptimized/ │ │ │ ├── input.json │ │ │ ├── output.json │ │ │ └── strip-ethdebug │ │ ├── standard_output_selection_ethdebug_no_experimental/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_output_selection_ethdebug_no_viair/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_output_selection_ethdebug_optimize_ir/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_output_selection_ethdebug_optimize_iroptimized/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_output_selection_ir_ast_no_experimental/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_output_selection_multiple_matching_source_and_contract_selectors/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_output_selection_multiple_matching_source_and_contract_selectors_full_pipeline/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_output_selection_no_output_selected/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_output_selection_single_all/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_output_selection_single_source_single_contract_multiple_matches/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_output_selection_single_source_single_contract_single_match/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_output_selection_unrecognized_output/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_output_selection_unrecognized_source_and_contract_selectors/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_output_selection_wrong_type/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_output_selection_wrong_type_contract/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_output_selection_wrong_type_output/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_output_selection_wrong_type_source/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_output_selection_yul_cfg_json_no_experimental/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_outputs_on_analysis_error_fatal/ │ │ │ ├── args │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_outputs_on_analysis_error_fatal_after_current_step/ │ │ │ ├── args │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_outputs_on_analysis_error_non_fatal/ │ │ │ ├── args │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_outputs_on_compilation_error/ │ │ │ ├── args │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_outputs_on_parsing_error/ │ │ │ ├── args │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_parsing_import_absolute_paths/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_raw_utf16_filename/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_secondary_source_location/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_stack_too_deep_from_code_transform/ │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_stop_after_parsing_ast_requested/ │ │ │ ├── args │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_stop_after_parsing_bytecode_requested/ │ │ │ ├── args │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_stop_after_parsing_non_binary_output_requested/ │ │ │ ├── args │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_undeployable_contract_all_outputs/ │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_urls_existing_and_missing/ │ │ │ ├── contract.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_urls_missing/ │ │ │ ├── contract.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_via_ssa_cfg_ethdebug/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_via_ssa_cfg_no_experimental/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_via_ssa_cfg_via_ir_false/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_viair_requested/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_wrong_key_auxiliary_input/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_wrong_key_metadata/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_wrong_key_optimizer/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_wrong_key_root/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_wrong_key_settings/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_wrong_key_source/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_wrong_type_auxiliary_input/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_wrong_type_auxiliary_input_smtlib2responses/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_wrong_type_auxiliary_input_smtlib2responses_member/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_wrong_type_metadata/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_wrong_type_optimizer/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_wrong_type_remappings/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_wrong_type_remappings_entry/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_wrong_type_root/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_wrong_type_settings/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_wrong_type_source/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_wrong_type_sources/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_wrong_type_useLiteralContent/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_yul/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_yul_cfg_json_export/ │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_yul_code_generation_error/ │ │ │ ├── args │ │ │ ├── in.yul │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_yul_debug_info_ethdebug_compatible_output/ │ │ │ ├── args │ │ │ ├── in.yul │ │ │ ├── input.json │ │ │ ├── output.json │ │ │ └── strip-ethdebug │ │ ├── standard_yul_debug_info_ethdebug_compatible_output_eof/ │ │ │ ├── args │ │ │ ├── in.yul │ │ │ ├── input.json │ │ │ ├── output.json │ │ │ └── strip-ethdebug │ │ ├── standard_yul_debug_info_ethdebug_incompatible_output/ │ │ │ ├── args │ │ │ ├── in.yul │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_yul_debug_info_ethdebug_verbatim_unimplemented/ │ │ │ ├── args │ │ │ ├── in.yul │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_yul_debug_info_print_all/ │ │ │ ├── args │ │ │ ├── in.yul │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_yul_debug_info_print_location_only/ │ │ │ ├── args │ │ │ ├── in.yul │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_yul_debug_info_print_none/ │ │ │ ├── args │ │ │ ├── in.yul │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_yul_debug_info_print_snippet_only/ │ │ │ ├── args │ │ │ ├── in.yul │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_yul_embedded_object_name/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_yul_eof_unavailable_before_osaka/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_yul_ethdebug_assign_immutable/ │ │ │ ├── args │ │ │ ├── in.yul │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_yul_ethdebug_bytecode_ir/ │ │ │ ├── args │ │ │ ├── in.yul │ │ │ ├── input.json │ │ │ ├── output.json │ │ │ └── strip-ethdebug │ │ ├── standard_yul_ethdebug_bytecode_iroptimized/ │ │ │ ├── args │ │ │ ├── in.yul │ │ │ ├── input.json │ │ │ ├── output.json │ │ │ └── strip-ethdebug │ │ ├── standard_yul_ethdebug_deployed_bytecode/ │ │ │ ├── args │ │ │ ├── in.yul │ │ │ ├── input.json │ │ │ ├── output.json │ │ │ └── strip-ethdebug │ │ ├── standard_yul_ethdebug_deployed_bytecode_and_bytecode/ │ │ │ ├── args │ │ │ ├── in.yul │ │ │ ├── input.json │ │ │ ├── output.json │ │ │ └── strip-ethdebug │ │ ├── standard_yul_ethdebug_eof/ │ │ │ ├── args │ │ │ ├── in.yul │ │ │ ├── input.json │ │ │ ├── output.json │ │ │ └── strip-ethdebug │ │ ├── standard_yul_ethdebug_ir/ │ │ │ ├── args │ │ │ ├── in.yul │ │ │ ├── input.json │ │ │ ├── output.json │ │ │ └── strip-ethdebug │ │ ├── standard_yul_ethdebug_iroptimize/ │ │ │ ├── args │ │ │ ├── in.yul │ │ │ ├── input.json │ │ │ ├── output.json │ │ │ └── strip-ethdebug │ │ ├── standard_yul_ethdebug_no_experimental/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_yul_ethdebug_optimize_ir/ │ │ │ ├── args │ │ │ ├── in.yul │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_yul_ethdebug_optimize_iroptimized/ │ │ │ ├── args │ │ │ ├── in.yul │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_yul_evm_version_byzantium/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_yul_evm_version_constantinople/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_yul_immutable_references/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_yul_invalid_object_name/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_yul_ir_ast_no_experimental/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_yul_multiple_files/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_yul_multiple_files_selected/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_yul_object/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_yul_object_invalid_sub/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_yul_object_name/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_yul_optimiserSteps/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_yul_optimized/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_yul_output_warning/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_yul_single_file_via_urls/ │ │ │ ├── args │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_yul_stack_opt/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── standard_yul_stack_opt_disabled/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── stdin/ │ │ │ ├── args │ │ │ └── stdin │ │ ├── stop_after_parsing_abi/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── stop_after_parsing_ast/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── storage_layout_already_defined_in_ancestor/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── stdin │ │ ├── storage_layout_bytes/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── storage_layout_dyn_array/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── storage_layout_many/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── storage_layout_mapping/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── storage_layout_smoke/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── storage_layout_smoke_two_contracts/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── storage_layout_specifier_repeated_definition_error/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── stdin │ │ ├── storage_layout_specifier_smoke/ │ │ │ ├── args │ │ │ ├── output │ │ │ └── stdin │ │ ├── storage_layout_specifier_smoke_ir_codegen/ │ │ │ ├── args │ │ │ ├── output │ │ │ └── stdin │ │ ├── storage_layout_specifier_storage_layout_output/ │ │ │ ├── args │ │ │ ├── output │ │ │ └── stdin │ │ ├── storage_layout_string/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── storage_layout_struct/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── storage_layout_struct_packed/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── storage_layout_transient_value_types/ │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── storage_layout_user_defined/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── input.sol │ │ │ └── output │ │ ├── storage_layout_user_defined_no_pretty_print/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── storage_layout_value_types/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── storage_layout_value_types_packed/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── storage_transient_storage_collision_ir_output/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── strict_asm_asm_json_arbitrary_source_index/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── stdin │ │ ├── strict_asm_asm_json_subobjects_with_debug/ │ │ │ ├── args │ │ │ ├── output │ │ │ └── stdin │ │ ├── strict_asm_asm_json_with_debug_info_annotations/ │ │ │ ├── args │ │ │ ├── output │ │ │ └── stdin │ │ ├── strict_asm_asm_json_without_debug_info_annotations/ │ │ │ ├── args │ │ │ ├── output │ │ │ └── stdin │ │ ├── strict_asm_asm_json_yul_verbatim/ │ │ │ ├── args │ │ │ ├── output │ │ │ └── stdin │ │ ├── strict_asm_ast_compact_json/ │ │ │ ├── args │ │ │ ├── input.yul │ │ │ └── output │ │ ├── strict_asm_code_generation_error/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.yul │ │ ├── strict_asm_debug_info_print_all/ │ │ │ ├── args │ │ │ ├── input.yul │ │ │ └── output │ │ ├── strict_asm_debug_info_print_location_only/ │ │ │ ├── args │ │ │ ├── input.yul │ │ │ └── output │ │ ├── strict_asm_debug_info_print_none/ │ │ │ ├── args │ │ │ ├── input.yul │ │ │ └── output │ │ ├── strict_asm_debug_info_print_snippet_only/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.yul │ │ ├── strict_asm_eof_container_osaka/ │ │ │ ├── args │ │ │ ├── input.yul │ │ │ └── output │ │ ├── strict_asm_eof_dataloadn_osaka/ │ │ │ ├── args │ │ │ ├── input.yul │ │ │ └── output │ │ ├── strict_asm_eof_unavailable_before_osaka/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.yul │ │ ├── strict_asm_evm_version_byzantium/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── input.yul │ │ │ └── output │ │ ├── strict_asm_evm_version_constantinople/ │ │ │ ├── args │ │ │ ├── input.yul │ │ │ └── output │ │ ├── strict_asm_invalid_option_output_dir/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.yul │ │ ├── strict_asm_jump/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.yul │ │ ├── strict_asm_msize_with_optimizer/ │ │ │ ├── args │ │ │ ├── input.yul │ │ │ └── output │ │ ├── strict_asm_msize_without_optimizer/ │ │ │ ├── args │ │ │ ├── input.yul │ │ │ └── output │ │ ├── strict_asm_only_cr/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.yul │ │ ├── strict_asm_optimizer_invalid_yul_optimizer_enabled_and_disabled/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.yul │ │ ├── strict_asm_optimizer_steps/ │ │ │ ├── args │ │ │ ├── input.yul │ │ │ └── output │ │ ├── strict_asm_options_in_non_asm_mode/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── strict_asm_output_selection_asm_only/ │ │ │ ├── args │ │ │ ├── input.yul │ │ │ └── output │ │ ├── strict_asm_output_selection_bin_only/ │ │ │ ├── args │ │ │ ├── input.yul │ │ │ └── output │ │ ├── strict_asm_output_selection_invalid/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.yul │ │ ├── strict_asm_output_selection_ir_optimized_only/ │ │ │ ├── args │ │ │ ├── input.yul │ │ │ └── output │ │ ├── strict_asm_warning/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── input.yul │ │ │ └── output │ │ ├── strict_asm_warning_and_error_optimize/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.yul │ │ ├── strict_asm_warning_optimize/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── input.yul │ │ │ └── output │ │ ├── strict_asm_warning_optimize_unreachable/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── input.yul │ │ │ └── output │ │ ├── strict_asm_yul_cfg_json_export/ │ │ │ ├── args │ │ │ ├── input.yul │ │ │ └── output │ │ ├── structured_documentation_source_location/ │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── too_long_line/ │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── too_long_line_both_sides_short/ │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── too_long_line_edge_in/ │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── too_long_line_edge_out/ │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── too_long_line_left_short/ │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── too_long_line_multiline/ │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── too_long_line_right_short/ │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── transient_storage_layout/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── transient_storage_layout_smoke_empty/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── transient_storage_layout_smoke_two_contracts/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── transient_storage_layout_value_types/ │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── transient_storage_layout_value_types_interleaved_with_storage/ │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── transient_storage_layout_value_types_packed/ │ │ │ ├── in.sol │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── undeployable_contract_empty_outputs/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── via_ssa_cfg_ethdebug/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── via_ssa_cfg_without_experimental/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── viair_abicoder_v1/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── input.sol │ │ │ └── output │ │ ├── viair_msize_without_optimizer/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── viair_subobject_optimization/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── viair_subobjects/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── input.sol │ │ │ └── output │ │ ├── yul_cfg_json_export/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── yul_function_name_clashes/ │ │ │ ├── args │ │ │ ├── input.yul │ │ │ └── output │ │ ├── yul_function_name_clashes_different_params/ │ │ │ ├── args │ │ │ ├── input.yul │ │ │ └── output │ │ ├── yul_optimize_runs/ │ │ │ ├── args │ │ │ ├── input.yul │ │ │ └── output │ │ ├── yul_optimizer_disabled_sequence_empty/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── yul_optimizer_erc7201_literal_comptime_evaluation/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── yul_optimizer_erc7201_param_calldata/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── yul_optimizer_erc7201_param_memory/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── yul_optimizer_erc7201_param_storage/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── yul_optimizer_steps/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── yul_optimizer_steps_disabled/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── yul_optimizer_steps_invalid_abbreviation/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── yul_optimizer_steps_invalid_substitution_in_expression_simplifier/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── yul_optimizer_steps_nested_brackets/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── yul_optimizer_steps_nesting_too_deep/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── yul_optimizer_steps_short_sequence/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── yul_optimizer_steps_unbalanced_closing_bracket/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── yul_optimizer_steps_unbalanced_opening_bracket/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── exit │ │ │ └── input.sol │ │ ├── yul_optimizer_steps_with_empty_cleanup_sequence/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── yul_optimizer_steps_with_empty_optimization_sequence/ │ │ │ ├── args │ │ │ ├── input.sol │ │ │ └── output │ │ ├── yul_optimizer_steps_without_optimize_empty_sequence/ │ │ │ ├── args │ │ │ ├── err │ │ │ ├── input.sol │ │ │ └── output │ │ ├── yul_string_format_ascii/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── yul_string_format_ascii_bytes32/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── yul_string_format_ascii_bytes32_from_number/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── yul_string_format_ascii_long/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── yul_string_format_hex/ │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── yul_verbatim/ │ │ │ ├── args │ │ │ ├── input.yul │ │ │ └── output │ │ ├── yul_verbatim_msize/ │ │ │ ├── args │ │ │ ├── input.yul │ │ │ └── output │ │ ├── ~assembler_modes/ │ │ │ └── test.sh │ │ ├── ~ast_export_with_stop_after_parsing/ │ │ │ └── test.sh │ │ ├── ~ast_import_export/ │ │ │ └── test.sh │ │ ├── ~bytecode_equivalence_independent_of_import_discovery_order/ │ │ │ ├── inputs.sol │ │ │ └── test.py │ │ ├── ~bytecode_equivalence_with_unused_contracts/ │ │ │ ├── inputs.sol │ │ │ └── test.py │ │ ├── ~cli_and_standard_json_equivalence/ │ │ │ └── test.sh │ │ ├── ~compilation_tests/ │ │ │ └── test.sh │ │ ├── ~deduplicator-verbatim-bug/ │ │ │ ├── test.sh │ │ │ └── verbatim_inside_identical_blocks.yul │ │ ├── ~documentation_examples/ │ │ │ └── test.sh │ │ ├── ~evmasm_import_export/ │ │ │ └── test.sh │ │ ├── ~library_checksum/ │ │ │ └── test.sh │ │ ├── ~library_long_names/ │ │ │ └── test.sh │ │ ├── ~linking/ │ │ │ └── test.sh │ │ ├── ~name_dependent_cse_bug/ │ │ │ ├── cse_bug.yul │ │ │ └── test.sh │ │ ├── ~overwriting_files/ │ │ │ └── test.sh │ │ ├── ~soljson_via_fuzzer/ │ │ │ └── test.sh │ │ ├── ~standard_input/ │ │ │ └── test.sh │ │ ├── ~unknown_options/ │ │ │ └── test.sh │ │ ├── ~update_bugs_by_version/ │ │ │ └── test.sh │ │ └── ~via_ir_equivalence/ │ │ └── test.sh │ ├── cmdlineTests.sh │ ├── compilationTests/ │ │ ├── MultiSigWallet/ │ │ │ ├── Factory.sol │ │ │ ├── LICENSE │ │ │ ├── MultiSigWallet.sol │ │ │ ├── MultiSigWalletFactory.sol │ │ │ ├── MultiSigWalletWithDailyLimit.sol │ │ │ ├── MultiSigWalletWithDailyLimitFactory.sol │ │ │ ├── README.md │ │ │ └── TestToken.sol │ │ ├── README.md │ │ ├── corion/ │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── announcementTypes.sol │ │ │ ├── ico.sol │ │ │ ├── module.sol │ │ │ ├── moduleHandler.sol │ │ │ ├── multiOwner.sol │ │ │ ├── owned.sol │ │ │ ├── premium.sol │ │ │ ├── provider.sol │ │ │ ├── publisher.sol │ │ │ ├── safeMath.sol │ │ │ ├── schelling.sol │ │ │ ├── token.sol │ │ │ └── tokenDB.sol │ │ ├── gnosis/ │ │ │ ├── Events/ │ │ │ │ ├── CategoricalEvent.sol │ │ │ │ ├── Event.sol │ │ │ │ ├── EventFactory.sol │ │ │ │ └── ScalarEvent.sol │ │ │ ├── LICENSE │ │ │ ├── MarketMakers/ │ │ │ │ ├── LMSRMarketMaker.sol │ │ │ │ └── MarketMaker.sol │ │ │ ├── Markets/ │ │ │ │ ├── Campaign.sol │ │ │ │ ├── CampaignFactory.sol │ │ │ │ ├── Market.sol │ │ │ │ ├── MarketFactory.sol │ │ │ │ ├── StandardMarket.sol │ │ │ │ └── StandardMarketFactory.sol │ │ │ ├── Migrations.sol │ │ │ ├── Oracles/ │ │ │ │ ├── CentralizedOracle.sol │ │ │ │ ├── CentralizedOracleFactory.sol │ │ │ │ ├── DifficultyOracle.sol │ │ │ │ ├── DifficultyOracleFactory.sol │ │ │ │ ├── FutarchyOracle.sol │ │ │ │ ├── FutarchyOracleFactory.sol │ │ │ │ ├── MajorityOracle.sol │ │ │ │ ├── MajorityOracleFactory.sol │ │ │ │ ├── Oracle.sol │ │ │ │ ├── SignedMessageOracle.sol │ │ │ │ ├── SignedMessageOracleFactory.sol │ │ │ │ ├── UltimateOracle.sol │ │ │ │ └── UltimateOracleFactory.sol │ │ │ ├── README.md │ │ │ ├── Tokens/ │ │ │ │ ├── EtherToken.sol │ │ │ │ ├── OutcomeToken.sol │ │ │ │ ├── StandardToken.sol │ │ │ │ └── Token.sol │ │ │ └── Utils/ │ │ │ └── Math.sol │ │ └── milestonetracker/ │ │ ├── LICENSE │ │ ├── MilestoneTracker.sol │ │ ├── README.md │ │ └── RLP.sol │ ├── contracts/ │ │ ├── AuctionRegistrar.cpp │ │ ├── ContractInterface.h │ │ └── Wallet.cpp │ ├── docsCodeStyle.sh │ ├── ethdebugSchemaTests/ │ │ ├── conftest.py │ │ ├── input_file.json │ │ ├── input_file_eof.json │ │ └── test_ethdebug_schema_conformity.py │ ├── evmc/ │ │ ├── CMakeLists.txt │ │ ├── LICENSE │ │ ├── README.md │ │ ├── bytes.hpp │ │ ├── evmc.h │ │ ├── evmc.hpp │ │ ├── filter_iterator.hpp │ │ ├── helpers.h │ │ ├── hex.hpp │ │ ├── loader.c │ │ ├── loader.h │ │ ├── mocked_host.hpp │ │ └── utils.h │ ├── externalTests/ │ │ ├── README.md │ │ ├── bleeps.sh │ │ ├── brink.sh │ │ ├── chainlink.sh │ │ ├── colony.sh │ │ ├── elementfi.sh │ │ ├── ens.sh │ │ ├── euler.sh │ │ ├── gnosis.sh │ │ ├── gp2.sh │ │ ├── pool-together.sh │ │ ├── prb-math.py │ │ ├── solc-js/ │ │ │ ├── DAO/ │ │ │ │ ├── DAO.sol │ │ │ │ ├── ManagedAccount.sol │ │ │ │ ├── Token.sol │ │ │ │ └── TokenCreation.sol │ │ │ ├── asm-json.js │ │ │ ├── determinism.js │ │ │ └── solc-js.sh │ │ ├── trident.sh │ │ ├── uniswap.sh │ │ ├── yield-liquidator.sh │ │ └── zeppelin.sh │ ├── external_tests.py │ ├── formal/ │ │ ├── README.md │ │ ├── and_distributed_over_shl.py │ │ ├── byte_big.py │ │ ├── byte_equivalence.py │ │ ├── checked_int_add.py │ │ ├── checked_int_div.py │ │ ├── checked_int_mul_12.py │ │ ├── checked_int_sub.py │ │ ├── checked_uint_add.py │ │ ├── checked_uint_mul_12.py │ │ ├── checked_uint_sub.py │ │ ├── combine_byte_shl.py │ │ ├── combine_byte_shr_1.py │ │ ├── combine_byte_shr_2.py │ │ ├── combine_div_shl_one_32.py │ │ ├── combine_mul_shl_one_64.py │ │ ├── combine_shl_shr_by_constant_64.py │ │ ├── combine_shr_shl_by_constant_64.py │ │ ├── eq_sub.py │ │ ├── exp_neg_one.py │ │ ├── exp_to_shl.py │ │ ├── mod_add_to_addmod.py │ │ ├── mod_mul_to_mulmod.py │ │ ├── move_and_across_shl_128.py │ │ ├── move_and_across_shr_128.py │ │ ├── move_and_inside_or.py │ │ ├── opcodes.py │ │ ├── redundant_store_unrelated.py │ │ ├── repeated_and.py │ │ ├── repeated_or.py │ │ ├── replace_mul_by_shift.py │ │ ├── rule.py │ │ ├── shl_workaround_8.py │ │ ├── signed_integer_cleanup_function.py │ │ ├── signextend.py │ │ ├── signextend_and.py │ │ ├── signextend_equivalence.py │ │ ├── signextend_shl.py │ │ ├── signextend_shr.py │ │ ├── smod.py │ │ ├── sub_not_zero_x_to_not_x_256.py │ │ ├── sub_sub.py │ │ ├── unsigned_integer_cleanup_function.py │ │ └── util.py │ ├── libevmasm/ │ │ ├── Assembler.cpp │ │ ├── EVMAssemblyTest.cpp │ │ ├── EVMAssemblyTest.h │ │ ├── Optimiser.cpp │ │ ├── PlainAssemblyParser.cpp │ │ ├── PlainAssemblyParser.h │ │ └── evmAssemblyTests/ │ │ └── isoltestTesting/ │ │ ├── code_generation_error.asmjson │ │ ├── comments.asm │ │ ├── empty.asm │ │ ├── invalid_json.asmjson │ │ ├── jumps.asm │ │ ├── nontrivial_subassembly_ids.asm │ │ ├── operations.asm │ │ ├── push.asm │ │ ├── pushsize.asm │ │ ├── pushsubsize.asm │ │ ├── settings_eof_version.asmjson │ │ ├── settings_evm_version.asmjson │ │ ├── settings_optimizer_constant_optimizer.asmjson │ │ ├── settings_optimizer_cse.asmjson │ │ ├── settings_optimizer_deduplicate.asmjson │ │ ├── settings_optimizer_expected_executions_per_deployment.asmjson │ │ ├── settings_optimizer_inliner.asmjson │ │ ├── settings_optimizer_jumpdest_remover.asmjson │ │ ├── settings_optimizer_peephole.asmjson │ │ ├── settings_optimizer_preset.asmjson │ │ ├── settings_outputs.asmjson │ │ ├── smoke.asmjson │ │ ├── smoke_plain.asm │ │ ├── subassemblies.asm │ │ ├── subassemblies_empty.asm │ │ └── subassemblies_nested.asm │ ├── liblangutil/ │ │ ├── CharStream.cpp │ │ ├── Scanner.cpp │ │ └── SourceLocation.cpp │ ├── libsolidity/ │ │ ├── ABIDecoderTests.cpp │ │ ├── ABIEncoderTests.cpp │ │ ├── ABIJson/ │ │ │ ├── basic_test.sol │ │ │ ├── constructor_abi.sol │ │ │ ├── empty_contract.sol │ │ │ ├── empty_name_input_parameter_with_named_one.sol │ │ │ ├── empty_name_return_parameters.sol │ │ │ ├── errors.sol │ │ │ ├── errors_referenced.sol │ │ │ ├── event_emitted_from_foreign_contract.sol │ │ │ ├── event_emitted_in_base_contract.sol │ │ │ ├── event_file_level.sol │ │ │ ├── event_from_aggregated_contract_not_emitted.sol │ │ │ ├── event_inheritance.sol │ │ │ ├── event_structs.sol │ │ │ ├── events.sol │ │ │ ├── events_anonymous.sol │ │ │ ├── events_indirect.sol │ │ │ ├── events_repetitions.sol │ │ │ ├── function_type.sol │ │ │ ├── function_type_extended.sol │ │ │ ├── global_struct.sol │ │ │ ├── include_fallback_function.sol │ │ │ ├── inherited.sol │ │ │ ├── internal_constructor.sol │ │ │ ├── library_function.sol │ │ │ ├── mapping.sol │ │ │ ├── multiple_methods.sol │ │ │ ├── multiple_methods_order.sol │ │ │ ├── multiple_params.sol │ │ │ ├── payable_constructor_abi.sol │ │ │ ├── payable_fallback_function.sol │ │ │ ├── payable_function.sol │ │ │ ├── pure_function.sol │ │ │ ├── receive_ether_and_fallback_function.sol │ │ │ ├── receive_ether_function.sol │ │ │ ├── return_param_in_abi.sol │ │ │ ├── return_structs.sol │ │ │ ├── return_structs_with_contracts.sol │ │ │ ├── same_event_defined_twice.sol │ │ │ ├── structs_and_arrays.sol │ │ │ ├── structs_in_libraries.sol │ │ │ ├── user_defined_value_type.sol │ │ │ └── view_function.sol │ │ ├── ABIJsonTest.cpp │ │ ├── ABIJsonTest.h │ │ ├── ABITestsCommon.h │ │ ├── ASTJSON/ │ │ │ ├── abstract_contract.json │ │ │ ├── abstract_contract.sol │ │ │ ├── abstract_contract_parseOnly.json │ │ │ ├── address_payable.json │ │ │ ├── address_payable.sol │ │ │ ├── address_payable_parseOnly.json │ │ │ ├── array_type_name.json │ │ │ ├── array_type_name.sol │ │ │ ├── array_type_name_parseOnly.json │ │ │ ├── assembly/ │ │ │ │ ├── call.json │ │ │ │ ├── call.sol │ │ │ │ ├── call_legacy.json │ │ │ │ ├── call_parseOnly.json │ │ │ │ ├── empty_block.json │ │ │ │ ├── empty_block.sol │ │ │ │ ├── empty_block_legacy.json │ │ │ │ ├── empty_block_parseOnly.json │ │ │ │ ├── empty_let_variable_declaration.json │ │ │ │ ├── empty_let_variable_declaration.sol │ │ │ │ ├── empty_let_variable_declaration_parseOnly.json │ │ │ │ ├── function.json │ │ │ │ ├── function.sol │ │ │ │ ├── function_legacy.json │ │ │ │ ├── function_parseOnly.json │ │ │ │ ├── leave.json │ │ │ │ ├── leave.sol │ │ │ │ ├── leave_legacy.json │ │ │ │ ├── leave_parseOnly.json │ │ │ │ ├── loop.json │ │ │ │ ├── loop.sol │ │ │ │ ├── loop_legacy.json │ │ │ │ ├── loop_parseOnly.json │ │ │ │ ├── nested_functions.json │ │ │ │ ├── nested_functions.sol │ │ │ │ ├── nested_functions_legacy.json │ │ │ │ ├── nested_functions_parseOnly.json │ │ │ │ ├── slot_offset.json │ │ │ │ ├── slot_offset.sol │ │ │ │ ├── slot_offset_legacy.json │ │ │ │ ├── slot_offset_parseOnly.json │ │ │ │ ├── stringlit.json │ │ │ │ ├── stringlit.sol │ │ │ │ ├── stringlit_legacy.json │ │ │ │ ├── stringlit_parseOnly.json │ │ │ │ ├── switch.json │ │ │ │ ├── switch.sol │ │ │ │ ├── switch_default.json │ │ │ │ ├── switch_default.sol │ │ │ │ ├── switch_default_legacy.json │ │ │ │ ├── switch_default_parseOnly.json │ │ │ │ ├── switch_legacy.json │ │ │ │ ├── switch_parseOnly.json │ │ │ │ ├── var_access.json │ │ │ │ ├── var_access.sol │ │ │ │ ├── var_access_legacy.json │ │ │ │ └── var_access_parseOnly.json │ │ │ ├── ast_internal_function_different_ids_export.json │ │ │ ├── ast_internal_function_different_ids_export.sol │ │ │ ├── ast_internal_function_id_export.json │ │ │ ├── ast_internal_function_id_export.sol │ │ │ ├── base_constructor_call.json │ │ │ ├── base_constructor_call.sol │ │ │ ├── base_constructor_call_parseOnly.json │ │ │ ├── constructor.json │ │ │ ├── constructor.sol │ │ │ ├── constructor_parseOnly.json │ │ │ ├── contract_dep_order.json │ │ │ ├── contract_dep_order.sol │ │ │ ├── contract_dep_order_parseOnly.json │ │ │ ├── documentation.json │ │ │ ├── documentation.sol │ │ │ ├── documentation_local_variable.json │ │ │ ├── documentation_local_variable.sol │ │ │ ├── documentation_local_variable_parseOnly.json │ │ │ ├── documentation_on_statements.json │ │ │ ├── documentation_on_statements.sol │ │ │ ├── documentation_on_statements_parseOnly.json │ │ │ ├── documentation_parseOnly.json │ │ │ ├── documentation_triple.json │ │ │ ├── documentation_triple.sol │ │ │ ├── documentation_triple_parseOnly.json │ │ │ ├── emit_event_from_module_via_member_access.json │ │ │ ├── emit_event_from_module_via_member_access.sol │ │ │ ├── enum_natspec.json │ │ │ ├── enum_natspec.sol │ │ │ ├── enum_natspec_parseOnly.json │ │ │ ├── enum_value.json │ │ │ ├── enum_value.sol │ │ │ ├── enum_value_declaration.json │ │ │ ├── enum_value_declaration.sol │ │ │ ├── enum_value_declaration_parseOnly.json │ │ │ ├── enum_value_natspec.json │ │ │ ├── enum_value_natspec.sol │ │ │ ├── enum_value_natspec_parseOnly.json │ │ │ ├── enum_value_parseOnly.json │ │ │ ├── error_from_module_via_member_access.json │ │ │ ├── error_from_module_via_member_access.sol │ │ │ ├── event_aggregated_contract.json │ │ │ ├── event_aggregated_contract.sol │ │ │ ├── event_definition.json │ │ │ ├── event_definition.sol │ │ │ ├── event_definition_parseOnly.json │ │ │ ├── event_emited_in_base_contract.json │ │ │ ├── event_emited_in_base_contract.sol │ │ │ ├── event_emitted_from_foreign_contract.json │ │ │ ├── event_emitted_from_foreign_contract.sol │ │ │ ├── event_emitted_from_foreign_contract_parseOnly.json │ │ │ ├── event_inheritance.json │ │ │ ├── event_inheritance.sol │ │ │ ├── event_with_variables_of_internal_types.sol │ │ │ ├── event_with_variables_of_internal_types_parseOnly.json │ │ │ ├── fail_after_parsing.sol │ │ │ ├── fail_after_parsing_parseOnly.json │ │ │ ├── fallback.json │ │ │ ├── fallback.sol │ │ │ ├── fallback_and_receive_ether.json │ │ │ ├── fallback_and_receive_ether.sol │ │ │ ├── fallback_and_receive_ether_parseOnly.json │ │ │ ├── fallback_parseOnly.json │ │ │ ├── fallback_payable.json │ │ │ ├── fallback_payable.sol │ │ │ ├── fallback_payable_parseOnly.json │ │ │ ├── function_type.json │ │ │ ├── function_type.sol │ │ │ ├── function_type_parseOnly.json │ │ │ ├── global_enum.json │ │ │ ├── global_enum.sol │ │ │ ├── global_enum_parseOnly.json │ │ │ ├── global_struct.json │ │ │ ├── global_struct.sol │ │ │ ├── global_struct_parseOnly.json │ │ │ ├── indirect_event.json │ │ │ ├── indirect_event.sol │ │ │ ├── indirect_event_parseOnly.json │ │ │ ├── inheritance_specifier.json │ │ │ ├── inheritance_specifier.sol │ │ │ ├── inheritance_specifier_parseOnly.json │ │ │ ├── license.json │ │ │ ├── license.sol │ │ │ ├── license_parseOnly.json │ │ │ ├── long_type_name_binary_operation.json │ │ │ ├── long_type_name_binary_operation.sol │ │ │ ├── long_type_name_binary_operation_parseOnly.json │ │ │ ├── long_type_name_identifier.json │ │ │ ├── long_type_name_identifier.sol │ │ │ ├── long_type_name_identifier_parseOnly.json │ │ │ ├── mappings.json │ │ │ ├── mappings.sol │ │ │ ├── mappings_parseOnly.json │ │ │ ├── modifier_definition.json │ │ │ ├── modifier_definition.sol │ │ │ ├── modifier_definition_parseOnly.json │ │ │ ├── modifier_invocation.json │ │ │ ├── modifier_invocation.sol │ │ │ ├── modifier_invocation_parseOnly.json │ │ │ ├── mutability.json │ │ │ ├── mutability.sol │ │ │ ├── mutability_parseOnly.json │ │ │ ├── non_utf8.json │ │ │ ├── non_utf8.sol │ │ │ ├── non_utf8_parseOnly.json │ │ │ ├── not_existing_import.sol │ │ │ ├── not_existing_import_parseOnly.json │ │ │ ├── override.json │ │ │ ├── override.sol │ │ │ ├── override_parseOnly.json │ │ │ ├── placeholder_statement.json │ │ │ ├── placeholder_statement.sol │ │ │ ├── placeholder_statement_parseOnly.json │ │ │ ├── pragma_experimental_solidity.sol │ │ │ ├── pragma_experimental_solidity_parseOnly.json │ │ │ ├── receive_ether.json │ │ │ ├── receive_ether.sol │ │ │ ├── receive_ether_parseOnly.json │ │ │ ├── short_type_name.json │ │ │ ├── short_type_name.sol │ │ │ ├── short_type_name_parseOnly.json │ │ │ ├── short_type_name_ref.json │ │ │ ├── short_type_name_ref.sol │ │ │ ├── short_type_name_ref_parseOnly.json │ │ │ ├── smoke.json │ │ │ ├── smoke.sol │ │ │ ├── smoke_parseOnly.json │ │ │ ├── source_location.json │ │ │ ├── source_location.sol │ │ │ ├── source_location_parseOnly.json │ │ │ ├── storage_layout_specifier.json │ │ │ ├── storage_layout_specifier.sol │ │ │ ├── string.json │ │ │ ├── string.sol │ │ │ ├── string_parseOnly.json │ │ │ ├── struct_natspec.json │ │ │ ├── struct_natspec.sol │ │ │ ├── struct_natspec_parseOnly.json │ │ │ ├── two_base_functions.json │ │ │ ├── two_base_functions.sol │ │ │ ├── two_base_functions_parseOnly.json │ │ │ ├── unicode.json │ │ │ ├── unicode.sol │ │ │ ├── unicode_parseOnly.json │ │ │ ├── used_errors.json │ │ │ ├── used_errors.sol │ │ │ ├── used_errors_parseOnly.json │ │ │ ├── userDefinedValueType.json │ │ │ ├── userDefinedValueType.sol │ │ │ ├── userDefinedValueType_parseOnly.json │ │ │ ├── user_defined_operator.json │ │ │ ├── user_defined_operator.sol │ │ │ ├── using_for_directive.json │ │ │ ├── using_for_directive.sol │ │ │ ├── using_for_directive_parseOnly.json │ │ │ ├── yul_hex_literal.json │ │ │ ├── yul_hex_literal.sol │ │ │ └── yul_hex_literal_parseOnly.json │ │ ├── ASTJSONTest.cpp │ │ ├── ASTJSONTest.h │ │ ├── ASTPropertyTest.cpp │ │ ├── ASTPropertyTest.h │ │ ├── AnalysisFramework.cpp │ │ ├── AnalysisFramework.h │ │ ├── Assembly.cpp │ │ ├── ErrorCheck.cpp │ │ ├── ErrorCheck.h │ │ ├── FunctionDependencyGraphTest.cpp │ │ ├── FunctionDependencyGraphTest.h │ │ ├── GasCosts.cpp │ │ ├── GasMeter.cpp │ │ ├── GasTest.cpp │ │ ├── GasTest.h │ │ ├── Imports.cpp │ │ ├── InlineAssembly.cpp │ │ ├── LibSolc.cpp │ │ ├── MemoryGuardTest.cpp │ │ ├── MemoryGuardTest.h │ │ ├── Metadata.cpp │ │ ├── NatspecJSONTest.cpp │ │ ├── NatspecJSONTest.h │ │ ├── OptimizedIRCachingTest.cpp │ │ ├── OptimizedIRCachingTest.h │ │ ├── SMTCheckerTest.cpp │ │ ├── SMTCheckerTest.h │ │ ├── SemVerMatcher.cpp │ │ ├── SemanticTest.cpp │ │ ├── SemanticTest.h │ │ ├── SolidityCompiler.cpp │ │ ├── SolidityEndToEndTest.cpp │ │ ├── SolidityExecutionFramework.cpp │ │ ├── SolidityExecutionFramework.h │ │ ├── SolidityExpressionCompiler.cpp │ │ ├── SolidityNameAndTypeResolution.cpp │ │ ├── SolidityOptimizer.cpp │ │ ├── SolidityParser.cpp │ │ ├── SolidityTypes.cpp │ │ ├── StandardCompiler.cpp │ │ ├── SyntaxTest.cpp │ │ ├── SyntaxTest.h │ │ ├── ViewPureChecker.cpp │ │ ├── analysis/ │ │ │ └── FunctionCallGraph.cpp │ │ ├── astPropertyTests/ │ │ │ ├── blank_test_case.sol │ │ │ ├── forLoop/ │ │ │ │ ├── isSimpleCounterLoop_negative_cases.sol │ │ │ │ └── isSimpleCounterLoop_positive_cases.sol │ │ │ ├── multiple_nested_properties_per_node.sol │ │ │ ├── multiple_properties_per_node.sol │ │ │ ├── nested_properties.sol │ │ │ ├── property_expectation_with_colon.sol │ │ │ ├── simple_properties.sol │ │ │ └── transient_data_location.sol │ │ ├── functionDependencyGraphTests/ │ │ │ ├── callgraph.sol │ │ │ └── callgraph_no_leaves.sol │ │ ├── gasTests/ │ │ │ ├── abiv2.sol │ │ │ ├── abiv2_optimised.sol │ │ │ ├── data_storage.sol │ │ │ ├── dispatch_large.sol │ │ │ ├── dispatch_large_optimised.sol │ │ │ ├── dispatch_medium.sol │ │ │ ├── dispatch_medium_optimised.sol │ │ │ ├── dispatch_small.sol │ │ │ ├── dispatch_small_optimised.sol │ │ │ ├── exp.sol │ │ │ ├── exp_optimized.sol │ │ │ └── storage_costs.sol │ │ ├── interface/ │ │ │ └── FileReader.cpp │ │ ├── lsp/ │ │ │ ├── analyze-full-project/ │ │ │ │ ├── C.sol │ │ │ │ ├── D.sol │ │ │ │ └── E.sol │ │ │ ├── didChange_template.sol │ │ │ ├── didOpen_with_import.sol │ │ │ ├── goto/ │ │ │ │ ├── goto_definition.sol │ │ │ │ ├── goto_definition_imports.sol │ │ │ │ ├── lib.sol │ │ │ │ ├── publish_diagnostics_1.sol │ │ │ │ └── publish_diagnostics_2.sol │ │ │ ├── hover/ │ │ │ │ └── hover.sol │ │ │ ├── include-paths/ │ │ │ │ ├── default_include.sol │ │ │ │ ├── file_at_include_path.sol │ │ │ │ ├── file_not_found_in_searchpath.sol │ │ │ │ └── using-custom-includes.sol │ │ │ ├── include-paths-nested/ │ │ │ │ ├── A/ │ │ │ │ │ ├── B/ │ │ │ │ │ │ ├── C/ │ │ │ │ │ │ │ └── foo.sol │ │ │ │ │ │ └── foo.sol │ │ │ │ │ └── foo.sol │ │ │ │ └── foo.sol │ │ │ ├── include-paths-nested-2/ │ │ │ │ ├── A/ │ │ │ │ │ ├── B/ │ │ │ │ │ │ ├── C/ │ │ │ │ │ │ │ └── foo.sol │ │ │ │ │ │ └── foo.sol │ │ │ │ │ └── foo.sol │ │ │ │ └── foo.sol │ │ │ ├── other-include-dir/ │ │ │ │ └── otherlib/ │ │ │ │ ├── otherlib.sol │ │ │ │ └── second.sol │ │ │ ├── publish_diagnostics_3.sol │ │ │ ├── rename/ │ │ │ │ ├── contract.sol │ │ │ │ ├── function.sol │ │ │ │ ├── functionCall.sol │ │ │ │ ├── import_directive.sol │ │ │ │ └── variable.sol │ │ │ └── semanticTokens/ │ │ │ ├── enums.sol │ │ │ ├── functions.sol │ │ │ ├── modifiers.sol │ │ │ └── structs.sol │ │ ├── memoryGuardTests/ │ │ │ ├── comment/ │ │ │ │ ├── constructor_safe_deploy_unsafe.sol │ │ │ │ ├── constructor_unsafe_deploy_safe.sol │ │ │ │ ├── free_function.sol │ │ │ │ ├── multi_annotation.sol │ │ │ │ ├── multiple_contracts.sol │ │ │ │ ├── safe_and_unmarked_empty.sol │ │ │ │ └── safe_and_unmarked_unsafe.sol │ │ │ ├── dialectString/ │ │ │ │ ├── constructor_safe_deploy_unsafe.sol │ │ │ │ ├── constructor_unsafe_deploy_safe.sol │ │ │ │ ├── free_function.sol │ │ │ │ ├── multiple_contracts.sol │ │ │ │ ├── safe_and_unmarked_empty.sol │ │ │ │ ├── safe_and_unmarked_unsafe.sol │ │ │ │ └── stub.sol │ │ │ ├── marked_empty.sol │ │ │ ├── marked_with_memory_access.sol │ │ │ ├── shadowing_memoryguard_with_inline_assembly_identifiers.sol │ │ │ ├── stub.sol │ │ │ ├── unmarked_but_no_memory_access.sol │ │ │ ├── unmarked_empty.sol │ │ │ ├── unmarked_with_memory_access_mcopy.sol │ │ │ ├── unmarked_with_memory_access_mcopy_zero_size.sol │ │ │ ├── unmarked_with_memory_access_mstore.sol │ │ │ └── unmarked_with_memory_assignment.sol │ │ ├── natspecJSON/ │ │ │ ├── custom.sol │ │ │ ├── custom_inheritance.sol │ │ │ ├── dev_and_user_basic_test.sol │ │ │ ├── dev_and_user_no_doc.sol │ │ │ ├── dev_author_at_function.sol │ │ │ ├── dev_constructor.sol │ │ │ ├── dev_constructor_and_function.sol │ │ │ ├── dev_constructor_return.sol │ │ │ ├── dev_contract_doc.sol │ │ │ ├── dev_contract_no_doc.sol │ │ │ ├── dev_default_inherit.sol │ │ │ ├── dev_default_inherit_variable.sol │ │ │ ├── dev_desc_after_nl.sol │ │ │ ├── dev_different_return_name.sol │ │ │ ├── dev_different_return_name_multiple.sol │ │ │ ├── dev_different_return_name_multiple_partly_unnamed.sol │ │ │ ├── dev_different_return_name_multiple_unnamed.sol │ │ │ ├── dev_documenting_no_param_description.sol │ │ │ ├── dev_documenting_no_param_name.sol │ │ │ ├── dev_documenting_no_param_name_end.sol │ │ │ ├── dev_documenting_no_return_param_name.sol │ │ │ ├── dev_documenting_nonexistent_param.sol │ │ │ ├── dev_explicit_inherit.sol │ │ │ ├── dev_explicit_inherit2.sol │ │ │ ├── dev_explicit_inherit_complex.sol │ │ │ ├── dev_explicit_inherit_partial.sol │ │ │ ├── dev_explicit_inherit_partial2.sol │ │ │ ├── dev_explicit_inherit_variable.sol │ │ │ ├── dev_inherit_parameter_mismatch.sol │ │ │ ├── dev_multiline_comment.sol │ │ │ ├── dev_multiline_param_description.sol │ │ │ ├── dev_multiline_return.sol │ │ │ ├── dev_multiple_functions.sol │ │ │ ├── dev_multiple_params.sol │ │ │ ├── dev_multiple_params_mixed_whitespace.sol │ │ │ ├── dev_return.sol │ │ │ ├── dev_return_desc_after_nl.sol │ │ │ ├── dev_return_desc_multiple.sol │ │ │ ├── dev_return_desc_multiple_unnamed.sol │ │ │ ├── dev_return_desc_multiple_unnamed_mixed.sol │ │ │ ├── dev_return_desc_multiple_unnamed_mixed_2.sol │ │ │ ├── dev_return_name_no_description.sol │ │ │ ├── dev_return_no_params.sol │ │ │ ├── dev_struct_getter_override.sol │ │ │ ├── dev_struct_getter_override_different_return_parameter_names.sol │ │ │ ├── dev_struct_getter_override_no_return_name.sol │ │ │ ├── dev_title_at_function_error.sol │ │ │ ├── docstring_double_empty.sol │ │ │ ├── docstring_named_return_parameter.sol │ │ │ ├── docstring_parameter.sol │ │ │ ├── docstring_private_state_variable.sol │ │ │ ├── docstring_state_variable.sol │ │ │ ├── docstring_struct.sol │ │ │ ├── docstring_variable.sol │ │ │ ├── emit_event_from_foreign_contract.sol │ │ │ ├── emit_event_from_foreign_contract_no_inheritance.sol │ │ │ ├── emit_event_from_foreign_contract_with_same_signature.sol │ │ │ ├── emit_event_from_module_via_member_access.sol │ │ │ ├── emit_file_level_event.sol │ │ │ ├── emit_file_level_event_inheritance.sol │ │ │ ├── emit_file_level_event_with_same_signature_as_foreign_event.sol │ │ │ ├── emit_same_signature_event_different_libraries.sol │ │ │ ├── emit_same_signature_event_different_libraries_missing_natspec.sol │ │ │ ├── emit_same_signature_event_library_contract.sol │ │ │ ├── emit_same_signature_event_library_contract_missing_natspec.sol │ │ │ ├── emit_same_signature_event_library_inherited.sol │ │ │ ├── emit_same_signature_event_library_inherited_missing_natspec.sol │ │ │ ├── empty_comment.sol │ │ │ ├── enum.sol │ │ │ ├── enum_value.sol │ │ │ ├── error.sol │ │ │ ├── error_from_module_via_member_access.sol │ │ │ ├── error_multiple.sol │ │ │ ├── event.sol │ │ │ ├── event_inheritance.sol │ │ │ ├── event_inheritance_interface.sol │ │ │ ├── invalid/ │ │ │ │ ├── docstring_author_function.sol │ │ │ │ ├── docstring_author_title_state_variable.sol │ │ │ │ ├── docstring_empty_description.sol │ │ │ │ ├── docstring_empty_tag.sol │ │ │ │ ├── docstring_inherit_modifier_no_return.sol │ │ │ │ ├── docstring_inherit_modifier_no_return2.sol │ │ │ │ ├── docstring_inheritdoc.sol │ │ │ │ ├── docstring_inheritdoc2.sol │ │ │ │ ├── docstring_inheritdoc3.sol │ │ │ │ ├── docstring_inheritdoc_emptys.sol │ │ │ │ ├── docstring_inheritdoc_twice.sol │ │ │ │ ├── docstring_inheritdoc_wrong_type.sol │ │ │ │ ├── docstring_named_return_param_mismatch.sol │ │ │ │ ├── docstring_non_public_state_variable_with_return.sol │ │ │ │ ├── docstring_parameter.sol │ │ │ │ ├── docstring_return_size_mismatch.sol │ │ │ │ ├── docstring_state_variable_too_many_return_tags.sol │ │ │ │ ├── docstring_too_many_return_tags.sol │ │ │ │ ├── inherit_doc_events.sol │ │ │ │ └── invalid_tag.sol │ │ │ ├── multiline_notice_without_tag.sol │ │ │ ├── notice_without_tag.sol │ │ │ ├── private_state_variable.sol │ │ │ ├── public_state_variable.sol │ │ │ ├── public_state_variable_struct.sol │ │ │ ├── public_state_variable_struct_repeated.sol │ │ │ ├── return_param_amount_differs.sol │ │ │ ├── return_param_amount_differs2.sol │ │ │ ├── slash3_slash3.sol │ │ │ ├── slash3_slash4.sol │ │ │ ├── slash4.sol │ │ │ ├── star3.sol │ │ │ ├── storage_layout_specifier_no_doc.sol │ │ │ ├── struct_no_docs.sol │ │ │ ├── unused_file_level_event.sol │ │ │ ├── user_basic_test.sol │ │ │ ├── user_constructor.sol │ │ │ ├── user_constructor_and_function.sol │ │ │ ├── user_default_inherit.sol │ │ │ ├── user_default_inherit_variable.sol │ │ │ ├── user_empty_contract.sol │ │ │ ├── user_empty_natspec_test.sol │ │ │ ├── user_explicit_inherit.sol │ │ │ ├── user_explicit_inherit2.sol │ │ │ ├── user_explicit_inherit_partial.sol │ │ │ ├── user_explicit_inherit_partial2.sol │ │ │ ├── user_explicit_inherit_variable.sol │ │ │ ├── user_inherit_parameter_mismatch.sol │ │ │ ├── user_multiline_comment.sol │ │ │ ├── user_multiline_empty_lines.sol │ │ │ ├── user_multiple_functions.sol │ │ │ └── user_newline_break.sol │ │ ├── optimizedIRCaching/ │ │ │ ├── bytecode_dependency_creation.sol │ │ │ ├── bytecode_dependency_creation_and_runtime.sol │ │ │ ├── bytecode_dependency_creation_and_runtime_shared.sol │ │ │ ├── bytecode_dependency_runtime.sol │ │ │ ├── bytecode_dependency_shared_by_multiple_contracts.sol │ │ │ ├── multiple_contracts.sol │ │ │ ├── no_contracts.sol │ │ │ └── single_contract.sol │ │ ├── semanticTests/ │ │ │ ├── abiEncodeDecode/ │ │ │ │ ├── abi_decode_calldata.sol │ │ │ │ ├── abi_decode_simple.sol │ │ │ │ ├── abi_decode_simple_storage.sol │ │ │ │ ├── abi_encode_call.sol │ │ │ │ ├── abi_encode_call_declaration.sol │ │ │ │ ├── abi_encode_call_is_consistent.sol │ │ │ │ ├── abi_encode_call_memory.sol │ │ │ │ ├── abi_encode_call_special_args.sol │ │ │ │ ├── abi_encode_call_uint_bytes.sol │ │ │ │ ├── abi_encode_empty_string_v1.sol │ │ │ │ ├── abi_encode_with_selector.sol │ │ │ │ ├── abi_encode_with_selectorv2.sol │ │ │ │ ├── abi_encode_with_signature.sol │ │ │ │ ├── abi_encode_with_signaturev2.sol │ │ │ │ ├── contract_array.sol │ │ │ │ ├── contract_array_v2.sol │ │ │ │ ├── offset_overflow_in_array_decoding.sol │ │ │ │ ├── offset_overflow_in_array_decoding_2.sol │ │ │ │ └── offset_overflow_in_array_decoding_3.sol │ │ │ ├── abiEncoderV1/ │ │ │ │ ├── abi_decode_dynamic_array.sol │ │ │ │ ├── abi_decode_fixed_arrays.sol │ │ │ │ ├── abi_decode_static_array.sol │ │ │ │ ├── abi_decode_static_array_v2.sol │ │ │ │ ├── abi_decode_trivial.sol │ │ │ │ ├── abi_decode_v2.sol │ │ │ │ ├── abi_decode_v2_calldata.sol │ │ │ │ ├── abi_decode_v2_storage.sol │ │ │ │ ├── abi_encode.sol │ │ │ │ ├── abi_encode_call.sol │ │ │ │ ├── abi_encode_calldata_slice.sol │ │ │ │ ├── abi_encode_decode_simple.sol │ │ │ │ ├── abi_encode_empty_string.sol │ │ │ │ ├── abi_encode_rational.sol │ │ │ │ ├── bool_out_of_bounds.sol │ │ │ │ ├── byte_arrays.sol │ │ │ │ ├── calldata_arrays_too_large.sol │ │ │ │ ├── calldata_bytes_bytes32_arrays.sol │ │ │ │ ├── cleanup/ │ │ │ │ │ └── cleanup.sol │ │ │ │ ├── decode_slice.sol │ │ │ │ ├── dynamic_arrays.sol │ │ │ │ ├── dynamic_memory_copy.sol │ │ │ │ ├── enums.sol │ │ │ │ ├── memory_dynamic_array_and_calldata_bytes.sol │ │ │ │ ├── memory_params_in_external_function.sol │ │ │ │ ├── return_dynamic_types_cross_call_advanced.sol │ │ │ │ ├── return_dynamic_types_cross_call_out_of_range_1.sol │ │ │ │ ├── return_dynamic_types_cross_call_out_of_range_2.sol │ │ │ │ ├── return_dynamic_types_cross_call_simple.sol │ │ │ │ └── struct/ │ │ │ │ └── struct_storage_ptr.sol │ │ │ ├── abiEncoderV2/ │ │ │ │ ├── abi_encode_calldata_slice.sol │ │ │ │ ├── abi_encode_empty_string_v2.sol │ │ │ │ ├── abi_encode_rational_v2.sol │ │ │ │ ├── abi_encode_v2.sol │ │ │ │ ├── abi_encode_v2_in_function_inherited_in_v1_contract.sol │ │ │ │ ├── abi_encode_v2_in_modifier_used_in_v1_contract.sol │ │ │ │ ├── abi_encoder_v2_head_overflow_with_static_array_cleanup_bug.sol │ │ │ │ ├── bool_out_of_bounds.sol │ │ │ │ ├── byte_arrays.sol │ │ │ │ ├── calldata_array.sol │ │ │ │ ├── calldata_array_dynamic.sol │ │ │ │ ├── calldata_array_dynamic_index_access.sol │ │ │ │ ├── calldata_array_dynamic_static_dynamic.sol │ │ │ │ ├── calldata_array_dynamic_static_in_library.sol │ │ │ │ ├── calldata_array_dynamic_static_short_decode.sol │ │ │ │ ├── calldata_array_dynamic_static_short_reencode.sol │ │ │ │ ├── calldata_array_function_types.sol │ │ │ │ ├── calldata_array_multi_dynamic.sol │ │ │ │ ├── calldata_array_short.sol │ │ │ │ ├── calldata_array_short_no_revert_string.sol │ │ │ │ ├── calldata_array_static.sol │ │ │ │ ├── calldata_array_static_dynamic_static.sol │ │ │ │ ├── calldata_array_static_index_access.sol │ │ │ │ ├── calldata_array_struct_dynamic.sol │ │ │ │ ├── calldata_array_two_dynamic.sol │ │ │ │ ├── calldata_array_two_static.sol │ │ │ │ ├── calldata_dynamic_array_to_memory.sol │ │ │ │ ├── calldata_nested_array_reencode.sol │ │ │ │ ├── calldata_nested_array_static_reencode.sol │ │ │ │ ├── calldata_overlapped_dynamic_arrays.sol │ │ │ │ ├── calldata_overlapped_nested_dynamic_arrays.sol │ │ │ │ ├── calldata_struct_array_reencode.sol │ │ │ │ ├── calldata_struct_dynamic.sol │ │ │ │ ├── calldata_struct_member_offset.sol │ │ │ │ ├── calldata_struct_simple.sol │ │ │ │ ├── calldata_three_dimensional_dynamic_array_index_access.sol │ │ │ │ ├── calldata_with_garbage.sol │ │ │ │ ├── cleanup/ │ │ │ │ │ ├── address.sol │ │ │ │ │ ├── bool.sol │ │ │ │ │ ├── bytesx.sol │ │ │ │ │ ├── cleanup.sol │ │ │ │ │ ├── dynamic_array.sol │ │ │ │ │ ├── function.sol │ │ │ │ │ ├── intx.sol │ │ │ │ │ ├── reencoded_calldata_string.sol │ │ │ │ │ ├── simple_struct.sol │ │ │ │ │ ├── static_array.sol │ │ │ │ │ └── uintx.sol │ │ │ │ ├── dynamic_arrays.sol │ │ │ │ ├── dynamic_nested_arrays.sol │ │ │ │ ├── enums.sol │ │ │ │ ├── memory_dynamic_array_and_calldata_bytes.sol │ │ │ │ ├── memory_dynamic_array_and_calldata_static_array.sol │ │ │ │ ├── memory_params_in_external_function.sol │ │ │ │ ├── storage_array_encoding.sol │ │ │ │ └── struct/ │ │ │ │ ├── mediocre2_struct.sol │ │ │ │ ├── mediocre_struct.sol │ │ │ │ ├── struct_function.sol │ │ │ │ ├── struct_short.sol │ │ │ │ ├── struct_simple.sol │ │ │ │ ├── struct_validation.sol │ │ │ │ └── validation_function_type_inside_struct.sol │ │ │ ├── accessor/ │ │ │ │ ├── accessor_for_const_state_variable.sol │ │ │ │ └── accessor_for_state_variable.sol │ │ │ ├── arithmetics/ │ │ │ │ ├── addmod_mulmod.sol │ │ │ │ ├── addmod_mulmod_zero.sol │ │ │ │ ├── block_inside_unchecked.sol │ │ │ │ ├── check_var_init.sol │ │ │ │ ├── checked_add_v1.sol │ │ │ │ ├── checked_add_v2.sol │ │ │ │ ├── checked_called_by_unchecked.sol │ │ │ │ ├── checked_modifier_called_by_unchecked.sol │ │ │ │ ├── divisiod_by_zero.sol │ │ │ │ ├── exp_associativity.sol │ │ │ │ ├── signed_mod.sol │ │ │ │ ├── unchecked_called_by_checked.sol │ │ │ │ └── unchecked_div_by_zero.sol │ │ │ ├── array/ │ │ │ │ ├── arrayMemoryAllocation/ │ │ │ │ │ ├── array_2d_zeroed_memory_index_access.sol │ │ │ │ │ ├── array_array_static.sol │ │ │ │ │ ├── array_static_return_param_zeroed_memory_index_access.sol │ │ │ │ │ ├── array_static_zeroed_memory_index_access.sol │ │ │ │ │ └── array_zeroed_memory_index_access.sol │ │ │ │ ├── array_2d_assignment.sol │ │ │ │ ├── array_2d_new.sol │ │ │ │ ├── array_3d_assignment.sol │ │ │ │ ├── array_3d_new.sol │ │ │ │ ├── array_function_pointers.sol │ │ │ │ ├── array_memory_as_parameter.sol │ │ │ │ ├── array_memory_create.sol │ │ │ │ ├── array_memory_index_access.sol │ │ │ │ ├── array_push_return_reference.sol │ │ │ │ ├── array_push_with_arg.sol │ │ │ │ ├── array_storage_index_access.sol │ │ │ │ ├── array_storage_index_boundary_test.sol │ │ │ │ ├── array_storage_index_zeroed_test.sol │ │ │ │ ├── array_storage_length_access.sol │ │ │ │ ├── array_storage_pop_zero_length.sol │ │ │ │ ├── array_storage_push_empty.sol │ │ │ │ ├── array_storage_push_empty_length_address.sol │ │ │ │ ├── array_storage_push_pop.sol │ │ │ │ ├── arrays_complex_from_and_to_storage.sol │ │ │ │ ├── byte_array_storage_layout.sol │ │ │ │ ├── byte_array_transitional_2.sol │ │ │ │ ├── bytes_length_member.sol │ │ │ │ ├── bytes_to_fixed_bytes_cleanup.sol │ │ │ │ ├── bytes_to_fixed_bytes_simple.sol │ │ │ │ ├── bytes_to_fixed_bytes_too_long.sol │ │ │ │ ├── calldata_array.sol │ │ │ │ ├── calldata_array_as_argument_internal_function.sol │ │ │ │ ├── calldata_array_dynamic_invalid.sol │ │ │ │ ├── calldata_array_dynamic_invalid_static_middle.sol │ │ │ │ ├── calldata_array_of_struct.sol │ │ │ │ ├── calldata_array_two_dimensional.sol │ │ │ │ ├── calldata_array_two_dimensional_1.sol │ │ │ │ ├── calldata_bytes_array_bounds.sol │ │ │ │ ├── calldata_slice_access.sol │ │ │ │ ├── concat/ │ │ │ │ │ ├── bytes_concat_2_args.sol │ │ │ │ │ ├── bytes_concat_3_args.sol │ │ │ │ │ ├── bytes_concat_as_argument.sol │ │ │ │ │ ├── bytes_concat_different_types.sol │ │ │ │ │ ├── bytes_concat_empty_argument_list.sol │ │ │ │ │ ├── bytes_concat_empty_strings.sol │ │ │ │ │ └── bytes_concat_nested.sol │ │ │ │ ├── constant_var_as_array_length.sol │ │ │ │ ├── copying/ │ │ │ │ │ ├── array_copy_calldata_storage.sol │ │ │ │ │ ├── array_copy_cleanup_uint128.sol │ │ │ │ │ ├── array_copy_cleanup_uint40.sol │ │ │ │ │ ├── array_copy_clear_storage.sol │ │ │ │ │ ├── array_copy_clear_storage_packed.sol │ │ │ │ │ ├── array_copy_different_packing.sol │ │ │ │ │ ├── array_copy_including_array.sol │ │ │ │ │ ├── array_copy_memory_to_storage.sol │ │ │ │ │ ├── array_copy_nested_array.sol │ │ │ │ │ ├── array_copy_storage_abi_signed.sol │ │ │ │ │ ├── array_copy_storage_storage_different_base.sol │ │ │ │ │ ├── array_copy_storage_storage_different_base_nested.sol │ │ │ │ │ ├── array_copy_storage_storage_dyn_dyn.sol │ │ │ │ │ ├── array_copy_storage_storage_dynamic_dynamic.sol │ │ │ │ │ ├── array_copy_storage_storage_static_dynamic.sol │ │ │ │ │ ├── array_copy_storage_storage_static_simple.sol │ │ │ │ │ ├── array_copy_storage_storage_static_static.sol │ │ │ │ │ ├── array_copy_storage_storage_struct.sol │ │ │ │ │ ├── array_copy_storage_to_memory.sol │ │ │ │ │ ├── array_copy_storage_to_memory_nested.sol │ │ │ │ │ ├── array_copy_target_leftover.sol │ │ │ │ │ ├── array_copy_target_leftover2.sol │ │ │ │ │ ├── array_copy_target_simple.sol │ │ │ │ │ ├── array_copy_target_simple_2.sol │ │ │ │ │ ├── array_elements_to_mapping.sol │ │ │ │ │ ├── array_nested_calldata_to_memory.sol │ │ │ │ │ ├── array_nested_calldata_to_storage.sol │ │ │ │ │ ├── array_nested_memory_to_storage.sol │ │ │ │ │ ├── array_nested_storage_to_memory.sol │ │ │ │ │ ├── array_of_function_external_storage_to_storage_dynamic.sol │ │ │ │ │ ├── array_of_function_external_storage_to_storage_dynamic_different_mutability.sol │ │ │ │ │ ├── array_of_struct_calldata_to_memory.sol │ │ │ │ │ ├── array_of_struct_calldata_to_storage.sol │ │ │ │ │ ├── array_of_struct_memory_to_storage.sol │ │ │ │ │ ├── array_of_structs_containing_arrays_calldata_to_memory.sol │ │ │ │ │ ├── array_of_structs_containing_arrays_calldata_to_storage.sol │ │ │ │ │ ├── array_of_structs_containing_arrays_memory_to_storage.sol │ │ │ │ │ ├── array_storage_multi_items_per_slot.sol │ │ │ │ │ ├── array_to_mapping.sol │ │ │ │ │ ├── arrays_from_and_to_storage.sol │ │ │ │ │ ├── bytes_calldata_to_string_calldata.sol │ │ │ │ │ ├── bytes_inside_mappings.sol │ │ │ │ │ ├── bytes_memory_to_storage.sol │ │ │ │ │ ├── bytes_storage_to_memory.sol │ │ │ │ │ ├── bytes_storage_to_storage.sol │ │ │ │ │ ├── calldata_1d_array_into_2d_memory_array_element.sol │ │ │ │ │ ├── calldata_2d_bytes_to_memory.sol │ │ │ │ │ ├── calldata_2d_bytes_to_memory_2.sol │ │ │ │ │ ├── calldata_array_dynamic_to_storage.sol │ │ │ │ │ ├── calldata_array_of_struct_to_memory.sol │ │ │ │ │ ├── calldata_array_static_to_memory.sol │ │ │ │ │ ├── calldata_array_to_mapping.sol │ │ │ │ │ ├── calldata_bytes_array_to_memory.sol │ │ │ │ │ ├── calldata_bytes_to_storage.sol │ │ │ │ │ ├── calldata_dyn_2d_bytes_to_memory.sol │ │ │ │ │ ├── calldata_dynamic_array_to_memory.sol │ │ │ │ │ ├── calldata_nested_array_copy_to_memory.sol │ │ │ │ │ ├── calldata_to_storage_different_base.sol │ │ │ │ │ ├── cleanup_during_multi_element_per_slot_copy.sol │ │ │ │ │ ├── copy_byte_array_in_struct_to_storage.sol │ │ │ │ │ ├── copy_byte_array_to_storage.sol │ │ │ │ │ ├── copy_function_internal_storage_array.sol │ │ │ │ │ ├── copy_internal_function_array_to_storage.sol │ │ │ │ │ ├── copy_removes_bytes_data.sol │ │ │ │ │ ├── copying_bytes_multiassign.sol │ │ │ │ │ ├── dirty_memory_bytes_to_storage_copy.sol │ │ │ │ │ ├── dirty_memory_bytes_to_storage_copy_ir.sol │ │ │ │ │ ├── elements_of_nested_array_of_structs_calldata_to_storage.sol │ │ │ │ │ ├── elements_of_nested_array_of_structs_memory_to_storage.sol │ │ │ │ │ ├── empty_bytes_copy.sol │ │ │ │ │ ├── function_type_array_to_storage.sol │ │ │ │ │ ├── memory_dyn_2d_bytes_to_storage.sol │ │ │ │ │ ├── memory_to_storage_different_base.sol │ │ │ │ │ ├── nested_array_element_calldata_to_memory.sol │ │ │ │ │ ├── nested_array_element_calldata_to_storage.sol │ │ │ │ │ ├── nested_array_element_memory_to_memory.sol │ │ │ │ │ ├── nested_array_element_memory_to_storage.sol │ │ │ │ │ ├── nested_array_element_storage_to_memory.sol │ │ │ │ │ ├── nested_array_element_storage_to_storage.sol │ │ │ │ │ ├── nested_array_of_structs_calldata_to_memory.sol │ │ │ │ │ ├── nested_array_of_structs_calldata_to_storage.sol │ │ │ │ │ ├── nested_array_of_structs_memory_to_memory.sol │ │ │ │ │ ├── nested_array_of_structs_memory_to_storage.sol │ │ │ │ │ ├── nested_array_of_structs_storage_to_storage.sol │ │ │ │ │ ├── nested_array_of_structs_with_nested_array_from_storage_to_memory.sol │ │ │ │ │ ├── nested_dynamic_array_element_calldata_to_storage.sol │ │ │ │ │ ├── storage_memory_nested.sol │ │ │ │ │ ├── storage_memory_nested_bytes.sol │ │ │ │ │ ├── storage_memory_nested_from_pointer.sol │ │ │ │ │ ├── storage_memory_nested_struct.sol │ │ │ │ │ ├── storage_memory_packed.sol │ │ │ │ │ ├── storage_memory_packed_dyn.sol │ │ │ │ │ └── string_calldata_to_bytes_calldata.sol │ │ │ │ ├── create_dynamic_array_with_zero_length.sol │ │ │ │ ├── create_memory_array.sol │ │ │ │ ├── create_memory_array_too_large.sol │ │ │ │ ├── create_memory_byte_array.sol │ │ │ │ ├── create_multiple_dynamic_arrays.sol │ │ │ │ ├── delete/ │ │ │ │ │ ├── bytes_delete_element.sol │ │ │ │ │ ├── delete_bytes_array.sol │ │ │ │ │ ├── delete_memory_array.sol │ │ │ │ │ ├── delete_on_array_of_structs.sol │ │ │ │ │ ├── delete_removes_bytes_data.sol │ │ │ │ │ ├── delete_storage_array.sol │ │ │ │ │ ├── delete_storage_array_packed.sol │ │ │ │ │ └── memory_arrays_delete.sol │ │ │ │ ├── dynamic_array_cleanup.sol │ │ │ │ ├── dynamic_arrays_in_storage.sol │ │ │ │ ├── dynamic_multi_array_cleanup.sol │ │ │ │ ├── dynamic_out_of_bounds_array_access.sol │ │ │ │ ├── evm_exceptions_out_of_band_access.sol │ │ │ │ ├── external_array_args.sol │ │ │ │ ├── fixed_array_cleanup.sol │ │ │ │ ├── fixed_arrays_as_return_type.sol │ │ │ │ ├── fixed_arrays_in_constructors.sol │ │ │ │ ├── fixed_arrays_in_storage.sol │ │ │ │ ├── fixed_bytes_length_access.sol │ │ │ │ ├── fixed_out_of_bounds_array_access.sol │ │ │ │ ├── function_array_cross_calls.sol │ │ │ │ ├── function_memory_array.sol │ │ │ │ ├── indexAccess/ │ │ │ │ │ ├── arrays_complex_memory_index_access.sol │ │ │ │ │ ├── bytes_index_access.sol │ │ │ │ │ ├── bytes_index_access_memory.sol │ │ │ │ │ ├── bytes_memory_index_access.sol │ │ │ │ │ ├── fixed_bytes_index_access.sol │ │ │ │ │ ├── index_access.sol │ │ │ │ │ ├── inline_array_index_access_ints.sol │ │ │ │ │ ├── inline_array_index_access_strings.sol │ │ │ │ │ ├── memory_arrays_dynamic_index_access_write.sol │ │ │ │ │ └── memory_arrays_index_access_write.sol │ │ │ │ ├── inline_array_return.sol │ │ │ │ ├── inline_array_singleton.sol │ │ │ │ ├── inline_array_storage_to_memory_conversion_ints.sol │ │ │ │ ├── inline_array_storage_to_memory_conversion_strings.sol │ │ │ │ ├── inline_array_strings_from_document.sol │ │ │ │ ├── invalid_encoding_for_storage_byte_array.sol │ │ │ │ ├── long_byte_array_cleanup_after_delete.sol │ │ │ │ ├── long_byte_array_cleanup_after_overwrite_with_long.sol │ │ │ │ ├── memory.sol │ │ │ │ ├── memory_arrays_of_various_sizes.sol │ │ │ │ ├── nested_calldata_storage.sol │ │ │ │ ├── nested_calldata_storage2.sol │ │ │ │ ├── pop/ │ │ │ │ │ ├── array_pop.sol │ │ │ │ │ ├── array_pop_array_transition.sol │ │ │ │ │ ├── array_pop_empty_exception.sol │ │ │ │ │ ├── array_pop_isolated.sol │ │ │ │ │ ├── array_pop_storage_empty.sol │ │ │ │ │ ├── array_pop_uint16_transition.sol │ │ │ │ │ ├── array_pop_uint24_transition.sol │ │ │ │ │ ├── byte_array_pop.sol │ │ │ │ │ ├── byte_array_pop_copy_long.sol │ │ │ │ │ ├── byte_array_pop_empty_exception.sol │ │ │ │ │ ├── byte_array_pop_isolated.sol │ │ │ │ │ ├── byte_array_pop_long_storage_empty.sol │ │ │ │ │ ├── byte_array_pop_long_storage_empty_garbage_ref.sol │ │ │ │ │ ├── byte_array_pop_masking_long.sol │ │ │ │ │ ├── byte_array_pop_storage_empty.sol │ │ │ │ │ └── parenthesized.sol │ │ │ │ ├── push/ │ │ │ │ │ ├── array_push.sol │ │ │ │ │ ├── array_push_nested.sol │ │ │ │ │ ├── array_push_nested_from_calldata.sol │ │ │ │ │ ├── array_push_nested_from_memory.sol │ │ │ │ │ ├── array_push_packed_array.sol │ │ │ │ │ ├── array_push_struct.sol │ │ │ │ │ ├── array_push_struct_from_calldata.sol │ │ │ │ │ ├── byte_array_push.sol │ │ │ │ │ ├── byte_array_push_transition.sol │ │ │ │ │ ├── nested_bytes_push.sol │ │ │ │ │ ├── push_no_args_1d.sol │ │ │ │ │ ├── push_no_args_2d.sol │ │ │ │ │ ├── push_no_args_bytes.sol │ │ │ │ │ └── push_no_args_struct.sol │ │ │ │ ├── reusing_memory.sol │ │ │ │ ├── short_fixed_array_cleanup.sol │ │ │ │ ├── slices/ │ │ │ │ │ ├── array_calldata_assignment.sol │ │ │ │ │ ├── array_slice_calldata_as_argument_of_external_calls.sol │ │ │ │ │ ├── array_slice_calldata_to_calldata.sol │ │ │ │ │ ├── array_slice_calldata_to_memory.sol │ │ │ │ │ └── array_slice_calldata_to_storage.sol │ │ │ │ ├── storage_array_ref.sol │ │ │ │ ├── string_allocation_bug.sol │ │ │ │ ├── string_bytes_conversion.sol │ │ │ │ ├── string_literal_assign_to_storage_bytes.sol │ │ │ │ └── strings_in_struct.sol │ │ │ ├── builtinFunctions/ │ │ │ │ ├── assignment_to_const_var_involving_keccak.sol │ │ │ │ ├── blobhash.sol │ │ │ │ ├── blobhash_shadow_resolution.sol │ │ │ │ ├── blockhash.sol │ │ │ │ ├── blockhash_shadow_resolution.sol │ │ │ │ ├── erc7201_equivalent_solidity_spec.sol │ │ │ │ ├── erc7201_equivalent_solidity_spec_comptime.sol │ │ │ │ ├── erc7201_layout_specifier_slot_match_comptime.sol │ │ │ │ ├── erc7201_overflow_expression.sol │ │ │ │ ├── erc7201_param_abi_encode.sol │ │ │ │ ├── erc7201_param_array_string_literal.sol │ │ │ │ ├── erc7201_param_locations.sol │ │ │ │ ├── erc7201_param_pure_function.sol │ │ │ │ ├── erc7201_param_string_concat.sol │ │ │ │ ├── erc7201_param_string_literal_with_escaped_chars.sol │ │ │ │ ├── erc7201_param_ternary_operator.sol │ │ │ │ ├── erc7201_param_unicode_string_literal.sol │ │ │ │ ├── erc7201_param_unicode_string_variable.sol │ │ │ │ ├── erc7201_param_with_zero_last_byte_of_inner_hash.sol │ │ │ │ ├── erc7201_param_with_zero_last_byte_of_inner_hash_comptime.sol │ │ │ │ ├── function_types_sig.sol │ │ │ │ ├── iterated_keccak256_with_bytes.sol │ │ │ │ ├── keccak256.sol │ │ │ │ ├── keccak256_empty.sol │ │ │ │ ├── keccak256_multiple_arguments.sol │ │ │ │ ├── keccak256_multiple_arguments_with_numeric_literals.sol │ │ │ │ ├── keccak256_multiple_arguments_with_string_literals.sol │ │ │ │ ├── keccak256_packed.sol │ │ │ │ ├── keccak256_packed_complex_types.sol │ │ │ │ ├── keccak256_with_bytes.sol │ │ │ │ ├── msg_sig.sol │ │ │ │ ├── msg_sig_after_internal_call_is_same.sol │ │ │ │ ├── ripemd160.sol │ │ │ │ ├── ripemd160_empty.sol │ │ │ │ ├── ripemd160_packed.sol │ │ │ │ ├── sha256.sol │ │ │ │ ├── sha256_empty.sol │ │ │ │ └── sha256_packed.sol │ │ │ ├── calldata/ │ │ │ │ ├── calldata_array_access.sol │ │ │ │ ├── calldata_array_dynamic_bytes.sol │ │ │ │ ├── calldata_array_index_range_access.sol │ │ │ │ ├── calldata_array_length.sol │ │ │ │ ├── calldata_array_three_dimensional.sol │ │ │ │ ├── calldata_attached_to_bytes.sol │ │ │ │ ├── calldata_attached_to_dynamic_array_or_slice.sol │ │ │ │ ├── calldata_attached_to_static_array.sol │ │ │ │ ├── calldata_attached_to_struct.sol │ │ │ │ ├── calldata_bytes_array_bounds.sol │ │ │ │ ├── calldata_bytes_external.sol │ │ │ │ ├── calldata_bytes_internal.sol │ │ │ │ ├── calldata_bytes_to_memory.sol │ │ │ │ ├── calldata_bytes_to_memory_encode.sol │ │ │ │ ├── calldata_internal_function_pointer.sol │ │ │ │ ├── calldata_internal_library.sol │ │ │ │ ├── calldata_internal_multi_array.sol │ │ │ │ ├── calldata_internal_multi_fixed_array.sol │ │ │ │ ├── calldata_memory_mixed.sol │ │ │ │ ├── calldata_string_array.sol │ │ │ │ ├── calldata_struct.sol │ │ │ │ ├── calldata_struct_cleaning.sol │ │ │ │ ├── calldata_struct_internal.sol │ │ │ │ └── copy_from_calldata_removes_bytes_data.sol │ │ │ ├── cleanup/ │ │ │ │ ├── bool_conversion_v1.sol │ │ │ │ ├── bool_conversion_v2.sol │ │ │ │ ├── byte_array_to_storage_cleanup.sol │ │ │ │ ├── cleanup_address_types_shortening.sol │ │ │ │ ├── cleanup_address_types_v1.sol │ │ │ │ ├── cleanup_address_types_v2.sol │ │ │ │ ├── cleanup_bytes_types_shortening_OldCodeGen.sol │ │ │ │ ├── cleanup_bytes_types_shortening_newCodeGen.sol │ │ │ │ ├── cleanup_bytes_types_v1.sol │ │ │ │ ├── cleanup_bytes_types_v2.sol │ │ │ │ ├── cleanup_in_compound_assign.sol │ │ │ │ ├── dirty_calldata_bytes.sol │ │ │ │ ├── dirty_calldata_dynamic_array.sol │ │ │ │ ├── exp_cleanup.sol │ │ │ │ ├── exp_cleanup_direct.sol │ │ │ │ ├── exp_cleanup_nonzero_base.sol │ │ │ │ ├── exp_cleanup_smaller_base.sol │ │ │ │ ├── indexed_log_topic_during_explicit_downcast.sol │ │ │ │ └── indexed_log_topic_during_explicit_downcast_during_emissions.sol │ │ │ ├── constantEvaluator/ │ │ │ │ ├── negative_fractional_mod.sol │ │ │ │ └── rounding.sol │ │ │ ├── constants/ │ │ │ │ ├── asm_address_constant_regression.sol │ │ │ │ ├── asm_constant_file_level.sol │ │ │ │ ├── assign_type_info.sol │ │ │ │ ├── constant_string.sol │ │ │ │ ├── constant_string_at_file_level.sol │ │ │ │ ├── constant_variables.sol │ │ │ │ ├── constants_at_file_level_referencing.sol │ │ │ │ ├── consteval_array_length.sol │ │ │ │ ├── function_unreferenced.sol │ │ │ │ ├── same_constants_different_files.sol │ │ │ │ └── simple_constant_variables_test.sol │ │ │ ├── constructor/ │ │ │ │ ├── arrays_in_constructors.sol │ │ │ │ ├── base_constructor_arguments.sol │ │ │ │ ├── bytes_in_constructors_packer.sol │ │ │ │ ├── bytes_in_constructors_unpacker.sol │ │ │ │ ├── callvalue_check.sol │ │ │ │ ├── constructor_arguments_external.sol │ │ │ │ ├── constructor_arguments_internal.sol │ │ │ │ ├── constructor_function_argument.sol │ │ │ │ ├── constructor_function_complex.sol │ │ │ │ ├── constructor_static_array_argument.sol │ │ │ │ ├── evm_exceptions_in_constructor_call_fail.sol │ │ │ │ ├── function_usage_in_constructor_arguments.sol │ │ │ │ ├── functions_called_by_constructor.sol │ │ │ │ ├── functions_called_by_constructor_through_dispatch.sol │ │ │ │ ├── inline_member_init_inheritence_without_constructor.sol │ │ │ │ ├── no_callvalue_check.sol │ │ │ │ ├── order_of_evaluation.sol │ │ │ │ ├── payable_constructor.sol │ │ │ │ ├── state_variable_initialization.sol │ │ │ │ ├── store_function_in_constructor.sol │ │ │ │ ├── store_function_in_constructor_packed.sol │ │ │ │ ├── store_internal_unused_function_in_constructor.sol │ │ │ │ ├── store_internal_unused_library_function_in_constructor.sol │ │ │ │ └── transient_state_variable_initialization.sol │ │ │ ├── conversions/ │ │ │ │ ├── function_type_array_to_storage.sol │ │ │ │ └── string_to_bytes.sol │ │ │ ├── deployedCodeExclusion/ │ │ │ │ ├── bound_function.sol │ │ │ │ ├── library_function.sol │ │ │ │ ├── library_function_deployed.sol │ │ │ │ ├── module_function.sol │ │ │ │ ├── module_function_deployed.sol │ │ │ │ ├── static_base_function.sol │ │ │ │ ├── static_base_function_deployed.sol │ │ │ │ ├── subassembly_deduplication.sol │ │ │ │ ├── super_function.sol │ │ │ │ ├── super_function_deployed.sol │ │ │ │ ├── virtual_function.sol │ │ │ │ └── virtual_function_deployed.sol │ │ │ ├── ecrecover/ │ │ │ │ ├── ecrecover.sol │ │ │ │ ├── ecrecover_abiV2.sol │ │ │ │ ├── failing_ecrecover_invalid_input.sol │ │ │ │ ├── failing_ecrecover_invalid_input_asm.sol │ │ │ │ └── failing_ecrecover_invalid_input_proper.sol │ │ │ ├── enums/ │ │ │ │ ├── constructing_enums_from_ints.sol │ │ │ │ ├── enum_explicit_overflow.sol │ │ │ │ ├── enum_explicit_overflow_homestead.sol │ │ │ │ ├── enum_referencing.sol │ │ │ │ ├── enum_with_256_members.sol │ │ │ │ ├── invalid_enum_logged.sol │ │ │ │ ├── minmax.sol │ │ │ │ ├── using_contract_enums_with_explicit_contract_name.sol │ │ │ │ ├── using_enums.sol │ │ │ │ ├── using_inherited_enum.sol │ │ │ │ └── using_inherited_enum_excplicitly.sol │ │ │ ├── errors/ │ │ │ │ ├── error_in_library_and_interface.sol │ │ │ │ ├── error_selector.sol │ │ │ │ ├── error_static_calldata_uint_array_and_dynamic_array.sol │ │ │ │ ├── error_throw_from_module_via_member_access.sol │ │ │ │ ├── errors_by_parameter_type.sol │ │ │ │ ├── named_error_args.sol │ │ │ │ ├── named_parameters_shadowing_types.sol │ │ │ │ ├── panic_via_import.sol │ │ │ │ ├── require_different_errors_same_parameters.sol │ │ │ │ ├── require_error_condition_evaluated_only_once.sol │ │ │ │ ├── require_error_evaluation_order_1.sol │ │ │ │ ├── require_error_evaluation_order_2.sol │ │ │ │ ├── require_error_evaluation_order_3.sol │ │ │ │ ├── require_error_function_join_control_flow.sol │ │ │ │ ├── require_error_function_pointer_parameter.sol │ │ │ │ ├── require_error_multiple_arguments.sol │ │ │ │ ├── require_error_stack_check.sol │ │ │ │ ├── require_error_string_literal.sol │ │ │ │ ├── require_error_string_memory.sol │ │ │ │ ├── require_error_uint256.sol │ │ │ │ ├── require_inherited_error.sol │ │ │ │ ├── revert_conversion.sol │ │ │ │ ├── simple.sol │ │ │ │ ├── small_error_optimization.sol │ │ │ │ ├── using_structs.sol │ │ │ │ ├── via_contract_type.sol │ │ │ │ ├── via_import.sol │ │ │ │ └── weird_name.sol │ │ │ ├── events/ │ │ │ │ ├── emit_three_identical_events.sol │ │ │ │ ├── emit_two_identical_events.sol │ │ │ │ ├── event.sol │ │ │ │ ├── event_access_through_base_name_emit.sol │ │ │ │ ├── event_anonymous.sol │ │ │ │ ├── event_anonymous_with_signature_collision.sol │ │ │ │ ├── event_anonymous_with_signature_collision2.sol │ │ │ │ ├── event_anonymous_with_topics.sol │ │ │ │ ├── event_constructor.sol │ │ │ │ ├── event_dynamic_array_memory.sol │ │ │ │ ├── event_dynamic_array_memory_v2.sol │ │ │ │ ├── event_dynamic_array_storage.sol │ │ │ │ ├── event_dynamic_array_storage_v2.sol │ │ │ │ ├── event_dynamic_nested_array_memory_v2.sol │ │ │ │ ├── event_dynamic_nested_array_storage_v2.sol │ │ │ │ ├── event_emit.sol │ │ │ │ ├── event_emit_file_level.sol │ │ │ │ ├── event_emit_from_a_foreign_contract.sol │ │ │ │ ├── event_emit_from_a_foreign_contract_same_name.sol │ │ │ │ ├── event_emit_from_module_via_member_access.sol │ │ │ │ ├── event_emit_from_other_contract.sol │ │ │ │ ├── event_emit_interface_event_via_library.sol │ │ │ │ ├── event_emit_via_interface.sol │ │ │ │ ├── event_indexed_function.sol │ │ │ │ ├── event_indexed_function2.sol │ │ │ │ ├── event_indexed_mixed.sol │ │ │ │ ├── event_indexed_string.sol │ │ │ │ ├── event_lots_of_data.sol │ │ │ │ ├── event_no_arguments.sol │ │ │ │ ├── event_really_lots_of_data.sol │ │ │ │ ├── event_really_lots_of_data_from_storage.sol │ │ │ │ ├── event_really_really_lots_of_data_from_storage.sol │ │ │ │ ├── event_selector.sol │ │ │ │ ├── event_selector_file_level.sol │ │ │ │ ├── event_shadowing_file_level.sol │ │ │ │ ├── event_signature_in_library.sol │ │ │ │ ├── event_static_calldata_uint_array_and_dynamic_array.sol │ │ │ │ ├── event_string.sol │ │ │ │ ├── event_struct_memory_v2.sol │ │ │ │ ├── event_struct_storage_v2.sol │ │ │ │ ├── events_with_same_name.sol │ │ │ │ ├── events_with_same_name_file_level.sol │ │ │ │ ├── events_with_same_name_inherited_emit.sol │ │ │ │ └── simple.sol │ │ │ ├── experimental/ │ │ │ │ ├── stub.sol │ │ │ │ └── type_class.sol │ │ │ ├── exponentiation/ │ │ │ │ ├── literal_base.sol │ │ │ │ ├── signed_base.sol │ │ │ │ └── small_exp.sol │ │ │ ├── expressions/ │ │ │ │ ├── bit_operators.sol │ │ │ │ ├── bytes_comparison.sol │ │ │ │ ├── conditional_expression_different_types.sol │ │ │ │ ├── conditional_expression_false_literal.sol │ │ │ │ ├── conditional_expression_functions.sol │ │ │ │ ├── conditional_expression_multiple.sol │ │ │ │ ├── conditional_expression_storage_memory_1.sol │ │ │ │ ├── conditional_expression_storage_memory_2.sol │ │ │ │ ├── conditional_expression_true_literal.sol │ │ │ │ ├── conditional_expression_tuples.sol │ │ │ │ ├── conditional_expression_with_return_values.sol │ │ │ │ ├── exp_operator_const.sol │ │ │ │ ├── exp_operator_const_signed.sol │ │ │ │ ├── exp_zero_literal.sol │ │ │ │ ├── inc_dec_operators.sol │ │ │ │ ├── module_from_ternary_expression.sol │ │ │ │ ├── tuple_from_ternary_expression.sol │ │ │ │ ├── unary_too_long_literal.sol │ │ │ │ └── uncalled_address_transfer_send.sol │ │ │ ├── externalContracts/ │ │ │ │ ├── FixedFeeRegistrar.sol │ │ │ │ ├── _base64/ │ │ │ │ │ ├── base64_inline_asm.sol │ │ │ │ │ └── base64_no_inline_asm.sol │ │ │ │ ├── _prbmath/ │ │ │ │ │ ├── LICENSE.md │ │ │ │ │ ├── PRBMathCommon.sol │ │ │ │ │ ├── PRBMathSD59x18.sol │ │ │ │ │ ├── PRBMathUD60x18.sol │ │ │ │ │ └── README.md │ │ │ │ ├── _stringutils/ │ │ │ │ │ ├── LICENSE │ │ │ │ │ ├── README.md │ │ │ │ │ └── stringutils.sol │ │ │ │ ├── base64.sol │ │ │ │ ├── deposit_contract.sol │ │ │ │ ├── prbmath_signed.sol │ │ │ │ ├── prbmath_unsigned.sol │ │ │ │ ├── ramanujan_pi.sol │ │ │ │ ├── snark.sol │ │ │ │ └── strings.sol │ │ │ ├── externalSource/ │ │ │ │ ├── _external/ │ │ │ │ │ ├── external.sol │ │ │ │ │ ├── external.sol=sol │ │ │ │ │ ├── import.sol │ │ │ │ │ ├── import_with_subdir.sol │ │ │ │ │ ├── other_external.sol │ │ │ │ │ └── subdir/ │ │ │ │ │ ├── import.sol │ │ │ │ │ └── sub_external.sol │ │ │ │ ├── _nonNormalizedPaths/ │ │ │ │ │ ├── a.sol │ │ │ │ │ ├── c.sol │ │ │ │ │ └── d.sol │ │ │ │ ├── _relativeImports/ │ │ │ │ │ ├── D/ │ │ │ │ │ │ └── d.sol │ │ │ │ │ ├── c.sol │ │ │ │ │ ├── dir/ │ │ │ │ │ │ ├── B/ │ │ │ │ │ │ │ └── b.sol │ │ │ │ │ │ ├── G/ │ │ │ │ │ │ │ └── g.sol │ │ │ │ │ │ ├── a.sol │ │ │ │ │ │ └── contract.sol │ │ │ │ │ └── h.sol │ │ │ │ ├── _sourceNameStartingWithDots/ │ │ │ │ │ ├── b.sol │ │ │ │ │ ├── dir/ │ │ │ │ │ │ ├── a.sol │ │ │ │ │ │ └── contract.sol │ │ │ │ │ ├── dot_a.sol │ │ │ │ │ └── dot_dot_b.sol │ │ │ │ ├── multiple_equals_signs.sol │ │ │ │ ├── multiple_external_source.sol │ │ │ │ ├── multisource.sol │ │ │ │ ├── non_normalized_paths.sol │ │ │ │ ├── relative_imports.sol │ │ │ │ ├── source.sol │ │ │ │ ├── source_import.sol │ │ │ │ ├── source_import_subdir.sol │ │ │ │ ├── source_name_starting_with_dots.sol │ │ │ │ └── source_remapping.sol │ │ │ ├── fallback/ │ │ │ │ ├── call_forward_bytes.sol │ │ │ │ ├── falback_return.sol │ │ │ │ ├── fallback_argument.sol │ │ │ │ ├── fallback_argument_to_storage.sol │ │ │ │ ├── fallback_or_receive.sol │ │ │ │ ├── fallback_override.sol │ │ │ │ ├── fallback_override2.sol │ │ │ │ ├── fallback_override_multi.sol │ │ │ │ ├── fallback_return_data.sol │ │ │ │ ├── inherited.sol │ │ │ │ └── short_data_calls_fallback.sol │ │ │ ├── freeFunctions/ │ │ │ │ ├── easy.sol │ │ │ │ ├── free_namesake_contract_function.sol │ │ │ │ ├── free_runtimecode.sol │ │ │ │ ├── import.sol │ │ │ │ ├── libraries_from_free.sol │ │ │ │ ├── new_operator.sol │ │ │ │ ├── overloads.sol │ │ │ │ ├── recursion.sol │ │ │ │ └── storage_calldata_refs.sol │ │ │ ├── functionCall/ │ │ │ │ ├── array_multiple_local_vars.sol │ │ │ │ ├── bare_call_no_returndatacopy.sol │ │ │ │ ├── call_attached_library_function_on_function.sol │ │ │ │ ├── call_attached_library_function_on_storage_variable.sol │ │ │ │ ├── call_attached_library_function_on_string.sol │ │ │ │ ├── call_function_returning_function.sol │ │ │ │ ├── call_function_returning_nothing_via_pointer.sol │ │ │ │ ├── call_internal_function_via_expression.sol │ │ │ │ ├── call_internal_function_with_multislot_arguments_via_pointer.sol │ │ │ │ ├── call_options_overload.sol │ │ │ │ ├── calling_nonexisting_contract_throws.sol │ │ │ │ ├── calling_other_functions.sol │ │ │ │ ├── calling_uninitialized_function.sol │ │ │ │ ├── calling_uninitialized_function_in_detail.sol │ │ │ │ ├── calling_uninitialized_function_through_array.sol │ │ │ │ ├── conditional_with_arguments.sol │ │ │ │ ├── creation_function_call_no_args.sol │ │ │ │ ├── creation_function_call_with_args.sol │ │ │ │ ├── creation_function_call_with_salt.sol │ │ │ │ ├── delegatecall_return_value.sol │ │ │ │ ├── delegatecall_return_value_pre_byzantium.sol │ │ │ │ ├── disordered_named_args.sol │ │ │ │ ├── eof/ │ │ │ │ │ ├── call_options_overload.sol │ │ │ │ │ ├── calling_nonexisting_contract.sol │ │ │ │ │ ├── external_call_at_construction_time.sol │ │ │ │ │ └── external_call_to_nonexisting.sol │ │ │ │ ├── external_call.sol │ │ │ │ ├── external_call_at_construction_time.sol │ │ │ │ ├── external_call_dynamic_returndata.sol │ │ │ │ ├── external_call_to_nonexisting.sol │ │ │ │ ├── external_call_to_nonexisting_debugstrings.sol │ │ │ │ ├── external_call_value.sol │ │ │ │ ├── external_function.sol │ │ │ │ ├── external_public_override.sol │ │ │ │ ├── failed_create.sol │ │ │ │ ├── file_level_call_via_module.sol │ │ │ │ ├── gas_and_value_basic.sol │ │ │ │ ├── inheritance/ │ │ │ │ │ ├── base_base_overload.sol │ │ │ │ │ ├── base_overload.sol │ │ │ │ │ ├── call_base.sol │ │ │ │ │ ├── call_base_base.sol │ │ │ │ │ ├── call_base_base_explicit.sol │ │ │ │ │ ├── call_base_explicit.sol │ │ │ │ │ ├── call_unimplemented_base.sol │ │ │ │ │ ├── super_skip_unimplemented_in_abstract_contract.sol │ │ │ │ │ └── super_skip_unimplemented_in_interface.sol │ │ │ │ ├── mapping_array_internal_argument.sol │ │ │ │ ├── mapping_internal_argument.sol │ │ │ │ ├── mapping_internal_return.sol │ │ │ │ ├── member_accessors.sol │ │ │ │ ├── multiple_functions.sol │ │ │ │ ├── multiple_return_values.sol │ │ │ │ ├── named_args.sol │ │ │ │ ├── named_args_overload.sol │ │ │ │ ├── precompile_extcodesize_check.sol │ │ │ │ ├── return_size_bigger_than_expected.sol │ │ │ │ ├── return_size_shorter_than_expected.sol │ │ │ │ ├── return_size_shorter_than_expected_evm_version_after_homestead.sol │ │ │ │ ├── send_zero_ether.sol │ │ │ │ ├── transaction_status.sol │ │ │ │ └── value_test.sol │ │ │ ├── functionSelector/ │ │ │ │ └── function_selector_via_contract_name.sol │ │ │ ├── functionTypes/ │ │ │ │ ├── address_member.sol │ │ │ │ ├── call_to_zero_initialized_function_type_ir.sol │ │ │ │ ├── call_to_zero_initialized_function_type_legacy.sol │ │ │ │ ├── comparison_operator_for_external_function_cleans_dirty_bits.sol │ │ │ │ ├── comparison_operators_for_external_functions.sol │ │ │ │ ├── duplicated_function_definition_with_same_id_in_internal_dispatcher.sol │ │ │ │ ├── external_functions_with_calldata_args_assigned_to_function_pointers_with_memory_type.sol │ │ │ │ ├── function_delete_stack.sol │ │ │ │ ├── function_delete_storage.sol │ │ │ │ ├── function_external_delete_storage.sol │ │ │ │ ├── function_type_library_internal.sol │ │ │ │ ├── inline_array_with_value_call_option.sol │ │ │ │ ├── mapping_of_functions.sol │ │ │ │ ├── pass_function_types_externally.sol │ │ │ │ ├── pass_function_types_internally.sol │ │ │ │ ├── same_function_in_construction_and_runtime.sol │ │ │ │ ├── same_function_in_construction_and_runtime_equality_check.sol │ │ │ │ ├── selector_1.sol │ │ │ │ ├── selector_2.sol │ │ │ │ ├── selector_assignment_expression.sol │ │ │ │ ├── selector_expression_side_effect.sol │ │ │ │ ├── selector_ternary.sol │ │ │ │ ├── selector_ternary_function_pointer_from_function_call.sol │ │ │ │ ├── stack_height_check_on_adding_gas_variable_to_function.sol │ │ │ │ ├── store_function.sol │ │ │ │ ├── struct_with_external_function.sol │ │ │ │ ├── struct_with_functions.sol │ │ │ │ ├── ternary_contract_internal_function.sol │ │ │ │ ├── ternary_contract_library_internal_function.sol │ │ │ │ ├── ternary_contract_public_function.sol │ │ │ │ └── uninitialized_internal_storage_function_call.sol │ │ │ ├── getters/ │ │ │ │ ├── array_mapping_struct.sol │ │ │ │ ├── arrays.sol │ │ │ │ ├── bytes.sol │ │ │ │ ├── mapping.sol │ │ │ │ ├── mapping_array_struct.sol │ │ │ │ ├── mapping_of_string.sol │ │ │ │ ├── mapping_to_struct.sol │ │ │ │ ├── mapping_with_names.sol │ │ │ │ ├── string_and_bytes.sol │ │ │ │ ├── struct_with_bytes.sol │ │ │ │ ├── struct_with_bytes_simple.sol │ │ │ │ ├── transient_value_types.sol │ │ │ │ ├── transient_value_types_multi_frame_call.sol │ │ │ │ └── value_types.sol │ │ │ ├── immutable/ │ │ │ │ ├── assign_at_declaration.sol │ │ │ │ ├── assign_from_immutables.sol │ │ │ │ ├── delete.sol │ │ │ │ ├── fun_read_in_ctor.sol │ │ │ │ ├── getter.sol │ │ │ │ ├── getter_call_in_constructor.sol │ │ │ │ ├── immutable_signed.sol │ │ │ │ ├── immutable_tag_too_large_bug.sol │ │ │ │ ├── increment_decrement.sol │ │ │ │ ├── inheritance.sol │ │ │ │ ├── internal_function_pointer.sol │ │ │ │ ├── multi_creation.sol │ │ │ │ ├── multiple_initializations.sol │ │ │ │ ├── read_in_ctor.sol │ │ │ │ ├── small_types_in_reverse.sol │ │ │ │ ├── stub.sol │ │ │ │ ├── uninitialized.sol │ │ │ │ └── use_scratch.sol │ │ │ ├── inheritance/ │ │ │ │ ├── access_base_storage.sol │ │ │ │ ├── address_overload_resolution.sol │ │ │ │ ├── base_access_to_function_type_variables.sol │ │ │ │ ├── constructor_inheritance_init_order.sol │ │ │ │ ├── constructor_inheritance_init_order_2.sol │ │ │ │ ├── constructor_inheritance_init_order_3_legacy.sol │ │ │ │ ├── constructor_inheritance_init_order_3_viaIR.sol │ │ │ │ ├── constructor_with_params.sol │ │ │ │ ├── constructor_with_params_diamond_inheritance.sol │ │ │ │ ├── constructor_with_params_inheritance.sol │ │ │ │ ├── constructor_with_params_inheritance_2.sol │ │ │ │ ├── dataLocation/ │ │ │ │ │ └── external_public_calldata.sol │ │ │ │ ├── derived_overload_base_function_direct.sol │ │ │ │ ├── derived_overload_base_function_indirect.sol │ │ │ │ ├── explicit_base_class.sol │ │ │ │ ├── inherited_constant_state_var.sol │ │ │ │ ├── inherited_function.sol │ │ │ │ ├── inherited_function_calldata_calldata_interface.sol │ │ │ │ ├── inherited_function_calldata_memory.sol │ │ │ │ ├── inherited_function_calldata_memory_interface.sol │ │ │ │ ├── inherited_function_from_a_library.sol │ │ │ │ ├── inherited_function_through_dispatch.sol │ │ │ │ ├── interface_inheritance_conversions.sol │ │ │ │ ├── member_notation_ctor.sol │ │ │ │ ├── overloaded_function_call_resolve_to_first.sol │ │ │ │ ├── overloaded_function_call_resolve_to_second.sol │ │ │ │ ├── overloaded_function_call_with_if_else.sol │ │ │ │ ├── pass_dynamic_arguments_to_the_base.sol │ │ │ │ ├── pass_dynamic_arguments_to_the_base_base.sol │ │ │ │ ├── pass_dynamic_arguments_to_the_base_base_with_gap.sol │ │ │ │ ├── state_variables_init_order.sol │ │ │ │ ├── state_variables_init_order_2.sol │ │ │ │ ├── state_variables_init_order_3.sol │ │ │ │ ├── super_in_constructor.sol │ │ │ │ ├── super_in_constructor_assignment.sol │ │ │ │ ├── super_overload.sol │ │ │ │ ├── transient_storage_state_variable.sol │ │ │ │ ├── transient_storage_state_variable_abstract_contract.sol │ │ │ │ └── value_for_constructor.sol │ │ │ ├── inlineAssembly/ │ │ │ │ ├── basefee_berlin_function.sol │ │ │ │ ├── blobbasefee_shanghai_function.sol │ │ │ │ ├── blobhash.sol │ │ │ │ ├── blobhash_index_exceeding_blob_count.sol │ │ │ │ ├── blobhash_pre_cancun.sol │ │ │ │ ├── calldata_array_assign_dynamic.sol │ │ │ │ ├── calldata_array_assign_static.sol │ │ │ │ ├── calldata_array_read.sol │ │ │ │ ├── calldata_assign.sol │ │ │ │ ├── calldata_assign_from_nowhere.sol │ │ │ │ ├── calldata_length_read.sol │ │ │ │ ├── calldata_offset_read.sol │ │ │ │ ├── calldata_offset_read_write.sol │ │ │ │ ├── calldata_struct_assign.sol │ │ │ │ ├── calldata_struct_assign_and_return.sol │ │ │ │ ├── chainid.sol │ │ │ │ ├── clz.sol │ │ │ │ ├── clz_pre_osaka.sol │ │ │ │ ├── constant_access.sol │ │ │ │ ├── constant_access_referencing.sol │ │ │ │ ├── difficulty.sol │ │ │ │ ├── external_function_pointer_address.sol │ │ │ │ ├── external_function_pointer_address_assignment.sol │ │ │ │ ├── external_function_pointer_selector.sol │ │ │ │ ├── external_function_pointer_selector_assignment.sol │ │ │ │ ├── external_identifier_access_shadowing.sol │ │ │ │ ├── for_loop_break.sol │ │ │ │ ├── for_loop_continue.sol │ │ │ │ ├── for_loop_nested.sol │ │ │ │ ├── function_name_clash.sol │ │ │ │ ├── inline_assembly_embedded_function_call.sol │ │ │ │ ├── inline_assembly_for.sol │ │ │ │ ├── inline_assembly_for2.sol │ │ │ │ ├── inline_assembly_function_call.sol │ │ │ │ ├── inline_assembly_function_call2.sol │ │ │ │ ├── inline_assembly_function_call_assignment.sol │ │ │ │ ├── inline_assembly_if.sol │ │ │ │ ├── inline_assembly_in_modifiers.sol │ │ │ │ ├── inline_assembly_memory_access.sol │ │ │ │ ├── inline_assembly_read_and_write_stack.sol │ │ │ │ ├── inline_assembly_recursion.sol │ │ │ │ ├── inline_assembly_storage_access.sol │ │ │ │ ├── inline_assembly_storage_access_inside_function.sol │ │ │ │ ├── inline_assembly_storage_access_local_var.sol │ │ │ │ ├── inline_assembly_storage_access_via_pointer.sol │ │ │ │ ├── inline_assembly_switch.sol │ │ │ │ ├── inline_assembly_transient_storage_access_inside_function.sol │ │ │ │ ├── inline_assembly_write_to_stack.sol │ │ │ │ ├── inlineasm_empty_let.sol │ │ │ │ ├── keccak256_assembly.sol │ │ │ │ ├── keccak256_optimization.sol │ │ │ │ ├── keccak256_optimizer_bug_different_memory_location.sol │ │ │ │ ├── keccak256_optimizer_cache_bug.sol │ │ │ │ ├── keccak_optimization_bug_string.sol │ │ │ │ ├── keccak_yul_optimization.sol │ │ │ │ ├── leave.sol │ │ │ │ ├── mcopy.sol │ │ │ │ ├── mcopy_as_identifier_pre_cancun.sol │ │ │ │ ├── mcopy_empty.sol │ │ │ │ ├── mcopy_overlap.sol │ │ │ │ ├── optimize_memory_store_multi_block.sol │ │ │ │ ├── optimize_memory_store_multi_block_bugreport.sol │ │ │ │ ├── prevrandao.sol │ │ │ │ ├── selfbalance.sol │ │ │ │ ├── shadowing_local_function_opcode.sol │ │ │ │ ├── slot_access.sol │ │ │ │ ├── slot_access_via_mapping_pointer.sol │ │ │ │ ├── tload_tstore_not_reserved_before_cancun.sol │ │ │ │ ├── transient_storage_creation.sol │ │ │ │ ├── transient_storage_low_level_calls.sol │ │ │ │ ├── transient_storage_multiple_calls_different_transactions.sol │ │ │ │ ├── transient_storage_multiple_transactions.sol │ │ │ │ ├── transient_storage_reset_between_creation_runtime.sol │ │ │ │ ├── transient_storage_sanity_checks.sol │ │ │ │ ├── transient_storage_selfdestruct.sol │ │ │ │ ├── transient_storage_simple_reentrancy_lock.sol │ │ │ │ ├── truefalse.sol │ │ │ │ └── tstore_hidden_staticcall.sol │ │ │ ├── integer/ │ │ │ │ ├── basic.sol │ │ │ │ ├── int.sol │ │ │ │ ├── many_local_variables.sol │ │ │ │ ├── small_signed_types.sol │ │ │ │ └── uint.sol │ │ │ ├── interfaceID/ │ │ │ │ ├── homer.sol │ │ │ │ ├── homer_interfaceId.sol │ │ │ │ ├── interfaceId_events.sol │ │ │ │ ├── interfaces.sol │ │ │ │ ├── lisa.sol │ │ │ │ └── lisa_interfaceId.sol │ │ │ ├── isoltestTesting/ │ │ │ │ ├── account.sol │ │ │ │ ├── balance_other_contract.sol │ │ │ │ ├── balance_with_balance.sol │ │ │ │ ├── balance_with_balance2.sol │ │ │ │ ├── balance_without_balance.sol │ │ │ │ ├── builtins.sol │ │ │ │ ├── effects.sol │ │ │ │ ├── empty_contract.sol │ │ │ │ ├── format_raw_string_with_control_chars.sol │ │ │ │ ├── isoltestFormatting.sol │ │ │ │ ├── precompiles_ignoring_trailing_input.sol │ │ │ │ └── storage/ │ │ │ │ ├── storage_empty.sol │ │ │ │ └── storage_nonempty.sol │ │ │ ├── libraries/ │ │ │ │ ├── attached_internal_library_function_accepting_calldata.sol │ │ │ │ ├── attached_internal_library_function_returning_calldata.sol │ │ │ │ ├── attached_public_library_function_accepting_calldata.sol.sol │ │ │ │ ├── attached_public_library_function_returning_calldata.sol │ │ │ │ ├── external_call_with_function_pointer_parameter.sol │ │ │ │ ├── external_call_with_storage_array_parameter.sol │ │ │ │ ├── external_call_with_storage_mapping_parameter.sol │ │ │ │ ├── internal_call_attached_with_parentheses.sol │ │ │ │ ├── internal_call_unattached_with_parentheses.sol │ │ │ │ ├── internal_library_function.sol │ │ │ │ ├── internal_library_function_attached_to_address.sol │ │ │ │ ├── internal_library_function_attached_to_address_named_send_transfer.sol │ │ │ │ ├── internal_library_function_attached_to_array_named_pop_push.sol │ │ │ │ ├── internal_library_function_attached_to_bool.sol │ │ │ │ ├── internal_library_function_attached_to_contract.sol │ │ │ │ ├── internal_library_function_attached_to_dynamic_array.sol │ │ │ │ ├── internal_library_function_attached_to_enum.sol │ │ │ │ ├── internal_library_function_attached_to_external_function_type.sol │ │ │ │ ├── internal_library_function_attached_to_fixed_array.sol │ │ │ │ ├── internal_library_function_attached_to_fixed_bytes.sol │ │ │ │ ├── internal_library_function_attached_to_integer.sol │ │ │ │ ├── internal_library_function_attached_to_interface.sol │ │ │ │ ├── internal_library_function_attached_to_internal_function_type.sol │ │ │ │ ├── internal_library_function_attached_to_internal_function_type_named_selector.sol │ │ │ │ ├── internal_library_function_attached_to_literal.sol │ │ │ │ ├── internal_library_function_attached_to_mapping.sol │ │ │ │ ├── internal_library_function_attached_to_string_accepting_memory.sol │ │ │ │ ├── internal_library_function_attached_to_string_accepting_storage.sol │ │ │ │ ├── internal_library_function_attached_to_struct.sol │ │ │ │ ├── internal_library_function_calling_private.sol │ │ │ │ ├── internal_library_function_pointer.sol │ │ │ │ ├── internal_library_function_return_var_size.sol │ │ │ │ ├── internal_types_in_library.sol │ │ │ │ ├── library_address.sol │ │ │ │ ├── library_address_homestead.sol │ │ │ │ ├── library_address_via_module.sol │ │ │ │ ├── library_call_in_homestead.sol │ │ │ │ ├── library_delegatecall_guard_pure.sol │ │ │ │ ├── library_delegatecall_guard_view_needed.sol │ │ │ │ ├── library_delegatecall_guard_view_not_needed.sol │ │ │ │ ├── library_delegatecall_guard_view_staticcall.sol │ │ │ │ ├── library_enum_as_an_expression.sol │ │ │ │ ├── library_function_selectors.sol │ │ │ │ ├── library_function_selectors_struct.sol │ │ │ │ ├── library_references_preserve.sol │ │ │ │ ├── library_return_struct_with_mapping.sol │ │ │ │ ├── library_staticcall_delegatecall.sol │ │ │ │ ├── library_stray_values.sol │ │ │ │ ├── library_struct_as_an_expression.sol │ │ │ │ ├── mapping_arguments_in_library.sol │ │ │ │ ├── mapping_returns_in_library.sol │ │ │ │ ├── mapping_returns_in_library_named.sol │ │ │ │ ├── payable_function_calls_library.sol │ │ │ │ ├── stub.sol │ │ │ │ ├── stub_internal.sol │ │ │ │ ├── using_for_by_name.sol │ │ │ │ ├── using_for_function_on_int.sol │ │ │ │ ├── using_for_overload.sol │ │ │ │ ├── using_for_storage_structs.sol │ │ │ │ ├── using_library_mappings_public.sol │ │ │ │ ├── using_library_mappings_return.sol │ │ │ │ └── using_library_structs.sol │ │ │ ├── literals/ │ │ │ │ ├── denominations.sol │ │ │ │ ├── denominations_in_array_sizes.sol │ │ │ │ ├── escape.sol │ │ │ │ ├── ether.sol │ │ │ │ ├── fractional_denominations.sol │ │ │ │ ├── gwei.sol │ │ │ │ ├── hex_string_with_non_printable_characters.sol │ │ │ │ ├── hex_string_with_underscore.sol │ │ │ │ ├── scientific_notation.sol │ │ │ │ ├── ternary_operator_with_literal_types_overflow.sol │ │ │ │ └── wei.sol │ │ │ ├── memoryManagement/ │ │ │ │ ├── assembly_access.sol │ │ │ │ ├── memory_types_initialisation.sol │ │ │ │ ├── return_variable.sol │ │ │ │ ├── static_memory_array_allocation.sol │ │ │ │ └── struct_allocation.sol │ │ │ ├── metaTypes/ │ │ │ │ └── name_other_contract.sol │ │ │ ├── modifiers/ │ │ │ │ ├── access_through_contract_name.sol │ │ │ │ ├── access_through_module_name.sol │ │ │ │ ├── break_in_modifier.sol │ │ │ │ ├── continue_in_modifier.sol │ │ │ │ ├── evaluation_order.sol │ │ │ │ ├── function_modifier.sol │ │ │ │ ├── function_modifier_calling_functions_in_creation_context.sol │ │ │ │ ├── function_modifier_empty.sol │ │ │ │ ├── function_modifier_for_constructor.sol │ │ │ │ ├── function_modifier_library.sol │ │ │ │ ├── function_modifier_library_inheritance.sol │ │ │ │ ├── function_modifier_local_variables.sol │ │ │ │ ├── function_modifier_loop.sol │ │ │ │ ├── function_modifier_loop_viair.sol │ │ │ │ ├── function_modifier_multi_invocation.sol │ │ │ │ ├── function_modifier_multi_invocation_viair.sol │ │ │ │ ├── function_modifier_multi_with_return.sol │ │ │ │ ├── function_modifier_multiple_times.sol │ │ │ │ ├── function_modifier_multiple_times_local_vars.sol │ │ │ │ ├── function_modifier_overriding.sol │ │ │ │ ├── function_modifier_return_reference.sol │ │ │ │ ├── function_return_parameter.sol │ │ │ │ ├── function_return_parameter_complex.sol │ │ │ │ ├── modifer_recursive.sol │ │ │ │ ├── modifier_in_constructor_ice.sol │ │ │ │ ├── modifier_init_return.sol │ │ │ │ ├── modifiers_in_construction_context.sol │ │ │ │ ├── return_does_not_skip_modifier.sol │ │ │ │ ├── return_in_modifier.sol │ │ │ │ ├── stacked_return_with_modifiers.sol │ │ │ │ └── transient_state_variable_value_type.sol │ │ │ ├── multiSource/ │ │ │ │ ├── circular_import.sol │ │ │ │ ├── circular_import_2.sol │ │ │ │ ├── circular_reimport.sol │ │ │ │ ├── circular_reimport_2.sol │ │ │ │ ├── free_different_interger_types.sol │ │ │ │ ├── free_function_resolution_base_contract.sol │ │ │ │ ├── free_function_resolution_override_virtual.sol │ │ │ │ ├── free_function_resolution_override_virtual_super.sol │ │ │ │ ├── free_function_resolution_override_virtual_transitive.sol │ │ │ │ ├── free_function_transitive_import.sol │ │ │ │ ├── import.sol │ │ │ │ ├── import_overloaded_function.sol │ │ │ │ ├── imported_free_function_via_alias.sol │ │ │ │ ├── imported_free_function_via_alias_direct_call.sol │ │ │ │ └── reimport_imported_function.sol │ │ │ ├── operators/ │ │ │ │ ├── compound_assign.sol │ │ │ │ ├── compound_assign_transient_storage.sol │ │ │ │ ├── shifts/ │ │ │ │ │ ├── bitwise_shifting_constantinople.sol │ │ │ │ │ ├── bitwise_shifting_constantinople_combined.sol │ │ │ │ │ ├── bitwise_shifting_constants_constantinople.sol │ │ │ │ │ ├── shift_bytes_cleanup.sol │ │ │ │ │ ├── shift_bytes_cleanup_viaYul.sol │ │ │ │ │ ├── shift_cleanup.sol │ │ │ │ │ ├── shift_cleanup_garbled.sol │ │ │ │ │ ├── shift_constant_left.sol │ │ │ │ │ ├── shift_constant_left_assignment.sol │ │ │ │ │ ├── shift_constant_right.sol │ │ │ │ │ ├── shift_constant_right_assignment.sol │ │ │ │ │ ├── shift_left.sol │ │ │ │ │ ├── shift_left_assignment.sol │ │ │ │ │ ├── shift_left_assignment_different_type.sol │ │ │ │ │ ├── shift_left_larger_type.sol │ │ │ │ │ ├── shift_left_uint32.sol │ │ │ │ │ ├── shift_left_uint8.sol │ │ │ │ │ ├── shift_negative_constant_left.sol │ │ │ │ │ ├── shift_negative_constant_right.sol │ │ │ │ │ ├── shift_overflow.sol │ │ │ │ │ ├── shift_right.sol │ │ │ │ │ ├── shift_right_assignment.sol │ │ │ │ │ ├── shift_right_garbled_signed_v1.sol │ │ │ │ │ ├── shift_right_garbled_signed_v2.sol │ │ │ │ │ ├── shift_right_garbled_v1.sol │ │ │ │ │ ├── shift_right_garbled_v2.sol │ │ │ │ │ ├── shift_right_negative_literal.sol │ │ │ │ │ ├── shift_right_negative_lvalue.sol │ │ │ │ │ ├── shift_right_negative_lvalue_assignment.sol │ │ │ │ │ ├── shift_right_negative_lvalue_int16.sol │ │ │ │ │ ├── shift_right_negative_lvalue_int32.sol │ │ │ │ │ ├── shift_right_negative_lvalue_int8.sol │ │ │ │ │ ├── shift_right_negative_lvalue_signextend_int16_v1.sol │ │ │ │ │ ├── shift_right_negative_lvalue_signextend_int16_v2.sol │ │ │ │ │ ├── shift_right_negative_lvalue_signextend_int32_v1.sol │ │ │ │ │ ├── shift_right_negative_lvalue_signextend_int32_v2.sol │ │ │ │ │ ├── shift_right_negative_lvalue_signextend_int8_v1.sol │ │ │ │ │ ├── shift_right_negative_lvalue_signextend_int8_v2.sol │ │ │ │ │ ├── shift_right_uint32.sol │ │ │ │ │ ├── shift_right_uint8.sol │ │ │ │ │ ├── shift_underflow_negative_rvalue.sol │ │ │ │ │ └── shifts.sol │ │ │ │ ├── transient_storage_variable_increment_decrement.sol │ │ │ │ └── userDefined/ │ │ │ │ ├── all_possible_operators.sol │ │ │ │ ├── all_possible_user_defined_value_types_with_operators.sol │ │ │ │ ├── attaching_and_defining_operator_with_same_function.sol │ │ │ │ ├── checked_operators.sol │ │ │ │ ├── consecutive_operator_invocations.sol │ │ │ │ ├── fixed_point_udvt_with_operators.sol │ │ │ │ ├── multiple_operator_definitions_different_types_different_functions_separate_directives.sol │ │ │ │ ├── multiple_operator_definitions_same_type_same_function_same_directive.sol │ │ │ │ ├── operator_definition_shadowing_builtin_keccak256.sol │ │ │ │ ├── operator_evaluation_order.sol │ │ │ │ ├── operator_making_pure_external_call.sol │ │ │ │ ├── operator_making_view_external_call.sol │ │ │ │ ├── operator_parameter_and_return_cleanup_between_calls.sol │ │ │ │ ├── operator_parameter_cleanup.sol │ │ │ │ ├── operator_precendence.sol │ │ │ │ ├── operator_return_parameter_cleanup.sol │ │ │ │ ├── recursive_operator.sol │ │ │ │ └── unchecked_operators.sol │ │ │ ├── optimizer/ │ │ │ │ ├── shift_bytes.sol │ │ │ │ └── unused_store_storage_removal_bug.sol │ │ │ ├── payable/ │ │ │ │ └── no_nonpayable_circumvention_by_modifier.sol │ │ │ ├── receive/ │ │ │ │ ├── empty_calldata_calls_receive.sol │ │ │ │ ├── ether_and_data.sol │ │ │ │ └── inherited.sol │ │ │ ├── revertStrings/ │ │ │ │ ├── array_slices.sol │ │ │ │ ├── bubble.sol │ │ │ │ ├── calldata_array_dynamic_invalid.sol │ │ │ │ ├── calldata_array_dynamic_static_short_decode.sol │ │ │ │ ├── calldata_array_dynamic_static_short_reencode.sol │ │ │ │ ├── calldata_array_invalid_length.sol │ │ │ │ ├── calldata_arrays_too_large.sol │ │ │ │ ├── calldata_tail_short.sol │ │ │ │ ├── calldata_too_short_v1.sol │ │ │ │ ├── called_contract_has_code.sol │ │ │ │ ├── empty_v1.sol │ │ │ │ ├── empty_v2.sol │ │ │ │ ├── enum_v1.sol │ │ │ │ ├── enum_v2.sol │ │ │ │ ├── ether_non_payable_function.sol │ │ │ │ ├── function_entry_checks_v1.sol │ │ │ │ ├── function_entry_checks_v2.sol │ │ │ │ ├── invalid_abi_decoding_calldata_v1.sol │ │ │ │ ├── invalid_abi_decoding_memory_v1.sol │ │ │ │ ├── library_non_view_call.sol │ │ │ │ ├── short_input_array.sol │ │ │ │ ├── short_input_bytes.sol │ │ │ │ ├── transfer.sol │ │ │ │ └── unknown_sig_no_fallback.sol │ │ │ ├── reverts/ │ │ │ │ ├── assert_require.sol │ │ │ │ ├── eof/ │ │ │ │ │ └── revert_return_area.sol │ │ │ │ ├── error_struct.sol │ │ │ │ ├── invalid_enum_as_external_arg.sol │ │ │ │ ├── invalid_enum_as_external_ret.sol │ │ │ │ ├── invalid_enum_compared.sol │ │ │ │ ├── invalid_enum_stored.sol │ │ │ │ ├── invalid_instruction.sol │ │ │ │ ├── revert.sol │ │ │ │ ├── revert_return_area.sol │ │ │ │ └── simple_throw.sol │ │ │ ├── saltedCreate/ │ │ │ │ ├── eof/ │ │ │ │ │ └── salted_create_with_value.sol │ │ │ │ ├── prediction_example.sol │ │ │ │ ├── salted_create.sol │ │ │ │ └── salted_create_with_value.sol │ │ │ ├── scoping/ │ │ │ │ └── c99_scoping_activation.sol │ │ │ ├── shanghai/ │ │ │ │ ├── evmone_support.sol │ │ │ │ └── push0.sol │ │ │ ├── smoke/ │ │ │ │ ├── alignment.sol │ │ │ │ ├── arrays.sol │ │ │ │ ├── basic.sol │ │ │ │ ├── bytes_and_strings.sol │ │
Showing preview only (312K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (3311 symbols across 603 files)
FILE: docs/_static/js/constants.js
constant SITE_URL (line 2) | const SITE_URL = "https://docs.soliditylang.org"
constant ROOT_URL (line 6) | const ROOT_URL = `${origin}/${rootPath}`;
constant LIGHT_LOGO_PATH (line 10) | const LIGHT_LOGO_PATH = `${ROOT_URL}/_static/img/logo.svg`;
constant DARK_LOGO_PATH (line 11) | const DARK_LOGO_PATH = `${ROOT_URL}/_static/img/logo-dark.svg`;
constant SUN_ICON_PATH (line 12) | const SUN_ICON_PATH = `${ROOT_URL}/_static/img/sun.svg`;
constant MOON_ICON_PATH (line 13) | const MOON_ICON_PATH = `${ROOT_URL}/_static/img/moon.svg`;
constant LIGHT_HAMBURGER_PATH (line 14) | const LIGHT_HAMBURGER_PATH = `${ROOT_URL}/_static/img/hamburger-light.svg`;
constant DARK_HAMBURGER_PATH (line 15) | const DARK_HAMBURGER_PATH = `${ROOT_URL}/_static/img/hamburger-dark.svg`;
constant COLOR_TOGGLE_ICON_CLASS (line 16) | const COLOR_TOGGLE_ICON_CLASS = "color-toggle-icon";
constant SOLIDITY_LOGO_CLASS (line 17) | const SOLIDITY_LOGO_CLASS = "solidity-logo";
constant LS_COLOR_SCHEME (line 18) | const LS_COLOR_SCHEME = "color-scheme";
constant SOLIDITY_HOME_URL (line 21) | const SOLIDITY_HOME_URL = "https://soliditylang.org";
constant BLOG_URL (line 22) | const BLOG_URL = `${SOLIDITY_HOME_URL}/blog`;
constant DOCS_URL (line 23) | const DOCS_URL = "/";
constant USE_CASES_PATH (line 24) | const USE_CASES_PATH = `${SOLIDITY_HOME_URL}/use-cases`;
constant CONTRIBUTE_PATH (line 25) | const CONTRIBUTE_PATH = `/en/latest/contributing.html`;
constant ABOUT_PATH (line 26) | const ABOUT_PATH = `${SOLIDITY_HOME_URL}/about`;
constant FORUM_URL (line 27) | const FORUM_URL = "https://forum.soliditylang.org/";
constant NAV_LINKS (line 28) | const NAV_LINKS = [
constant MOBILE_MENU_TOGGLE_CLASS (line 37) | const MOBILE_MENU_TOGGLE_CLASS = "shift";
constant WRAPPER_CLASS (line 38) | const WRAPPER_CLASS = "unified-wrapper";
FILE: docs/_static/js/initialize.js
function addFooterNote (line 8) | function addFooterNote() {
function rearrangeDom (line 17) | function rearrangeDom() {
function buildHeader (line 46) | function buildHeader() {
function updateGitHubEditPath (line 152) | function updateGitHubEditPath() {
function initialize (line 172) | function initialize() {
FILE: docs/_static/js/toggle.js
function toggleColorMode (line 1) | function toggleColorMode() {
function toggleMenu (line 32) | function toggleMenu(options = {}) {
FILE: docs/conf.py
function setup (line 30) | def setup(sphinx):
function get_github_username_repo (line 53) | def get_github_username_repo(url):
FILE: docs/ext/html_extra_template_renderer.py
function render_html_extra_templates (line 4) | def render_html_extra_templates(app):
function setup (line 30) | def setup(app):
FILE: docs/ext/remix_code_links.py
function insert_node_before (line 12) | def insert_node_before(child, new_sibling):
function remix_code_url (line 21) | def remix_code_url(source_code, language, solidity_version):
function build_remix_link_node (line 28) | def build_remix_link_node(url):
function insert_remix_link (line 38) | def insert_remix_link(app, doctree, solidity_version):
function setup (line 65) | def setup(app):
FILE: libevmasm/AbstractAssemblyStack.h
function namespace (line 29) | namespace solidity::evmasm
FILE: libevmasm/Assembly.cpp
class InstructionLocationEmitter (line 66) | class InstructionLocationEmitter
method InstructionLocationEmitter (line 69) | InstructionLocationEmitter(
method emit (line 85) | void emit()
function AssemblyItem (line 107) | AssemblyItem const& Assembly::append(AssemblyItem _i)
function AssemblyItem (line 158) | AssemblyItem Assembly::createAssemblyItemFromJSON(Json const& _json, std...
function locationFromSources (line 344) | std::string locationFromSources(StringMap const& _sourceCodes, SourceLoc...
class Functionalizer (line 356) | class Functionalizer
method Functionalizer (line 359) | Functionalizer (std::ostream& _out, std::string const& _prefix, String...
method feed (line 363) | void feed(AssemblyItem const& _item, DebugInfoSelection const& _debugI...
method flush (line 402) | void flush()
method printLocation (line 409) | void printLocation(DebugInfoSelection const& _debugInfoSelection)
function Json (line 499) | Json Assembly::assemblyJSON(std::map<std::string, unsigned> const& _sour...
function AssemblyItem (line 741) | AssemblyItem Assembly::namedTag(std::string const& _name, size_t _params...
function AssemblyItem (line 755) | AssemblyItem Assembly::newFunctionCall(uint16_t _functionID) const
function AssemblyItem (line 766) | AssemblyItem Assembly::newFunctionReturn() const
function AssemblyItem (line 798) | AssemblyItem Assembly::newPushLibraryAddress(std::string const& _identif...
function AssemblyItem (line 805) | AssemblyItem Assembly::newPushImmutable(std::string const& _identifier)
function AssemblyItem (line 812) | AssemblyItem Assembly::newImmutableAssignment(std::string const& _identi...
function AssemblyItem (line 819) | AssemblyItem Assembly::newAuxDataLoadN(size_t _offset) const
function AssemblyItem (line 824) | AssemblyItem Assembly::newSwapN(size_t _depth) const
function AssemblyItem (line 829) | AssemblyItem Assembly::newDupN(size_t _depth) const
function Assembly (line 834) | Assembly& Assembly::optimise(OptimiserSettings const& _settings)
function setBigEndian (line 1007) | void setBigEndian(bytes& _dest, size_t _offset, size_t _size, ValueT _va...
function appendBigEndian (line 1014) | void appendBigEndian(bytes& _dest, size_t _size, ValueT _value)
function setBigEndianUint16 (line 1021) | void setBigEndianUint16(bytes& _dest, size_t _offset, ValueT _value)
function appendBigEndianUint16 (line 1027) | void appendBigEndianUint16(bytes& _dest, ValueT _value)
function calculateMaxStackHeight (line 1035) | uint16_t calculateMaxStackHeight(Assembly::CodeSection const& _section)
function LinkerObject (line 1172) | LinkerObject const& Assembly::assemble() const
function bytes (line 1191) | [[nodiscard]] bytes Assembly::assembleOperation(AssemblyItem const& _ite...
function bytes (line 1198) | [[nodiscard]] bytes Assembly::assemblePush(AssemblyItem const& _item) const
function bytes (line 1224) | [[nodiscard]] bytes Assembly::assembleVerbatimBytecode(AssemblyItem cons...
function bytes (line 1229) | [[nodiscard]] bytes Assembly::assemblePushDeployTimeAddress() const
function bytes (line 1236) | [[nodiscard]] bytes Assembly::assembleTag(AssemblyItem const& _item, siz...
function LinkerObject (line 1250) | LinkerObject const& Assembly::assembleLegacy() const
function LinkerObject (line 1585) | LinkerObject const& Assembly::assembleEOF() const
function SubAssemblyID (line 1829) | SubAssemblyID Assembly::encodeSubPath(std::vector<SubAssemblyID> const& ...
function Assembly (line 1848) | Assembly const* Assembly::subAssemblyById(SubAssemblyID const _subId) const
FILE: libevmasm/Assembly.h
function namespace (line 44) | namespace solidity::evmasm
FILE: libevmasm/AssemblyItem.cpp
function toStringInHex (line 44) | std::string toStringInHex(u256 _value)
function AssemblyItem (line 53) | AssemblyItem AssemblyItem::toSubAssemblyTag(SubAssemblyID _subId) const
FILE: libevmasm/AssemblyItem.h
function namespace (line 37) | namespace solidity::evmasm
function relativeJumpTagID (line 180) | size_t relativeJumpTagID() const;
function u256 (line 185) | u256 const& data() const { solAssert(m_type != Operation && m_data != nu...
function bytes (line 196) | bytes const& verbatimData() const { assertThrow(m_type == VerbatimByteco...
function Instruction (line 216) | Instruction instruction() const
function _other (line 234) | bool operator!=(AssemblyItem const& _other) const { return !operator==(_...
function _other (line 236) | bool operator<(AssemblyItem const& _other) const
function Instruction (line 249) | bool operator==(Instruction _instr) const
function Instruction (line 253) | bool operator!=(Instruction _instr) const { return !operator==(_instr); }
function arguments (line 267) | size_t arguments() const;
function setDebugData (line 290) | void setDebugData(langutil::DebugData::ConstPtr _debugData)
function setJumpType (line 298) | void setJumpType(JumpType _jumpType) { m_jumpType = _jumpType; }
function setPushedValue (line 303) | void setPushedValue(u256 const& _value) const { m_pushedValue = std::mak...
function u256 (line 304) | u256 const* pushedValue() const { return m_pushedValue.get(); }
function setImmutableOccurrences (line 310) | void setImmutableOccurrences(size_t _n) const { m_immutableOccurrences =...
type FunctionSignature (line 312) | struct FunctionSignature
FILE: libevmasm/BlockDeduplicator.cpp
function AssemblyItem (line 145) | AssemblyItem const& BlockDeduplicator::BlockIterator::operator*() const
FILE: libevmasm/BlockDeduplicator.h
function namespace (line 37) | namespace solidity::evmasm
FILE: libevmasm/CommonSubexpressionEliminator.cpp
function AssemblyItems (line 139) | AssemblyItems CSECodeGenerator::generateCode(
FILE: libevmasm/CommonSubexpressionEliminator.h
function namespace (line 40) | namespace langutil
function namespace (line 45) | namespace solidity::evmasm
FILE: libevmasm/ConstantOptimiser.cpp
function bigint (line 84) | bigint ConstantOptimisationMethod::simpleRunGas(AssemblyItems const& _it...
function bigint (line 100) | bigint ConstantOptimisationMethod::dataGas(bytes const& _data) const
function bigint (line 133) | bigint LiteralMethod::gasNeeded() const
function AssemblyItems (line 143) | AssemblyItems LiteralMethod::execute(Assembly&) const
function bigint (line 148) | bigint CodeCopyMethod::gasNeeded() const
function AssemblyItems (line 160) | AssemblyItems CodeCopyMethod::execute(Assembly& _assembly) const
function AssemblyItems (line 168) | AssemblyItems CodeCopyMethod::copyRoutine(AssemblyItem* _pushData) const
function AssemblyItems (line 246) | AssemblyItems ComputeMethod::execute(Assembly&) const
function AssemblyItems (line 251) | AssemblyItems ComputeMethod::findRepresentation(u256 const& _value)
function bigint (line 382) | bigint ComputeMethod::gasNeeded(AssemblyItems const& _routine) const
FILE: libevmasm/ConstantOptimiser.h
function namespace (line 34) | namespace solidity::evmasm
FILE: libevmasm/ControlFlowGraph.cpp
function BasicBlocks (line 43) | BasicBlocks ControlFlowGraph::optimisedBlocks()
type WorkQueueItem (line 224) | struct WorkQueueItem {
function BasicBlocks (line 321) | BasicBlocks ControlFlowGraph::rebuildCode()
function BlockId (line 368) | BlockId ControlFlowGraph::generateNewId()
FILE: libevmasm/ControlFlowGraph.h
function namespace (line 35) | namespace solidity::evmasm
type BasicBlock (line 67) | struct BasicBlock
function class (line 98) | class ControlFlowGraph
FILE: libevmasm/Disassemble.h
function namespace (line 29) | namespace solidity::evmasm
FILE: libevmasm/EVMAssemblyStack.cpp
type solidity::evmasm (line 34) | namespace solidity::evmasm
function LinkerObject (line 74) | LinkerObject const& EVMAssemblyStack::object(std::string const& _contr...
function LinkerObject (line 80) | LinkerObject const& EVMAssemblyStack::runtimeObject(std::string const&...
function Json (line 107) | Json EVMAssemblyStack::ethdebug(std::string const& _contractName) const
function Json (line 114) | Json EVMAssemblyStack::ethdebugRuntime(std::string const& _contractNam...
function Json (line 121) | Json EVMAssemblyStack::ethdebug() const
function Json (line 126) | Json EVMAssemblyStack::assemblyJSON() const
function Json (line 132) | Json EVMAssemblyStack::assemblyJSON(std::string const& _contractName) ...
FILE: libevmasm/EVMAssemblyStack.h
function namespace (line 31) | namespace solidity::evmasm
FILE: libevmasm/Ethdebug.cpp
function instructionOperation (line 32) | schema::program::Instruction::Operation instructionOperation(Assembly co...
function locationRange (line 51) | schema::materials::SourceRange::Range locationRange(langutil::SourceLoca...
function sourceReference (line 59) | schema::materials::Reference sourceReference(unsigned _sourceID)
function instructionContext (line 67) | std::optional<schema::program::Context> instructionContext(Assembly::Cod...
function codeSectionInstructions (line 84) | std::vector<schema::program::Instruction> codeSectionInstructions(Assemb...
function programInstructions (line 119) | std::vector<schema::program::Instruction> programInstructions(Assembly c...
function Json (line 132) | Json ethdebug::program(std::string_view _name, unsigned _sourceID, Assem...
function Json (line 152) | Json ethdebug::resources(std::vector<std::string> const& _sources, std::...
FILE: libevmasm/Ethdebug.h
function namespace (line 26) | namespace solidity::evmasm::ethdebug
FILE: libevmasm/EthdebugSchema.h
function namespace (line 29) | namespace solidity::evmasm::ethdebug::schema
function namespace (line 64) | namespace materials
type SourceRange (line 79) | struct SourceRange
function namespace (line 93) | namespace program
type Program (line 126) | struct Program
function namespace (line 146) | namespace data
function namespace (line 152) | namespace materials
function namespace (line 160) | namespace program
FILE: libevmasm/Exceptions.h
function namespace (line 27) | namespace solidity::evmasm
FILE: libevmasm/ExpressionClasses.cpp
function u256 (line 172) | u256 const* ExpressionClasses::knownConstant(Id _c)
function AssemblyItem (line 182) | AssemblyItem const* ExpressionClasses::storeItem(AssemblyItem const& _item)
FILE: libevmasm/ExpressionClasses.h
function namespace (line 35) | namespace solidity::langutil
function namespace (line 40) | namespace solidity::evmasm
FILE: libevmasm/GasMeter.cpp
function gasCostForTier (line 268) | std::optional<unsigned> gasCostForTier(Tier _tier)
function u256 (line 330) | u256 GasMeter::dataGas(bytes const& _data, bool _inCreation, langutil::E...
function u256 (line 345) | u256 GasMeter::dataGas(uint64_t _length, bool _inCreation, langutil::EVM...
FILE: libevmasm/GasMeter.h
function namespace (line 39) | namespace solidity::evmasm
FILE: libevmasm/Inliner.cpp
function u256 (line 49) | u256 executionCost(RangeType const& _itemRange, langutil::EVMVersion _ev...
function codeSize (line 62) | uint64_t codeSize(RangeType const& _itemRange, langutil::EVMVersion _evm...
function getLocalTag (line 69) | std::optional<size_t> getLocalTag(AssemblyItem const& _item)
FILE: libevmasm/Inliner.h
function namespace (line 34) | namespace solidity::evmasm
FILE: libevmasm/Instruction.cpp
function InstructionInfo (line 365) | InstructionInfo solidity::evmasm::instructionInfo(Instruction _inst, lan...
FILE: libevmasm/Instruction.h
type class (line 35) | enum class
function isCallInstruction (line 215) | constexpr bool isCallInstruction(Instruction _inst) noexcept
function isPushInstruction (line 233) | inline bool isPushInstruction(Instruction _inst)
function isLogInstruction (line 239) | inline bool isLogInstruction(Instruction _inst)
function getPushNumber (line 245) | inline unsigned getPushNumber(Instruction _inst)
function getLogNumber (line 251) | inline unsigned getLogNumber(Instruction _inst)
function Instruction (line 257) | inline Instruction pushInstruction(unsigned _number)
function Instruction (line 264) | inline Instruction dupInstruction(unsigned _number)
function Instruction (line 271) | inline Instruction swapInstruction(unsigned _number)
function Instruction (line 278) | inline Instruction logInstruction(unsigned _number)
function Tier (line 288) | enum class Tier
FILE: libevmasm/JumpdestRemover.h
function namespace (line 30) | namespace solidity::evmasm
FILE: libevmasm/KnownState.cpp
function intersect (line 216) | void intersect(Mapping& _this, Mapping const& _other)
FILE: libevmasm/KnownState.h
function namespace (line 62) | namespace solidity::langutil
type StoreOperation (line 85) | struct StoreOperation
function Id (line 92) | Id slot{std::numeric_limits<Id>::max()};
FILE: libevmasm/LinkerObject.cpp
function h160 (line 68) | h160 const*
FILE: libevmasm/LinkerObject.h
function namespace (line 28) | namespace solidity::evmasm
FILE: libevmasm/PathGasMeter.h
function namespace (line 33) | namespace solidity::evmasm
FILE: libevmasm/PeepholeOptimiser.cpp
type OptimiserState (line 36) | struct OptimiserState
type FunctionParameterCount (line 45) | struct FunctionParameterCount
type FunctionParameterCount<R(Args...)> (line 47) | struct FunctionParameterCount<R(Args...)>
type SimplePeepholeOptimizerMethod (line 53) | struct SimplePeepholeOptimizerMethod
method applyRule (line 56) | static bool applyRule(
method apply (line 64) | static bool apply(OptimiserState& _state)
type Identity (line 80) | struct Identity: SimplePeepholeOptimizerMethod<Identity>
method applySimple (line 82) | static bool applySimple(
type PushPop (line 92) | struct PushPop: SimplePeepholeOptimizerMethod<PushPop>
method applySimple (line 94) | static bool applySimple(
type OpPop (line 109) | struct OpPop: SimplePeepholeOptimizerMethod<OpPop>
method applySimple (line 111) | static bool applySimple(
type OpStop (line 132) | struct OpStop: SimplePeepholeOptimizerMethod<OpStop>
method applySimple (line 134) | static bool applySimple(
type OpReturnRevert (line 161) | struct OpReturnRevert: SimplePeepholeOptimizerMethod<OpReturnRevert>
method applySimple (line 163) | static bool applySimple(
type DoubleSwap (line 190) | struct DoubleSwap: SimplePeepholeOptimizerMethod<DoubleSwap>
method applySimple (line 192) | static size_t applySimple(
type DoublePush (line 202) | struct DoublePush
method apply (line 204) | static bool apply(OptimiserState& _state)
type CommutativeSwap (line 231) | struct CommutativeSwap: SimplePeepholeOptimizerMethod<CommutativeSwap>
method applySimple (line 233) | static bool applySimple(
type SwapComparison (line 253) | struct SwapComparison: SimplePeepholeOptimizerMethod<SwapComparison>
method applySimple (line 255) | static bool applySimple(
type DupSwap (line 283) | struct DupSwap: SimplePeepholeOptimizerMethod<DupSwap>
method applySimple (line 285) | static size_t applySimple(
type IsZeroIsZeroJumpI (line 306) | struct IsZeroIsZeroJumpI: SimplePeepholeOptimizerMethod<IsZeroIsZeroJumpI>
method applySimple (line 308) | static size_t applySimple(
type IsZeroIsZeroRJumpI (line 332) | struct IsZeroIsZeroRJumpI: SimplePeepholeOptimizerMethod<IsZeroIsZeroRJu...
method applySimple (line 334) | static size_t applySimple(
type EqIsZeroJumpI (line 355) | struct EqIsZeroJumpI: SimplePeepholeOptimizerMethod<EqIsZeroJumpI>
method applySimple (line 357) | static size_t applySimple(
type EqIsZeroRJumpI (line 382) | struct EqIsZeroRJumpI: SimplePeepholeOptimizerMethod<EqIsZeroRJumpI>
method applySimple (line 384) | static size_t applySimple(
type DoubleJump (line 407) | struct DoubleJump: SimplePeepholeOptimizerMethod<DoubleJump>
method applySimple (line 409) | static size_t applySimple(
type DoubleRJump (line 439) | struct DoubleRJump: SimplePeepholeOptimizerMethod<DoubleRJump>
method applySimple (line 441) | static size_t applySimple(
type JumpToNext (line 465) | struct JumpToNext: SimplePeepholeOptimizerMethod<JumpToNext>
method applySimple (line 467) | static size_t applySimple(
type RJumpToNext (line 491) | struct RJumpToNext: SimplePeepholeOptimizerMethod<RJumpToNext>
method applySimple (line 493) | static size_t applySimple(
type TagConjunctions (line 515) | struct TagConjunctions: SimplePeepholeOptimizerMethod<TagConjunctions>
method applySimple (line 517) | static bool applySimple(
type TruthyAnd (line 550) | struct TruthyAnd: SimplePeepholeOptimizerMethod<TruthyAnd>
method applySimple (line 552) | static bool applySimple(
type UnreachableCode (line 570) | struct UnreachableCode
method apply (line 572) | static bool apply(OptimiserState& _state)
type DeduplicateNextTagSize3 (line 607) | struct DeduplicateNextTagSize3 : SimplePeepholeOptimizerMethod<Deduplica...
method applySimple (line 609) | static bool applySimple(
type DeduplicateNextTagSize2 (line 642) | struct DeduplicateNextTagSize2 : SimplePeepholeOptimizerMethod<Deduplica...
method applySimple (line 644) | static bool applySimple(
type DeduplicateNextTagSize1 (line 673) | struct DeduplicateNextTagSize1 : SimplePeepholeOptimizerMethod<Deduplica...
method applySimple (line 675) | static bool applySimple(
function applyMethods (line 701) | void applyMethods(OptimiserState& _state)
function numberOfPops (line 708) | size_t numberOfPops(AssemblyItems const& _items)
FILE: libevmasm/PeepholeOptimiser.h
function namespace (line 30) | namespace solidity::evmasm
FILE: libevmasm/RuleList.h
function namespace (line 40) | namespace solidity::evmasm
function replacement (line 551) | auto replacement = [=]() -> Pattern {
FILE: libevmasm/SemanticInformation.h
function namespace (line 32) | namespace solidity::evmasm
FILE: libevmasm/SimplificationRule.h
function namespace (line 28) | namespace solidity::evmasm
FILE: libevmasm/SimplificationRules.cpp
function AssemblyItem (line 129) | AssemblyItem Pattern::toAssemblyItem(langutil::DebugData::ConstPtr _debu...
function u256 (line 196) | u256 const& Pattern::data() const
FILE: libevmasm/SimplificationRules.h
function namespace (line 35) | namespace solidity::langutil
function namespace (line 40) | namespace solidity::evmasm
FILE: libevmasm/SubAssemblyID.h
function namespace (line 30) | namespace solidity::evmasm
FILE: liblangutil/CharStream.cpp
function LineColumn (line 102) | LineColumn CharStream::translatePositionToLineColumn(int _position) const
FILE: liblangutil/CharStream.h
function namespace (line 59) | namespace solidity::langutil
function reset (line 96) | void reset() { m_position = 0; }
function prefixMatch (line 119) | bool prefixMatch(std::string_view _sequence)
function m_importedFromAST (line 147) | bool m_importedFromAST{false};
FILE: liblangutil/CharStreamProvider.h
function namespace (line 29) | namespace solidity::langutil
FILE: liblangutil/Common.h
function namespace (line 17) | namespace solidity::langutil
FILE: liblangutil/DebugData.h
function namespace (line 25) | namespace solidity::langutil
FILE: liblangutil/DebugInfoSelection.cpp
function DebugInfoSelection (line 37) | DebugInfoSelection const DebugInfoSelection::All(bool _value) noexcept
function DebugInfoSelection (line 45) | DebugInfoSelection const DebugInfoSelection::Only(bool DebugInfoSelectio...
function DebugInfoSelection (line 52) | DebugInfoSelection const DebugInfoSelection::AllExcept(std::vector<bool ...
function DebugInfoSelection (line 122) | DebugInfoSelection& DebugInfoSelection::operator&=(DebugInfoSelection co...
function DebugInfoSelection (line 129) | DebugInfoSelection& DebugInfoSelection::operator|=(DebugInfoSelection co...
function DebugInfoSelection (line 136) | DebugInfoSelection DebugInfoSelection::operator&(DebugInfoSelection _oth...
function DebugInfoSelection (line 142) | DebugInfoSelection DebugInfoSelection::operator|(DebugInfoSelection _oth...
FILE: liblangutil/DebugInfoSelection.h
function Default (line 40) | struct DebugInfoSelection
function DebugInfoSelection (line 47) | static DebugInfoSelection const AllExceptExperimental() noexcept { retur...
function all (line 56) | bool all() const noexcept;
function only (line 59) | bool only(bool DebugInfoSelection::* _member) const noexcept { return *t...
function noexcept (line 66) | bool operator!=(DebugInfoSelection const& _other) const noexcept { retur...
FILE: liblangutil/EVMVersion.h
function namespace (line 33) | namespace solidity::evmasm
function EVMVersion (line 51) | static EVMVersion current() { return {currentVersion}; }
function EVMVersion (line 64) | static EVMVersion constexpr cancun() { return {Version::Cancun}; }
FILE: liblangutil/ErrorReporter.cpp
function ErrorReporter (line 35) | ErrorReporter& ErrorReporter::operator=(ErrorReporter const& _errorRepor...
function ErrorList (line 146) | ErrorList const& ErrorReporter::errors() const
FILE: liblangutil/ErrorReporter.h
function namespace (line 36) | namespace solidity::langutil
FILE: liblangutil/Exceptions.cpp
function SourceLocation (line 69) | SourceLocation const* Error::sourceLocation() const noexcept
function SecondarySourceLocation (line 74) | SecondarySourceLocation const* Error::secondarySourceLocation() const no...
FILE: liblangutil/Exceptions.h
function namespace (line 42) | namespace solidity::langutil
type class (line 171) | enum class
function Severity (line 192) | enum class Severity
FILE: liblangutil/ParserBase.cpp
function SourceLocation (line 31) | SourceLocation ParserBase::currentLocation() const
function Token (line 36) | Token ParserBase::currentToken() const
function Token (line 41) | Token ParserBase::peekNextToken() const
function Token (line 51) | Token ParserBase::advance()
FILE: liblangutil/ParserBase.h
function namespace (line 30) | namespace solidity::langutil
FILE: liblangutil/Scanner.cpp
type solidity::langutil (line 65) | namespace solidity::langutil
function to_string (line 68) | std::string to_string(ScannerError _errorCode)
type LiteralType (line 101) | enum LiteralType
class LiteralScope (line 108) | class LiteralScope
method LiteralScope (line 111) | explicit LiteralScope(Scanner* _self, enum LiteralType _type):
method complete (line 131) | void complete() { m_complete = true; }
type LiteralType (line 134) | enum LiteralType
function Token (line 227) | Token Scanner::next()
function Token (line 239) | Token Scanner::selectToken(char _next, Token _then, Token _else)
function ScannerError (line 275) | static ScannerError validateBiDiMarkup(CharStream& _stream, size_t _st...
function Token (line 309) | Token Scanner::skipSingleLineComment()
function Token (line 391) | Token Scanner::skipMultiLineComment()
function Token (line 416) | Token Scanner::scanMultiLineDocComment()
function Token (line 471) | Token Scanner::scanSlash()
function Token (line 823) | Token Scanner::scanString(bool const _isUnicode)
function Token (line 887) | Token Scanner::scanHexString()
function Token (line 936) | Token Scanner::scanNumber(char _charSeen)
FILE: liblangutil/Scanner.h
function namespace (line 62) | namespace solidity::langutil
FILE: liblangutil/SemVerHandler.cpp
function SemVerMatchExpression (line 161) | SemVerMatchExpression SemVerMatchExpressionParser::parse()
function Token (line 314) | Token SemVerMatchExpressionParser::currentToken() const
FILE: liblangutil/SemVerHandler.h
function namespace (line 34) | namespace solidity::langutil
function MatchComponent (line 60) | struct SemVerMatchExpression
type Conjunction (line 77) | struct Conjunction
function class (line 86) | class SemVerMatchExpressionParser
FILE: liblangutil/SourceLocation.cpp
function SourceLocation (line 29) | SourceLocation solidity::langutil::parseSourceLocation(std::string const...
FILE: liblangutil/SourceLocation.h
function namespace (line 32) | namespace solidity::langutil
type LineColumn (line 129) | struct LineColumn
FILE: liblangutil/SourceReferenceExtractor.cpp
function SourceReference (line 61) | SourceReference SourceReferenceExtractor::extract(
FILE: liblangutil/SourceReferenceExtractor.h
function namespace (line 29) | namespace solidity::langutil
function namespace (line 54) | namespace SourceReferenceExtractor
FILE: liblangutil/SourceReferenceFormatter.cpp
function replaceNonTabs (line 39) | std::string replaceNonTabs(std::string_view _utf8Input, char _filler)
function AnsiColorized (line 80) | AnsiColorized SourceReferenceFormatter::normalColored() const
function AnsiColorized (line 85) | AnsiColorized SourceReferenceFormatter::frameColored() const
function AnsiColorized (line 90) | AnsiColorized SourceReferenceFormatter::errorColored(std::ostream& _stre...
function AnsiColorized (line 95) | AnsiColorized SourceReferenceFormatter::messageColored(std::ostream& _st...
function AnsiColorized (line 100) | AnsiColorized SourceReferenceFormatter::secondaryColored() const
function AnsiColorized (line 105) | AnsiColorized SourceReferenceFormatter::highlightColored() const
function AnsiColorized (line 110) | AnsiColorized SourceReferenceFormatter::diagColored() const
FILE: liblangutil/SourceReferenceFormatter.h
function namespace (line 33) | namespace solidity::langutil
FILE: liblangutil/Token.cpp
type solidity::langutil (line 49) | namespace solidity::langutil
function Token (line 52) | Token TokenTraits::AssignmentToBinaryOp(Token op)
type TokenTraits (line 101) | namespace TokenTraits
function friendlyName (line 125) | std::string friendlyName(Token tok)
function Token (line 137) | static Token keywordByName(std::string_view const _name)
function isYulKeyword (line 150) | bool isYulKeyword(std::string_view const _literal)
function fromIdentifierOrKeyword (line 155) | std::tuple<Token, unsigned int, unsigned int> fromIdentifierOrKeywor...
FILE: liblangutil/Token.h
function namespace (line 50) | namespace solidity::langutil
FILE: liblangutil/UniqueErrorReporter.h
function namespace (line 24) | namespace solidity::langutil
FILE: libsmtutil/BMCSolverInterface.h
function namespace (line 23) | namespace solidity::smtutil
FILE: libsmtutil/CHCSmtLib2Interface.cpp
function isNumber (line 205) | bool isNumber(std::string const& _expr)
function isBitVectorHexConstant (line 210) | bool isBitVectorHexConstant(std::string const& _string)
function isBitVectorConstant (line 219) | bool isBitVectorConstant(std::string const& _string)
function SortPointer (line 239) | SortPointer CHCSmtLib2Interface::ScopedParser::toSort(SMTLib2Expression ...
type LetBindings (line 486) | struct LetBindings
method has (line 493) | bool has(std::string const& varName) { return bindings.find(varName) !...
method SMTLib2Expression (line 495) | SMTLib2Expression& operator[](std::string const& varName)
method pushScope (line 503) | void pushScope() { scopeBounds.push_back(varNames.size()); }
method popScope (line 505) | void popScope()
method addBinding (line 523) | void addBinding(std::string name, SMTLib2Expression expression)
function inlineLetExpressions (line 534) | void inlineLetExpressions(SMTLib2Expression& _expr, LetBindings& _bindings)
FILE: libsmtutil/CHCSmtLib2Interface.h
function namespace (line 30) | namespace solidity::smtutil
FILE: libsmtutil/CHCSolverInterface.h
function namespace (line 31) | namespace solidity::smtutil
FILE: libsmtutil/Exceptions.h
function namespace (line 28) | namespace solidity::smtutil
FILE: libsmtutil/Helpers.h
function namespace (line 23) | namespace solidity::smtutil
FILE: libsmtutil/SMTLib2Context.cpp
type solidity::smtutil (line 25) | namespace solidity::smtutil
function SortPointer (line 52) | SortPointer SMTLib2Context::getDeclaredSort(std::string const& _name) ...
function SortId (line 71) | SortId SMTLib2Context::resolve(SortPointer const& _sort)
function SortPointer (line 90) | SortPointer SMTLib2Context::unresolve(SortId _sortId) const
function SortId (line 129) | SortId SMTLib2Context::resolveBitVectorSort(BitVectorSort const& _sort)
function SortId (line 144) | SortId SMTLib2Context::resolveArraySort(ArraySort const& _sort)
function SortId (line 162) | SortId SMTLib2Context::resolveTupleSort(TupleSort const& _sort)
FILE: libsmtutil/SMTLib2Context.h
type SortPairHash (line 32) | struct SortPairHash
type SMTLibType (line 37) | struct SMTLibType {
type SMTLibSort (line 44) | struct SMTLibSort
function SMTLibType (line 57) | struct TupleType : public SMTLibType
function SortId (line 98) | SortId const m_boolSort{0u};
FILE: libsmtutil/SMTLib2Interface.cpp
function parseValuesFromResponse (line 118) | std::vector<std::string> parseValuesFromResponse(std::string const& _res...
FILE: libsmtutil/SMTLib2Interface.h
function namespace (line 36) | namespace solidity::smtutil
FILE: libsmtutil/SMTLib2Parser.cpp
function SMTLib2Expression (line 42) | SMTLib2Expression SMTLib2Parser::parseExpression() {
FILE: libsmtutil/SMTLib2Parser.h
function namespace (line 32) | namespace solidity::smtutil
FILE: libsmtutil/SMTPortfolio.h
function namespace (line 26) | namespace solidity::smtutil
FILE: libsmtutil/SolverInterface.h
function SMTSolverChoice (line 50) | static constexpr SMTSolverChoice All() noexcept { return {true, true, tr...
function SMTSolverChoice (line 51) | static constexpr SMTSolverChoice CVC5() noexcept { return {true, false, ...
function SMTSolverChoice (line 52) | static constexpr SMTSolverChoice ELD() noexcept { return {false, true, f...
function SMTSolverChoice (line 53) | static constexpr SMTSolverChoice SMTLIB2() noexcept { return {false, fal...
function SMTSolverChoice (line 54) | static constexpr SMTSolverChoice Z3() noexcept { return {false, false, f...
function SMTSolverChoice (line 55) | static constexpr SMTSolverChoice None() noexcept { return {false, false,...
function std (line 94) | static std::set<std::string> const solvers{"cvc5", "eld", "smtlib2", "z3"};
type class (line 113) | enum class
function Expression (line 191) | static Expression ite(Expression _condition, Expression _trueValue, Expr...
FILE: libsmtutil/Sorts.cpp
type solidity::smtutil (line 22) | namespace solidity::smtutil
FILE: libsmtutil/Sorts.h
function namespace (line 28) | namespace solidity::smtutil
function Sort (line 73) | struct BitVectorSort: public Sort
function Sort (line 93) | struct FunctionSort: public Sort
function Sort (line 121) | struct ArraySort: public Sort
function Sort (line 144) | struct SortSort: public Sort
function Sort (line 161) | struct TupleSort: public Sort
type SortProvider (line 212) | struct SortProvider
FILE: libsolc/libsolc.cpp
function takeOverAllocation (line 53) | std::string takeOverAllocation(char const* _data)
function truncateCString (line 67) | void truncateCString(std::string& _data)
function wrapReadCallback (line 74) | ReadCallback::Callback wrapReadCallback(CStyleReadFileCallback _readCall...
function compile (line 108) | std::string compile(std::string _input, CStyleReadFileCallback _readCall...
function solidity_free (line 147) | extern void solidity_free(char* _data) noexcept
function solidity_reset (line 152) | extern void solidity_reset() noexcept
FILE: libsolidity/analysis/ConstantEvaluator.cpp
function fitsPrecisionExp (line 46) | bool fitsPrecisionExp(bigint const& _base, bigint const& _exp)
function fitsPrecisionBase2 (line 67) | bool fitsPrecisionBase2(bigint const& _mantissa, uint32_t _expBase2)
function TypedValue (line 238) | TypedValue convertType(rational const& _value, Type const& _type)
function TypedValue (line 253) | TypedValue convertType(std::string const& _value, Type const& _type)
function TypedValue (line 263) | TypedValue convertType(TypedValue const& _value, Type const& _type)
function TypedValue (line 278) | TypedValue constantToTypedValue(Type const& _type)
function TypedValue (line 290) | TypedValue ConstantEvaluator::evaluate(
function TypedValue (line 298) | TypedValue ConstantEvaluator::tryEvaluate(Expression const& _expr)
function TypedValue (line 313) | TypedValue ConstantEvaluator::evaluate(ASTNode const& _node)
FILE: libsolidity/analysis/ConstantEvaluator.h
function namespace (line 30) | namespace solidity::langutil
function namespace (line 35) | namespace solidity::frontend
FILE: libsolidity/analysis/ContractLevelChecker.cpp
function hasEqualExternalCallableParameters (line 45) | bool hasEqualExternalCallableParameters(T const& _a, B const& _b)
function filterDeclarations (line 53) | std::map<ASTString, std::vector<T const*>> filterDeclarations(
FILE: libsolidity/analysis/ContractLevelChecker.h
function namespace (line 32) | namespace solidity::langutil
function namespace (line 37) | namespace solidity::frontend
FILE: libsolidity/analysis/ControlFlowAnalyzer.cpp
type NodeInfo (line 65) | struct NodeInfo
method propagateFrom (line 74) | bool propagateFrom(NodeInfo const& _entryNode)
FILE: libsolidity/analysis/ControlFlowAnalyzer.h
function namespace (line 25) | namespace solidity::frontend
FILE: libsolidity/analysis/ControlFlowBuilder.cpp
function CFGNode (line 697) | CFGNode* ControlFlowBuilder::createFlow(CFGNode* _entry, ASTNode const& ...
function CFGNode (line 715) | CFGNode* ControlFlowBuilder::newLabel()
function CFGNode (line 720) | CFGNode* ControlFlowBuilder::createLabelHere()
FILE: libsolidity/analysis/ControlFlowBuilder.h
function namespace (line 29) | namespace solidity::frontend
FILE: libsolidity/analysis/ControlFlowGraph.cpp
function FunctionFlow (line 55) | FunctionFlow const& CFG::functionFlow(FunctionDefinition const& _functio...
function CFGNode (line 60) | CFGNode* CFG::NodeContainer::newNode()
FILE: libsolidity/analysis/ControlFlowGraph.h
function namespace (line 33) | namespace solidity::frontend
FILE: libsolidity/analysis/ControlFlowRevertPruner.cpp
type solidity::frontend (line 26) | namespace solidity::frontend
function ContractDefinition (line 35) | ContractDefinition const* findScopeContract(FunctionDefinition const& ...
FILE: libsolidity/analysis/ControlFlowRevertPruner.h
function namespace (line 26) | namespace solidity::frontend
FILE: libsolidity/analysis/DeclarationContainer.cpp
function Declaration (line 35) | Declaration const* DeclarationContainer::conflictingDeclaration(
FILE: libsolidity/analysis/DeclarationContainer.h
function namespace (line 32) | namespace solidity::frontend
FILE: libsolidity/analysis/DeclarationTypeChecker.h
function namespace (line 28) | namespace solidity::langutil
function namespace (line 33) | namespace solidity::frontend
FILE: libsolidity/analysis/DocStringAnalyser.cpp
function copyMissingTags (line 40) | void copyMissingTags(std::set<CallableDeclaration const*> const& _baseFu...
function CallableDeclaration (line 97) | CallableDeclaration const* findBaseCallable(std::set<CallableDeclaration...
function parameterNamesEqual (line 108) | bool parameterNamesEqual(CallableDeclaration const& _a, CallableDeclarat...
function CallableDeclaration (line 182) | CallableDeclaration const* DocStringAnalyser::resolveInheritDoc(
FILE: libsolidity/analysis/DocStringAnalyser.h
function namespace (line 23) | namespace solidity::langutil
function namespace (line 28) | namespace solidity::frontend
FILE: libsolidity/analysis/DocStringTagParser.h
function namespace (line 23) | namespace solidity::langutil
function namespace (line 28) | namespace solidity::frontend
FILE: libsolidity/analysis/FunctionCallGraph.cpp
function CallGraph (line 30) | CallGraph FunctionCallGraphBuilder::buildCreationGraph(ContractDefinitio...
function CallGraph (line 66) | CallGraph FunctionCallGraphBuilder::buildDeployedGraph(
FILE: libsolidity/analysis/FunctionCallGraph.h
function namespace (line 28) | namespace solidity::frontend
FILE: libsolidity/analysis/GlobalContext.cpp
type solidity::frontend (line 33) | namespace solidity::frontend
function magicVariableToID (line 40) | int magicVariableToID(std::string const& _name)
function constructMagicVariables (line 74) | inline std::vector<std::shared_ptr<MagicVariableDeclaration const>> co...
function MagicVariableDeclaration (line 144) | MagicVariableDeclaration const* GlobalContext::currentThis() const
function MagicVariableDeclaration (line 157) | MagicVariableDeclaration const* GlobalContext::currentSuper() const
FILE: libsolidity/analysis/GlobalContext.h
function namespace (line 33) | namespace solidity::frontend
FILE: libsolidity/analysis/ImmutableValidator.h
function namespace (line 24) | namespace solidity::frontend
FILE: libsolidity/analysis/NameAndTypeResolver.cpp
type solidity::frontend (line 36) | namespace solidity::frontend
function Declaration (line 204) | Declaration const* NameAndTypeResolver::pathFromCurrentScope(std::vect...
FILE: libsolidity/analysis/NameAndTypeResolver.h
function namespace (line 37) | namespace solidity::langutil
function namespace (line 42) | namespace solidity::frontend
FILE: libsolidity/analysis/OverrideChecker.cpp
type MatchByName (line 46) | struct MatchByName
type OverrideGraph (line 61) | struct OverrideGraph
method OverrideGraph (line 63) | OverrideGraph(std::set<OverrideProxy> const& _baseCallables)
method addEdge (line 72) | void addEdge(int _a, int _b)
method visit (line 80) | int visit(OverrideProxy const& _function)
type CutVertexFinder (line 103) | struct CutVertexFinder
method CutVertexFinder (line 105) | CutVertexFinder(OverrideGraph const& _graph): m_graph(_graph)
method run (line 120) | void run(size_t _u = 0, size_t _depth = 0)
function resolveDirectBaseContracts (line 141) | std::vector<ContractDefinition const*> resolveDirectBaseContracts(Contra...
function sortByContract (line 157) | std::vector<ASTPointer<IdentifierPath>> sortByContract(std::vector<ASTPo...
function OverrideProxy (line 179) | OverrideProxy makeOverrideProxy(CallableDeclaration const& _callable)
function ContractDefinition (line 265) | ContractDefinition const& OverrideProxy::contract() const
function Visibility (line 279) | Visibility OverrideProxy::visibility() const
function StateMutability (line 288) | StateMutability OverrideProxy::stateMutability() const
function Token (line 306) | Token OverrideProxy::functionKind() const
function FunctionType (line 315) | FunctionType const* OverrideProxy::externalFunctionType() const
function FunctionType (line 324) | FunctionType const* OverrideProxy::originalFunctionType() const
function ModifierType (line 333) | ModifierType const* OverrideProxy::modifierType() const
function Declaration (line 343) | Declaration const* OverrideProxy::declaration() const
function SourceLocation (line 352) | SourceLocation const& OverrideProxy::location() const
FILE: libsolidity/analysis/OverrideChecker.h
function namespace (line 33) | namespace solidity::langutil
function namespace (line 40) | namespace solidity::frontend
FILE: libsolidity/analysis/PostTypeChecker.cpp
type ConstStateVarCircularReferenceChecker (line 154) | struct ConstStateVarCircularReferenceChecker: public PostTypeChecker::Ch...
method ConstStateVarCircularReferenceChecker (line 156) | ConstStateVarCircularReferenceChecker(ErrorReporter& _errorReporter):
method finalize (line 159) | void finalize() override
method visit (line 172) | bool visit(ContractDefinition const&) override
method visit (line 178) | bool visit(VariableDeclaration const& _variable) override
method endVisit (line 189) | void endVisit(VariableDeclaration const& _variable) override
method visit (line 198) | bool visit(Identifier const& _identifier) override
method visit (line 207) | bool visit(MemberAccess const& _memberAccess) override
method VariableDeclaration (line 216) | VariableDeclaration const* findCycle(VariableDeclaration const& _start...
type OverrideSpecifierChecker (line 247) | struct OverrideSpecifierChecker: public PostTypeChecker::Checker
method OverrideSpecifierChecker (line 249) | OverrideSpecifierChecker(ErrorReporter& _errorReporter):
method endVisit (line 252) | void endVisit(OverrideSpecifier const& _overrideSpecifier) override
type ModifierContextChecker (line 274) | struct ModifierContextChecker: public PostTypeChecker::Checker
method ModifierContextChecker (line 276) | ModifierContextChecker(ErrorReporter& _errorReporter):
method visit (line 279) | bool visit(ModifierInvocation const&) override
method endVisit (line 286) | void endVisit(ModifierInvocation const&) override
method visit (line 291) | bool visit(Identifier const& _identifier) override
type EventOutsideEmitErrorOutsideRevertChecker (line 313) | struct EventOutsideEmitErrorOutsideRevertChecker: public PostTypeChecker...
method EventOutsideEmitErrorOutsideRevertChecker (line 315) | EventOutsideEmitErrorOutsideRevertChecker(ErrorReporter& _errorReporter):
method visit (line 318) | bool visit(EmitStatement const& _emitStatement) override
method endVisit (line 324) | void endVisit(EmitStatement const&) override
method visit (line 329) | bool visit(RevertStatement const& _revertStatement) override
method endVisit (line 335) | void endVisit(RevertStatement const&) override
method visit (line 340) | bool visit(FunctionCall const& _functionCall) override
method endVisit (line 369) | void endVisit(FunctionCall const& _functionCall) override
type NoVariablesInInterfaceChecker (line 385) | struct NoVariablesInInterfaceChecker: public PostTypeChecker::Checker
method NoVariablesInInterfaceChecker (line 387) | NoVariablesInInterfaceChecker(ErrorReporter& _errorReporter):
method visit (line 391) | bool visit(VariableDeclaration const& _variable) override
method visit (line 406) | bool visit(ContractDefinition const& _contract) override
method endVisit (line 412) | void endVisit(ContractDefinition const&) override
method visit (line 417) | bool visit(StructDefinition const&) override
method endVisit (line 424) | void endVisit(StructDefinition const&) override
type ReservedErrorSelector (line 435) | struct ReservedErrorSelector: public PostTypeChecker::Checker
method ReservedErrorSelector (line 437) | ReservedErrorSelector(ErrorReporter& _errorReporter):
method endVisit (line 441) | void endVisit(ErrorDefinition const& _error) override
class YulLValueChecker (line 462) | class YulLValueChecker : public solidity::yul::ASTWalker
method YulLValueChecker (line 465) | YulLValueChecker(ASTString const& _identifierName): m_identifierName(_...
method willBeWrittenTo (line 466) | bool willBeWrittenTo() const { return m_willBeWrittenTo; }
class LValueChecker (line 484) | class LValueChecker: public ASTConstVisitor
method LValueChecker (line 487) | LValueChecker(Identifier const& _identifier):
method willBeWrittenTo (line 490) | bool willBeWrittenTo() const { return m_willBeWrittenTo; }
method endVisit (line 491) | void endVisit(Identifier const& _identifier) override
method endVisit (line 503) | void endVisit(InlineAssembly const& _inlineAssembly) override
type SimpleCounterForLoopChecker (line 517) | struct SimpleCounterForLoopChecker: public PostTypeChecker::Checker
method SimpleCounterForLoopChecker (line 519) | SimpleCounterForLoopChecker(ErrorReporter& _errorReporter): Checker(_e...
method visit (line 520) | bool visit(ForStatement const& _forStatement) override
method isSimpleCounterLoop (line 525) | bool isSimpleCounterLoop(ForStatement const& _forStatement) const
FILE: libsolidity/analysis/PostTypeChecker.h
function namespace (line 27) | namespace solidity::langutil
function namespace (line 33) | namespace solidity::frontend
FILE: libsolidity/analysis/PostTypeContractLevelChecker.cpp
function VariableDeclaration (line 211) | VariableDeclaration const* findLastStorageVariable(ContractDefinition co...
FILE: libsolidity/analysis/PostTypeContractLevelChecker.h
function namespace (line 26) | namespace solidity::langutil
function namespace (line 31) | namespace solidity::frontend
FILE: libsolidity/analysis/ReferencesResolver.h
function namespace (line 34) | namespace solidity::langutil
function namespace (line 40) | namespace solidity::frontend
FILE: libsolidity/analysis/Scoper.h
function namespace (line 24) | namespace solidity::frontend
FILE: libsolidity/analysis/StaticAnalyzer.cpp
class solidity::frontend::ConstructorUsesAssembly (line 41) | class solidity::frontend::ConstructorUsesAssembly
method check (line 46) | bool check(ContractDefinition const& _contract)
class Checker (line 56) | class Checker: public ASTConstVisitor
method Checker (line 59) | Checker(FunctionDefinition const& _f) { _f.accept(*this); }
method visit (line 60) | bool visit(InlineAssembly const&) override { assemblySeen = true; re...
method checkInternal (line 64) | bool checkInternal(ContractDefinition const& _contract)
FILE: libsolidity/analysis/StaticAnalyzer.h
function namespace (line 32) | namespace solidity::langutil
function namespace (line 37) | namespace solidity::frontend
FILE: libsolidity/analysis/SyntaxChecker.h
function namespace (line 27) | namespace solidity::langutil
function namespace (line 32) | namespace solidity::frontend
FILE: libsolidity/analysis/TypeChecker.cpp
function TypePointers (line 100) | TypePointers TypeChecker::typeCheckABIDecodeAndRetrieveReturnType(Functi...
function TypePointers (line 191) | TypePointers TypeChecker::typeCheckMetaTypeFunctionAndRetrieveReturnType...
function Type (line 1844) | Type const* TypeChecker::typeCheckTypeConversionAndRetrieveReturnType(
function Declaration (line 4165) | Declaration const& TypeChecker::dereference(Identifier const& _identifie...
function Declaration (line 4171) | Declaration const& TypeChecker::dereference(IdentifierPath const& _path)...
FILE: libsolidity/analysis/TypeChecker.h
function namespace (line 33) | namespace solidity::langutil
function namespace (line 38) | namespace solidity::frontend
FILE: libsolidity/analysis/ViewPureChecker.cpp
class AssemblyViewPureChecker (line 38) | class AssemblyViewPureChecker
method AssemblyViewPureChecker (line 41) | explicit AssemblyViewPureChecker(
method checkInstruction (line 115) | void checkInstruction(SourceLocation _location, evmasm::Instruction _i...
FILE: libsolidity/analysis/ViewPureChecker.h
function namespace (line 29) | namespace solidity::langutil
function namespace (line 35) | namespace solidity::frontend
FILE: libsolidity/ast/AST.cpp
function TryCatchClause (line 47) | TryCatchClause const* findClause(std::vector<ASTPointer<TryCatchClause>>...
function Declaration (line 62) | Declaration const* ASTNode::referencedDeclaration(Expression const& _exp...
function FunctionDefinition (line 74) | FunctionDefinition const* ASTNode::resolveFunctionCall(FunctionCall cons...
function ASTAnnotation (line 118) | ASTAnnotation& ASTNode::annotation() const
function SourceUnitAnnotation (line 125) | SourceUnitAnnotation& SourceUnit::annotation() const
function ImportAnnotation (line 152) | ImportAnnotation& ImportDirective::annotation() const
function Type (line 157) | Type const* ImportDirective::type() const
function FunctionDefinition (line 184) | FunctionDefinition const* ContractDefinition::constructor() const
function FunctionDefinition (line 197) | FunctionDefinition const* ContractDefinition::fallbackFunction() const
function FunctionDefinition (line 206) | FunctionDefinition const* ContractDefinition::receiveFunction() const
function Type (line 323) | Type const* ContractDefinition::type() const
function ContractDefinitionAnnotation (line 328) | ContractDefinitionAnnotation& ContractDefinition::annotation() const
function ContractDefinition (line 333) | ContractDefinition const* ContractDefinition::superContract(ContractDefi...
function FunctionDefinition (line 348) | FunctionDefinition const* ContractDefinition::nextConstructor(ContractDe...
function StorageLayoutSpecifierAnnotation (line 386) | StorageLayoutSpecifierAnnotation& StorageLayoutSpecifier::annotation() c...
function TypeNameAnnotation (line 391) | TypeNameAnnotation& TypeName::annotation() const
function Type (line 396) | Type const* UserDefinedValueTypeDefinition::type() const
function TypeDeclarationAnnotation (line 402) | TypeDeclarationAnnotation& UserDefinedValueTypeDefinition::annotation() ...
function Type (line 412) | Type const* StructDefinition::type() const
function StructDeclarationAnnotation (line 418) | StructDeclarationAnnotation& StructDefinition::annotation() const
function Type (line 423) | Type const* EnumValue::type() const
function Type (line 430) | Type const* EnumDefinition::type() const
function TypeDeclarationAnnotation (line 435) | TypeDeclarationAnnotation& EnumDefinition::annotation() const
function Visibility (line 447) | Visibility FunctionDefinition::defaultVisibility() const
function FunctionTypePointer (line 453) | FunctionTypePointer FunctionDefinition::functionType(bool _internal) const
function Type (line 488) | Type const* FunctionDefinition::type() const
function Type (line 494) | Type const* FunctionDefinition::typeViaContractName() const
function FunctionDefinitionAnnotation (line 517) | FunctionDefinitionAnnotation& FunctionDefinition::annotation() const
function FunctionDefinition (line 522) | FunctionDefinition const& FunctionDefinition::resolveVirtual(
function Type (line 567) | Type const* ModifierDefinition::type() const
function ModifierDefinitionAnnotation (line 572) | ModifierDefinitionAnnotation& ModifierDefinition::annotation() const
function ModifierDefinition (line 577) | ModifierDefinition const& ModifierDefinition::resolveVirtual(
function Type (line 601) | Type const* EventDefinition::type() const
function FunctionTypePointer (line 606) | FunctionTypePointer EventDefinition::functionType(bool _internal) const
function EventDefinitionAnnotation (line 614) | EventDefinitionAnnotation& EventDefinition::annotation() const
function Type (line 619) | Type const* ErrorDefinition::type() const
function FunctionTypePointer (line 624) | FunctionTypePointer ErrorDefinition::functionType(bool _internal) const
function ErrorDefinitionAnnotation (line 632) | ErrorDefinitionAnnotation& ErrorDefinition::annotation() const
function SourceUnit (line 637) | SourceUnit const& Scopable::sourceUnit() const
function CallableDeclaration (line 647) | CallableDeclaration const* Scopable::functionOrModifierDefinition() const
function DeclarationAnnotation (line 697) | DeclarationAnnotation& Declaration::annotation() const
function Type (line 872) | Type const* VariableDeclaration::type() const
function FunctionTypePointer (line 877) | FunctionTypePointer VariableDeclaration::functionType(bool _internal) const
function VariableDeclarationAnnotation (line 897) | VariableDeclarationAnnotation& VariableDeclaration::annotation() const
function StatementAnnotation (line 902) | StatementAnnotation& Statement::annotation() const
function InlineAssemblyAnnotation (line 907) | InlineAssemblyAnnotation& InlineAssembly::annotation() const
function BlockAnnotation (line 912) | BlockAnnotation& Block::annotation() const
function TryCatchClauseAnnotation (line 917) | TryCatchClauseAnnotation& TryCatchClause::annotation() const
function ForStatementAnnotation (line 922) | ForStatementAnnotation& ForStatement::annotation() const
function ReturnAnnotation (line 927) | ReturnAnnotation& Return::annotation() const
function ExpressionAnnotation (line 932) | ExpressionAnnotation& Expression::annotation() const
function MemberAccessAnnotation (line 937) | MemberAccessAnnotation& MemberAccess::annotation() const
function OperationAnnotation (line 942) | OperationAnnotation& UnaryOperation::annotation() const
function FunctionType (line 947) | FunctionType const* UnaryOperation::userDefinedFunctionType() const
function FunctionType (line 960) | FunctionType const* BinaryOperation::userDefinedFunctionType() const
function BinaryOperationAnnotation (line 973) | BinaryOperationAnnotation& BinaryOperation::annotation() const
function FunctionCallAnnotation (line 978) | FunctionCallAnnotation& FunctionCall::annotation() const
function IdentifierAnnotation (line 1021) | IdentifierAnnotation& Identifier::annotation() const
function ASTString (line 1026) | ASTString Literal::valueWithoutUnderscores() const
function TryCatchClause (line 1066) | TryCatchClause const* TryStatement::successClause() const
function TryCatchClause (line 1072) | TryCatchClause const* TryStatement::panicClause() const {
function TryCatchClause (line 1076) | TryCatchClause const* TryStatement::errorClause() const {
function TryCatchClause (line 1080) | TryCatchClause const* TryStatement::fallbackClause() const {
function TypeClassDefinitionAnnotation (line 1086) | TypeClassDefinitionAnnotation& TypeClassDefinition::annotation() const
function TypeDeclarationAnnotation (line 1090) | TypeDeclarationAnnotation& TypeDefinition::annotation() const
FILE: libsolidity/ast/AST.h
function namespace (line 48) | namespace solidity::yul
function namespace (line 55) | namespace solidity::frontend
function class (line 323) | class PragmaDirective: public ASTNode
function class (line 357) | class ImportDirective: public Declaration
function class (line 407) | class VariableScope
function class (line 421) | class StructuredDocumentation: public ASTNode
function class (line 445) | class Documented
function class (line 462) | class StructurallyDocumented
function class (line 480) | class ImplementationOptional
function canBeDeployed (line 574) | bool canBeDeployed() const;
function StorageLayoutSpecifier (line 591) | StorageLayoutSpecifier const* storageLayoutSpecifier() const { return m_...
function StorageLayoutSpecifier (line 592) | StorageLayoutSpecifier* storageLayoutSpecifier() { return m_storageLayou...
function m_abstract (line 604) | bool m_abstract{false};
function class (line 613) | class StorageLayoutSpecifier : public ASTNode
function class (line 663) | class InheritanceSpecifier: public ASTNode
function class (line 712) | class UsingForDirective: public ASTNode
function TypeName (line 738) | TypeName const* typeName() const { return m_typeName.get(); }
function class (line 850) | class UserDefinedValueTypeDefinition: public Declaration
function class (line 885) | class ParameterList: public ASTNode
function class (line 962) | class OverrideSpecifier: public ASTNode
function libraryFunction (line 1025) | bool libraryFunction() const;
function Expression (line 1076) | Expression const* experimentalReturnExpression() const { return m_experi...
type Location (line 1094) | enum Location { Unspecified, Storage, Transient, Memory, CallData }
function Mutability (line 1095) | enum class Mutability { Mutable, Immutable, Constant };
function isLValue (line 1144) | bool isLValue() const override;
function isLocalVariable (line 1149) | bool isLocalVariable() const;
function Visibility (line 1245) | Visibility defaultVisibility() const override { return Visibility::Inter...
function CallableDeclaration (line 1368) | CallableDeclaration const& resolveVirtual(
function class (line 1514) | class Mapping: public TypeName
function class (line 1557) | class ArrayTypeName: public TypeName
function Expression (line 1571) | Expression const* length() const { return m_length.get(); }
function class (line 1667) | class PlaceholderStatement: public Statement
function class (line 1684) | class IfStatement: public Statement
function Statement (line 1706) | Statement const* falseStatement() const { return m_falseBody.get(); }
function ParameterList (line 1738) | ParameterList const* parameters() const { return m_parameters.get(); }
function class (line 1765) | class TryStatement: public Statement
function class (line 1798) | class BreakableStatement: public Statement
function class (line 1808) | class WhileStatement: public BreakableStatement
function Expression (line 1859) | Expression const* condition() const { return m_condExpression.get(); }
function ExpressionStatement (line 1860) | ExpressionStatement const* loopExpression() const { return m_loopExpress...
function class (line 1876) | class Continue: public Statement
function class (line 1885) | class Break: public Statement
function class (line 1894) | class Return: public Statement
function class (line 1917) | class Throw: public Statement
function class (line 1929) | class RevertStatement: public Statement
function class (line 1954) | class EmitStatement: public Statement
function class (line 1981) | class VariableDeclarationStatement: public Statement
function Expression (line 1996) | Expression const* initialValue() const { return m_initialValue.get(); }
function class (line 2011) | class ExpressionStatement: public Statement
function class (line 2040) | class Expression: public ASTNode
function class (line 2048) | class Conditional: public Expression
function class (line 2078) | class Assignment: public Expression
function class (line 2116) | class TupleExpression: public Expression
function class (line 2143) | class UnaryOperation: public Expression
function class (line 2181) | class BinaryOperation: public Expression
function class (line 2216) | class FunctionCall: public Expression
function class (line 2259) | class FunctionCallOptions: public Expression
function class (line 2288) | class NewExpression: public Expression
function class (line 2309) | class MemberAccess: public Expression
function class (line 2342) | class IndexAccess: public Expression
function Expression (line 2356) | Expression const* indexExpression() const { return m_index.get(); }
function class (line 2366) | class IndexRangeAccess: public Expression
function Expression (line 2381) | Expression const* startExpression() const { return m_start.get(); }
function Expression (line 2382) | Expression const* endExpression() const { return m_end.get(); }
function class (line 2394) | class PrimaryExpression: public Expression
function class (line 2403) | class Identifier: public PrimaryExpression
function class (line 2428) | class ElementaryTypeNameExpression: public PrimaryExpression
function class (line 2452) | class Literal: public PrimaryExpression
function ASTString (line 2483) | ASTString valueWithoutUnderscores() const;
function ParameterList (line 2564) | ParameterList const* argumentSorts() const { return m_argumentSorts.get(...
function Expression (line 2602) | Expression const* typeExpression() const { return m_typeExpression.get(); }
function class (line 2611) | class TypeClassName: public ASTNode
function class (line 2637) | class Builtin: public Expression
FILE: libsolidity/ast/ASTAnnotations.h
function namespace (line 39) | namespace solidity::yul
function namespace (line 46) | namespace solidity::frontend
function StatementAnnotation (line 251) | struct ReturnAnnotation: StatementAnnotation
function ASTAnnotation (line 259) | struct TypeNameAnnotation: ASTAnnotation
function ASTAnnotation (line 266) | struct IdentifierPathAnnotation: ASTAnnotation
function ASTAnnotation (line 277) | struct ExpressionAnnotation: ASTAnnotation
function ExpressionAnnotation (line 304) | struct IdentifierAnnotation: ExpressionAnnotation
function ExpressionAnnotation (line 316) | struct MemberAccessAnnotation: ExpressionAnnotation
function ExpressionAnnotation (line 324) | struct OperationAnnotation: ExpressionAnnotation
function OperationAnnotation (line 329) | struct BinaryOperationAnnotation: OperationAnnotation
function FunctionCallKind (line 336) | enum class FunctionCallKind
FILE: libsolidity/ast/ASTEnums.h
type class (line 34) | enum class
type class (line 37) | enum class
type class (line 40) | enum class
function Arithmetic (line 42) | enum class Arithmetic { Checked, Wrapping };
function ContractKind (line 76) | enum class ContractKind { Interface, Contract, Library };
FILE: libsolidity/ast/ASTForward.h
function namespace (line 32) | namespace solidity::langutil
function namespace (line 37) | namespace solidity::frontend
FILE: libsolidity/ast/ASTJsonExporter.cpp
function addIfSet (line 55) | void addIfSet(std::vector<std::pair<std::string, Json>>& _attributes, st...
type solidity::frontend (line 73) | namespace solidity::frontend
function Json (line 130) | Json ASTJsonExporter::sourceLocationsToJson(std::vector<SourceLocation...
function Json (line 145) | Json ASTJsonExporter::typePointerToJson(Type const* _tp, bool _without...
function Json (line 153) | Json ASTJsonExporter::typePointerToJson(std::optional<FuncCallArgument...
function Json (line 186) | Json ASTJsonExporter::inlineAssemblyIdentifierToJson(std::pair<yul::Id...
function Json (line 207) | Json ASTJsonExporter::toJson(ASTNode const& _node)
function Json (line 213) | Json ASTJsonExporter::toJson(ASTNode const* _node)
FILE: libsolidity/ast/ASTJsonExporter.h
function namespace (line 39) | namespace solidity::langutil
FILE: libsolidity/ast/ASTJsonImporter.cpp
type solidity::frontend (line 42) | namespace solidity::frontend
function SourceLocation (line 93) | SourceLocation const ASTJsonImporter::createSourceLocation(Json const&...
function SourceLocation (line 114) | SourceLocation ASTJsonImporter::createNameSourceLocation(Json const& _...
function SourceLocation (line 121) | SourceLocation ASTJsonImporter::createKeyNameSourceLocation(Json const...
function SourceLocation (line 128) | SourceLocation ASTJsonImporter::createValueNameSourceLocation(Json con...
function Json (line 1109) | Json ASTJsonImporter::member(Json const& _node, std::string const& _name)
function Token (line 1116) | Token ASTJsonImporter::scanSingleToken(Json const& _node)
function ContractKind (line 1146) | ContractKind ASTJsonImporter::contractKind(Json const& _node)
function Token (line 1161) | Token ASTJsonImporter::literalTokenKind(Json const& _node)
function Visibility (line 1180) | Visibility ASTJsonImporter::visibility(Json const& _node)
function StateMutability (line 1264) | StateMutability ASTJsonImporter::stateMutability(Json const& _node)
FILE: libsolidity/ast/ASTJsonImporter.h
function namespace (line 34) | namespace solidity::frontend
FILE: libsolidity/ast/ASTUtils.cpp
type solidity::frontend (line 26) | namespace solidity::frontend
function ASTNode (line 29) | ASTNode const* locateInnermostASTNode(int _offsetInFile, SourceUnit co...
function isConstantVariableRecursive (line 51) | bool isConstantVariableRecursive(VariableDeclaration const& _varDecl)
function VariableDeclaration (line 72) | VariableDeclaration const* rootConstVariableDeclaration(VariableDeclar...
function Expression (line 89) | Expression const* resolveOuterUnaryTuples(Expression const* _expr)
function Type (line 99) | Type const* type(Expression const& _expression)
function Type (line 105) | Type const* type(VariableDeclaration const& _variable)
function bigint (line 111) | bigint contractStorageSizeUpperBound(ContractDefinition const& _contra...
function u256 (line 127) | u256 layoutBaseForInheritanceHierarchy(ContractDefinition const& _topL...
function erc7201CompileTimeValue (line 141) | std::optional<u256> erc7201CompileTimeValue(FunctionCall const& _erc72...
FILE: libsolidity/ast/ASTUtils.h
function namespace (line 23) | namespace solidity::frontend
FILE: libsolidity/ast/ASTVisitor.h
function namespace (line 33) | namespace solidity::frontend
FILE: libsolidity/ast/AST_accept.h
function namespace (line 30) | namespace solidity::frontend
FILE: libsolidity/ast/CallGraph.h
function namespace (line 29) | namespace solidity::frontend
FILE: libsolidity/ast/ExperimentalFeatures.h
function namespace (line 27) | namespace solidity::frontend
FILE: libsolidity/ast/TypeProvider.cpp
function clearCache (line 157) | inline void clearCache(Type const& type)
function clearCache (line 163) | inline void clearCache(std::unique_ptr<T> const& type)
function clearCaches (line 171) | inline void clearCaches(Container& container)
function T (line 201) | inline T const* TypeProvider::createAndGet(Args&& ... _args)
function Type (line 207) | Type const* TypeProvider::fromElementaryTypeName(ElementaryTypeNameToken...
function Type (line 262) | Type const* TypeProvider::fromElementaryTypeName(std::string const& _name)
function ArrayType (line 307) | ArrayType const* TypeProvider::bytesStorage()
function ArrayType (line 314) | ArrayType const* TypeProvider::bytesMemory()
function ArrayType (line 321) | ArrayType const* TypeProvider::bytesCalldata()
function ArrayType (line 328) | ArrayType const* TypeProvider::stringStorage()
function ArrayType (line 335) | ArrayType const* TypeProvider::stringMemory()
function Type (line 342) | Type const* TypeProvider::forLiteral(Literal const& _literal)
function RationalNumberType (line 360) | RationalNumberType const* TypeProvider::rationalNumber(Literal const& _l...
function StringLiteralType (line 379) | StringLiteralType const* TypeProvider::stringLiteral(std::string const& ...
function FixedPointType (line 388) | FixedPointType const* TypeProvider::fixedPoint(unsigned m, unsigned n, F...
function TupleType (line 402) | TupleType const* TypeProvider::tuple(std::vector<Type const*> members)
function ReferenceType (line 410) | ReferenceType const* TypeProvider::withLocation(ReferenceType const* _ty...
function FunctionType (line 419) | FunctionType const* TypeProvider::function(FunctionDefinition const& _fu...
function FunctionType (line 424) | FunctionType const* TypeProvider::function(VariableDeclaration const& _v...
function FunctionType (line 429) | FunctionType const* TypeProvider::function(EventDefinition const& _def)
function FunctionType (line 434) | FunctionType const* TypeProvider::function(ErrorDefinition const& _def)
function FunctionType (line 439) | FunctionType const* TypeProvider::function(FunctionTypeName const& _type...
function FunctionType (line 444) | FunctionType const* TypeProvider::function(
function FunctionType (line 463) | FunctionType const* TypeProvider::function(
function RationalNumberType (line 486) | RationalNumberType const* TypeProvider::rationalNumber(rational const& _...
function ArrayType (line 491) | ArrayType const* TypeProvider::array(DataLocation _location, bool _isStr...
function ArrayType (line 510) | ArrayType const* TypeProvider::array(DataLocation _location, Type const*...
function ArrayType (line 515) | ArrayType const* TypeProvider::array(DataLocation _location, Type const*...
function ArraySliceType (line 520) | ArraySliceType const* TypeProvider::arraySlice(ArrayType const& _arrayType)
function ContractType (line 525) | ContractType const* TypeProvider::contract(ContractDefinition const& _co...
function EnumType (line 530) | EnumType const* TypeProvider::enumType(EnumDefinition const& _enumDef)
function ModuleType (line 535) | ModuleType const* TypeProvider::module(SourceUnit const& _source)
function TypeType (line 540) | TypeType const* TypeProvider::typeType(Type const* _actualType)
function StructType (line 545) | StructType const* TypeProvider::structType(StructDefinition const& _stru...
function ModifierType (line 550) | ModifierType const* TypeProvider::modifier(ModifierDefinition const& _def)
function MagicType (line 555) | MagicType const* TypeProvider::magic(MagicType::Kind _kind)
function MagicType (line 561) | MagicType const* TypeProvider::meta(Type const* _type)
function MappingType (line 574) | MappingType const* TypeProvider::mapping(Type const* _keyType, ASTString...
function UserDefinedValueType (line 579) | UserDefinedValueType const* TypeProvider::userDefinedValueType(UserDefin...
FILE: libsolidity/ast/TypeProvider.h
function namespace (line 29) | namespace solidity::frontend
FILE: libsolidity/ast/Types.cpp
function fitsPrecisionBase10 (line 66) | bool fitsPrecisionBase10(bigint const& _mantissa, uint32_t _expBase10)
function BoolResult (line 73) | BoolResult fitsIntegerType(bigint const& _value, IntegerType const& _type)
function fitsIntoBits (line 86) | bool fitsIntoBits(bigint const& _value, unsigned _bits, bool _signed)
function transformParametersToExternal (line 97) | util::Result<TypePointers> transformParametersToExternal(TypePointers co...
function toStringInParentheses (line 114) | std::string toStringInParentheses(TypePointers const& _types, bool _with...
function u256 (line 200) | u256 const& MemberList::storageSize() const
function StorageOffsets (line 205) | StorageOffsets const& MemberList::storageOffsets() const {
function parenthesizeIdentifier (line 223) | std::string parenthesizeIdentifier(std::string const& _internal)
function identifierList (line 229) | std::string identifierList(Range const&& _list)
function richIdentifier (line 234) | std::string richIdentifier(Type const* _type)
function identifierList (line 239) | std::string identifierList(std::vector<Type const*> const& _list)
function identifierList (line 244) | std::string identifierList(Type const* _type)
function identifierList (line 249) | std::string identifierList(Type const* _type1, Type const* _type2)
function parenthesizeUserIdentifier (line 257) | std::string parenthesizeUserIdentifier(std::string const& _internal)
function Type (line 286) | Type const* Type::commonType(Type const* _a, Type const* _b)
function MemberList (line 298) | MemberList const& Type::members(ASTNode const* _currentScope) const
function Type (line 315) | Type const* Type::fullEncodingType(bool _inLibraryCall, bool _encoderV2,...
function usingForDirectivesForType (line 345) | std::vector<UsingForDirective const*> usingForDirectivesForType(Type con...
function BoolResult (line 486) | BoolResult AddressType::isImplicitlyConvertibleTo(Type const& _other) const
function BoolResult (line 495) | BoolResult AddressType::isExplicitlyConvertibleTo(Type const& _convertTo...
function u256 (line 525) | u256 AddressType::literalValue(Literal const* _literal) const
function TypeResult (line 532) | TypeResult AddressType::unaryOperatorResult(Token _operator) const
function TypeResult (line 538) | TypeResult AddressType::binaryOperatorResult(Token _operator, Type const...
function isValidShiftAndAmountType (line 576) | bool isValidShiftAndAmountType(Token _operator, Type const& _shiftAmount...
function BoolResult (line 605) | BoolResult IntegerType::isImplicitlyConvertibleTo(Type const& _convertTo...
function BoolResult (line 627) | BoolResult IntegerType::isExplicitlyConvertibleTo(Type const& _convertTo...
function TypeResult (line 648) | TypeResult IntegerType::unaryOperatorResult(Token _operator) const
function u256 (line 680) | u256 IntegerType::min() const
function u256 (line 688) | u256 IntegerType::max() const
function bigint (line 696) | bigint IntegerType::minValue() const
function bigint (line 704) | bigint IntegerType::maxValue() const
function TypeResult (line 712) | TypeResult IntegerType::binaryOperatorResult(Token _operator, Type const...
function BoolResult (line 776) | BoolResult FixedPointType::isImplicitlyConvertibleTo(Type const& _conver...
function BoolResult (line 791) | BoolResult FixedPointType::isExplicitlyConvertibleTo(Type const& _conver...
function TypeResult (line 796) | TypeResult FixedPointType::unaryOperatorResult(Token _operator) const
function bigint (line 829) | bigint FixedPointType::maxIntegerValue() const
function bigint (line 835) | bigint FixedPointType::minIntegerValue() const
function TypeResult (line 846) | TypeResult FixedPointType::binaryOperatorResult(Token _operator, Type co...
function IntegerType (line 861) | IntegerType const* FixedPointType::asIntegerType() const
function BoolResult (line 1010) | BoolResult RationalNumberType::isImplicitlyConvertibleTo(Type const& _co...
function BoolResult (line 1042) | BoolResult RationalNumberType::isExplicitlyConvertibleTo(Type const& _co...
function TypeResult (line 1068) | TypeResult RationalNumberType::unaryOperatorResult(Token _operator) const
function TypeResult (line 1076) | TypeResult RationalNumberType::binaryOperatorResult(Token _operator, Typ...
function u256 (line 1181) | u256 RationalNumberType::literalValue(Literal const*) const
function Type (line 1210) | Type const* RationalNumberType::mobileType() const
function IntegerType (line 1218) | IntegerType const* RationalNumberType::integerType() const
function FixedPointType (line 1234) | FixedPointType const* RationalNumberType::fixedPointType() const
function BoolResult (line 1282) | BoolResult StringLiteralType::isImplicitlyConvertibleTo(Type const& _con...
function Type (line 1339) | Type const* StringLiteralType::mobileType() const
function BoolResult (line 1352) | BoolResult FixedBytesType::isImplicitlyConvertibleTo(Type const& _conver...
function BoolResult (line 1360) | BoolResult FixedBytesType::isExplicitlyConvertibleTo(Type const& _conver...
function TypeResult (line 1376) | TypeResult FixedBytesType::unaryOperatorResult(Token _operator) const
function TypeResult (line 1387) | TypeResult FixedBytesType::binaryOperatorResult(Token _operator, Type co...
function u256 (line 1426) | u256 BoolType::literalValue(Literal const* _literal) const
function TypeResult (line 1437) | TypeResult BoolType::unaryOperatorResult(Token _operator) const
function TypeResult (line 1447) | TypeResult BoolType::binaryOperatorResult(Token _operator, Type const* _...
function Type (line 1457) | Type const* ContractType::encodingType() const
function BoolResult (line 1468) | BoolResult ContractType::isImplicitlyConvertibleTo(Type const& _convertT...
function BoolResult (line 1491) | BoolResult ContractType::isExplicitlyConvertibleTo(Type const& _convertT...
function TypeResult (line 1509) | TypeResult ContractType::unaryOperatorResult(Token _operator) const
function Type (line 1534) | Type const* ReferenceType::withLocation(DataLocation _location, bool _is...
function TypeResult (line 1539) | TypeResult ReferenceType::unaryOperatorResult(Token _operator) const
function Type (line 1567) | Type const* ReferenceType::copyForLocationIfReference(Type const* _type)...
function BoolResult (line 1628) | BoolResult ArrayType::isImplicitlyConvertibleTo(Type const& _convertTo) ...
function BoolResult (line 1668) | BoolResult ArrayType::isExplicitlyConvertibleTo(Type const& _convertTo) ...
function BoolResult (line 1725) | BoolResult ArrayType::validForLocation(DataLocation _loc) const
function bigint (line 1776) | bigint ArrayType::unlimitedStaticCalldataSize(bool _padded) const
function bigint (line 1810) | bigint ArrayType::storageSizeUpperBound() const
function u256 (line 1818) | u256 ArrayType::storageSize() const
function Type (line 1963) | Type const* ArrayType::encodingType() const
function Type (line 1971) | Type const* ArrayType::decodingType() const
function TypeResult (line 1979) | TypeResult ArrayType::interfaceType(bool _inLibrary) const
function Type (line 2012) | Type const* ArrayType::finalBaseType(bool _breakIfDynamicArrayType) const
function u256 (line 2026) | u256 ArrayType::memoryDataSize() const
function BoolResult (line 2048) | BoolResult ArraySliceType::isImplicitlyConvertibleTo(Type const& _other)...
function BoolResult (line 2059) | BoolResult ArraySliceType::isExplicitlyConvertibleTo(Type const& _conver...
function Type (line 2088) | Type const* ArraySliceType::mobileType() const
function FunctionType (line 2146) | FunctionType const* ContractType::newExpressionType() const
function Type (line 2213) | Type const* StructType::encodingType() const
function BoolResult (line 2221) | BoolResult StructType::isImplicitlyConvertibleTo(Type const& _convertTo)...
function u256 (line 2306) | u256 StructType::memoryDataSize() const
function bigint (line 2314) | bigint StructType::storageSizeUpperBound() const
function u256 (line 2322) | u256 StructType::storageSize() const
function TypeResult (line 2387) | TypeResult StructType::interfaceType(bool _inLibrary) const
function Declaration (line 2490) | Declaration const* StructType::typeDefinition() const
function BoolResult (line 2495) | BoolResult StructType::validForLocation(DataLocation _loc) const
function FunctionTypePointer (line 2551) | FunctionTypePointer StructType::constructorType() const
function u256 (line 2577) | u256 StructType::memoryOffsetOfMember(std::string const& _name) const
function TypePointers (line 2589) | TypePointers StructType::memoryMemberTypes() const
function Type (line 2624) | Type const* EnumType::encodingType() const
function Declaration (line 2630) | Declaration const* EnumType::typeDefinition() const
function TypeResult (line 2635) | TypeResult EnumType::unaryOperatorResult(Token _operator) const
function BoolResult (line 2674) | BoolResult EnumType::isExplicitlyConvertibleTo(Type const& _convertTo) c...
function Type (line 2695) | Type const& UserDefinedValueType::underlyingType() const
function Declaration (line 2703) | Declaration const* UserDefinedValueType::typeDefinition() const
function BoolResult (line 2741) | BoolResult TupleType::isImplicitlyConvertibleTo(Type const& _other) const
function u256 (line 2796) | u256 TupleType::storageSize() const
function Type (line 2814) | Type const* TupleType::mobileType() const
function FunctionTypePointer (line 3010) | FunctionTypePointer FunctionType::newExpressionType(ContractDefinition c...
function TypePointers (line 3047) | TypePointers FunctionType::returnParameterTypesWithoutDynamicTypes() const
function TypePointers (line 3069) | TypePointers FunctionType::parameterTypes() const
function TypePointers (line 3076) | TypePointers const& FunctionType::parameterTypesIncludingSelf() const
function BoolResult (line 3155) | BoolResult FunctionType::isExplicitlyConvertibleTo(Type const& _convertT...
function BoolResult (line 3165) | BoolResult FunctionType::isImplicitlyConvertibleTo(Type const& _convertT...
function TypeResult (line 3203) | TypeResult FunctionType::unaryOperatorResult(Token _operator) const
function TypeResult (line 3210) | TypeResult FunctionType::binaryOperatorResult(Token _operator, Type cons...
function u256 (line 3281) | u256 FunctionType::storageSize() const
function FunctionTypePointer (line 3365) | FunctionTypePointer FunctionType::interfaceFunctionType() const
function Type (line 3498) | Type const* FunctionType::encodingType() const
function TypeResult (line 3509) | TypeResult FunctionType::interfaceType(bool /*_inLibrary*/) const
function Type (line 3517) | Type const* FunctionType::mobileType() const
function u256 (line 3687) | u256 FunctionType::externalIdentifier() const
function TypePointers (line 3723) | TypePointers FunctionType::parseElementaryTypeVector(strings const& _types)
function Type (line 3732) | Type const* FunctionType::copyAndSetCallOptions(bool _setGas, bool _setV...
function FunctionTypePointer (line 3751) | FunctionTypePointer FunctionType::withBoundFirstArgument() const
function FunctionTypePointer (line 3771) | FunctionTypePointer FunctionType::asExternallyCallableFunction(bool _inL...
function Type (line 3811) | Type const* FunctionType::selfType() const
function Type (line 3847) | Type const* MappingType::encodingType() const
function TypeResult (line 3875) | TypeResult MappingType::interfaceType(bool _inLibrary) const
function u256 (line 3916) | u256 TypeType::storageSize() const
function BoolResult (line 4049) | BoolResult TypeType::isExplicitlyConvertibleTo(Type const& _convertTo) c...
function u256 (line 4067) | u256 ModifierType::storageSize() const
function Type (line 4330) | Type const* MagicType::typeArgument() const
function Type (line 4337) | Type const* InaccessibleDynamicType::decodingType() const
FILE: libsolidity/ast/Types.h
function namespace (line 46) | namespace solidity::frontend
function rational (line 63) | inline rational makeRational(bigint const& _numerator, bigint const& _de...
function DataLocation (line 73) | enum class DataLocation { Storage, Transient, CallData, Memory };
function class (line 483) | class IntegerType: public Type
function Category (line 927) | Category category() const override { return Category::ArraySlice; }
function BoolResult (line 941) | BoolResult validForLocation(DataLocation _loc) const override { return m...
function u256 (line 944) | u256 memoryDataSize() const override { solAssert(false, ""); }
function TypeResult (line 989) | TypeResult interfaceType(bool _inLibrary) const override
function isPayable (line 1001) | bool isPayable() const;
function class (line 1596) | class TypeType: public Type
function class (line 1625) | class ModifierType: public Type
function class (line 1651) | class ModuleType: public Type
function BoolResult (line 1733) | BoolResult isImplicitlyConvertibleTo(Type const&) const override { retur...
function BoolResult (line 1734) | BoolResult isExplicitlyConvertibleTo(Type const&) const override { retur...
function TypeResult (line 1735) | TypeResult binaryOperatorResult(Token, Type const*) const override { ret...
function calldataEncodedSize (line 1736) | unsigned calldataEncodedSize(bool) const override { return 32; }
FILE: libsolidity/ast/UserDefinableOperators.h
function namespace (line 7) | namespace solidity::frontend
FILE: libsolidity/codegen/ABIFunctions.h
function namespace (line 37) | namespace solidity::frontend
FILE: libsolidity/codegen/ArrayUtils.h
function namespace (line 28) | namespace solidity::frontend
FILE: libsolidity/codegen/Compiler.h
function namespace (line 34) | namespace solidity::frontend
FILE: libsolidity/codegen/CompilerContext.cpp
function FunctionDefinition (line 281) | FunctionDefinition const& CompilerContext::superFunction(FunctionDefinit...
function ContractDefinition (line 293) | ContractDefinition const& CompilerContext::mostDerivedContract() const
function Declaration (line 299) | Declaration const* CompilerContext::nextFunctionToCompile() const
function CompilerContext (line 329) | CompilerContext& CompilerContext::appendJump(evmasm::AssemblyItem::JumpT...
function CompilerContext (line 336) | CompilerContext& CompilerContext::appendPanic(util::PanicCode _code)
function CompilerContext (line 342) | CompilerContext& CompilerContext::appendConditionalPanic(util::PanicCode...
function CompilerContext (line 351) | CompilerContext& CompilerContext::appendRevert(std::string const& _message)
function CompilerContext (line 357) | CompilerContext& CompilerContext::appendConditionalRevert(bool _forwardR...
function Declaration (line 616) | Declaration const* CompilerContext::FunctionCompilationQueue::nextFuncti...
FILE: libsolidity/codegen/CompilerContext.h
function namespace (line 51) | namespace solidity::frontend
function pushSubroutineSize (line 231) | void pushSubroutineSize(evmasm::SubAssemblyID _subRoutine) { m_asm->push...
function pushSubroutineOffset (line 233) | void pushSubroutineOffset(evmasm::SubAssemblyID _subRoutine) { m_asm->pu...
function appendProgramSize (line 235) | void appendProgramSize() { m_asm->appendProgramSize(); }
function appendLibraryAddress (line 239) | void appendLibraryAddress(std::string const& _identifier) { m_asm->appen...
function appendImmutable (line 241) | void appendImmutable(std::string const& _identifier) { m_asm->appendImmu...
function appendImmutableAssignment (line 243) | void appendImmutableAssignment(std::string const& _identifier) { m_asm->...
function appendDeployTimeAddress (line 246) | void appendDeployTimeAddress() { m_asm->append(evmasm::PushDeployTimeAdd...
function popVisitedNodes (line 250) | void popVisitedNodes() { m_visitedNodes.pop(); updateSourceLocation(); }
function pushVisitedNodes (line 252) | void pushVisitedNodes(ASTNode const* _node) { m_visitedNodes.push(_node)...
function appendToAuxiliaryData (line 285) | void appendToAuxiliaryData(bytes const& _data) { m_asm->appendToAuxiliar...
function optimise (line 288) | void optimise(OptimiserSettings const& _settings) { m_asm->optimise(evma...
function CompilerContext (line 291) | CompilerContext* runtimeContext() const { return m_runtimeContext; }
function class (line 304) | class LocationSetter: public ScopeGuard
function setModifierDepth (line 311) | void setModifierDepth(size_t _modifierDepth) { m_asm->m_currentModifierD...
type FunctionCompilationQueue (line 323) | struct FunctionCompilationQueue
FILE: libsolidity/codegen/CompilerUtils.h
function namespace (line 32) | namespace solidity::frontend
FILE: libsolidity/codegen/ContractCompiler.cpp
class StackHeightChecker (line 73) | class StackHeightChecker
method StackHeightChecker (line 76) | explicit StackHeightChecker(CompilerContext const& _context):
method check (line 78) | void check()
function SubAssemblyID (line 111) | SubAssemblyID ContractCompiler::compileConstructor(
function SubAssemblyID (line 170) | SubAssemblyID ContractCompiler::packIntoContractCreator(ContractDefiniti...
function SubAssemblyID (line 223) | SubAssemblyID ContractCompiler::deployLibrary(ContractDefinition const& ...
function hasPayableFunctions (line 393) | bool hasPayableFunctions(ContractDefinition const& _contract)
FILE: libsolidity/codegen/ContractCompiler.h
function namespace (line 34) | namespace solidity::frontend
FILE: libsolidity/codegen/ExpressionCompiler.cpp
function Type (line 57) | Type const* closestType(Type const* _type, Type const* _targetType, bool...
type Option (line 1579) | enum Option { Salt, Gas, Value }
function CompilerUtils (line 3090) | CompilerUtils ExpressionCompiler::utils()
FILE: libsolidity/codegen/ExpressionCompiler.h
function namespace (line 37) | namespace solidity::evmasm
function namespace (line 42) | namespace solidity::frontend
FILE: libsolidity/codegen/LValue.cpp
class solidity::frontend::GenericStorageItem<false> (line 622) | class solidity::frontend::GenericStorageItem<false>
class solidity::frontend::GenericStorageItem<true> (line 623) | class solidity::frontend::GenericStorageItem<true>
FILE: libsolidity/codegen/LValue.h
function namespace (line 33) | namespace solidity::frontend
FILE: libsolidity/codegen/MultiUseYulFunctionCollector.h
function namespace (line 30) | namespace solidity::frontend
FILE: libsolidity/codegen/ReturnInfo.h
function namespace (line 27) | namespace solidity::frontend
FILE: libsolidity/codegen/YulUtilFunctions.cpp
function staticEncodingSize (line 45) | std::optional<size_t> staticEncodingSize(std::vector<Type const*> const&...
FILE: libsolidity/codegen/YulUtilFunctions.h
function namespace (line 38) | namespace solidity::frontend
FILE: libsolidity/codegen/ir/Common.cpp
type solidity::frontend (line 32) | namespace solidity::frontend
function YulArity (line 35) | YulArity YulArity::fromType(FunctionType const& _functionType)
function dispenseLocationComment (line 141) | std::string dispenseLocationComment(langutil::SourceLocation const& _l...
function dispenseLocationComment (line 156) | std::string dispenseLocationComment(ASTNode const& _node, IRGeneration...
FILE: libsolidity/codegen/ir/Common.h
function namespace (line 29) | namespace solidity::frontend
type IRNames (line 50) | struct IRNames
function YulArity (line 87) | struct std::less<solidity::frontend::YulArity>
FILE: libsolidity/codegen/ir/IRGenerationContext.cpp
function FunctionDefinition (line 50) | FunctionDefinition const* IRGenerationContext::dequeueFunctionForCodeGen...
function ContractDefinition (line 59) | ContractDefinition const& IRGenerationContext::mostDerivedContract() const
function IRVariable (line 65) | IRVariable const& IRGenerationContext::addLocalVariable(VariableDeclarat...
function IRVariable (line 74) | IRVariable const& IRGenerationContext::localVariable(VariableDeclaration...
function InternalDispatchMap (line 198) | InternalDispatchMap IRGenerationContext::consumeInternalDispatchMap()
function YulUtilFunctions (line 225) | YulUtilFunctions IRGenerationContext::utils()
function ABIFunctions (line 230) | ABIFunctions IRGenerationContext::abiFunctions()
FILE: libsolidity/codegen/ir/IRGenerationContext.h
function namespace (line 42) | namespace solidity::frontend
FILE: libsolidity/codegen/ir/IRGenerator.cpp
function verifyCallGraph (line 56) | void verifyCallGraph(
function collectReachableCallables (line 77) | std::set<CallableDeclaration const*, ASTNode::CompareByID> collectReacha...
function InternalDispatchMap (line 281) | InternalDispatchMap IRGenerator::generateInternalDispatchFunctions(Contr...
type InheritanceOrder (line 807) | struct InheritanceOrder
FILE: libsolidity/codegen/ir/IRGenerator.h
function namespace (line 39) | namespace solidity::frontend
FILE: libsolidity/codegen/ir/IRGeneratorForStatements.cpp
type CopyTranslate (line 63) | struct CopyTranslate: public yul::ASTCopier
method CopyTranslate (line 67) | CopyTranslate(IRGenerationContext& _context, ExternalRefsMap const& _r...
method translateIdentifier (line 82) | yul::YulName translateIdentifier(yul::YulName _name) override
method translate (line 91) | yul::Identifier translate(yul::Identifier const& _identifier) override
method translateReference (line 106) | yul::Expression translateReference(yul::Identifier const& _identifier)
function IRVariable (line 318) | IRVariable IRGeneratorForStatements::evaluateExpression(Expression const...
function IRVariable (line 2951) | IRVariable IRGeneratorForStatements::convert(IRVariable const& _from, Ty...
function IRVariable (line 2963) | IRVariable IRGeneratorForStatements::convertAndCleanup(IRVariable const&...
function IRVariable (line 3024) | IRVariable IRGeneratorForStatements::zeroValue(Type const& _type, bool _...
function IRVariable (line 3270) | IRVariable IRGeneratorForStatements::readFromLValue(IRLValue const& _lva...
function Type (line 3419) | Type const& IRGeneratorForStatements::type(Expression const& _expression)
FILE: libsolidity/codegen/ir/IRGeneratorForStatements.h
function namespace (line 31) | namespace solidity::frontend
FILE: libsolidity/codegen/ir/IRLValue.h
function namespace (line 27) | namespace solidity::frontend
FILE: libsolidity/codegen/ir/IRVariable.cpp
function IRVariable (line 43) | IRVariable IRVariable::part(std::string const& _name) const
function IRVariable (line 101) | IRVariable IRVariable::tupleComponent(size_t _i) const
FILE: libsolidity/codegen/ir/IRVariable.h
function namespace (line 24) | namespace solidity::frontend
FILE: libsolidity/experimental/analysis/Analysis.cpp
type Analysis::AnnotationContainer (line 30) | struct Analysis::AnnotationContainer
type Analysis::GlobalAnnotationContainer (line 37) | struct Analysis::GlobalAnnotationContainer
function makeIndexTuple (line 157) | std::tuple<std::integral_constant<size_t, Is>...> makeIndexTuple(std::in...
FILE: libsolidity/experimental/analysis/Analysis.h
function namespace (line 26) | namespace solidity::frontend
function namespace (line 32) | namespace solidity::langutil
function namespace (line 37) | namespace solidity::frontend::experimental
FILE: libsolidity/experimental/analysis/DebugWarner.h
function namespace (line 24) | namespace solidity::frontend::experimental
FILE: libsolidity/experimental/analysis/FunctionDependencyAnalysis.h
function namespace (line 28) | namespace solidity::frontend::experimental
FILE: libsolidity/experimental/analysis/SyntaxRestrictor.h
function namespace (line 25) | namespace solidity::frontend::experimental
FILE: libsolidity/experimental/analysis/TypeClassRegistration.h
function namespace (line 23) | namespace solidity::langutil
function namespace (line 28) | namespace solidity::frontend::experimental
FILE: libsolidity/experimental/analysis/TypeInference.cpp
function parseRational (line 907) | std::optional<rational> parseRational(std::string const& _value)
function fitsPrecisionBase10 (line 951) | bool fitsPrecisionBase10(bigint const& _mantissa, uint32_t _expBase10)
function rationalValue (line 957) | std::optional<rational> rationalValue(Literal const& _literal)
function TypeConstructor (line 1212) | TypeConstructor TypeInference::typeConstructor(Declaration const* _type)...
FILE: libsolidity/experimental/analysis/TypeInference.h
function namespace (line 25) | namespace solidity::frontend::experimental
FILE: libsolidity/experimental/analysis/TypeRegistration.h
function namespace (line 25) | namespace solidity::frontend::experimental
FILE: libsolidity/experimental/ast/FunctionCallGraph.h
function namespace (line 29) | namespace solidity::frontend::experimental
FILE: libsolidity/experimental/ast/Type.cpp
function Sort (line 49) | Sort Sort::operator+(Sort const& _rhs) const
function Sort (line 57) | Sort Sort::operator-(Sort const& _rhs) const
FILE: libsolidity/experimental/ast/Type.h
function namespace (line 25) | namespace solidity::frontend::experimental
FILE: libsolidity/experimental/ast/TypeSystem.cpp
function TypeEnvironment (line 136) | TypeEnvironment TypeEnvironment::clone() const
function Sort (line 236) | Sort TypeEnvironment::sort(Type _type) const
function TypeConstructor (line 269) | TypeConstructor TypeSystem::declareTypeConstructor(std::string _name, st...
FILE: libsolidity/experimental/ast/TypeSystem.h
function namespace (line 28) | namespace solidity::frontend
function namespace (line 33) | namespace solidity::frontend::experimental
FILE: libsolidity/experimental/ast/TypeSystemHelper.h
function namespace (line 24) | namespace solidity::frontend::experimental
FILE: libsolidity/experimental/codegen/Common.cpp
type solidity::frontend::experimental (line 32) | namespace solidity::frontend::experimental
FILE: libsolidity/experimental/codegen/Common.h
function namespace (line 27) | namespace solidity::frontend::experimental
FILE: libsolidity/experimental/codegen/IRGenerationContext.h
function namespace (line 29) | namespace solidity::frontend::experimental
FILE: libsolidity/experimental/codegen/IRGenerator.h
function namespace (line 36) | namespace solidity::frontend::experimental
FILE: libsolidity/experimental/codegen/IRGeneratorForStatements.cpp
type CopyTranslate (line 53) | struct CopyTranslate: public yul::ASTCopier
method CopyTranslate (line 55) | CopyTranslate(
method translateIdentifier (line 72) | yul::YulName translateIdentifier(yul::YulName _name) override
method translate (line 77) | yul::Identifier translate(yul::Identifier const& _identifier) override
method translateReference (line 92) | yul::Expression translateReference(yul::Identifier const& _identifier)
function FunctionDefinition (line 222) | FunctionDefinition const& IRGeneratorForStatements::resolveTypeClassFunc...
FILE: libsolidity/experimental/codegen/IRGeneratorForStatements.h
function namespace (line 27) | namespace solidity::frontend::experimental
FILE: libsolidity/formal/ArraySlicePredicate.h
function namespace (line 27) | namespace solidity::frontend
FILE: libsolidity/formal/BMC.h
function namespace (line 48) | namespace solidity::langutil
function namespace (line 55) | namespace solidity::frontend
FILE: libsolidity/formal/CHC.cpp
type ASTNodeCompare (line 1337) | struct ASTNodeCompare: EncodingContext::IdCompare
function SortPointer (line 1399) | SortPointer CHC::sort(FunctionDefinition const& _function)
function SortPointer (line 1409) | SortPointer CHC::sort(ASTNode const* _node)
function Predicate (line 1418) | Predicate const* CHC::createSymbolicBlock(SortPointer _sort, std::string...
function Predicate (line 1670) | Predicate const* CHC::createBlock(ASTNode const* _node, PredicateType _p...
function Predicate (line 1684) | Predicate const* CHC::createSummaryBlock(FunctionDefinition const& _func...
function Predicate (line 1695) | Predicate const* CHC::createConstructorBlock(ContractDefinition const& _...
function collectInvariants (line 2138) | std::map<Predicate const*, std::set<std::string>> collectInvariants(
function SymbolicIntVariable (line 2479) | SymbolicIntVariable& CHC::errorFlag()
FILE: libsolidity/formal/CHC.h
function namespace (line 51) | namespace solidity::frontend
FILE: libsolidity/formal/Cvc5SMTLib2Interface.h
function namespace (line 23) | namespace solidity::frontend::smt
FILE: libsolidity/formal/EldaricaCHCSmtLib2Interface.h
function namespace (line 23) | namespace solidity::frontend::smt
FILE: libsolidity/formal/EncodingContext.h
function namespace (line 28) | namespace solidity::frontend::smt
FILE: libsolidity/formal/ExpressionFormatter.cpp
type solidity::frontend::smt (line 40) | namespace solidity::frontend::smt
function formatDatatypeAccessor (line 46) | std::string formatDatatypeAccessor(smtutil::Expression const& _expr, s...
function formatGenericOp (line 91) | std::string formatGenericOp(smtutil::Expression const& _expr, std::vec...
function formatInfixOp (line 96) | std::string formatInfixOp(std::string const& _op, std::vector<std::str...
function formatArrayOp (line 101) | std::string formatArrayOp(smtutil::Expression const& _expr, std::vecto...
function formatUnaryOp (line 116) | std::string formatUnaryOp(smtutil::Expression const& _expr, std::vecto...
function substitute (line 128) | smtutil::Expression substitute(smtutil::Expression _from, std::map<std...
function toSolidityStr (line 141) | std::string toSolidityStr(smtutil::Expression const& _expr)
function fillArray (line 189) | bool fillArray(smtutil::Expression const& _expr, std::vector<std::stri...
function expressionToString (line 245) | std::optional<std::string> expressionToString(smtutil::Expression cons...
function formatExpressions (line 354) | std::vector<std::optional<std::string>> formatExpressions(
FILE: libsolidity/formal/ExpressionFormatter.h
function namespace (line 32) | namespace solidity::frontend::smt
FILE: libsolidity/formal/ModelChecker.cpp
function SMTSolverChoice (line 168) | SMTSolverChoice ModelChecker::availableSolvers()
function SMTSolverChoice (line 181) | SMTSolverChoice ModelChecker::checkRequestedSolvers(SMTSolverChoice _ena...
FILE: libsolidity/formal/ModelChecker.h
function namespace (line 38) | namespace solidity::langutil
function namespace (line 44) | namespace solidity::frontend
FILE: libsolidity/formal/ModelCheckerSettings.h
function namespace (line 26) | namespace solidity::frontend
function BMC (line 59) | struct ModelCheckerEngine
function ModelCheckerEngine (line 66) | static constexpr ModelCheckerEngine CHC() { return {false, true}; }
function ModelCheckerEngine (line 67) | static constexpr ModelCheckerEngine None() { return {false, false}; }
function std (line 73) | static std::optional<ModelCheckerEngine> fromString(std::string const& _...
function noexcept (line 86) | bool operator!=(ModelCheckerEngine const& _other) const noexcept { retur...
function noexcept (line 87) | bool operator==(ModelCheckerEngine const& _other) const noexcept { retur...
function InvariantType (line 90) | enum class InvariantType { Contract, Reentrancy };
function VerificationTargetType (line 116) | enum class VerificationTargetType { ConstantCondition, Underflow, Overfl...
type ModelCheckerExtCalls (line 143) | struct ModelCheckerExtCalls
type ModelCheckerSettings (line 158) | struct ModelCheckerSettings
function noexcept (line 180) | bool operator!=(ModelCheckerSettings const& _other) const noexcept { ret...
function noexcept (line 181) | bool operator==(ModelCheckerSettings const& _other) const noexcept
FILE: libsolidity/formal/Predicate.cpp
function Predicate (line 41) | Predicate const* Predicate::create(
function Predicate (line 78) | Predicate const* Predicate::predicate(std::string const& _name)
function ASTNode (line 98) | ASTNode const* Predicate::programNode() const
function ContractDefinition (line 103) | ContractDefinition const* Predicate::contextContract() const
function ContractDefinition (line 108) | ContractDefinition const* Predicate::programContract() const
function FunctionDefinition (line 117) | FunctionDefinition const* Predicate::programFunction() const
function FunctionCall (line 132) | FunctionCall const* Predicate::programFunctionCall() const
function VariableDeclaration (line 137) | VariableDeclaration const* Predicate::programVariable() const
type TxVarsVisitor (line 244) | struct TxVarsVisitor: public ASTConstVisitor
method visit (line 246) | bool visit(MemberAccess const& _memberAccess)
FILE: libsolidity/formal/Predicate.h
function namespace (line 32) | namespace solidity::langutil
function namespace (line 37) | namespace solidity::frontend
FILE: libsolidity/formal/PredicateInstance.cpp
type solidity::frontend::smt (line 27) | namespace solidity::frontend::smt
function interfacePre (line 29) | smtutil::Expression interfacePre(Predicate const& _pred, ContractDefin...
function interface (line 36) | smtutil::Expression interface(Predicate const& _pred, ContractDefiniti...
function nondetInterface (line 43) | smtutil::Expression nondetInterface(
function constructor (line 61) | smtutil::Expression constructor(Predicate const& _pred, EncodingContex...
function constructorCall (line 72) | smtutil::Expression constructorCall(Predicate const& _pred, EncodingCo...
function function (line 87) | smtutil::Expression function(
function functionCall (line 97) | smtutil::Expression functionCall(
function functionBlock (line 107) | smtutil::Expression functionBlock(
function initialStateVariables (line 119) | std::vector<smtutil::Expression> initialStateVariables(ContractDefinit...
function stateVariablesAtIndex (line 124) | std::vector<smtutil::Expression> stateVariablesAtIndex(unsigned _index...
function currentStateVariables (line 132) | std::vector<smtutil::Expression> currentStateVariables(ContractDefinit...
function newStateVariables (line 140) | std::vector<smtutil::Expression> newStateVariables(ContractDefinition ...
function currentFunctionVariablesForDefinition (line 148) | std::vector<smtutil::Expression> currentFunctionVariablesForDefinition(
function currentFunctionVariablesForCall (line 165) | std::vector<smtutil::Expression> currentFunctionVariablesForCall(
function currentBlockVariables (line 186) | std::vector<smtutil::Expression> currentBlockVariables(FunctionDefinit...
function getStateExpressionsForInterfacePre (line 195) | std::vector<smtutil::Expression> getStateExpressionsForInterfacePre(Sy...
function getStateExpressionsForInterface (line 203) | std::vector<smtutil::Expression> getStateExpressionsForInterface(Symbo...
function getStateExpressionsForNondetInterface (line 210) | std::vector<smtutil::Expression> getStateExpressionsForNondetInterface...
function getStateExpressionsForConstructor (line 217) | std::vector<smtutil::Expression> getStateExpressionsForConstructor(Sym...
function getStateExpressionsForCall (line 226) | std::vector<smtutil::Expression> getStateExpressionsForCall(SymbolicSt...
function getStateExpressionsForDefinition (line 235) | std::vector<smtutil::Expression> getStateExpressionsForDefinition(Symb...
FILE: libsolidity/formal/PredicateInstance.h
function namespace (line 24) | namespace solidity::frontend::smt
FILE: libsolidity/formal/PredicateSort.cpp
type solidity::frontend::smt (line 27) | namespace solidity::frontend::smt
function SortPointer (line 30) | SortPointer interfaceSort(ContractDefinition const& _contract, Symboli...
function SortPointer (line 41) | SortPointer nondetInterfaceSort(ContractDefinition const& _contract, S...
function SortPointer (line 56) | SortPointer constructorSort(ContractDefinition const& _contract, Symbo...
function SortPointer (line 72) | SortPointer functionSort(FunctionDefinition const& _function, Contract...
function SortPointer (line 92) | SortPointer functionBodySort(FunctionDefinition const& _function, Cont...
function SortPointer (line 104) | SortPointer arity0FunctionSort()
function stateSorts (line 114) | std::vector<SortPointer> stateSorts(ContractDefinition const& _contract)
function getBuiltInFunctionsSorts (line 122) | std::vector<SortPointer> getBuiltInFunctionsSorts(SymbolicState& _state)
FILE: libsolidity/formal/PredicateSort.h
function namespace (line 27) | namespace solidity::frontend::smt
FILE: libsolidity/formal/SMTEncoder.cpp
type AssignedExternalsCollector (line 312) | struct AssignedExternalsCollector: public yul::ASTWalker
method AssignedExternalsCollector (line 314) | AssignedExternalsCollector(InlineAssembly const& _inlineAsm): external...
function isReturnedFromStructGetter (line 1008) | bool isReturnedFromStructGetter(Type const* _type)
function structGetterReturnedMembers (line 1020) | std::vector<std::string> structGetterReturnedMembers(StructType const& _...
function Type (line 2510) | Type const* SMTEncoder::typeWithoutPointer(Type const* _type)
function SecondarySourceLocation (line 2646) | SecondarySourceLocation SMTEncoder::callStackMessage(std::vector<CallSta...
function ContractDefinition (line 2688) | ContractDefinition const* SMTEncoder::currentScopeContract()
function Expression (line 2725) | Expression const* SMTEncoder::leftmostBase(IndexAccess const& _indexAccess)
function Type (line 2733) | Type const* SMTEncoder::keyType(Type const* _type)
function Expression (line 2746) | Expression const& SMTEncoder::innermostTuple(Expression const& _expr)
function Type (line 2762) | Type const* SMTEncoder::underlyingType(Type const* _type)
function TypePointers (line 2769) | TypePointers SMTEncoder::replaceUserTypes(TypePointers const& _types)
function Expression (line 2788) | Expression const* SMTEncoder::cleanExpression(Expression const& _expr)
function Declaration (line 2815) | Declaration const* SMTEncoder::expressionToDeclaration(Expression const&...
function VariableDeclaration (line 2824) | VariableDeclaration const* SMTEncoder::identifierToVariable(Expression c...
function MemberAccess (line 2848) | MemberAccess const* SMTEncoder::isEmptyPush(Expression const& _expr) const
function VariableDeclaration (line 2873) | VariableDeclaration const* SMTEncoder::publicGetter(Expression const& _e...
function FunctionDefinition (line 2905) | FunctionDefinition const* SMTEncoder::functionCallToDefinition(
type TryCatchVarsVisitor (line 2976) | struct TryCatchVarsVisitor : public ASTConstVisitor
method visit (line 2978) | bool visit(TryCatchClause const& _catchClause) override
type BlockVars (line 2998) | struct BlockVars: ASTConstVisitor
method BlockVars (line 3000) | BlockVars(Block const& _block) { _block.accept(*this); }
method endVisit (line 3001) | void endVisit(VariableDeclaration const& _var) { vars.push_back(&_var); }
function ModifierDefinition (line 3025) | ModifierDefinition const* SMTEncoder::resolveModifierInvocation(Modifier...
function RationalNumberType (line 3120) | RationalNumberType const* SMTEncoder::isConstant(Expression const& _expr)
type ABIFunctions (line 3136) | struct ABIFunctions: public ASTConstVisitor
method ABIFunctions (line 3138) | ABIFunctions(ASTNode const* _node) { _node->accept(*this); }
method endVisit (line 3139) | void endVisit(FunctionCall const& _funCall)
type BytesConcatFunctions (line 3164) | struct BytesConcatFunctions: public ASTConstVisitor
method BytesConcatFunctions (line 3166) | BytesConcatFunctions(ASTNode const* _node) { _node->accept(*this); }
method endVisit (line 3167) | void endVisit(FunctionCall const& _funCall)
FILE: libsolidity/formal/SMTEncoder.h
function namespace (line 41) | namespace solidity::langutil
function namespace (line 48) | namespace solidity::frontend
FILE: libsolidity/formal/SSAVariable.h
function namespace (line 23) | namespace solidity::frontend::smt
FILE: libsolidity/formal/SymbolicState.h
function class (line 34) | class BlockchainVariable
function class (line 86) | class SymbolicState
FILE: libsolidity/formal/SymbolicTypes.cpp
function sanitizeTypeName (line 39) | void sanitizeTypeName(std::string& name)
type solidity::frontend::smt (line 47) | namespace solidity::frontend::smt
function SortPointer (line 50) | SortPointer smtSort(frontend::Type const& _type)
function smtSort (line 200) | std::vector<SortPointer> smtSort(std::vector<frontend::Type const*> co...
function SortPointer (line 208) | SortPointer smtSortAbstractFunction(frontend::Type const& _type)
function smtSortAbstractFunction (line 215) | std::vector<SortPointer> smtSortAbstractFunction(std::vector<frontend:...
function Kind (line 226) | Kind smtKind(frontend::Type const& _type)
function isSupportedType (line 245) | bool isSupportedType(frontend::Type const& _type)
function isSupportedTypeDeclaration (line 258) | bool isSupportedTypeDeclaration(frontend::Type const& _type)
function newSymbolicVariable (line 264) | std::pair<bool, std::shared_ptr<SymbolicVariable>> newSymbolicVariable(
function isInteger (line 346) | bool isInteger(frontend::Type const& _type)
function isFixedPoint (line 351) | bool isFixedPoint(frontend::Type const& _type)
function isRational (line 356) | bool isRational(frontend::Type const& _type)
function isFixedBytes (line 361) | bool isFixedBytes(frontend::Type const& _type)
function isAddress (line 366) | bool isAddress(frontend::Type const& _type)
function isContract (line 371) | bool isContract(frontend::Type const& _type)
function isEnum (line 376) | bool isEnum(frontend::Type const& _type)
function isNumber (line 381) | bool isNumber(frontend::Type const& _type)
function isBool (line 392) | bool isBool(frontend::Type const& _type)
function isFunction (line 397) | bool isFunction(frontend::Type const& _type)
function isMapping (line 402) | bool isMapping(frontend::Type const& _type)
function isArray (line 407) | bool isArray(frontend::Type const& _type)
function isTuple (line 414) | bool isTuple(frontend::Type const& _type)
function isStringLiteral (line 419) | bool isStringLiteral(frontend::Type const& _type)
function isNonRecursiveStruct (line 424) | bool isNonRecursiveStruct(frontend::Type const& _type)
function isInaccessibleDynamic (line 430) | bool isInaccessibleDynamic(frontend::Type const& _type)
function minValue (line 435) | smtutil::Expression minValue(frontend::IntegerType const& _type)
function minValue (line 440) | smtutil::Expression minValue(frontend::Type const* _type)
function maxValue (line 460) | smtutil::Expression maxValue(frontend::IntegerType const& _type)
function maxValue (line 465) | smtutil::Expression maxValue(frontend::Type const* _type)
function setSymbolicZeroValue (line 487) | void setSymbolicZeroValue(SymbolicVariable const& _variable, EncodingC...
function setSymbolicZeroValue (line 492) | void setSymbolicZeroValue(smtutil::Expression _expr, frontend::Type co...
function zeroValue (line 498) | smtutil::Expression zeroValue(frontend::Type const* _type)
function isSigned (line 555) | bool isSigned(frontend::Type const* _type)
function typeBvSizeAndSignedness (line 581) | std::pair<unsigned, bool> typeBvSizeAndSignedness(frontend::Type const...
function setSymbolicUnknownValue (line 596) | void setSymbolicUnknownValue(SymbolicVariable const& _variable, Encodi...
function setSymbolicUnknownValue (line 601) | void setSymbolicUnknownValue(smtutil::Expression _expr, frontend::Type...
function symbolicUnknownConstraints (line 606) | smtutil::Expression symbolicUnknownConstraints(smtutil::Expression _ex...
function symbolicTypeConversion (line 627) | std::optional<smtutil::Expression> symbolicTypeConversion(frontend::Ty...
function member (line 649) | smtutil::Expression member(smtutil::Expression const& _tuple, std::str...
function assignMember (line 658) | smtutil::Expression assignMember(smtutil::Expression const _tuple, std...
function transactionMemberTypes (line 671) | std::map<std::string, frontend::Type const*> transactionMemberTypes()
function transactionMemberSorts (line 694) | std::map<std::string, SortPointer> transactionMemberSorts()
FILE: libsolidity/formal/SymbolicTypes.h
function namespace (line 24) | namespace solidity::frontend::smt
FILE: libsolidity/formal/SymbolicVariables.h
function namespace (line 30) | namespace solidity::frontend::smt
FILE: libsolidity/formal/Z3CHCSmtLib2Interface.h
function namespace (line 23) | namespace solidity::frontend::smt
FILE: libsolidity/formal/Z3SMTLib2Interface.h
function namespace (line 23) | namespace solidity::frontend::smt
FILE: libsolidity/interface/ABI.cpp
function anyDataStoredInStorage (line 31) | bool anyDataStoredInStorage(TypePointers const& _pointers)
function Json (line 41) | Json ABI::generate(ContractDefinition const& _contractDef)
function Json (line 147) | Json ABI::formatTypeList(
function Json (line 165) | Json ABI::formatType(
FILE: libsolidity/interface/ABI.h
function namespace (line 28) | namespace solidity::frontend
FILE: libsolidity/interface/CompilerStack.cpp
function onlySafeExperimentalFeaturesActivated (line 469) | bool onlySafeExperimentalFeaturesActivated(std::set<ExperimentalFeature>...
function YulStack (line 848) | YulStack CompilerStack::loadGeneratedIR(std::string const& _ir) const
function Json (line 920) | Json CompilerStack::generatedSources(std::string const& _contractName, b...
function Json (line 1097) | Json CompilerStack::assemblyJSON(std::string const& _contractName) const
function Json (line 1125) | Json const& CompilerStack::contractABI(std::string const& _contractName)...
function Json (line 1131) | Json const& CompilerStack::contractABI(Contract const& _contract) const
function Json (line 1139) | Json const& CompilerStack::storageLayout(std::string const& _contractNam...
function Json (line 1145) | Json const& CompilerStack::storageLayout(Contract const& _contract) const
function Json (line 1154) | Json const& CompilerStack::transientStorageLayout(std::string const& _co...
function Json (line 1160) | Json const& CompilerStack::transientStorageLayout(Contract const& _contr...
function Json (line 1169) | Json const& CompilerStack::natspecUser(std::string const& _contractName)...
function Json (line 1175) | Json const& CompilerStack::natspecUser(Contract const& _contract) const
function Json (line 1183) | Json const& CompilerStack::natspecDev(std::string const& _contractName) ...
function Json (line 1189) | Json const& CompilerStack::natspecDev(Contract const& _contract) const
function Json (line 1197) | Json CompilerStack::interfaceSymbols(std::string const& _contractName) c...
function Json (line 1227) | Json CompilerStack::ethdebug() const
function Json (line 1234) | Json CompilerStack::ethdebug(std::string const& _contractName) const
function Json (line 1239) | Json CompilerStack::ethdebugRuntime(std::string const& _contractName) const
function Json (line 1244) | Json CompilerStack::ethdebug(Contract const& _contract, bool _runtime) c...
function bytes (line 1258) | bytes CompilerStack::cborMetadata(std::string const& _contractName, bool...
function CharStream (line 1272) | CharStream const& CompilerStack::charStream(std::string const& _sourceNa...
function SourceUnit (line 1279) | SourceUnit const& CompilerStack::ast(std::string const& _sourceName) const
function ContractDefinition (line 1287) | ContractDefinition const& CompilerStack::contractDefinition(std::string ...
function h256 (line 1308) | h256 const& CompilerStack::Source::keccak256() const
function h256 (line 1315) | h256 const& CompilerStack::Source::swarmHash() const
function StringMap (line 1329) | StringMap CompilerStack::loadMissingSources(SourceUnit const& _ast)
class MetadataCBOREncoder (line 1867) | class MetadataCBOREncoder
method pushBytes (line 1870) | void pushBytes(std::string const& key, bytes const& value)
method pushString (line 1877) | void pushString(std::string const& key, std::string const& value)
method pushBool (line 1884) | void pushBool(std::string const& key, bool value)
method bytes (line 1891) | bytes serialise() const
method pushTextString (line 1907) | void pushTextString(std::string const& key)
method pushByteString (line 1923) | void pushByteString(bytes const& key)
method pushBool (line 1939) | void pushBool(bool value)
function bytes (line 1950) | bytes CompilerStack::createCBORMetadata(Contract const& _contract, bool ...
function Json (line 1992) | Json gasToJson(GasEstimator::GasConsumption const& _gas)
function Json (line 2002) | Json CompilerStack::gasEstimates(std::string const& _contractName) const
FILE: libsolidity/interface/CompilerStack.h
function namespace (line 61) | namespace solidity::langutil
function namespace (line 67) | namespace solidity::evmasm
function namespace (line 74) | namespace solidity::yul
function namespace (line 79) | namespace solidity::frontend
FILE: libsolidity/interface/DebugSettings.h
type class (line 31) | enum class
function std (line 40) | inline std::string revertStringsToString(RevertStrings _str)
function std (line 53) | inline std::optional<RevertStrings> revertStringsFromString(std::string ...
FILE: libsolidity/interface/FileReader.cpp
type solidity::frontend (line 38) | namespace solidity::frontend
FILE: libsolidity/interface/FileReader.h
function namespace (line 28) | namespace solidity::frontend
FILE: libsolidity/interface/GasEstimator.h
function namespace (line 35) | namespace solidity::frontend
FILE: libsolidity/interface/ImportRemapper.cpp
type solidity::frontend (line 22) | namespace solidity::frontend
function SourceUnitName (line 32) | SourceUnitName ImportRemapper::apply(ImportPath const& _path, std::str...
FILE: libsolidity/interface/ImportRemapper.h
function namespace (line 24) | namespace solidity::frontend
function clear (line 52) | void clear() { m_remappings.clear(); }
function noexcept (line 55) | const noexcept { return m_remappings; }
FILE: libsolidity/interface/Natspec.cpp
function Json (line 36) | Json Natspec::userDocumentation(ContractDefinition const& _contractDef)
function Json (line 100) | Json Natspec::devDocumentation(ContractDefinition const& _contractDef)
function Json (line 179) | Json Natspec::extractReturnParameterDocs(std::multimap<std::string, DocT...
function Json (line 219) | Json Natspec::extractCustomDoc(std::multimap<std::string, DocTag> const&...
function Json (line 234) | Json Natspec::devDocumentation(std::multimap<std::string, DocTag> const&...
FILE: libsolidity/interface/Natspec.h
function namespace (line 34) | namespace solidity::frontend
FILE: libsolidity/interface/OptimiserSettings.h
function namespace (line 31) | namespace solidity::frontend
FILE: libsolidity/interface/ReadFile.h
function namespace (line 26) | namespace solidity::frontend
FILE: libsolidity/interface/SMTSolverCommand.cpp
type solidity::frontend (line 34) | namespace solidity::frontend
FILE: libsolidity/interface/SMTSolverCommand.h
function namespace (line 24) | namespace solidity::frontend
FILE: libsolidity/interface/StandardCompiler.cpp
function Json (line 61) | Json formatError(
function Json (line 83) | Json formatFatalError(Error::Type _type, std::string const& _message)
function Json (line 91) | Json formatSourceLocation(SourceLocation const* location)
function Json (line 103) | Json formatSecondarySourceLocation(SecondarySourceLocation const* _secon...
function Json (line 118) | Json formatErrorWithException(
function hashMatchesContent (line 157) | bool hashMatchesContent(std::string const& _hash, std::string const& _co...
function isArtifactRequested (line 169) | bool isArtifactRequested(Json const& _outputSelection, std::string const...
function isArtifactRequested (line 214) | bool isArtifactRequested(Json const& _outputSelection, std::string const...
function isArtifactRequested (line 239) | bool isArtifactRequested(Json const& _outputSelection, std::string const...
function evmObjectComponents (line 248) | std::vector<std::string> evmObjectComponents(std::string const& _objectK...
function isBinaryRequested (line 258) | bool isBinaryRequested(Json const& _outputSelection)
function isEvmBytecodeRequested (line 279) | bool isEvmBytecodeRequested(Json const& _outputSelection)
function isEthdebugRequested (line 298) | bool isEthdebugRequested(Json const& _outputSelection)
function isExperimentalArtifactRequested (line 314) | bool isExperimentalArtifactRequested(Json const& _outputSelection)
function pipelineConfig (line 333) | CompilerStack::ContractSelection pipelineConfig(
function Json (line 371) | Json formatLinkReferences(std::map<size_t, std::string> const& linkRefer...
function Json (line 400) | Json formatImmutableReferences(std::map<u256, evmasm::LinkerObject::Immu...
function checkKeys (line 421) | std::optional<Json> checkKeys(Json const& _input, std::set<std::string> ...
function checkRootKeys (line 433) | std::optional<Json> checkRootKeys(Json const& _input)
function checkSourceKeys (line 439) | std::optional<Json> checkSourceKeys(Json const& _input, std::string cons...
function checkAuxiliaryInputKeys (line 445) | std::optional<Json> checkAuxiliaryInputKeys(Json const& _input)
function checkSettingsKeys (line 451) | std::optional<Json> checkSettingsKeys(Json const& _input)
function checkModelCheckerSettingsKeys (line 457) | std::optional<Json> checkModelCheckerSettingsKeys(Json const& _input)
function checkOptimizerKeys (line 463) | std::optional<Json> checkOptimizerKeys(Json const& _input)
function checkOptimizerDetailsKeys (line 469) | std::optional<Json> checkOptimizerDetailsKeys(Json const& _input)
function checkOptimizerDetail (line 475) | std::optional<Json> checkOptimizerDetail(Json const& _details, std::stri...
function checkOptimizerDetailSteps (line 486) | std::optional<Json> checkOptimizerDetailSteps(Json const& _details, std:...
function checkMetadataKeys (line 528) | std::optional<Json> checkMetadataKeys(Json const& _input)
function checkOutputSelection (line 545) | std::optional<Json> checkOutputSelection(Json const& _outputSelection)
function parseOptimizerSettings (line 588) | std::variant<OptimiserSettings, Json> parseOptimizerSettings(std::string...
function Json (line 1304) | Json StandardCompiler::importEVMAssembly(StandardCompiler::InputsAndSett...
function Json (line 1420) | Json StandardCompiler::compileSolidity(StandardCompiler::InputsAndSettin...
function Json (line 1711) | Json StandardCompiler::compileYul(InputsAndSettings _inputsAndSettings)
function Json (line 1873) | Json StandardCompiler::compile(Json const& _input) noexcept
function Json (line 1939) | Json StandardCompiler::formatFunctionDebugData(
FILE: libsolidity/interface/StandardCompiler.h
function namespace (line 35) | namespace solidity::frontend
FILE: libsolidity/interface/StorageLayout.cpp
function Json (line 27) | Json StorageLayout::generate(ContractDefinition const& _contractDef, Dat...
function Json (line 49) | Json StorageLayout::generate(VariableDeclaration const& _var, u256 const...
FILE: libsolidity/interface/StorageLayout.h
function namespace (line 28) | namespace solidity::frontend
FILE: libsolidity/interface/UniversalCallback.h
function namespace (line 23) | namespace solidity::frontend
FILE: libsolidity/interface/Version.h
function namespace (line 30) | namespace solidity
FILE: libsolidity/lsp/DocumentHoverHandler.cpp
type solidity::lsp (line 24) | namespace solidity::lsp
type MarkdownBuilder (line 33) | struct MarkdownBuilder
method MarkdownBuilder (line 37) | MarkdownBuilder& solidityCode(std::string const& _code)
method MarkdownBuilder (line 44) | MarkdownBuilder& paragraph(std::string const& _text)
FILE: libsolidity/lsp/DocumentHoverHandler.h
function namespace (line 21) | namespace solidity::lsp
FILE: libsolidity/lsp/FileRepository.h
function namespace (line 26) | namespace solidity::lsp
FILE: libsolidity/lsp/GotoDefinition.h
function namespace (line 20) | namespace solidity::lsp
FILE: libsolidity/lsp/HandlerBase.cpp
function Json (line 34) | Json HandlerBase::toRange(SourceLocation const& _location) const
function Json (line 46) | Json HandlerBase::toJson(SourceLocation const& _location) const
FILE: libsolidity/lsp/HandlerBase.h
function namespace (line 28) | namespace solidity::lsp
FILE: libsolidity/lsp/LanguageServer.cpp
function resolvesToRegularFile (line 62) | bool resolvesToRegularFile(boost::filesystem::path _path, int maxRecursi...
function toDiagnosticSeverity (line 76) | int toDiagnosticSeverity(Error::Type _errorType)
function Json (line 89) | Json semanticTokensLegend()
function Json (line 159) | Json LanguageServer::toRange(SourceLocation const& _location)
function Json (line 164) | Json LanguageServer::toJson(SourceLocation const& _location)
function ASTNode (line 569) | ASTNode const* LanguageServer::astNodeAtSourceLocation(std::string const...
FILE: libsolidity/lsp/LanguageServer.h
type class (line 37) | enum class
type class (line 42) | enum class
function class (line 61) | class LanguageServer
FILE: libsolidity/lsp/RenameSymbol.cpp
function CallableDeclaration (line 36) | CallableDeclaration const* extractCallableDeclaration(FunctionCall const...
FILE: libsolidity/lsp/RenameSymbol.h
function namespace (line 22) | namespace solidity::lsp
FILE: libsolidity/lsp/SemanticTokensBuilder.cpp
type solidity::lsp (line 29) | namespace solidity::lsp
function semanticTokenTypeForType (line 35) | std::optional<SemanticTokenType> semanticTokenTypeForType(frontend::Ty...
function SemanticTokenType (line 57) | SemanticTokenType semanticTokenTypeForExpression(frontend::Type const*...
function Json (line 73) | Json SemanticTokensBuilder::build(SourceUnit const& _sourceUnit, CharS...
FILE: libsolidity/lsp/SemanticTokensBuilder.h
function namespace (line 24) | namespace solidity::langutil
type class (line 34) | enum class
function SemanticTokenModifiers (line 62) | enum class SemanticTokenModifiers
FILE: libsolidity/lsp/Transport.h
type class (line 36) | enum class
type class (line 43) | enum class
function class (line 59) | class RequestError: public util::Exception
function class (line 95) | class Transport
function class (line 143) | class IOStreamTransport: public Transport
FILE: libsolidity/lsp/Utils.cpp
type solidity::lsp (line 28) | namespace solidity::lsp
function parseLineColumn (line 34) | std::optional<LineColumn> parseLineColumn(Json const& _lineColumn)
function Json (line 42) | Json toJson(LineColumn const& _pos)
function Json (line 51) | Json toJsonRange(LineColumn const& _start, LineColumn const& _end)
function Declaration (line 59) | Declaration const* referencedDeclaration(Expression const* _expression)
function declarationLocation (line 72) | std::optional<SourceLocation> declarationLocation(Declaration const* _...
function parsePosition (line 86) | std::optional<SourceLocation> parsePosition(
function parseRange (line 104) | std::optional<SourceLocation> parseRange(FileRepository const& _fileRe...
function stripFileUriSchemePrefix (line 117) | std::string stripFileUriSchemePrefix(std::string const& _path)
FILE: libsolidity/lsp/Utils.h
function namespace (line 37) | namespace solidity::langutil
function namespace (line 42) | namespace solidity::lsp
FILE: libsolidity/parsing/DocStringParser.cpp
function skipLineOrEOS (line 38) | std::string::const_iterator skipLineOrEOS(
function firstNonIdentifier (line 46) | std::string::const_iterator firstNonIdentifier(
function firstWhitespaceOrNewline (line 60) | std::string::const_iterator firstWhitespaceOrNewline(
function skipWhitespace (line 69) | std::string::const_iterator skipWhitespace(
FILE: libsolidity/parsing/DocStringParser.h
function namespace (line 30) | namespace solidity::langutil
function namespace (line 35) | namespace solidity::frontend
FILE: libsolidity/parsing/Parser.cpp
type solidity::frontend (line 49) | namespace solidity::frontend
class Parser::ASTNodeFactory (line 54) | class Parser::ASTNodeFactory
method ASTNodeFactory (line 57) | explicit ASTNodeFactory(Parser& _parser):
method ASTNodeFactory (line 64) | ASTNodeFactory(Parser& _parser, ASTPointer<ASTNode> const& _childNode):
method markEndPosition (line 67) | void markEndPosition() { m_location.end = m_parser.currentLocation()...
method setLocation (line 68) | void setLocation(SourceLocation const& _location) { m_location = _lo...
method setLocationEmpty (line 69) | void setLocationEmpty() { m_location.end = m_location.start; }
method setEndPositionFromNode (line 71) | void setEndPositionFromNode(ASTPointer<ASTNode> const& _node) { m_lo...
method createNode (line 74) | ASTPointer<NodeType> createNode(Args&& ... _args)
method SourceLocation (line 82) | SourceLocation const& location() const noexcept { return m_location; }
function Visibility (line 537) | Visibility Parser::parseVisibilitySpecifier()
function StateMutability (line 592) | StateMutability Parser::parseStateMutability()
FILE: libsolidity/parsing/Parser.h
function namespace (line 30) | namespace solidity::langutil
function VarDeclKind (line 58) | enum class VarDeclKind { FileLevel, State, Other };
FILE: libsolidity/parsing/Token.h
function namespace (line 28) | namespace solidity::frontend
FILE: libsolutil/Algorithms.h
function namespace (line 25) | namespace solidity::util
FILE: libsolutil/AnsiColorized.h
function namespace (line 24) | namespace solidity::util
FILE: libsolutil/Assertions.h
function namespace (line 34) | namespace solidity::util
FILE: libsolutil/Common.h
function namespace (line 53) | namespace solidity
FILE: libsolutil/CommonData.cpp
function bytes (line 97) | bytes solidity::util::fromHex(std::string const& _s, WhenError _throw)
FILE: libsolutil/CommonData.h
function namespace (line 258) | namespace detail
function allow_copy (line 262) | static constexpr auto allow_copy = detail::allow_copy{}
function namespace (line 288) | namespace detail
function clear (line 355) | void clear() { m_contents.clear(); }
function contains (line 356) | bool contains(T const& _value) const
function pushBack (line 361) | void pushBack(T _value)
function pushBack (line 367) | void pushBack(UniqueVector<T> const& _values)
type class (line 423) | enum class
type class (line 429) | enum class
type class (line 435) | enum class
function std (line 460) | inline std::string asString(bytes const& _b)
function std (line 467) | inline std::string asString(bytesConstRef _b)
function bytes (line 473) | inline bytes asBytes(std::string_view const _b)
function std (line 622) | inline std::string findAnyOf(std::string const& _haystack, std::vector<s...
FILE: libsolutil/CommonIO.cpp
function T (line 40) | inline T readFile(boost::filesystem::path const& _file)
class DisableConsoleBuffering (line 93) | class DisableConsoleBuffering
method DisableConsoleBuffering (line 96) | DisableConsoleBuffering()
method DisableConsoleBuffering (line 114) | DisableConsoleBuffering()
type termios (line 130) | struct termios
class DisableConsoleBuffering (line 111) | class DisableConsoleBuffering
method DisableConsoleBuffering (line 96) | DisableConsoleBuffering()
method DisableConsoleBuffering (line 114) | DisableConsoleBuffering()
type termios (line 130) | struct termios
FILE: libsolutil/CommonIO.h
function namespace (line 34) | namespace solidity
FILE: libsolutil/DisjointSet.cpp
class solidity::util::ContiguousDisjointSet<std::uint32_t> (line 119) | class solidity::util::ContiguousDisjointSet<std::uint32_t>
FILE: libsolutil/DisjointSet.h
function namespace (line 25) | namespace solidity::util
FILE: libsolutil/DominatorFinder.h
function namespace (line 48) | namespace solidity::util
function eval (line 264) | auto eval = [&](DfsIndex _vIdx) -> DfsIndex
function toDfsIndex (line 273) | auto toDfsIndex = [&](VId const& _vId) { return m_dfsIndexByVertexId[_vI...
FILE: libsolutil/ErrorCodes.h
function namespace (line 22) | namespace solidity::util
FILE: libsolutil/Exceptions.cpp
function SourceLocation (line 55) | SourceLocation Exception::sourceLocation() const noexcept
FILE: libsolutil/Exceptions.h
function namespace (line 31) | namespace solidity::util
FILE: libsolutil/FixedHash.h
function namespace (line 37) | namespace solidity::util
function explicit (line 76) | explicit FixedHash(bytes const& _array, ConstructFromHashType _sizeMisma...
function explicit (line 96) | explicit FixedHash(bytesConstRef _b, ConstructFromHashType _t = FailIfDi...
function explicit (line 116) | explicit FixedHash(std::string const& _s, ConstructFromStringType _t = F...
function _c (line 124) | bool operator==(FixedHash const& _c) const { return m_data == _c.m_data; }
function _c (line 125) | bool operator!=(FixedHash const& _c) const { return m_data != _c.m_data; }
function _c (line 127) | bool operator<(FixedHash const& _c) const {
function const (line 141) | uint8_t operator[](unsigned _i) const { return m_data[_i]; }
function bytesRef (line 147) | bytesRef ref() { return bytesRef(m_data.data(), N); }
FILE: libsolutil/FunctionSelector.h
function namespace (line 26) | namespace solidity::util
FILE: libsolutil/IpfsHash.cpp
function bytes (line 31) | bytes varintEncoding(size_t _n)
function bytes (line 43) | bytes encodeByteArray(bytes const& _data)
function bytes (line 48) | bytes encodeHash(bytes const& _data)
function bytes (line 53) | bytes encodeLinkData(bytes const& _data)
function base58Encode (line 58) | std::string base58Encode(bytes const& _data)
type Chunk (line 72) | struct Chunk
method Chunk (line 74) | Chunk() = default;
method Chunk (line 75) | Chunk(bytes _hash, size_t _size, size_t _blockSize):
function Chunk (line 88) | Chunk combineLinks(Chunks& _links)
method Chunk (line 74) | Chunk() = default;
method Chunk (line 75) | Chunk(bytes _hash, size_t _size, size_t _blockSize):
function Chunks (line 117) | Chunks buildNextLevel(Chunks& _currentLevel)
function bytes (line 144) | bytes groupChunksBottomUp(Chunks _currentLevel)
function bytes (line 155) | bytes solidity::util::ipfsHash(std::string _data)
FILE: libsolutil/IpfsHash.h
function namespace (line 25) | namespace solidity::util
FILE: libsolutil/JSON.cpp
type solidity::util (line 31) | namespace solidity::util
function removeNullMembersHelper (line 38) | void removeNullMembersHelper(Json& _json)
function escapeNewlinesAndTabsWithinStringLiterals (line 60) | std::string escapeNewlinesAndTabsWithinStringLiterals(std::string cons...
function Json (line 107) | Json removeNullMembers(Json _json)
function removeNlohmannInternalErrorIdentifier (line 113) | std::string removeNlohmannInternalErrorIdentifier(std::string const& _...
function jsonPrettyPrint (line 125) | std::string jsonPrettyPrint(Json const& _input) { return jsonPrint(_in...
function jsonCompactPrint (line 127) | std::string jsonCompactPrint(Json const& _input) { return jsonPrint(_i...
function jsonPrint (line 129) | std::string jsonPrint(Json const& _input, JsonFormat const& _format)
function jsonParseStrict (line 141) | bool jsonParseStrict(std::string const& _input, Json& _json, std::stri...
function jsonValueByPath (line 170) | std::optional<Json> jsonValueByPath(Json const& _node, std::string_vie...
FILE: libsolutil/JSON.h
function namespace (line 34) | namespace solidity
function namespace (line 41) | namespace solidity::util
function namespace (line 90) | namespace detail
FILE: libsolutil/Keccak256.cpp
type solidity::util (line 28) | namespace solidity::util
function keccakf (line 74) | static inline void keccakf(void* state) {
function hash (line 145) | inline void hash(
function h256 (line 172) | h256 keccak256(bytesConstRef _input)
FILE: libsolutil/Keccak256.h
function namespace (line 31) | namespace solidity::util
FILE: libsolutil/LEB128.h
function namespace (line 23) | namespace solidity::util
FILE: libsolutil/LazyInit.h
function namespace (line 29) | namespace solidity::util
FILE: libsolutil/Numeric.h
function namespace (line 44) | namespace solidity
FILE: libsolutil/Profiler.h
function namespace (line 32) | namespace solidity::util
FILE: libsolutil/Result.h
function namespace (line 22) | namespace solidity::util
FILE: libsolutil/SetOnce.h
function namespace (line 27) | namespace solidity::util
FILE: libsolutil/StackTooDeepString.h
function namespace (line 22) | namespace solidity::util
FILE: libsolutil/StringUtils.cpp
function tryFormatPowerOfTwo (line 127) | std::optional<std::string> tryFormatPowerOfTwo(bigint const& _value)
FILE: libsolutil/StringUtils.h
function namespace (line 38) | namespace solidity::util
function toLower (line 139) | inline char toLower(char _c)
function toUpper (line 147) | inline char toUpper(char _c)
function std (line 155) | inline std::string toLower(std::string _s)
function isDigit (line 166) | inline bool isDigit(char _c)
function isPrint (line 174) | inline bool isPrint(char _c)
FILE: libsolutil/SwarmHash.cpp
function bytes (line 31) | bytes toLittleEndian(uint64_t _size)
function h256 (line 39) | h256 swarmHashSimple(bytesConstRef _data, size_t _size)
function h256 (line 44) | h256 swarmHashIntermediate(std::string const& _input, size_t _offset, si...
function h256 (line 65) | h256 bmtHash(bytesConstRef _data)
function h256 (line 77) | h256 chunkHash(bytesConstRef const _data, bool _forceHigherLevel = false)
function h256 (line 106) | h256 solidity::util::bzzr0Hash(std::string const& _input)
function h256 (line 112) | h256 solidity::util::bzzr1Hash(bytes const& _input)
FILE: libsolutil/SwarmHash.h
function namespace (line 27) | namespace solidity::util
FILE: libsolutil/TemporaryDirectory.h
function namespace (line 30) | namespace solidity::util
FILE: libsolutil/UTF8.cpp
type solidity::util (line 27) | namespace solidity::util
function isWellFormed (line 33) | bool isWellFormed(unsigned char byte1, unsigned char byte2)
function validateUTF8 (line 79) | bool validateUTF8(unsigned char const* _input, size_t _length, size_t&...
function validateUTF8 (line 137) | bool validateUTF8(std::string const& _input, size_t& _invalidPosition)
FILE: libsolutil/UTF8.h
function namespace (line 29) | namespace solidity::util
FILE: libsolutil/Views.h
function namespace (line 26) | namespace solidity::util::views
FILE: libsolutil/Visitor.h
function SOLC_EMPTY_BASES (line 70) | SOLC_EMPTY_BASES GenericVisitor: Visitors... { using Visitors::operator(...
FILE: libsolutil/Whiskers.cpp
function Whiskers (line 39) | Whiskers& Whiskers::operator()(std::string _parameter, std::string _value)
function Whiskers (line 48) | Whiskers& Whiskers::operator()(std::string _parameter, bool _value)
function Whiskers (line 57) | Whiskers& Whiskers::operator()(
function regex_replace (line 133) | std::string regex_replace(
FILE: libsolutil/Whiskers.h
function namespace (line 33) | namespace solidity::util
FILE: libsolutil/picosha2.h
function namespace (line 39) | namespace picosha2 {
function string (line 169) | string bytes_to_hex_string(InIter first, InIter last) {
function string (line 176) | string bytes_to_hex_string(const InContainer& bytes) {
function class (line 182) | class hash256_one_by_one {
function finish (line 205) | void finish() {
function write_data_bit_length (line 248) | void write_data_bit_length(byte_t* begin) {
function get_hash_hex_string (line 274) | inline void get_hash_hex_string(const hash256_one_by_one& hasher,
function std (line 281) | inline std::string get_hash_hex_string(const hash256_one_by_one& hasher) {
function namespace (line 287) | namespace impl {
function string (line 361) | string hash256_hex_string(InIter first, InIter last) {
function hash256_hex_string (line 367) | inline void hash256_hex_string(const std::string& src, std::string& hex_...
function string (line 377) | string hash256_hex_string(const InContainer& src) {
FILE: libsolutil/vector_ref.h
function namespace (line 13) | namespace solidity::util
FILE: libyul/AST.cpp
type solidity::yul (line 22) | namespace solidity::yul
FILE: libyul/AST.h
function namespace (line 37) | namespace solidity::yul
function hasDefaultCase (line 163) | inline bool hasDefaultCase(Switch const& _switch)
FILE: libyul/ASTForward.h
function namespace (line 28) | namespace solidity::yul
FILE: libyul/ASTLabelRegistry.cpp
function ASTLabelRegistry (line 145) | ASTLabelRegistry ASTLabelRegistryBuilder::build() const
FILE: libyul/ASTLabelRegistry.h
function namespace (line 28) | namespace solidity::yul
FILE: libyul/AsmAnalysis.cpp
function to_string (line 54) | inline std::string to_string(LiteralKind _kind)
function AsmAnalysisInfo (line 94) | AsmAnalysisInfo AsmAnalyzer::analyzeStrictAssertCorrect(Object const& _o...
function AsmAnalysisInfo (line 100) | AsmAnalysisInfo AsmAnalyzer::analyzeStrictAssertCorrect(
function AsmAnalysisInfo (line 109) | AsmAnalysisInfo AsmAnalyzer::analyzeStrictAssertCorrect(
function Scope (line 716) | Scope& AsmAnalyzer::scope(Block const* _block)
FILE: libyul/AsmAnalysis.h
function namespace (line 41) | namespace solidity::langutil
function namespace (line 47) | namespace solidity::yul
FILE: libyul/AsmAnalysisInfo.h
function namespace (line 30) | namespace solidity::yul
FILE: libyul/AsmJsonConverter.cpp
type solidity::yul (line 32) | namespace solidity::yul
function Json (line 35) | Json AsmJsonConverter::operator()(Block const& _node) const
function Json (line 42) | Json AsmJsonConverter::operator()(NameWithDebugData const& _node) const
function Json (line 54) | Json AsmJsonConverter::operator()(Literal const& _node) const
function Json (line 80) | Json AsmJsonConverter::operator()(Identifier const& _node) const
function Json (line 88) | Json AsmJsonConverter::operator()(BuiltinName const& _node) const
function Json (line 96) | Json AsmJsonConverter::operator()(Assignment const& _node) const
function Json (line 106) | Json AsmJsonConverter::operator()(FunctionCall const& _node) const
function Json (line 114) | Json AsmJsonConverter::operator()(ExpressionStatement const& _node) const
function Json (line 121) | Json AsmJsonConverter::operator()(VariableDeclaration const& _node) const
function Json (line 130) | Json AsmJsonConverter::operator()(FunctionDefinition const& _node) const
function Json (line 143) | Json AsmJsonConverter::operator()(If const& _node) const
function Json (line 152) | Json AsmJsonConverter::operator()(Switch const& _node) const
function Json (line 162) | Json AsmJsonConverter::operator()(Case const& _node) const
function Json (line 170) | Json AsmJsonConverter::operator()(ForLoop const& _node) const
function Json (line 181) | Json AsmJsonConverter::operator()(Break const& _node) const
function Json (line 186) | Json AsmJsonConverter::operator()(Continue const& _node) const
function Json (line 191) | Json AsmJsonConverter::operator()(Leave const& _node) const
function Json (line 196) | Json AsmJsonConverter::createAstNode(langutil::SourceLocation const& _...
function Json (line 211) | Json AsmJsonConverter::vectorOfVariantsToJson(std::vector<T> const& _v...
FILE: libyul/AsmJsonConverter.h
function namespace (line 33) | namespace solidity::yul
FILE: libyul/AsmJsonImporter.cpp
type solidity::yul (line 42) | namespace solidity::yul
function SourceLocation (line 47) | SourceLocation const AsmJsonImporter::createSourceLocation(Json const&...
function AST (line 54) | AST AsmJsonImporter::createAST(solidity::Json const& _node)
function T (line 60) | T AsmJsonImporter::createAsmNode(Json const& _node)
function Json (line 72) | Json AsmJsonImporter::member(Json const& _node, std::string const& _name)
function NameWithDebugData (line 79) | NameWithDebugData AsmJsonImporter::createNameWithDebugData(Json const&...
function Statement (line 86) | Statement AsmJsonImporter::createStatement(Json const& _node)
function Expression (line 124) | Expression AsmJsonImporter::createExpression(Json const& _node)
function Block (line 162) | Block AsmJsonImporter::createBlock(Json const& _node)
function Literal (line 169) | Literal AsmJsonImporter::createLiteral(Json const& _node)
function Leave (line 229) | Leave AsmJsonImporter::createLeave(Json const& _node)
function Identifier (line 234) | Identifier AsmJsonImporter::createIdentifier(Json const& _node)
function Assignment (line 241) | Assignment AsmJsonImporter::createAssignment(Json const& _node)
function FunctionCall (line 253) | FunctionCall AsmJsonImporter::createFunctionCall(Json const& _node)
function ExpressionStatement (line 274) | ExpressionStatement AsmJsonImporter::createExpressionStatement(Json co...
function VariableDeclaration (line 281) | VariableDeclaration AsmJsonImporter::createVariableDeclaration(Json co...
function FunctionDefinition (line 293) | FunctionDefinition AsmJsonImporter::createFunctionDefinition(Json cons...
function If (line 310) | If AsmJsonImporter::createIf(Json const& _node)
function Case (line 318) | Case AsmJsonImporter::createCase(Json const& _node)
function Switch (line 330) | Switch AsmJsonImporter::createSwitch(Json const& _node)
function ForLoop (line 339) | ForLoop AsmJsonImporter::createForLoop(Json const& _node)
function Break (line 349) | Break AsmJsonImporter::createBreak(Json const& _node)
function Continue (line 354) | Continue AsmJsonImporter::createContinue(Json const& _node)
FILE: libyul/AsmJsonImporter.h
function namespace (line 32) | namespace solidity::yul
FILE: libyul/AsmParser.cpp
function toInt (line 49) | std::optional<int> toInt(std::string const& _value)
function Block (line 332) | Block Parser::parseBlock()
function Statement (line 344) | Statement Parser::parseStatement()
function Case (line 486) | Case Parser::parseCase()
function ForLoop (line 507) | ForLoop Parser::parseForLoop()
function Expression (line 530) | Expression Parser::parseExpression(bool _unlimitedLiteralArgument)
function VariableDeclaration (line 628) | VariableDeclaration Parser::parseVariableDeclaration()
function FunctionDefinition (line 653) | FunctionDefinition Parser::parseFunctionDefinition()
function FunctionCall (line 700) | FunctionCall Parser::parseCall(std::variant<Literal, Identifier, Builtin...
function NameWithDebugData (line 741) | NameWithDebugData Parser::parseNameWithDebugData()
function YulName (line 759) | YulName Parser::expectAsmIdentifier()
FILE: libyul/AsmParser.h
type class (line 46) | enum class
function UseSourceLocationFrom (line 51) | enum class UseSourceLocationFrom
FILE: libyul/AsmPrinter.h
function namespace (line 37) | namespace solidity::yul
FILE: libyul/Builtins.h
function namespace (line 23) | namespace solidity::yul
FILE: libyul/CompilabilityChecker.h
function namespace (line 31) | namespace solidity::yul
FILE: libyul/ControlFlowSideEffects.h
function namespace (line 24) | namespace solidity::yul
function ControlFlowSideEffects (line 73) | static ControlFlowSideEffects worst()
FILE: libyul/ControlFlowSideEffectsCollector.cpp
function ControlFlowNode (line 163) | ControlFlowNode* ControlFlowBuilder::newNode()
function ControlFlowNode (line 259) | ControlFlowNode const* ControlFlowSideEffectsCollector::nextProcessableN...
function ControlFlowSideEffects (line 273) | ControlFlowSideEffects const& ControlFlowSideEffectsCollector::sideEffec...
FILE: libyul/ControlFlowSideEffectsCollector.h
function namespace (line 29) | namespace solidity::yul
FILE: libyul/Dialect.cpp
function Literal (line 28) | Literal Dialect::zeroLiteral() const
FILE: libyul/Dialect.h
function namespace (line 35) | namespace solidity::yul
FILE: libyul/Exceptions.h
function namespace (line 33) | namespace solidity::yul
FILE: libyul/FunctionReferenceResolver.h
function namespace (line 25) | namespace solidity::yul
FILE: libyul/Object.cpp
function Json (line 72) | Json Data::toJson() const
function Json (line 95) | Json Object::toJson() const
function Dialect (line 246) | Dialect const* Object::dialect() const
FILE: libyul/Object.h
function namespace (line 39) | namespace solidity::yul
type ObjectDebugData (line 82) | struct ObjectDebugData
function class (line 93) | class Object: public ObjectNode
FILE: libyul/ObjectOptimizer.h
function namespace (line 32) | namespace solidity::yul
FILE: libyul/ObjectParser.h
function namespace (line 34) | namespace solidity::langutil
function namespace (line 39) | namespace solidity::yul
FILE: libyul/Scope.h
function namespace (line 33) | namespace solidity::yul
FILE: libyul/ScopeFiller.cpp
function Scope (line 166) | Scope& ScopeFiller::scope(Block const* _block)
FILE: libyul/ScopeFiller.h
function namespace (line 29) | namespace solidity::langutil
function namespace (line 35) | namespace solidity::yul
FILE: libyul/SideEffects.h
function namespace (line 24) | namespace solidity::yul
function _other (line 113) | bool operator==(SideEffects const& _other) const
FILE: libyul/Utilities.cpp
function LiteralValue (line 93) | LiteralValue solidity::yul::valueOfNumberLiteral(std::string_view const ...
function LiteralValue (line 98) | LiteralValue solidity::yul::valueOfStringLiteral(std::string_view const ...
function LiteralValue (line 104) | LiteralValue solidity::yul::valueOfBuiltinStringLiteralArgument(std::str...
function LiteralValue (line 109) | LiteralValue solidity::yul::valueOfBoolLiteral(std::string_view const _l...
function LiteralValue (line 119) | LiteralValue solidity::yul::valueOfLiteral(std::string_view const _liter...
function BuiltinFunction (line 254) | BuiltinFunction const* yul::resolveBuiltinFunction(FunctionName const& _...
function BuiltinFunctionForEVM (line 263) | BuiltinFunctionForEVM const* yul::resolveBuiltinFunctionForEVM(FunctionN...
function FunctionHandle (line 272) | FunctionHandle yul::functionNameToHandle(FunctionName const& _functionName)
FILE: libyul/Utilities.h
function namespace (line 30) | namespace solidity::yul
type SwitchCaseCompareByLiteralValue (line 86) | struct SwitchCaseCompareByLiteralValue
FILE: libyul/YulName.h
function namespace (line 23) | namespace solidity::yul
FILE: libyul/YulStack.cpp
function CharStream (line 47) | CharStream const& YulStack::charStream(std::string const& _sourceName) c...
function MachineAssemblyObject (line 233) | MachineAssemblyObject YulStack::assemble(Machine _machine, bool _viaSSACFG)
function Json (line 380) | Json YulStack::astJson() const
function Json (line 388) | Json YulStack::cfgJson() const
function Dialect (line 440) | Dialect const& YulStack::dialect() const
FILE: libyul/YulStack.h
function namespace (line 43) | namespace solidity::evmasm
function namespace (line 48) | namespace solidity::langutil
function namespace (line 53) | namespace solidity::yul
FILE: libyul/YulString.h
function namespace (line 33) | namespace solidity::yul
FILE: libyul/backends/evm/AbstractAssembly.h
function namespace (line 39) | namespace solidity::langutil
function namespace (line 44) | namespace solidity::evmasm
type Identifier (line 51) | struct Identifier
type class (line 63) | enum class
function virtual (line 71) | virtual int stackHeight() const = 0;
FILE: libyul/backends/evm/AsmCodeGen.h
function namespace (line 28) | namespace solidity::evmasm
function namespace (line 33) | namespace solidity::yul
FILE: libyul/backends/evm/ConstantOptimiser.cpp
type MiniEVMInterpreter (line 41) | struct MiniEVMInterpreter
method MiniEVMInterpreter (line 43) | explicit MiniEVMInterpreter(EVMDialect const& _dialect): m_dialect(_di...
method u256 (line 45) | u256 eval(Expression const& _expr)
method u256 (line 50) | u256 eval(evmasm::Instruction _instr, std::vector<Expression> const& _...
method u256 (line 75) | u256 operator()(FunctionCall const& _funCall)
method u256 (line 82) | u256 operator()(Literal const& _literal)
method u256 (line 86) | u256 operator()(Identifier const&) { yulAssert(false, ""); }
function Expression (line 111) | Expression const* RepresentationFinder::tryFindRepresentation(u256 const...
function Representation (line 123) | Representation const& RepresentationFinder::findRepresentation(u256 cons...
function Representation (line 187) | Representation RepresentationFinder::represent(u256 const& _value) const
function Representation (line 195) | Representation RepresentationFinder::represent(
function Representation (line 210) | Representation RepresentationFinder::represent(
function Representation (line 226) | Representation RepresentationFinder::min(Representation _a, Representati...
FILE: libyul/backends/evm/ConstantOptimiser.h
function namespace (line 38) | namespace solidity::yul
FILE: libyul/backends/evm/ControlFlowGraph.h
function namespace (line 36) | namespace solidity::yul
type FunctionReturnLabelSlot (line 58) | struct FunctionReturnLabelSlot
type VariableSlot (line 76) | struct VariableSlot
type LiteralSlot (line 85) | struct LiteralSlot
type TemporarySlot (line 94) | struct TemporarySlot
type JunkSlot (line 107) | struct JunkSlot
function canBeFreelyGenerated (line 118) | inline bool canBeFreelyGenerated(StackSlot const& _slot)
type CFG (line 124) | struct CFG
type FunctionInfo (line 211) | struct FunctionInfo
FILE: libyul/backends/evm/ControlFlowGraphBuilder.cpp
function cleanUnreachable (line 52) | void cleanUnreachable(CFG& _cfg)
function markRecursiveCalls (line 103) | void markRecursiveCalls(CFG& _cfg)
function markStartsOfSubGraphs (line 152) | void markStartsOfSubGraphs(CFG& _cfg)
function markNeedsCleanStack (line 217) | void markNeedsCleanStack(CFG& _cfg)
function StackSlot (line 273) | StackSlot ControlFlowGraphBuilder::operator()(Literal const& _literal)
function StackSlot (line 278) | StackSlot ControlFlowGraphBuilder::operator()(Identifier const& _identif...
function StackSlot (line 283) | StackSlot ControlFlowGraphBuilder::operator()(Expression const& _express...
function StackSlot (line 288) | StackSlot ControlFlowGraphBuilder::operator()(FunctionCall const& _call)
function Stack (line 540) | Stack const& ControlFlowGraphBuilder::visitFunctionCall(FunctionCall con...
function Stack (line 596) | Stack ControlFlowGraphBuilder::visitAssignmentRightHandSide(Expression c...
FILE: libyul/backends/evm/ControlFlowGraphBuilder.h
function namespace (line 28) | namespace solidity::yul
FILE: libyul/backends/evm/EVMBuiltins.cpp
function BuiltinFunctionForEVM (line 37) | BuiltinFunctionForEVM createFunction(
function BuiltinFunctionForEVM (line 62) | BuiltinFunctionForEVM instructionBuiltin(evmasm::Instruction const& _ins...
function BuiltinFunctionForEVM (line 85) | BuiltinFunctionForEVM linkersymbolBuiltin()
function BuiltinFunctionForEVM (line 102) | BuiltinFunctionForEVM memoryguardBuiltin()
function BuiltinFunctionForEVM (line 120) | BuiltinFunctionForEVM datasizeBuiltin()
function BuiltinFunctionForEVM (line 149) | BuiltinFunctionForEVM dataoffsetBuiltin()
function BuiltinFunctionForEVM (line 174) | BuiltinFunctionForEVM datacopyBuiltin()
function BuiltinFunctionForEVM (line 193) | BuiltinFunctionForEVM setimmutableBuiltin()
function BuiltinFunctionForEVM (line 224) | BuiltinFunctionForEVM loadimmutableBuiltin()
function BuiltinFunctionForEVM (line 244) | BuiltinFunctionForEVM auxdataloadnBuiltin()
function BuiltinFunctionForEVM (line 267) | BuiltinFunctionForEVM eofcreateBuiltin()
function BuiltinFunctionForEVM (line 293) | BuiltinFunctionForEVM returncontractBuiltin()
function BuiltinFunctionForEVM (line 373) | BuiltinFunctionForEVM EVMBuiltins::createVerbatimFunction(size_t const _...
function SideEffects (line 401) | SideEffects EVMBuiltins::sideEffectsOfInstruction(evmasm::Instruction _i...
FILE: libyul/backends/evm/EVMBuiltins.h
function namespace (line 33) | namespace solidity::yul
function Scopes (line 114) | static Scopes constexpr requiresEOF{1 << requiresEOFBit};
FILE: libyul/backends/evm/EVMCodeTransform.cpp
function statementNeedsReturnVariableSetup (line 664) | bool statementNeedsReturnVariableSetup(Statement const& _statement, std:...
FILE: libyul/backends/evm/EVMCodeTransform.h
function namespace (line 33) | namespace solidity::langutil
function namespace (line 38) | namespace solidity::yul
FILE: libyul/backends/evm/EVMDialect.cpp
function toContinuousVerbatimIndex (line 51) | size_t constexpr toContinuousVerbatimIndex(size_t _arguments, size_t _re...
function verbatimIndexToArgsAndRets (line 56) | std::tuple<size_t, size_t> constexpr verbatimIndexToArgsAndRets(size_t _...
function isLowLevelStackManipulationInstruction (line 62) | bool isLowLevelStackManipulationInstruction(evmasm::Instruction const& _...
function isLowLevelControlFlowInstruction (line 72) | bool isLowLevelControlFlowInstruction(evmasm::Instruction const& _instru...
function createReservedIdentifiers (line 90) | std::set<std::string, std::less<>> createReservedIdentifiers(langutil::E...
function createDialectBuiltins (line 185) | std::vector<BuiltinFunctionForEVM const*> createDialectBuiltins(
function BuiltinFunctionForEVM (line 289) | BuiltinFunctionForEVM const& EVMDialect::builtin(BuiltinHandle const& _h...
function EVMDialect (line 313) | EVMDialect const& EVMDialect::strictAssemblyForEVM(langutil::EVMVersion ...
function EVMDialect (line 322) | EVMDialect const& EVMDialect::strictAssemblyForEVMObjects(langutil::EVMV...
function BuiltinFunctionForEVM (line 336) | BuiltinFunctionForEVM EVMDialect::createVerbatimFunctionFromHandle(Built...
function BuiltinHandle (line 341) | BuiltinHandle EVMDialect::verbatimFunction(size_t _arguments, size_t _re...
function EVMBuiltins (line 358) | EVMBuiltins const& EVMDialect::allBuiltins()
FILE: libyul/backends/evm/EVMDialect.h
function namespace (line 38) | namespace solidity::yul
FILE: libyul/backends/evm/EVMMetrics.cpp
function bigint (line 38) | bigint GasMeter::costs(Expression const& _expression) const
function bigint (line 43) | bigint GasMeter::instructionCosts(evmasm::Instruction _instruction) const
function bigint (line 48) | bigint GasMeter::combineCosts(std::pair<bigint, bigint> _costs) const
function bigint (line 107) | bigint GasMeterVisitor::singleByteDataGas() const
FILE: libyul/backends/evm/EVMMetrics.h
function namespace (line 29) | namespace solidity::yul
FILE: libyul/backends/evm/EVMObjectCompiler.h
function namespace (line 27) | namespace solidity::yul
FILE: libyul/backends/evm/EthAssemblyAdapter.h
function namespace (line 31) | namespace solidity::evmasm
function namespace (line 37) | namespace solidity::yul
FILE: libyul/backends/evm/NoOutputAssembly.cpp
function modifyBuiltinToNoOutput (line 40) | void modifyBuiltinToNoOutput(BuiltinFunctionForEVM& _builtin)
function BuiltinFunctionForEVM (line 225) | BuiltinFunctionForEVM const& NoOutputEVMDialect::builtin(BuiltinHandle c...
FILE: libyul/backends/evm/NoOutputAssembly.h
function namespace (line 32) | namespace solidity::langutil
function namespace (line 37) | namespace solidity::yul
FILE: libyul/backends/evm/OptimizedEVMCodeTransform.h
function namespace (line 33) | namespace solidity::langutil
function namespace (line 38) | namespace solidity::yul
FILE: libyul/backends/evm/StackHelpers.h
function namespace (line 34) | namespace solidity::yul
function std (line 49) | inline std::string stackToString(Stack const& _stack, Dialect const& _di...
function isCompatible (line 444) | struct ShuffleOperations
function sourceIsSame (line 486) | bool sourceIsSame(size_t _lhs, size_t _rhs) { return currentStack.at(_lh...
function sourceMultiplicity (line 487) | int sourceMultiplicity(size_t _offset) { return multiplicity.at(currentS...
function targetMultiplicity (line 488) | int targetMultiplicity(size_t _offset) { return multiplicity.at(targetSt...
function targetIsArbitrary (line 489) | bool targetIsArbitrary(size_t offset)
function swap (line 493) | void swap(size_t _i)
function sourceSize (line 498) | size_t sourceSize() { return currentStack.size(); }
function targetSize (line 499) | size_t targetSize() { return targetStack.size(); }
function pop (line 500) | void pop()
function pushOrDupTarget (line 505) | void pushOrDupTarget(size_t _offset)
FILE: libyul/backends/evm/StackLayoutGenerator.cpp
function StackLayout (line 48) | StackLayout StackLayoutGenerator::run(CFG const& _cfg, EVMDialect const&...
function findStackTooDeep (line 118) | std::vector<StackLayoutGenerator::StackTooDeep> findStackTooDeep(
function Stack (line 169) | Stack createIdealLayout(Stack const& _operationOutput, Stack const& _pos...
function Stack (line 295) | Stack StackLayoutGenerator::propagateStackThroughOperation(Stack _exitSt...
function Stack (line 345) | Stack StackLayoutGenerator::propagateStackThroughBlock(Stack _exitStack,...
function Stack (line 576) | Stack StackLayoutGenerator::combineStack(Stack const& _stack1, Stack con...
function Stack (line 711) | Stack StackLayoutGenerator::compressStack(Stack _stack, size_t _reachabl...
FILE: libyul/backends/evm/StackLayoutGenerator.h
function namespace (line 29) | namespace solidity::yul
FILE: libyul/backends/evm/VariableReferenceCounter.h
function namespace (line 26) | namespace solidity::yul
FILE: libyul/backends/evm/ssa/BridgeFinder.h
function namespace (line 30) | namespace solidity::yul::ssa
FILE: libyul/backends/evm/ssa/CodeTransform.cpp
function assertLayoutCompatibility (line 37) | void assertLayoutCompatibility(StackData const& _layout1, StackData cons...
FILE: libyul/backends/evm/ssa/CodeTransform.h
function namespace (line 29) | namespace solidity::yul
function namespace (line 33) | namespace solidity::yul::ssa
function class (line 93) | class CodeTransform
FILE: libyul/backends/evm/ssa/ControlFlow.h
function namespace (line 29) | namespace solidity::yul::ssa
FILE: libyul/backends/evm/ssa/JunkAdmittingBlocksFinder.cpp
type solidity::yul::ssa (line 23) | namespace solidity::yul::ssa
FILE: libyul/backends/evm/ssa/JunkAdmittingBlocksFinder.h
function namespace (line 27) | namespace solidity::yul::ssa
FILE: libyul/backends/evm/ssa/LivenessAnalysis.cpp
function excludingLiteralsFilter (line 34) | constexpr auto excludingLiteralsFilter()
FILE: libyul/backends/evm/ssa/LivenessAnalysis.h
function namespace (line 27) | namespace solidity::yul::ssa
FILE: libyul/backends/evm/ssa/PhiInverse.h
function namespace (line 25) | namespace solidity::yul::ssa
FILE: libyul/backends/evm/ssa/SSACFG.cpp
function formatPhi (line 43) | std::string formatPhi(SSACFG const& _cfg, SSACFG::PhiValue const& _phiVa...
class SSACFGDotExporter (line 56) | class SSACFGDotExporter: public io::DotExporterBase
method SSACFGDotExporter (line 59) | SSACFGDotExporter(SSACFG const& _cfg, size_t _functionIndex, LivenessA...
method writeBlockLabel (line 68) | void writeBlockLabel(std::ostream& _out, SSACFG::BlockId _blockId) ove...
method blockNodeAttributes (line 137) | std::vector<std::pair<std::string, std::string>> blockNodeAttributes(S...
method EdgeStyle (line 144) | EdgeStyle edgeStyle(SSACFG::BlockId _source, SSACFG::BlockId _target) ...
FILE: libyul/backends/evm/ssa/SSACFG.h
function class (line 42) | class SSACFG
type class (line 62) | enum class
function ValueId (line 79) | static ValueId constexpr makeVariable(ValueType const& _value) { return ...
function BlockId (line 181) | BlockId makeBlock(langutil::DebugData::ConstPtr _debugData)
function BlockId (line 308) | struct fmt::formatter<solidity::yul::ssa::SSACFG::BlockId>
function ValueId (line 322) | struct fmt::formatter<solidity::yul::ssa::SSACFG::ValueId>
FILE: libyul/backends/evm/ssa/SSACFGBuilder.cpp
class ForLoopInfoScope (line 397) | class ForLoopInfoScope {
method ForLoopInfoScope (line 399) | ForLoopInfoScope(std::stack<ForLoopInfo>& _info, SSACFG::BlockId _brea...
function FunctionDefinition (line 718) | FunctionDefinition const* SSACFGBuilder::findFunctionDefinition(Scope::F...
FILE: libyul/backends/evm/ssa/SSACFGBuilder.h
function namespace (line 37) | namespace solidity::yul::ssa
FILE: libyul/backends/evm/ssa/SSACFGLoopNestingForest.h
function namespace (line 30) | namespace solidity::yul::ssa
FILE: libyul/backends/evm/ssa/Stack.cpp
type solidity::yul::ssa (line 24) | namespace solidity::yul::ssa
function slotToString (line 27) | std::string slotToString(StackSlot const& _slot)
function stackToString (line 43) | std::string stackToString(StackData const& _stackData)
FILE: libyul/backends/evm/ssa/Stack.h
function namespace (line 30) | namespace solidity::yul
function push (line 173) | struct NoOpStackManipulationCallbacks
function pop (line 178) | static void pop() {}
function swap (line 210) | void swap(Depth const& _depth) { swap(depthToOffset(_depth)); }
function swap (line 211) | void swap(Offset const& _offset)
function dup (line 239) | void dup(Depth const& _depth) { dup(depthToOffset(_depth)); }
function dup (line 240) | void dup(Offset const& _offset)
function dupReachable (line 251) | bool dupReachable(Offset const& _offset) const noexcept { return dupReac...
function dupReachable (line 252) | bool dupReachable(Depth const& _depth) const noexcept { return _depth < ...
function swapReachable (line 253) | bool swapReachable(Offset const& _offset) const noexcept { return swapRe...
function swapReachable (line 254) | bool swapReachable(Depth const& _depth) const noexcept { return _depth <...
function declareJunk (line 256) | void declareJunk(Offset const& _offset) { (*m_data)[_offset.value] = Slo...
function declareJunk (line 257) | void declareJunk(Depth const& _depth) { declareJunk(depthToOffset(_depth...
function Slot (line 259) | Slot const& slot(Depth const& _depth) const { return (*m_data)[depthToOf...
function Slot (line 260) | Slot const& slot(Offset const& _offset) const { return slot(offsetToDept...
function canBeFreelyGenerated (line 275) | static bool constexpr canBeFreelyGenerated(Slot const& _slot)
function Slot (line 280) | Slot const& operator[](Offset const& _index) const noexcept { return (*m...
function const (line 281) | auto begin() const { return ranges::begin(*m_data); }
function Depth (line 292) | Depth offsetToDepth(Offset const& _offset) const
FILE: libyul/backends/evm/ssa/StackLayout.h
function namespace (line 25) | namespace solidity::yul::ssa
FILE: libyul/backends/evm/ssa/StackLayoutGenerator.cpp
function handlePhiFunctions (line 39) | void handlePhiFunctions(StackData& _stackData, PhiInverse const& _phiInv...
function declareJunk (line 69) | void declareJunk(StackType& _stack, LivenessAnalysis::LivenessData const...
function SSACFGStackLayout (line 81) | SSACFGStackLayout StackLayoutGenerator::generate(
FILE: libyul/backends/evm/ssa/StackLayoutGenerator.h
function namespace (line 26) | namespace solidity::yul::ssa
FILE: libyul/backends/evm/ssa/StackShuffler.cpp
function StackSlot (line 136) | StackSlot const& State::targetArg(StackOffset const _targetOffset) const
function Target (line 180) | Target const& State::target() const
FILE: libyul/backends/evm/ssa/StackShuffler.h
function namespace (line 34) | namespace detail
function dupDeepSlotIfRequired (line 306) | static bool dupDeepSlotIfRequired(Stack<Callback>& _stack, detail::State...
function StackOffset (line 377) | StackOffset const stackTop{_stack.size() - 1};
FILE: libyul/backends/evm/ssa/StackUtils.cpp
function StackData (line 33) | StackData solidity::yul::ssa::stackPreImage(StackData _stack, PhiInverse...
function CallSites (line 120) | CallSites solidity::yul::ssa::gatherCallSites(SSACFG const& _cfg)
function ValidationResult (line 155) | ValidationResult solidity::yul::ssa::checkLayoutCompatibility(StackData ...
FILE: libyul/backends/evm/ssa/StackUtils.h
function namespace (line 27) | namespace solidity::yul::ssa
FILE: libyul/backends/evm/ssa/io/DotExporterBase.h
function namespace (line 30) | namespace solidity::yul::ssa::io
function string_view (line 78) | struct fmt::formatter<solidity::yul::ssa::io::DotExporterBase::RankDir>:...
FILE: libyul/backends/evm/ssa/io/JSONExporter.cpp
function Json (line 38) | Json toJson(SSACFG const& _cfg, std::vector<SSACFG::ValueId> const& _val...
function Json (line 46) | Json toJson(Json& _ret, SSACFG const& _cfg, SSACFG::Operation const& _op...
function Json (line 91) | Json toJson(SSACFG const& _cfg, SSACFG::BlockId _blockId, LivenessAnalys...
function Json (line 132) | Json exportBlock(SSACFG const& _cfg, SSACFG::BlockId _entryId, LivenessA...
function Json (line 172) | Json exportFunction(SSACFG const& _cfg, LivenessAnalysis const* _liveness)
function Json (line 186) | Json io::json::exportControlFlow(ControlFlow const& _controlFlow, Contro...
FILE: libyul/backends/evm/ssa/io/JSONExporter.h
function namespace (line 24) | namespace solidity::yul::ssa::io::json
FILE: libyul/backends/evm/ssa/traversal/ForwardTopologicalSort.h
function namespace (line 27) | namespace solidity::yul::ssa::traversal
FILE: libyul/optimiser/ASTCopier.cpp
function Statement (line 33) | Statement ASTCopier::operator()(ExpressionStatement const& _statement)
function Statement (line 38) | Statement ASTCopier::operator()(VariableDeclaration const& _varDecl)
function Statement (line 47) | Statement ASTCopier::operator()(Assignment const& _assignment)
function Expression (line 56) | Expression ASTCopier::operator()(FunctionCall const& _call)
function Expression (line 65) | Expression ASTCopier::operator()(Identifier const& _identifier)
function Expression (line 70) | Expression ASTCopier::operator()(Literal const& _literal)
function Statement (line 75) | Statement ASTCopier::operator()(If const& _if)
function Statement (line 80) | Statement ASTCopier::operator()(Switch const& _switch)
function Statement (line 85) | Statement ASTCopier::operator()(FunctionDefinition const& _function)
function Statement (line 101) | Statement ASTCopier::operator()(ForLoop const& _forLoop)
function Statement (line 114) | Statement ASTCopier::operator()(Break const& _break)
function Statement (line 119) | Statement ASTCopier::operator()(Continue const& _continue)
function Statement (line 124) | Statement ASTCopier::operator()(Leave const& _leaveStatement)
function Statement (line 129) | Statement ASTCopier::operator ()(Block const& _block)
function Expression (line 134) | Expression ASTCopier::translate(Expression const& _expression)
function Statement (line 139) | Statement ASTCopier::translate(Statement const& _statement)
function Block (line 144) | Block ASTCopier::translate(Block const& _block)
function Case (line 152) | Case ASTCopier::translate(Case const& _case)
function FunctionName (line 157) | FunctionName ASTCopier::translate(FunctionName const& _functionName)
function Identifier (line 166) | Identifier ASTCopier::translate(Identifier const& _identifier)
function Literal (line 171) | Literal ASTCopier::translate(Literal const& _literal)
function NameWithDebugData (line 176) | NameWithDebugData ASTCopier::translate(NameWithDebugData const& _typedName)
function YulName (line 181) | YulName FunctionCopier::translateIdentifier(YulName _name)
FILE: libyul/optimiser/ASTCopier.h
function namespace (line 34) | namespace solidity::yul
FILE: libyul/optimiser/ASTWalker.h
function class (line 40) | class ASTWalker
function override (line 117) | void operator()(Node& _node) override
FILE: libyul/optimiser/BlockFlattener.h
function namespace (line 23) | namespace solidity::yul
FILE: libyul/optimiser/BlockHasher.cpp
function compileTimeLiteralHash (line 34) | static constexpr uint64_t compileTimeLiteralHash(char const* _literal, s...
function compileTimeLiteralHash (line 40) | static constexpr uint64_t compileTimeLiteralHash(char const (&_literal)[N])
FILE: libyul/optimiser/BlockHasher.h
function namespace (line 27) | namespace solidity::yul
FILE: libyul/optimiser/CallGraphGenerator.cpp
type CallGraphCycleFinder (line 37) | struct CallGraphCycleFinder
method visit (line 44) | void visit(FunctionHandle const& _function)
function CallGraph (line 75) | CallGraph CallGraphGenerator::callGraph(Block const& _ast)
FILE: libyul/optimiser/CallGraphGenerator.h
function namespace (line 30) | namespace solidity::yul
FILE: libyul/optimiser/CircularReferencesPruner.h
function namespace (line 32) | namespace solidity::yul
FILE: libyul/optimiser/CommonSubexpressionEliminator.h
function namespace (line 32) | namespace solidity::yul
FILE: libyul/optimiser/ConditionalSimplifier.h
function namespace (line 26) | namespace solidity::yul
FILE: libyul/optimiser/ConditionalUnsimplifier.h
function namespace (line 25) | namespace solidity::yul
FILE: libyul/optimiser/ControlFlowSimplifier.cpp
function ExpressionStatement (line 38) | ExpressionStatement makeDiscardCall(
function removeEmptyDefaultFromSwitch (line 51) | void removeEmptyDefaultFromSwitch(Switch& _switchStmt)
function removeEmptyCasesFromSwitch (line 59) | void removeEmptyCasesFromSwitch(Switch& _switchStmt)
function OptionalStatements (line 177) | OptionalStatements ControlFlowSimplifier::reduceNoCaseSwitch(Switch& _sw...
function OptionalStatements (line 192) | OptionalStatements ControlFlowSimplifier::reduceSingleCaseSwitch(Switch&...
FILE: libyul/optimiser/ControlFlowSimplifier.h
function namespace (line 23) | namespace solidity::yul
FILE: libyul/optimiser/DataFlowAnalyzer.h
function namespace (line 38) | namespace solidity::yul
FILE: libyul/optimiser/DeadCodeEliminator.h
function namespace (line 31) | namespace solidity::yul
FILE: libyul/optimiser/Disambiguator.cpp
function YulName (line 33) | YulName Disambiguator::translateIdentifier(YulName const _originalName)
FILE: libyul/optimiser/Disambiguator.h
function namespace (line 32) | namespace solidity::yul
FILE: libyul/optimiser/EqualStoreEliminator.h
function namespace (line 28) | namespace solidity::yul
FILE: libyul/optimiser/EquivalentFunctionCombiner.h
function namespace (line 28) | namespace solidity::yul
FILE: libyul/optimiser/EquivalentFunctionDetector.h
function namespace (line 27) | namespace solidity::yul
FILE: libyul/optimiser/ExpressionInliner.h
function namespace (line 30) | namespace solidity::yul
FILE: libyul/optimiser/ExpressionJoiner.cpp
function Statement (line 129) | Statement* ExpressionJoiner::latestStatement()
FILE: libyul/optimiser/ExpressionJoiner.h
function namespace (line 29) | namespace solidity::yul
FILE: libyul/optimiser/ExpressionSimplifier.h
function namespace (line 28) | namespace solidity::yul
FILE: libyul/optimiser/ExpressionSplitter.h
function namespace (line 31) | namespace solidity::yul
FILE: libyul/optimiser/ForLoopConditionIntoBody.h
function namespace (line 23) | namespace solidity::yul
FILE: libyul/optimiser/ForLoopConditionOutOfBody.h
function namespace (line 24) | namespace solidity::yul
FILE: libyul/optimiser/ForLoopInitRewriter.h
function namespace (line 23) | namespace solidity::yul
FILE: libyul/optimiser/FullInliner.cpp
function Statement (line 359) | Statement BodyCopier::operator()(VariableDeclaration const& _varDecl)
function Statement (line 366) | Statement BodyCopier::operator()(FunctionDefinition const&)
function YulName (line 372) | YulName BodyCopier::translateIdentifier(YulName _name)
FILE: libyul/optimiser/FullInliner.h
function namespace (line 37) | namespace solidity::yul
FILE: libyul/optimiser/FunctionCallFinder.cpp
class MaybeConstFunctionCallFinder (line 30) | class MaybeConstFunctionCallFinder: Base
method run (line 34) | static std::vector<ResultType*> run(MaybeConstBlock& _block, FunctionH...
method MaybeConstFunctionCallFinder (line 41) | explicit MaybeConstFunctionCallFinder(FunctionHandle const& _functionH...
FILE: libyul/optimiser/FunctionCallFinder.h
function namespace (line 27) | namespace solidity::yul
FILE: libyul/optimiser/FunctionGrouper.h
function namespace (line 27) | namespace solidity::yul
FILE: libyul/optimiser/FunctionHoister.h
function namespace (line 28) | namespace solidity::yul
FILE: libyul/optimiser/FunctionSpecializer.cpp
function FunctionDefinition (line 82) | FunctionDefinition FunctionSpecializer::specialize(
FILE: libyul/optimiser/FunctionSpecializer.h
function namespace (line 31) | namespace solidity::yul
FILE: libyul/optimiser/InlinableExpressionFunctionFinder.h
function namespace (line 29) | namespace solidity::yul
FILE: libyul/optimiser/KnowledgeBase.cpp
function Expression (line 156) | Expression const* KnowledgeBase::valueOf(YulName _var)
FILE: libyul/optimiser/KnowledgeBase.h
function namespace (line 34) | namespace solidity::yul
FILE: libyul/optimiser/LabelIDDispenser.cpp
function isInvalidLabel (line 33) | bool isInvalidLabel(
function ASTLabelRegistry (line 84) | ASTLabelRegistry LabelIDDispenser::generateNewLabels(Dialect const& _dia...
function ASTLabelRegistry (line 92) | ASTLabelRegistry LabelIDDispenser::generateNewLabels(std::set<LabelID> c...
FILE: libyul/optimiser/LabelIDDispenser.h
function namespace (line 26) | namespace solidity::yul
FILE: libyul/optimiser/LoadResolver.h
function namespace (line 28) | namespace solidity::yul
FILE: libyul/optimiser/LoopInvariantCodeMotion.h
function namespace (line 24) | namespace solidity::yul
FILE: libyul/optimiser/Metrics.h
function namespace (line 27) | namespace solidity::yul
FILE: libyul/optimiser/NameCollector.h
function namespace (line 30) | namespace solidity::yul
FILE: libyul/optimiser/NameDispenser.cpp
function YulName (line 47) | YulName NameDispenser::newName(YulName _nameHint)
FILE: libyul/optimiser/NameDispenser.h
function namespace (line 29) | namespace solidity::yul
FILE: libyul/optimiser/NameDisplacer.h
function namespace (line 30) | namespace solidity::yul
FILE: libyul/optimiser/NameSimplifier.h
function namespace (line 30) | namespace solidity::yul
FILE: libyul/optimiser/OptimiserStep.h
function namespace (line 27) | namespace solidity::yul
FILE: libyul/optimiser/OptimizerUtilities.cpp
function hasLeadingOrTrailingDot (line 43) | bool hasLeadingOrTrailingDot(std::string_view const _s)
FILE: libyul/optimiser/OptimizerUtilities.h
function namespace (line 33) | namespace solidity::evmasm
function namespace (line 38) | namespace solidity::yul
FILE: libyul/optimiser/Rematerialiser.h
function run (line 45) | static void run(
function class (line 84) | class LiteralRematerialiser: public DataFlowAnalyzer
FILE: libyul/optimiser/SSAReverser.h
function namespace (line 23) | namespace solidity::yul
FILE: libyul/optimiser/SSATransform.cpp
class IntroduceSSA (line 42) | class IntroduceSSA: public ASTModifier
method IntroduceSSA (line 45) | explicit IntroduceSSA(
class IntroduceControlFlowSSA (line 138) | class IntroduceControlFlowSSA: public ASTModifier
method IntroduceControlFlowSSA (line 141) | explicit IntroduceControlFlowSSA(
class PropagateValues (line 270) | class PropagateValues: public ASTModifier
method PropagateValues (line 273) | explicit PropagateValues(std::set<YulName> const& _variablesToReplace):
FILE: libyul/optimiser/SSATransform.h
function namespace (line 32) | namespace solidity::yul
FILE: libyul/optimiser/SSAValueTracker.h
function namespace (line 31) | namespace solidity::yul
FILE: libyul/optimiser/Semantics.h
function namespace (line 32) | namespace solidity::yul
function class (line 130) | class SideEffectsPropagator
function class (line 148) | class MSizeFinder: public ASTWalker
function class (line 169) | class LeaveFinder: public ASTWalker
function class (line 193) | class MovableChecker: public SideEffectsCollector
type ControlFlowSideEffects (line 215) | struct ControlFlowSideEffects
function class (line 224) | class TerminationFinder
FILE: libyul/optimiser/SimplificationRules.cpp
function Expression (line 237) | Expression Pattern::toExpression(langutil::DebugData::ConstPtr const& _d...
function u256 (line 268) | u256 Pattern::d() const
function Expression (line 273) | Expression const& Pattern::matchGroupValue() const
FILE: libyul/optimiser/SimplificationRules.h
function namespace (line 40) | namespace solidity::yul
FILE: libyul/optimiser/StackCompressor.cpp
class RematCandidateSelector (line 56) | class RematCandidateSelector: public DataFlowAnalyzer
method RematCandidateSelector (line 59) | explicit RematCandidateSelector(Dialect const& _dialect): DataFlowAnal...
method candidates (line 64) | std::map<YulName, std::map<size_t, std::vector<YulName>>> candidates()
method visit (line 111) | void visit(Expression& _e) override
method rematImpossible (line 128) | void rematImpossible(YulName _variable)
function chooseVarsToEliminate (line 145) | std::set<YulName> chooseVarsToEliminate(
function eliminateVariables (line 161) | void eliminateVariables(
function eliminateVariablesOptimizedCodegen (line 185) | void eliminateVariablesOptimizedCodegen(
FILE: libyul/optimiser/StackCompressor.h
function namespace (line 29) | namespace solidity::yul
FILE: libyul/optimiser/StackLimitEvader.cpp
type MemoryOffsetAllocator (line 58) | struct MemoryOffsetAllocator
method run (line 60) | uint64_t run(FunctionHandle _function = YulName{})
function u256 (line 117) | u256 literalArgumentValue(FunctionCall const& _call)
function Block (line 126) | Block StackLimitEvader::run(
FILE: libyul/optimiser/StackLimitEvader.h
function namespace (line 27) | namespace solidity::yul
FILE: libyul/optimiser/StackToMemoryMover.cpp
function generateMemoryStore (line 38) | std::vector<Statement> generateMemoryStore(
function FunctionCall (line 59) | FunctionCall generateMemoryLoad(Dialect const& _dialect, langutil::Debug...
FILE: libyul/optimiser/StackToMemoryMover.h
function namespace (line 34) | namespace solidity::yul
FILE: libyul/optimiser/StructuralSimplifier.cpp
function OptionalStatements (line 32) | OptionalStatements replaceConstArgSwitch(Switch& _switchStmt, u256 const...
function hasLiteralValue (line 57) | std::optional<u256> hasLiteralValue(Expression const& _expression)
function expressionAlwaysTrue (line 65) | bool expressionAlwaysTrue(Expression const& _expression)
function expressionAlwaysFalse (line 73) | bool expressionAlwaysFalse(Expression const& _expression)
FILE: libyul/optimiser/StructuralSimplifier.h
function namespace (line 24) | namespace solidity::yul
FILE: libyul/optimiser/Substitution.cpp
function Expression (line 29) | Expression Substitution::translate(Expression const& _expression)
FILE: libyul/optimiser/Substitution.h
function namespace (line 29) | namespace solidity::yul
FILE: libyul/optimiser/Suite.cpp
function optimiserStepCollection (line 212) | std::map<std::string, std::unique_ptr<OptimiserStep>> optimiserStepColle...
FILE: libyul/optimiser/Suite.h
function namespace (line 35) | namespace solidity::yul
FILE: libyul/optimiser/SyntacticalEquality.h
function namespace (line 30) | namespace solidity::yul
FILE: libyul/optimiser/UnusedAssignEliminator.h
function namespace (line 34) | namespace solidity::yul
FILE: libyul/optimiser/UnusedFunctionParameterPruner.h
function namespace (line 23) | namespace solidity::yul
FILE: libyul/optimiser/UnusedFunctionsCommon.cpp
function FunctionDefinition (line 30) | FunctionDefinition unusedFunctionsCommon::createLinkingFunction(
FILE: libyul/optimiser/UnusedFunctionsCommon.h
function namespace (line 25) | namespace solidity::yul::unusedFunctionsCommon
FILE: libyul/optimiser/UnusedPruner.h
function namespace (line 31) | namespace solidity::yul
FILE: libyul/optimiser/UnusedStoreBase.cpp
class solidity::yul::UnusedStoreBase<UnusedStoreEliminatorKey> (line 171) | class solidity::yul::UnusedStoreBase<UnusedStoreEliminatorKey>
class solidity::yul::UnusedStoreBase<YulName> (line 172) | class solidity::yul::UnusedStoreBase<YulName>
FILE: libyul/optimiser/UnusedStoreBase.h
function namespace (line 32) | namespace solidity::yul
FILE: libyul/optimiser/UnusedStoreEliminator.h
function namespace (line 37) | namespace solidity::yul
FILE: libyul/optimiser/VarDeclInitializer.h
function namespace (line 25) | namespace solidity::yul
FILE: libyul/optimiser/VarNameCleaner.cpp
function YulName (line 96) | YulName VarNameCleaner::findCleanName(YulName const& _name) const
function YulName (line 117) | YulName VarNameCleaner::stripSuffix(YulName const& _name) const
FILE: libyul/optimiser/VarNameCleaner.h
function namespace (line 31) | namespace solidity::yul
FILE: scripts/AntlrBatchTestRig.java
class AntlrBatchTestRig (line 5) | public class AntlrBatchTestRig {
method main (line 6) | public static void main(String[] args) throws Exception {
method testFile (line 25) | private static boolean testFile(String filePath) throws Exception {
class ErrorCollector (line 83) | static class ErrorCollector extends BaseErrorListener {
method syntaxError (line 87) | @Override
method hasErrors (line 96) | public boolean hasErrors() {
method getErrors (line 100) | public String getErrors() {
FILE: scripts/bytecodecompare/prepare_report.js
constant SETTINGS_PRESETS (line 7) | const SETTINGS_PRESETS = {
function loadSource (line 14) | function loadSource(sourceFileName, stripSMTPragmas)
function cleanString (line 25) | function cleanString(string)
FILE: scripts/bytecodecompare/prepare_report.py
class CompilerInterface (line 24) | class CompilerInterface(Enum):
class ExecutionArchitecture (line 29) | class ExecutionArchitecture(Enum):
class SettingsPreset (line 34) | class SettingsPreset(Enum):
class SMTUse (line 41) | class SMTUse(Enum):
class CompilerSettings (line 48) | class CompilerSettings:
method from_preset (line 53) | def from_preset(preset: SettingsPreset):
class ContractReport (line 63) | class ContractReport:
class FileReport (line 71) | class FileReport:
method format_report (line 75) | def format_report(self) -> str:
method format_summary (line 92) | def format_summary(self, verbose: bool) -> str:
class Statistics (line 114) | class Statistics:
method aggregate (line 121) | def aggregate(self, report: FileReport):
method __str__ (line 130) | def __str__(self) -> str:
function load_source (line 141) | def load_source(path: Union[Path, str], smt_use: SMTUse) -> str:
function clean_string (line 153) | def clean_string(value: Optional[str]) -> Optional[str]:
function parse_standard_json_output (line 158) | def parse_standard_json_output(source_file_name: Path, standard_json_out...
function parse_cli_output (line 191) | def parse_cli_output(source_file_name: Path, cli_output: str, exit_code:...
function prepare_compiler_input (line 220) | def prepare_compiler_input(
function detect_metadata_cli_option_support (line 279) | def detect_metadata_cli_option_support(compiler_path: Path):
function run_compiler (line 302) | def run_compiler(
function generate_report (line 368) | def generate_report(
function commandline_parser (line 426) | def commandline_parser() -> ArgumentParser:
FILE: scripts/ci/base64DecToArr.js
function base64DecToArr (line 1) | function base64DecToArr (sBase64) {
FILE: scripts/ci/mini-lz4.js
function uncompress (line 1) | function uncompress(source, uncompressedSize) {
FILE: scripts/common/cmdline_helpers.py
function inside_temporary_dir (line 22) | def inside_temporary_dir(prefix):
function solc_bin_report (line 46) | def solc_bin_report(
function save_bytecode (line 68) | def save_bytecode(
function add_preamble (line 80) | def add_preamble(source_path: Path, preamble: str = DEFAULT_PREAMBLE):
FILE: scripts/common/git_helpers.py
function run_git_command (line 6) | def run_git_command(command):
function git_current_branch (line 16) | def git_current_branch():
function git_commit_hash (line 20) | def git_commit_hash(ref: str = 'HEAD'):
function git_diff (line 24) | def git_diff(file_a: Path, file_b: Path) -> int:
FILE: scripts/common/rest_api_helpers.py
class APIHelperError (line 12) | class APIHelperError(Exception):
class JobNotSuccessful (line 15) | class JobNotSuccessful(APIHelperError):
method __init__ (line 16) | def __init__(self, name: str, status: str):
class JobMissing (line 36) | class JobMissing(APIHelperError):
class InvalidResponse (line 39) | class InvalidResponse(APIHelperError):
class FileAlreadyExists (line 42) | class FileAlreadyExists(APIHelperError):
function query_api (line 46) | def query_api(url: str, params: Mapping[str, str], headers: dict, debug_...
function download_file (line 67) | def download_file(url: str, target_path: Path, headers: dict, overwrite=...
class Github (line 76) | class Github:
method __init__ (line 82) | def __init__(self, project_slug: str, debug_requests: bool):
method pull_request (line 86) | def pull_request(self, pr_id: int) -> dict:
class CircleCI (line 98) | class CircleCI:
method __init__ (line 107) | def __init__(self, project_slug: str, debug_requests: bool):
method paginated_query_api_iterator (line 111) | def paginated_query_api_iterator(self, url: str, params: Mapping[str, ...
method paginated_query_api (line 129) | def paginated_query_api(self, url: str, params: Mapping[str, str], max...
method pipelines (line 132) | def pipelines(
method workflows (line 159) | def workflows(self, pipeline_id: str) -> dict:
method jobs (line 162) | def jobs(self, workflow_id: str) -> Mapping[str, dict]:
method job (line 172) | def job(self, workflow_id: str, name: str, require_success: bool = Fal...
method artifacts (line 182) | def artifacts(self, job_number: int) -> Mapping[str, dict]:
method latest_item (line 193) | def latest_item(items: dict) -> dict:
FILE: scripts/error_codes.py
function read_file (line 13) | def read_file(file_name):
function write_file (line 26) | def write_file(file_name, content):
function in_comment (line 31) | def in_comment(source, pos):
function find_ids_in_source_file (line 41) | def find_ids_in_source_file(file_name, id_to_file_names):
function find_ids_in_source_files (line 54) | def find_ids_in_source_files(file_names):
function get_next_id (line 63) | def get_next_id(available_ids):
function fix_ids_in_source_file (line 70) | def fix_ids_in_source_file(file_name, id_to_count, available_ids):
function fix_ids_in_source_files (line 101) | def fix_ids_in_source_files(file_names, id_to_count):
function find_files (line 112) | def find_files(top_dir, sub_dirs, extensions):
function find_ids_in_test_file (line 126) | def find_ids_in_test_file(file_name):
function find_ids_in_test_files (line 132) | def find_ids_in_test_files(file_names):
function find_ids_in_cmdline_test_err (line 141) | def find_ids_in_cmdline_test_err(file_name):
function print_ids (line 147) | def print_ids(ids):
function print_ids_per_file (line 156) | def print_ids_per_file(ids, id_to_file_names, top_dir):
function examine_id_coverage (line 172) | def examine_id_coverage(top_dir, source_id_to_file_names, new_ids_only=F...
function main (line 349) | def main(argv):
FILE: scripts/externalTests/benchmark_diff.py
class DiffMode (line 13) | class DiffMode(Enum):
class DifferenceStyle (line 18) | class DifferenceStyle(Enum):
class OutputFormat (line 24) | class OutputFormat(Enum):
class ValidationError (line 47) | class ValidationError(Exception):
class CommandLineError (line 51) | class CommandLineError(ValidationError):
class BenchmarkDiffer (line 55) | class BenchmarkDiffer:
method __init__ (line 60) | def __init__(
method run (line 70) | def run(self, before: Any, after: Any) -> Optional[Union[dict, str, in...
method _diff_scalars (line 85) | def _diff_scalars(self, before: Any, after: Any) -> Optional[Union[str...
method _diff_numbers (line 103) | def _diff_numbers(self, value_before: Union[int, float], value_after: ...
method _humanize_diff (line 136) | def _humanize_diff(self, diff: Union[str, int, float]) -> str:
class DiffTable (line 181) | class DiffTable:
class DiffTableSet (line 185) | class DiffTableSet:
method __init__ (line 193) | def __init__(self, diff: dict):
method calculate_row_column_width (line 214) | def calculate_row_column_width(self) -> int:
method calculate_column_widths (line 217) | def calculate_column_widths(self, table_header: str) -> Sequence[int]:
method _find_all_preset_names (line 232) | def _find_all_preset_names(cls, diff: dict) -> Set[str]:
method _find_all_attribute_names (line 241) | def _find_all_attribute_names(cls, diff: dict) -> Set[str]:
method _cell_content (line 252) | def _cell_content(cls, diff: dict, project: str, preset: str, attribut...
class DiffTableFormatter (line 267) | class DiffTableFormatter:
method run (line 278) | def run(cls, diff_table_set: DiffTableSet, output_format: OutputFormat):
method _format_separator_row (line 316) | def _format_separator_row(cls, widths: Sequence[int], output_format: O...
method _format_data_row (line 325) | def _format_data_row(cls, cells: Sequence[Union[int, float, str]], wid...
class CommandLineOptions (line 332) | class CommandLineOptions:
function process_commandline (line 341) | def process_commandline() -> CommandLineOptions:
function main (line 431) | def main():
FILE: scripts/externalTests/download_benchmarks.py
class Status (line 24) | class Status(Enum):
function process_commandline (line 31) | def process_commandline() -> Namespace:
function download_benchmark_artifact (line 88) | def download_benchmark_artifact(
function download_benchmarks (line 117) | def download_benchmarks(
function main (line 172) | def main():
FILE: scripts/externalTests/parse_eth_gas_report.py
class ReportError (line 51) | class ReportError(Exception):
class ReportValidationError (line 54) | class ReportValidationError(ReportError):
class ReportParsingError (line 57) | class ReportParsingError(Exception):
method __init__ (line 58) | def __init__(self, message: str, line: str, line_number: int):
method __str__ (line 62) | def __str__(self):
class MethodGasReport (line 67) | class MethodGasReport:
method __post_init__ (line 74) | def __post_init__(self):
class ContractGasReport (line 79) | class ContractGasReport:
method __post_init__ (line 86) | def __post_init__(self):
class GasReport (line 92) | class GasReport:
method __post_init__ (line 101) | def __post_init__(self):
method to_json (line 113) | def to_json(self):
function parse_bool (line 117) | def parse_bool(input_string: str) -> bool:
function parse_optional_int (line 124) | def parse_optional_int(input_string: str, default: Optional[int] = None
Copy disabled (too large)
Download .json
Condensed preview — 11533 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (17,662K chars).
[
{
"path": ".circleci/README.md",
"chars": 1542,
"preview": "## CircleCI integration\n\n### Docker images\n\nThe docker images are built locally on the developer machine:\n\n```sh\ncd .cir"
},
{
"path": ".circleci/cln-asan.supp",
"chars": 14,
"preview": "leak:*libcln*\n"
},
{
"path": ".circleci/compare_bytecode_reports.sh",
"chars": 1950,
"preview": "#!/usr/bin/env bash\nset -euo pipefail\n\n#------------------------------------------------------------------------------\n#"
},
{
"path": ".circleci/config.yml",
"chars": 77386,
"preview": "# vim:ts=2:sw=2:et\n# --------------------------------------------------------------------------\n# Prefixes used in ord"
},
{
"path": ".circleci/osx_install_dependencies.sh",
"chars": 4355,
"preview": "#! /bin/bash\n#------------------------------------------------------------------------------\n# Bash script to install os"
},
{
"path": ".circleci/parallel_bytecode_report.sh",
"chars": 2741,
"preview": "#!/usr/bin/env bash\nset -euo pipefail\n\n#------------------------------------------------------------------------------\n#"
},
{
"path": ".circleci/parallel_cli_tests.py",
"chars": 1850,
"preview": "#!/usr/bin/env python3\n\nimport subprocess\nimport sys\n\n# Slowest CLI tests, whose execution takes time on the order of mi"
},
{
"path": ".circleci/soltest.ps1",
"chars": 613,
"preview": "$ErrorActionPreference = \"Stop\"\n\ncd \"$PSScriptRoot\\..\"\n\n.\\build\\solc\\Release\\solc.exe --version\nif ( -not $? ) { throw \""
},
{
"path": ".circleci/soltest.sh",
"chars": 4014,
"preview": "#!/usr/bin/env bash\n#------------------------------------------------------------------------------\n# Bash script to exe"
},
{
"path": ".circleci/soltest_all.sh",
"chars": 2992,
"preview": "#! /bin/bash\n#------------------------------------------------------------------------------\n# Bash script to execute th"
},
{
"path": ".clang-format",
"chars": 1312,
"preview": "# Formatting approximately used in Solidity's C++\n#\n# See https://clang.llvm.org/docs/ClangFormatStyleOptions.html\n# For"
},
{
"path": ".codespellrc",
"chars": 205,
"preview": "[codespell]\nskip = .git,deps,LICENSE,*.enc,Dockerfile*,codespell_whitelist.txt,codespell_ignored_lines.txt\nignore-words "
},
{
"path": ".dockerignore",
"chars": 145,
"preview": "# out-of-tree builds usually go here. This helps improving performance of uploading\n# the build context to the docker im"
},
{
"path": ".editorconfig",
"chars": 325,
"preview": "root = true\n\n[*]\ncharset = utf-8\nend_of_line = lf\ninsert_final_newline = true\ntrim_trailing_whitespace = true\n\n[*.{cpp,h"
},
{
"path": ".gitattributes",
"chars": 33,
"preview": "*.sol linguist-language=Solidity\n"
},
{
"path": ".github/CODEOWNERS",
"chars": 34,
"preview": "/docs/style-guide.rst @fulldecent\n"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.md",
"chars": 1528,
"preview": "---\nname: Bug Report\nabout: Problems, deficiencies, inaccuracies or crashes discovered on Solidity.\ntitle: ''\nlabels: 'b"
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 191,
"preview": "blank_issues_enabled: false\ncontact_links:\n - name: Initiate a language design or feedback discussion\n url: https://"
},
{
"path": ".github/ISSUE_TEMPLATE/documentation_issue.md",
"chars": 408,
"preview": "---\nname: Documentation Issue\nabout: Corrections, improvements or requests for new content on Solidity's documentation.\n"
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.md",
"chars": 1739,
"preview": "---\nname: Feature Request\nabout: Ideas, comments or messages asking for a particular functionality to be added\n to Soli"
},
{
"path": ".github/workflows/buildpack-deps.yml",
"chars": 1994,
"preview": "name: buildpack-deps\n\npermissions:\n packages: write\n pull-requests: write\n\non:\n pull_request:\n branches: [ develop"
},
{
"path": ".github/workflows/stale.yml",
"chars": 1492,
"preview": "name: Check stale pull requests\n\non:\n workflow_dispatch:\n schedule:\n - cron: '0 12 * * *'\n\npermissions:\n pull-requ"
},
{
"path": ".github/workflows/welcome-external-pr.yml",
"chars": 1768,
"preview": "name: External contributor greeter\n\non:\n pull_request_target:\n types:\n - opened\n\npermissions:\n pull-requests: "
},
{
"path": ".gitignore",
"chars": 706,
"preview": "/commit_hash.txt\n/prerelease.txt\n\n# Compiled Object files\n*.slo\n*.lo\n*.o\n*.obj\n*.pyc\n__pycache__/\n\n# Precompiled Headers"
},
{
"path": ".gitmodules",
"chars": 292,
"preview": "[submodule \"deps/nlohmann-json\"]\n\tpath = deps/nlohmann-json\n\turl = https://github.com/nlohmann/json.git\n[submodule \"deps"
},
{
"path": ".readthedocs.yml",
"chars": 210,
"preview": "version: 2\n\nbuild:\n os: ubuntu-24.04\n tools:\n python: \"3.13\"\n\nsphinx:\n builder: html\n configuration: docs/conf.py"
},
{
"path": "CMakeLists.txt",
"chars": 4858,
"preview": "cmake_minimum_required(VERSION 3.13.0)\n\nset(CMAKE_EXPORT_COMPILE_COMMANDS ON)\n\nset(ETH_CMAKE_DIR \"${CMAKE_CURRENT_LIST"
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 3351,
"preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, w"
},
{
"path": "CODING_STYLE.md",
"chars": 10953,
"preview": "## 0. Formatting\n\n**GOLDEN RULE**: Follow the style of the existing code when you make changes.\n\n1. Use tabs for leading"
},
{
"path": "CONTRIBUTING.md",
"chars": 184,
"preview": "# Contribution Guidelines\n\nPlease see our contribution guidelines in [the Solidity documentation](https://docs.solidityl"
},
{
"path": "Changelog.md",
"chars": 181518,
"preview": "### 0.8.35 (unreleased)\n\nLanguage Features:\n* General: Add a builtin that computes the base slot of a storage namespace "
},
{
"path": "LICENSE.txt",
"chars": 35148,
"preview": " GNU GENERAL PUBLIC LICENSE\n Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
},
{
"path": "README.md",
"chars": 4165,
"preview": "# The Solidity Contract-Oriented Programming Language\n\n[\n\n\t# Set build platform; to be written to BuildInfo.h\n\tset(ETH_BUILD_OS \"${CMAKE_SYSTEM_"
},
{
"path": "cmake/EthCcache.cmake",
"chars": 506,
"preview": "# Setup ccache.\n#\n# The ccache is auto-enabled if the tool is found.\n# To disable set -DCCACHE=OFF option.\nif(NOT DEFINE"
},
{
"path": "cmake/EthCheckCXXCompilerFlag.cmake",
"chars": 766,
"preview": "include(CheckCXXCompilerFlag)\n\n# Adds CXX compiler flag if the flag is supported by the compiler.\n#\n# This is effectivel"
},
{
"path": "cmake/EthCompilerSettings.cmake",
"chars": 14331,
"preview": "#------------------------------------------------------------------------------\n# EthCompilerSettings.cmake\n#\n# CMake fi"
},
{
"path": "cmake/EthDependencies.cmake",
"chars": 3571,
"preview": "# all dependencies that are not directly included in the cpp-ethereum distribution are defined here\n# for this to work, "
},
{
"path": "cmake/EthOptions.cmake",
"chars": 1806,
"preview": "# CMAKE macros to set default CMAKE options and to show the\n# resulting configuration.\n\nmacro(configure_project)\n\tset(NA"
},
{
"path": "cmake/EthPolicy.cmake",
"chars": 1082,
"preview": "# it must be a macro cause policies have scopes\n# http://www.cmake.org/cmake/help/v3.0/command/cmake_policy.html\nmacro ("
},
{
"path": "cmake/EthToolchains.cmake",
"chars": 457,
"preview": "# Require C++20.\nif (NOT DEFINED CMAKE_CXX_STANDARD)\n set(CMAKE_CXX_STANDARD 20) # This requires at least CMake 3.12 to"
},
{
"path": "cmake/EthUtils.cmake",
"chars": 1849,
"preview": "#\n# renames the file if it is different from its destination\ninclude(CMakeParseArguments)\n#\nmacro(replace_if_different S"
},
{
"path": "cmake/FindCLN.cmake",
"chars": 304,
"preview": "find_library(CLN_LIBRARY NAMES cln)\ninclude(FindPackageHandleStandardArgs)\nfind_package_handle_standard_args(CLN DEFAULT"
},
{
"path": "cmake/FindGMP.cmake",
"chars": 304,
"preview": "find_library(GMP_LIBRARY NAMES gmp)\ninclude(FindPackageHandleStandardArgs)\nfind_package_handle_standard_args(GMP DEFAULT"
},
{
"path": "cmake/FindZ3.cmake",
"chars": 1751,
"preview": "# Save and clear Z3_FIND_VERSION, since the\n# Z3 config module cannot handle version requirements.\nset(Z3_FIND_VERSION_O"
},
{
"path": "cmake/fmtlib.cmake",
"chars": 181,
"preview": "include(${CMAKE_SOURCE_DIR}/cmake/submodules.cmake)\ninitialize_submodule(fmtlib)\n\nset(FMT_SYSTEM_HEADERS ON)\nadd_subdire"
},
{
"path": "cmake/nlohmann-json.cmake",
"chars": 208,
"preview": "include(${CMAKE_SOURCE_DIR}/cmake/submodules.cmake)\ninitialize_submodule(nlohmann-json)\n\nset(JSON_Install OFF CACHE INTE"
},
{
"path": "cmake/range-v3.cmake",
"chars": 438,
"preview": "include(${CMAKE_SOURCE_DIR}/cmake/submodules.cmake)\ninitialize_submodule(range-v3)\n\nadd_library(range-v3 INTERFACE IMPOR"
},
{
"path": "cmake/scripts/buildinfo.cmake",
"chars": 2637,
"preview": "# generates BuildInfo.h\n#\n# this module expects\n# ETH_SOURCE_DIR - main CMAKE_SOURCE_DIR\n# ETH_DST_DIR - main CMAKE_BINA"
},
{
"path": "cmake/submodules.cmake",
"chars": 959,
"preview": "macro(initialize_submodule SUBMODULE_PATH)\n\tif(NOT IGNORE_VENDORED_DEPENDENCIES)\n\t\tfile(GLOB submodule_contents \"${CMAKE"
},
{
"path": "cmake/templates/BuildInfo.h.in",
"chars": 678,
"preview": "#pragma once\n\n#define ETH_PROJECT_VERSION \"@PROJECT_VERSION@\"\n#define ETH_PROJECT_VERSION_MAJOR @PROJECT_VERSION_MAJOR@\n"
},
{
"path": "cmake/templates/license.h.in",
"chars": 15921,
"preview": "#pragma once\n\n#include <string>\n\nstatic std::string const otherLicenses{R\"(Most of the code is licensed under GPLv3 (see"
},
{
"path": "cmake/toolchains/default.cmake",
"chars": 0,
"preview": ""
},
{
"path": "cmake/toolchains/libfuzzer.cmake",
"chars": 983,
"preview": "# Inherit default options\ninclude(\"${CMAKE_CURRENT_LIST_DIR}/default.cmake\")\n# Build fuzzing binaries\nset(OSSFUZZ ON CAC"
},
{
"path": "cmake/toolchains/ossfuzz.cmake",
"chars": 592,
"preview": "# Inherit default options\ninclude(\"${CMAKE_CURRENT_LIST_DIR}/default.cmake\")\n# Disable Z3.\nset(USE_Z3 OFF CACHE BOOL \"Di"
},
{
"path": "docs/050-breaking-changes.rst",
"chars": 20662,
"preview": "********************************\nSolidity v0.5.0 Breaking Changes\n********************************\n\nThis section highlig"
},
{
"path": "docs/060-breaking-changes.rst",
"chars": 9478,
"preview": "********************************\nSolidity v0.6.0 Breaking Changes\n********************************\n\nThis section highlig"
},
{
"path": "docs/070-breaking-changes.rst",
"chars": 5622,
"preview": "********************************\nSolidity v0.7.0 Breaking Changes\n********************************\n\nThis section highlig"
},
{
"path": "docs/080-breaking-changes.rst",
"chars": 10250,
"preview": "********************************\nSolidity v0.8.0 Breaking Changes\n********************************\n\nThis section highlig"
},
{
"path": "docs/Makefile",
"chars": 6449,
"preview": "# Makefile for Sphinx documentation\n#\n\n# You can set these variables from the command line.\nSPHINXOPTS =\nSPHINXBUILD "
},
{
"path": "docs/README.md",
"chars": 510,
"preview": "# Solidity Language Docs\n\n## Local environment setup\n\n1. Install python https://www.python.org/downloads/\n1. Install sph"
},
{
"path": "docs/_static/css/custom-dark.css",
"chars": 7700,
"preview": "\n\n/* DARK MODE STYLING */\n\n/* code directives */\n\n:root[style*=dark] .method dt,\n:root[style*=dark] .class dt,\n:root[sty"
},
{
"path": "docs/_static/css/custom.css",
"chars": 16921,
"preview": "/* ROOT DECLARATIONS */\n:root {\n /* Text */\n --color-a: #2B247C;\n --color-b: #672AC8;\n --color-c: #5554D9;\n "
},
{
"path": "docs/_static/css/fonts.css",
"chars": 116,
"preview": "@import url(\"https://fonts.cdnfonts.com/css/overpass\");\n@import url(\"https://fonts.cdnfonts.com/css/overpass-mono\");"
},
{
"path": "docs/_static/css/pygments.css",
"chars": 5140,
"preview": "pre {\n line-height: 125%;\n}\n\ntd.linenos .normal {\n color: inherit;\n background-color: transparent;\n padding-left: 5p"
},
{
"path": "docs/_static/css/toggle.css",
"chars": 1721,
"preview": "input[type=checkbox] {\n visibility: hidden;\n height: 0;\n width: 0;\n margin: 0;\n}\n\n.rst-versions .rst-current"
},
{
"path": "docs/_static/js/constants.js",
"chars": 1704,
"preview": "// Site URL\nconst SITE_URL = \"https://docs.soliditylang.org\"\nconst { origin, pathname } = location;\nconst pathSplit = pa"
},
{
"path": "docs/_static/js/initialize.js",
"chars": 9972,
"preview": "const getLogoSrc = (isDark) => (isDark ? DARK_LOGO_PATH : LIGHT_LOGO_PATH);\n\nconst getModeIconSrc = (isDark) => (isDark "
},
{
"path": "docs/_static/js/toggle.js",
"chars": 1613,
"preview": "function toggleColorMode() {\n // Check localStorage for previous color scheme preference, assign the opposite\n var new"
},
{
"path": "docs/_templates/footer.html",
"chars": 173,
"preview": "{% extends \"!footer.html\" %}\n\n{% block extrafooter %}\n <p>\n <a href=\"{{ pathto('credits-and-attribution') }}\">"
},
{
"path": "docs/_templates/layout.html",
"chars": 577,
"preview": "{% extends \"!layout.html\" %}\n\n{% block scripts %}\n <script>\n window.NAV_LINKS = {\n blog: \"{{ _('Blo"
},
{
"path": "docs/_templates/versions.html",
"chars": 1430,
"preview": "{# Add rst-badge after rst-versions for small badge style. #}\n<div class=\"rst-versions\" data-toggle=\"rst-versions\" role="
},
{
"path": "docs/abi-spec.rst",
"chars": 41431,
"preview": ".. index:: abi, application binary interface\n\n.. _ABI:\n\n**************************\nContract ABI Specification\n**********"
},
{
"path": "docs/analysing-compilation-output.rst",
"chars": 5641,
"preview": ".. index:: analyse, asm\n\n#############################\nAnalysing the Compiler Output\n#############################\n\nIt i"
},
{
"path": "docs/assembly.rst",
"chars": 17579,
"preview": ".. _inline-assembly:\n\n###############\nInline Assembly\n###############\n\n.. index:: ! assembly, ! asm, ! evmasm\n\n\nYou can "
},
{
"path": "docs/brand-guide.rst",
"chars": 2587,
"preview": "####################\nSolidity Brand Guide\n####################\n\nThis brand guide features information on Solidity's bran"
},
{
"path": "docs/bugs.json",
"chars": 58181,
"preview": "[\n {\n \"uid\": \"SOL-2026-1\",\n \"name\": \"TransientStorageClearingHelperCollision\",\n \"summary\": \"Clea"
},
{
"path": "docs/bugs.rst",
"chars": 3868,
"preview": ".. index:: Bugs\n\n.. _known_bugs:\n\n##################\nList of Known Bugs\n##################\n\nBelow, you can find a JSON-f"
},
{
"path": "docs/bugs_by_version.json",
"chars": 80523,
"preview": "{\n \"0.1.0\": {\n \"bugs\": [\n \"LostStorageArrayWriteOnSlotOverflow\",\n \"DirtyBytesArrayToStor"
},
{
"path": "docs/cheatsheet.rst",
"chars": 10285,
"preview": "**********\nCheatsheet\n**********\n\n.. index:: operator;precedence\n\nOrder of Precedence of Operators\n====================="
},
{
"path": "docs/common-patterns.rst",
"chars": 11775,
"preview": "###############\nCommon Patterns\n###############\n\n.. index:: withdrawal\n\n.. _withdrawal_pattern:\n\n***********************"
},
{
"path": "docs/conf.py",
"chars": 11856,
"preview": "#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n#\n# Solidity documentation build configuration file, created by\n# sphinx-"
},
{
"path": "docs/contracts/abstract-contracts.rst",
"chars": 2821,
"preview": ".. index:: ! contract;abstract, ! abstract contract\n\n.. _abstract-contract:\n\n******************\nAbstract Contracts\n*****"
},
{
"path": "docs/contracts/constant-state-variables.rst",
"chars": 5226,
"preview": ".. index:: ! constant\n\n.. _constants:\n\n**************************************\nConstant and Immutable State Variables\n***"
},
{
"path": "docs/contracts/creating-contracts.rst",
"chars": 4954,
"preview": ".. index:: ! contract;creation, constructor\n\n******************\nCreating Contracts\n******************\n\nContracts can be "
},
{
"path": "docs/contracts/custom-storage-layout.rst",
"chars": 3009,
"preview": ".. index:: ! custom storage layout, ! storage layout specifier, ! layout at, ! base slot\n\n.. _custom-storage-layout:\n\n**"
},
{
"path": "docs/contracts/errors.rst",
"chars": 4790,
"preview": ".. index:: ! error, revert, require, ! selector; of an error\n.. _errors:\n\n*************\nCustom Errors\n*************\n\nErr"
},
{
"path": "docs/contracts/events.rst",
"chars": 5716,
"preview": ".. index:: ! event, ! event; anonymous, ! event; indexed, ! event; topic\n\n.. _events:\n\n******\nEvents\n******\n\nSolidity ev"
},
{
"path": "docs/contracts/function-modifiers.rst",
"chars": 5135,
"preview": ".. index:: ! function;modifier\n\n.. _modifiers:\n\n******************\nFunction Modifiers\n******************\n\nModifiers can "
},
{
"path": "docs/contracts/functions.rst",
"chars": 20682,
"preview": ".. index:: ! functions, ! function;free\n\n.. _functions:\n\n*********\nFunctions\n*********\n\nFunctions can be defined inside "
},
{
"path": "docs/contracts/inheritance.rst",
"chars": 21698,
"preview": ".. index:: ! inheritance, ! base class, ! contract;base, ! deriving\n\n***********\nInheritance\n***********\n\nSolidity suppo"
},
{
"path": "docs/contracts/interfaces.rst",
"chars": 2422,
"preview": ".. index:: ! contract;interface, ! interface contract\n\n.. _interfaces:\n\n**********\nInterfaces\n**********\n\nInterfaces are"
},
{
"path": "docs/contracts/libraries.rst",
"chars": 11984,
"preview": ".. index:: ! library, callcode, delegatecall\n\n.. _libraries:\n\n*********\nLibraries\n*********\n\nLibraries are similar to co"
},
{
"path": "docs/contracts/transient-storage.rst",
"chars": 8643,
"preview": ".. index:: ! transient storage, ! transient, tstore, tload\n\n.. _transient-storage:\n\n*****************\nTransient Storage\n"
},
{
"path": "docs/contracts/using-for.rst",
"chars": 9398,
"preview": ".. index:: ! using for, library, ! operator;user-defined, function;free\n\n.. _using-for:\n\n*********\nUsing For\n*********\n\n"
},
{
"path": "docs/contracts/visibility-and-getters.rst",
"chars": 7368,
"preview": ".. index:: ! visibility, external, public, private, internal\n\n.. |visibility-caveat| replace:: Making something ``privat"
},
{
"path": "docs/contracts.rst",
"chars": 1192,
"preview": ".. index:: ! contract\n\n.. _contracts:\n\n##########\nContracts\n##########\n\nContracts in Solidity are similar to classes in "
},
{
"path": "docs/contributing.rst",
"chars": 26189,
"preview": "############\nContributing\n############\n\nHelp is always welcome and there are plenty of options to contribute to Solidity"
},
{
"path": "docs/control-structures.rst",
"chars": 36867,
"preview": "##################################\nExpressions and Control Structures\n##################################\n\n.. index:: ! p"
},
{
"path": "docs/credits-and-attribution.rst",
"chars": 971,
"preview": ".. This page is meant to be linked to from the footer.\n\n:orphan:\n\n#######################\nCredits and Attribution\n######"
},
{
"path": "docs/docs.sh",
"chars": 1640,
"preview": "#!/usr/bin/env bash\n\n#------------------------------------------------------------------------------\n# Bash script to bu"
},
{
"path": "docs/examples/blind-auction.rst",
"chars": 14170,
"preview": ".. index:: auction;blind, auction;open, blind auction, open auction\n\n*************\nBlind Auction\n*************\n\nIn this "
},
{
"path": "docs/examples/micropayment.rst",
"chars": 21683,
"preview": "********************\nMicropayment Channel\n********************\n\nIn this section, we will learn how to build an example i"
},
{
"path": "docs/examples/modular.rst",
"chars": 2702,
"preview": ".. index:: contract;modular, modular contract\n\n*****************\nModular Contracts\n*****************\n\nA modular approach"
},
{
"path": "docs/examples/safe-remote.rst",
"chars": 5243,
"preview": ".. index:: purchase, remote purchase, escrow\n\n********************\nSafe Remote Purchase\n********************\n\nPurchasing"
},
{
"path": "docs/examples/voting.rst",
"chars": 7406,
"preview": ".. index:: voting, ballot\n\n.. _voting:\n\n******\nVoting\n******\n\nThe following contract is quite complex, but showcases\na l"
},
{
"path": "docs/ext/html_extra_template_renderer.py",
"chars": 1875,
"preview": "import os.path\n\n\ndef render_html_extra_templates(app):\n if app.builder.format != 'html':\n # Non-HTML builders "
},
{
"path": "docs/ext/remix_code_links.py",
"chars": 2900,
"preview": "import base64\nimport docutils # pragma pylint: disable=import-error\n\nfrom sphinx.util import logging # pragma pylint: "
},
{
"path": "docs/grammar/SolidityLexer.g4",
"chars": 11176,
"preview": "lexer grammar SolidityLexer;\n\n/**\n * Keywords reserved for future use in Solidity.\n */\nReservedKeywords:\n\t'after' | 'ali"
},
{
"path": "docs/grammar/SolidityParser.g4",
"chars": 20654,
"preview": "/**\n * Solidity is a statically typed, contract-oriented, high-level language for implementing smart contracts on the Et"
},
{
"path": "docs/grammar.rst",
"chars": 282,
"preview": "****************\nLanguage Grammar\n****************\n\n.. syntax:autogrammar:: SolidityParser.g4\n :root-rule: SolidityPar"
},
{
"path": "docs/index.rst",
"chars": 6651,
"preview": "Solidity\n========\n\nSolidity is an object-oriented, high-level language for implementing smart contracts.\nSmart contracts"
},
{
"path": "docs/installing-solidity.rst",
"chars": 25558,
"preview": ".. index:: ! installing\n\n.. _installing-solidity:\n\n################################\nInstalling the Solidity Compiler\n###"
},
{
"path": "docs/internals/layout_in_calldata.rst",
"chars": 643,
"preview": "\n.. index: calldata layout\n\n*******************\nLayout of Call Data\n*******************\n\nThe input data for a function c"
},
{
"path": "docs/internals/layout_in_memory.rst",
"chars": 2460,
"preview": "\n.. index: memory layout\n\n****************\nLayout in Memory\n****************\n\nSolidity reserves four 32-byte slots, with"
},
{
"path": "docs/internals/layout_in_storage.rst",
"chars": 20919,
"preview": ".. index:: storage, state variable, mapping, transient storage\n\n********************************************************"
},
{
"path": "docs/internals/optimizer.rst",
"chars": 53866,
"preview": ".. index:: optimizer, optimiser, common subexpression elimination, constant propagation\n.. _optimizer:\n\n*************\nTh"
},
{
"path": "docs/internals/source_mappings.rst",
"chars": 3342,
"preview": ".. index:: source mappings\n\n***************\nSource Mappings\n***************\n\nAs part of the AST output, the compiler pro"
},
{
"path": "docs/internals/variable_cleanup.rst",
"chars": 3943,
"preview": ".. index: variable cleanup\n\n*********************\nCleaning Up Variables\n*********************\n\nUltimately, all values in"
},
{
"path": "docs/introduction-to-smart-contracts.rst",
"chars": 31339,
"preview": "###############################\nIntroduction to Smart Contracts\n###############################\n\n.. _simple-smart-contra"
},
{
"path": "docs/ir-breaking-changes.rst",
"chars": 12561,
"preview": "\n.. index: ir breaking changes\n\n.. _ir-breaking-changes:\n\n*********************************\nSolidity IR-based Codegen Ch"
},
{
"path": "docs/language-influences.rst",
"chars": 1512,
"preview": "###################\nLanguage Influences\n###################\n\nSolidity is a `curly-bracket language <https://en.wikipedia"
},
{
"path": "docs/layout-of-source-files.rst",
"chars": 11609,
"preview": "********************************\nLayout of a Solidity Source File\n********************************\n\nSource files can con"
},
{
"path": "docs/make.bat",
"chars": 6312,
"preview": "@ECHO OFF\n\nREM Command file for Sphinx documentation\n\nif \"%SPHINXBUILD%\" == \"\" (\n\tset SPHINXBUILD=sphinx-build\n)\nset BUI"
},
{
"path": "docs/metadata.rst",
"chars": 12948,
"preview": ".. _metadata:\n\n#################\nContract Metadata\n#################\n\n.. index:: metadata, contract verification\n\nThe So"
},
{
"path": "docs/natspec-format.rst",
"chars": 10041,
"preview": ".. _natspec:\n\n##############\nNatSpec Format\n##############\n\nSolidity contracts can use a special form of comments to pro"
},
{
"path": "docs/path-resolution.rst",
"chars": 29779,
"preview": ".. _path-resolution:\n\n**********************\nImport Path Resolution\n**********************\n\nIn order to be able to suppo"
},
{
"path": "docs/requirements.txt",
"chars": 586,
"preview": "# Older versions of sphinx-rtd-theme do not work with never docutils but have a bug in the dependency\n# which could resu"
},
{
"path": "docs/resources.rst",
"chars": 8917,
"preview": "#########\nResources\n#########\n\nGeneral Resources\n=================\n\n* `Ethereum.org Developers page <https://ethereum.or"
},
{
"path": "docs/robots.txt.template",
"chars": 434,
"preview": "User-Agent: *\nSitemap: http://docs.soliditylang.org/sitemap.xml\nHost: docs.soliditylang.org\n\nAllow: /en/latest/\nAllow: /"
},
{
"path": "docs/security-considerations.rst",
"chars": 21172,
"preview": ".. _security_considerations:\n\n#######################\nSecurity Considerations\n#######################\n\nWhile it is usual"
},
{
"path": "docs/smtchecker.rst",
"chars": 45176,
"preview": ".. _formal_verification:\n\n##################################\nSMTChecker and Formal Verification\n########################"
},
{
"path": "docs/solidity-by-example.rst",
"chars": 248,
"preview": "###################\nSolidity by Example\n###################\n\n.. include:: examples/voting.rst\n\n.. include:: examples/bli"
},
{
"path": "docs/structure-of-a-contract.rst",
"chars": 5577,
"preview": ".. index:: contract, state variable, function, event, struct, enum, function;modifier\n\n.. _contract_structure:\n\n********"
},
{
"path": "docs/style-guide.rst",
"chars": 28926,
"preview": ".. index:: style, coding style\n\n#############\nStyle Guide\n#############\n\n************\nIntroduction\n************\n\nThis gu"
},
{
"path": "docs/types/conversion.rst",
"chars": 7552,
"preview": ".. index:: ! type;conversion, ! cast\n\n.. _types-conversion-elementary-types:\n\nConversions between Elementary Types\n====="
},
{
"path": "docs/types/mapping-types.rst",
"chars": 9473,
"preview": ".. index:: !mapping\n.. _mapping-types:\n\nMapping Types\n=============\n\nMapping types use the syntax ``mapping(KeyType KeyN"
},
{
"path": "docs/types/operator-precedence-table.rst",
"chars": 5478,
"preview": "The following is the order of precedence for operators, listed in order of evaluation.\n\n+------------+------------------"
},
{
"path": "docs/types/operators.rst",
"chars": 5889,
"preview": ".. index:: ! operator\n\nOperators\n=========\n\nArithmetic and bit operators can be applied even if the two operands do not "
},
{
"path": "docs/types/reference-types.rst",
"chars": 30503,
"preview": ".. index:: ! type;reference, ! reference type, storage, memory, location, array, struct\n\n.. _reference-types:\n\nReference"
},
{
"path": "docs/types/value-types.rst",
"chars": 48096,
"preview": ".. index:: ! value type, ! type;value\n.. _value-types:\n\nValue Types\n===========\n\nThe following are called value types be"
},
{
"path": "docs/types.rst",
"chars": 964,
"preview": ".. index:: type\n\n.. _types:\n\n*****\nTypes\n*****\n\nSolidity is a statically typed language, which means that the type of ea"
},
{
"path": "docs/units-and-global-variables.rst",
"chars": 21680,
"preview": ".. index:: ! denomination\n\n**************************************\nUnits and Globally Available Variables\n***************"
},
{
"path": "docs/using-the-compiler.rst",
"chars": 45605,
"preview": "******************\nUsing the Compiler\n******************\n\n.. index:: ! commandline compiler, compiler;commandline, ! sol"
},
{
"path": "docs/yul.rst",
"chars": 69931,
"preview": ".. _yul:\n\n###\nYul\n###\n\n.. index:: ! assembly, ! asm, ! evmasm, ! yul, julia, iulia\n\nYul (previously also called JULIA or"
},
{
"path": "funding.json",
"chars": 109,
"preview": "{\n \"opRetro\": {\n \"projectId\": \"0xcc8d03e014e121d10602eeff729b755d5dc6a317df0d6302c8a9d3b5424aaba8\"\n }\n}\n"
},
{
"path": "libevmasm/AbstractAssemblyStack.h",
"chars": 1960,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/Assembly.cpp",
"chars": 66877,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/Assembly.h",
"chars": 15946,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/AssemblyItem.cpp",
"chars": 17245,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/AssemblyItem.h",
"chars": 14779,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/BlockDeduplicator.cpp",
"chars": 4408,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/BlockDeduplicator.h",
"chars": 3119,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/CMakeLists.txt",
"chars": 990,
"preview": "set(sources\n\tAbstractAssemblyStack.h\n\tAssembly.cpp\n\tAssembly.h\n\tAssemblyItem.cpp\n\tAssemblyItem.h\n\tEthdebug.cpp\n\tEthdebug"
},
{
"path": "libevmasm/CommonSubexpressionEliminator.cpp",
"chars": 18637,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/CommonSubexpressionEliminator.h",
"chars": 7899,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/ConstantOptimiser.cpp",
"chars": 10778,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/ConstantOptimiser.h",
"chars": 5144,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/ControlFlowGraph.cpp",
"chars": 10757,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/ControlFlowGraph.h",
"chars": 3991,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/Disassemble.cpp",
"chars": 2198,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/Disassemble.h",
"chars": 1263,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/EVMAssemblyStack.cpp",
"chars": 4917,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/EVMAssemblyStack.h",
"chars": 4270,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/Ethdebug.cpp",
"chars": 5901,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/Ethdebug.h",
"chars": 1168,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/EthdebugSchema.cpp",
"chars": 4386,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/EthdebugSchema.h",
"chars": 3803,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/Exceptions.h",
"chars": 1145,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/ExpressionClasses.cpp",
"chars": 6935,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/ExpressionClasses.h",
"chars": 4819,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/GasMeter.cpp",
"chars": 11254,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/GasMeter.h",
"chars": 11334,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/Inliner.cpp",
"chars": 9986,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/Inliner.h",
"chars": 2897,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/Instruction.cpp",
"chars": 22785,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/Instruction.h",
"chars": 16361,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/JumpdestRemover.cpp",
"chars": 2097,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/JumpdestRemover.h",
"chars": 1373,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/KnownState.cpp",
"chars": 15720,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/KnownState.h",
"chars": 8050,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/LinkerObject.cpp",
"chars": 2611,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/LinkerObject.h",
"chars": 4649,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/PathGasMeter.cpp",
"chars": 4459,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/PathGasMeter.h",
"chars": 2621,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/PeepholeOptimiser.cpp",
"chars": 17917,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/PeepholeOptimiser.h",
"chars": 1517,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/RuleList.h",
"chars": 26767,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/SemanticInformation.cpp",
"chars": 21063,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/SemanticInformation.h",
"chars": 5298,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/SimplificationRule.h",
"chars": 7932,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/SimplificationRules.cpp",
"chars": 5847,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/SimplificationRules.h",
"chars": 5298,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "libevmasm/SubAssemblyID.h",
"chars": 1775,
"preview": "/*\n\tThis file is part of solidity.\n\n\tsolidity is free software: you can redistribute it and/or modify\n\tit under the term"
},
{
"path": "liblangutil/CMakeLists.txt",
"chars": 710,
"preview": "# Solidity Commons Library (Solidity related sharing bits between libsolidity and libyul)\nset(sources\n\tCommon.h\n\tCharStr"
},
{
"path": "liblangutil/CharStream.cpp",
"chars": 5997,
"preview": "/*\n * This file is part of solidity.\n *\n * solidity is free software: you can redistribute it and/or modify\n * it under "
},
{
"path": "liblangutil/CharStream.h",
"chars": 5769,
"preview": "/*\n * This file is part of solidity.\n *\n * solidity is free software: you can redistribute it and/or modify\n * it under "
}
]
// ... and 11333 more files (download for full content)
About this extraction
This page contains the full source code of the argotorg/solidity GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 11533 files (18.0 MB), approximately 4.7M tokens, and a symbol index with 3311 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.