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

Method conflictingDeclaration

libsolidity/analysis/DeclarationContainer.cpp:35–83  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

33using namespace solidity::frontend;
34
35Declaration const* DeclarationContainer::conflictingDeclaration(
36 Declaration const& _declaration,
37 ASTString const* _name
38) const
39{
40 if (!_name)
41 _name = &_declaration.name();
42 solAssert(!_name->empty(), "");
43 std::vector<Declaration const*> declarations;
44 if (m_declarations.count(*_name))
45 declarations += m_declarations.at(*_name);
46 if (m_invisibleDeclarations.count(*_name))
47 declarations += m_invisibleDeclarations.at(*_name);
48
49 if (
50 dynamic_cast<FunctionDefinition const*>(&_declaration) ||
51 dynamic_cast<EventDefinition const*>(&_declaration) ||
52 dynamic_cast<MagicVariableDeclaration const*>(&_declaration)
53 )
54 {
55 // check that all other declarations are of the same kind (in which
56 // case the type checker will ensure that the signatures are different)
57 for (Declaration const* declaration: declarations)
58 {
59 if (
60 dynamic_cast<FunctionDefinition const*>(&_declaration) &&
61 !dynamic_cast<FunctionDefinition const*>(declaration)
62 )
63 return declaration;
64 if (
65 dynamic_cast<EventDefinition const*>(&_declaration) &&
66 !dynamic_cast<EventDefinition const*>(declaration)
67 )
68 return declaration;
69 if (
70 dynamic_cast<MagicVariableDeclaration const*>(&_declaration) &&
71 !dynamic_cast<MagicVariableDeclaration const*>(declaration)
72 )
73 return declaration;
74 // Or, continue.
75 }
76 }
77 else if (declarations.size() == 1 && declarations.front() == &_declaration)
78 return nullptr;
79 else if (!declarations.empty())
80 return declarations.front();
81
82 return nullptr;
83}
84
85void DeclarationContainer::activateVariable(ASTString const& _name)
86{

Callers 2

importInheritedScopeMethod · 0.80
registerDeclarationMethod · 0.80

Calls 5

atMethod · 0.80
nameMethod · 0.45
emptyMethod · 0.45
countMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected