Browse Source

style changes

cl-refactor
Liana Husikyan 10 years ago
parent
commit
4081752e63
  1. 3
      libsolidity/AST.cpp
  2. 2
      libsolidity/AST.h
  3. 2
      libsolidity/DeclarationContainer.cpp
  4. 15
      libsolidity/NameAndTypeResolver.cpp
  5. 8
      libsolidity/NameAndTypeResolver.h
  6. 2
      libsolidity/Types.h

3
libsolidity/AST.cpp

@ -954,9 +954,6 @@ Declaration const& Identifier::getReferencedDeclaration() const
void Identifier::overloadResolution(TypePointers const& _argumentTypes) void Identifier::overloadResolution(TypePointers const& _argumentTypes)
{ {
solAssert(!m_referencedDeclaration, "Referenced declaration should be null before overload resolution."); solAssert(!m_referencedDeclaration, "Referenced declaration should be null before overload resolution.");
//to delete
if (m_overloadedDeclarations.empty())
//--------------------------->
solAssert(!m_overloadedDeclarations.empty(), "No candidates for overload resolution found."); solAssert(!m_overloadedDeclarations.empty(), "No candidates for overload resolution found.");
vector<Declaration const*> possibles; vector<Declaration const*> possibles;

2
libsolidity/AST.h

@ -1217,7 +1217,7 @@ public:
} }
Declaration const& getReferencedDeclaration() const; Declaration const& getReferencedDeclaration() const;
/// Stores a possible declarations referenced by this identifier. Has to be resolved /// Stores a set of possible declarations referenced by this identifier. Has to be resolved
/// providing argument types using overloadResolution before the referenced declaration /// providing argument types using overloadResolution before the referenced declaration
/// is accessed. /// is accessed.
void setOverloadedDeclarations(std::vector<Declaration const*> const& _declarations) void setOverloadedDeclarations(std::vector<Declaration const*> const& _declarations)

2
libsolidity/DeclarationContainer.cpp

@ -73,7 +73,7 @@ bool DeclarationContainer::registerDeclaration(Declaration const& _declaration,
return true; return true;
} }
std::vector<const Declaration *> DeclarationContainer::resolveName(ASTString const& _name, bool _recursive) const std::vector<Declaration const*> DeclarationContainer::resolveName(ASTString const& _name, bool _recursive) const
{ {
solAssert(!_name.empty(), "Attempt to resolve empty name."); solAssert(!_name.empty(), "Attempt to resolve empty name.");
auto result = m_declarations.find(_name); auto result = m_declarations.find(_name);

15
libsolidity/NameAndTypeResolver.cpp

@ -53,12 +53,12 @@ void NameAndTypeResolver::resolveNamesAndTypes(ContractDefinition& _contract)
m_currentScope = &m_scopes[&_contract]; m_currentScope = &m_scopes[&_contract];
linearizeBaseContracts(_contract); linearizeBaseContracts(_contract);
std::vector<ContractDefinition const*> realBases( std::vector<ContractDefinition const*> properBases(
++_contract.getLinearizedBaseContracts().begin(), ++_contract.getLinearizedBaseContracts().begin(),
_contract.getLinearizedBaseContracts().end() _contract.getLinearizedBaseContracts().end()
); );
for (ContractDefinition const* base: realBases) for (ContractDefinition const* base: properBases)
importInheritedScope(*base); importInheritedScope(*base);
for (ASTPointer<StructDefinition> const& structDef: _contract.getDefinedStructs()) for (ASTPointer<StructDefinition> const& structDef: _contract.getDefinedStructs())
@ -130,11 +130,12 @@ vector<Declaration const*> NameAndTypeResolver::getNameFromCurrentScope(ASTStrin
return m_currentScope->resolveName(_name, _recursive); return m_currentScope->resolveName(_name, _recursive);
} }
vector<Declaration const*> NameAndTypeResolver::cleanupedDeclarations( vector<Declaration const*> NameAndTypeResolver::cleanedDeclarations(
Identifier const& _identifier, Identifier const& _identifier,
vector<Declaration const*> const& _declarations vector<Declaration const*> const& _declarations
) )
{ {
solAssert(_declarations.size() > 1, "");
vector<Declaration const*> uniqueFunctions; vector<Declaration const*> uniqueFunctions;
for (auto it = _declarations.begin(); it != _declarations.end(); ++it) for (auto it = _declarations.begin(); it != _declarations.end(); ++it)
@ -143,7 +144,7 @@ vector<Declaration const*> NameAndTypeResolver::cleanupedDeclarations(
// the declaration is functionDefinition while declarations > 1 // the declaration is functionDefinition while declarations > 1
FunctionDefinition const& functionDefinition = dynamic_cast<FunctionDefinition const&>(**it); FunctionDefinition const& functionDefinition = dynamic_cast<FunctionDefinition const&>(**it);
FunctionType functionType(functionDefinition); FunctionType functionType(functionDefinition);
for(auto parameter: functionType.getParameterTypes() + functionType.getReturnParameterTypes()) for (auto parameter: functionType.getParameterTypes() + functionType.getReturnParameterTypes())
if (!parameter) if (!parameter)
BOOST_THROW_EXCEPTION( BOOST_THROW_EXCEPTION(
DeclarationError() << DeclarationError() <<
@ -155,9 +156,7 @@ vector<Declaration const*> NameAndTypeResolver::cleanupedDeclarations(
uniqueFunctions.end(), uniqueFunctions.end(),
[&](Declaration const* d) [&](Declaration const* d)
{ {
FunctionDefinition const& newFunctionDefinition = dynamic_cast<FunctionDefinition const&>(*d); FunctionType newFunctionType(dynamic_cast<FunctionDefinition const&>(*d));
FunctionType newFunctionType(newFunctionDefinition);
return functionType.hasEqualArgumentTypes(newFunctionType); return functionType.hasEqualArgumentTypes(newFunctionType);
} }
)) ))
@ -482,7 +481,7 @@ bool ReferencesResolver::visit(Identifier& _identifier)
else if (declarations.size() == 1) else if (declarations.size() == 1)
_identifier.setReferencedDeclaration(*declarations.front(), m_currentContract); _identifier.setReferencedDeclaration(*declarations.front(), m_currentContract);
else else
_identifier.setOverloadedDeclarations(m_resolver.cleanupedDeclarations(_identifier, declarations)); _identifier.setOverloadedDeclarations(m_resolver.cleanedDeclarations(_identifier, declarations));
return false; return false;
} }

8
libsolidity/NameAndTypeResolver.h

@ -56,13 +56,17 @@ public:
/// Resolves the given @a _name inside the scope @a _scope. If @a _scope is omitted, /// Resolves the given @a _name inside the scope @a _scope. If @a _scope is omitted,
/// the global scope is used (i.e. the one containing only the contract). /// the global scope is used (i.e. the one containing only the contract).
/// @returns a pointer to the declaration on success or nullptr on failure. /// @returns a pointer to the declaration on success or nullptr on failure.
std::vector<const Declaration *> resolveName(ASTString const& _name, Declaration const* _scope = nullptr) const; std::vector<Declaration const*> resolveName(ASTString const& _name, Declaration const* _scope = nullptr) const;
/// Resolves a name in the "current" scope. Should only be called during the initial /// Resolves a name in the "current" scope. Should only be called during the initial
/// resolving phase. /// resolving phase.
std::vector<Declaration const*> getNameFromCurrentScope(ASTString const& _name, bool _recursive = true); std::vector<Declaration const*> getNameFromCurrentScope(ASTString const& _name, bool _recursive = true);
std::vector<Declaration const*> cleanupedDeclarations(Identifier const& _identifier, std::vector<Declaration const*> const& _declarations); /// returns the vector of declarations without repetitions
static std::vector<Declaration const*> cleanedDeclarations(
Identifier const& _identifier,
std::vector<Declaration const*> const& _declarations
);
private: private:
void reset(); void reset();

2
libsolidity/Types.h

@ -617,7 +617,7 @@ public:
/// @returns true if this function can take the given argument types (possibly /// @returns true if this function can take the given argument types (possibly
/// after implicit conversion). /// after implicit conversion).
bool canTakeArguments(TypePointers const& _arguments) const; bool canTakeArguments(TypePointers const& _arguments) const;
/// @returns true if the types of parameters are equal(does't check return parameter types) /// @returns true if the types of parameters are equal (does't check return parameter types)
bool hasEqualArgumentTypes(FunctionType const& _other) const; bool hasEqualArgumentTypes(FunctionType const& _other) const;
Location const& getLocation() const { return m_location; } Location const& getLocation() const { return m_location; }

Loading…
Cancel
Save