Review comments.

This commit is contained in:
chriseth 2017-02-14 13:32:48 +01:00
parent b1bb228ab3
commit a791ec75e2
3 changed files with 7 additions and 7 deletions

View File

@ -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();

View File

@ -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

View File

@ -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)