mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Review comments.
This commit is contained in:
parent
b1bb228ab3
commit
a791ec75e2
@ -139,7 +139,7 @@ bool NameAndTypeResolver::resolveNamesAndTypes(ASTNode& _node, bool _resolveInsi
|
|||||||
solAssert(!!m_currentScope, "");
|
solAssert(!!m_currentScope, "");
|
||||||
|
|
||||||
for (ASTPointer<InheritanceSpecifier> const& baseContract: contract->baseContracts())
|
for (ASTPointer<InheritanceSpecifier> const& baseContract: contract->baseContracts())
|
||||||
if (!resolveNamesAndTypes(*baseContract, false))
|
if (!resolveNamesAndTypes(*baseContract, true))
|
||||||
success = false;
|
success = false;
|
||||||
|
|
||||||
m_currentScope = m_scopes[contract].get();
|
m_currentScope = m_scopes[contract].get();
|
||||||
|
@ -42,6 +42,9 @@ namespace solidity
|
|||||||
class NameAndTypeResolver: private boost::noncopyable
|
class NameAndTypeResolver: private boost::noncopyable
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
/// Creates the resolver with the given declarations added to the global scope.
|
||||||
|
/// @param _scopes mapping of scopes to be used (usually default constructed), these
|
||||||
|
/// are filled during the lifetime of this object.
|
||||||
NameAndTypeResolver(
|
NameAndTypeResolver(
|
||||||
std::vector<Declaration const*> const& _globals,
|
std::vector<Declaration const*> const& _globals,
|
||||||
std::map<ASTNode const*, std::shared_ptr<DeclarationContainer>>& _scopes,
|
std::map<ASTNode const*, std::shared_ptr<DeclarationContainer>>& _scopes,
|
||||||
@ -57,7 +60,7 @@ public:
|
|||||||
/// Resolves all names and types referenced from the given AST Node.
|
/// Resolves all names and types referenced from the given AST Node.
|
||||||
/// This is usually only called at the contract level, but with a bit of care, it can also
|
/// This is usually only called at the contract level, but with a bit of care, it can also
|
||||||
/// be called at deeper levels.
|
/// be called at deeper levels.
|
||||||
/// @param _avoidCode if false, does not descend into nodes that contain code.
|
/// @param _resolveInsideCode if false, does not descend into nodes that contain code.
|
||||||
/// @returns false in case of error.
|
/// @returns false in case of error.
|
||||||
bool resolveNamesAndTypes(ASTNode& _node, bool _resolveInsideCode = true);
|
bool resolveNamesAndTypes(ASTNode& _node, bool _resolveInsideCode = true);
|
||||||
/// Updates the given global declaration (used for "this"). Not to be used with declarations
|
/// Updates the given global declaration (used for "this"). Not to be used with declarations
|
||||||
|
@ -427,12 +427,9 @@ bool TypeChecker::visit(StructDefinition const& _struct)
|
|||||||
|
|
||||||
bool TypeChecker::visit(FunctionDefinition const& _function)
|
bool TypeChecker::visit(FunctionDefinition const& _function)
|
||||||
{
|
{
|
||||||
bool isLibraryFunction = false;
|
bool isLibraryFunction =
|
||||||
if (
|
|
||||||
dynamic_cast<ContractDefinition const*>(_function.scope()) &&
|
dynamic_cast<ContractDefinition const*>(_function.scope()) &&
|
||||||
dynamic_cast<ContractDefinition const*>(_function.scope())->isLibrary()
|
dynamic_cast<ContractDefinition const*>(_function.scope())->isLibrary();
|
||||||
)
|
|
||||||
isLibraryFunction = true;
|
|
||||||
if (_function.isPayable())
|
if (_function.isPayable())
|
||||||
{
|
{
|
||||||
if (isLibraryFunction)
|
if (isLibraryFunction)
|
||||||
|
Loading…
Reference in New Issue
Block a user