MCPcopy Create free account
hub / github.com/argotorg/solidity / validateInstructions

Method validateInstructions

libyul/AsmAnalysis.cpp:753–785  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

751}
752
753bool AsmAnalyzer::validateInstructions(std::string_view _instructionIdentifier, langutil::SourceLocation const& _location)
754{
755 // NOTE: This function uses the default EVM version instead of the currently selected one.
756 auto const& defaultEVMDialect = EVMDialect::strictAssemblyForEVMObjects(EVMVersion{}, std::nullopt);
757 auto const builtinHandle = defaultEVMDialect.findBuiltin(_instructionIdentifier);
758 if (builtinHandle && defaultEVMDialect.builtin(*builtinHandle).instruction.has_value())
759 return validateInstructions(*defaultEVMDialect.builtin(*builtinHandle).instruction, _location);
760
761 solAssert(!m_eofVersion.has_value() || *m_eofVersion == 1);
762 auto const& eofDialect = EVMDialect::strictAssemblyForEVMObjects(EVMVersion::firstWithEOF(), 1);
763 auto const eofBuiltinHandle = eofDialect.findBuiltin(_instructionIdentifier);
764 if (eofBuiltinHandle)
765 {
766 auto const builtin = eofDialect.builtin(*eofBuiltinHandle);
767 if (builtin.instruction.has_value())
768 return validateInstructions(*builtin.instruction, _location);
769 // If builtin is available in EOF but not available in legacy (and we build to legacy) generate custom error.
770 else if (!m_eofVersion.has_value() && !builtinHandle)
771 {
772 m_errorReporter.declarationError(
773 7223_error,
774 _location,
775 fmt::format(
776 "Builtin function \"{function}\" is only available in EOF.",
777 fmt::arg("function", _instructionIdentifier)
778 )
779 );
780 return true;
781 }
782 }
783
784 return false;
785}
786
787bool AsmAnalyzer::validateInstructions(evmasm::Instruction _instr, SourceLocation const& _location)
788{

Callers

nothing calls this directly

Calls 15

nativeLocationOfFunction · 0.85
declarationErrorMethod · 0.80
supportsReturndataMethod · 0.80
hasStaticCallMethod · 0.80
hasBitwiseShiftingMethod · 0.80
hasCreate2Method · 0.80
typeErrorMethod · 0.80
hasCLZMethod · 0.80
hasExtCodeHashMethod · 0.80
hasChainIDMethod · 0.80
hasSelfBalanceMethod · 0.80
hasBaseFeeMethod · 0.80

Tested by

no test coverage detected