diff --git a/libsolidity/ast/AST.cpp b/libsolidity/ast/AST.cpp index 785adf268..65c94c599 100644 --- a/libsolidity/ast/AST.cpp +++ b/libsolidity/ast/AST.cpp @@ -74,22 +74,6 @@ set SourceUnit::referencedSourceUnits(bool _recurse, set _oldNode, ASTPointer _newNode) -{ - solAssert( - boost::range::find_if( - m_nodes, - [&](auto const& node) { return node->id() == _oldNode->id(); } - ) != m_nodes.end(), - "" - ); - boost::range::replace_if( - m_nodes, - [&](auto const& node) { return node->id() == _oldNode->id(); }, - _newNode - ); -} - ImportAnnotation& ImportDirective::annotation() const { return initAnnotation(); @@ -231,7 +215,7 @@ vector, FunctionTypePointer>> const& ContractDefinition: }); } -TypePointer ImportedContractDefinition::type() const +TypePointer ImportedInterfaceDefinition::type() const { return {}; // TODO: Think about whether this type needs to be specified or returning {} is sufficient. diff --git a/libsolidity/ast/AST.h b/libsolidity/ast/AST.h index 8f59e33ce..e5372241b 100644 --- a/libsolidity/ast/AST.h +++ b/libsolidity/ast/AST.h @@ -173,9 +173,6 @@ public: std::optional const& licenseString() const { return m_licenseString; } std::vector> const& nodes() const { return m_nodes; } - /// Replaces given top-level AST node with a new AST node. - void replaceNode(ASTPointer _oldNode, ASTPointer _newNode); - /// @returns a set of referenced SourceUnits. Recursively if @a _recurse is true. std::set referencedSourceUnits(bool _recurse = false, std::set _skipList = std::set()) const; @@ -458,13 +455,13 @@ protected: * * This is not the actually imported interface but the reference to it. * It will be resolved by CompilerStack to add any missing interface definitions - * by looking for any ImportedContractDefinition in the ASTs and append them - embeded into + * by looking for any ImportedInterfaceDefinition in the ASTs and append them - embeded into * SourceUnit's - to its collection of sources. */ -class ImportedContractDefinition: public Declaration // TODO(needed?), public StructurallyDocumented +class ImportedInterfaceDefinition: public Declaration // TODO(needed?), public StructurallyDocumented { public: - ImportedContractDefinition( + ImportedInterfaceDefinition( int64_t _id, SourceLocation const& _location, ASTPointer _name, diff --git a/libsolidity/ast/ASTVisitor.h b/libsolidity/ast/ASTVisitor.h index f6cf38cb3..88d12d043 100644 --- a/libsolidity/ast/ASTVisitor.h +++ b/libsolidity/ast/ASTVisitor.h @@ -56,7 +56,7 @@ public: virtual bool visit(SourceUnit& _node) { return visitNode(_node); } virtual bool visit(PragmaDirective& _node) { return visitNode(_node); } virtual bool visit(ImportDirective& _node) { return visitNode(_node); } - virtual bool visit(ImportedContractDefinition& _node) { return visitNode(_node); } + virtual bool visit(ImportedInterfaceDefinition& _node) { return visitNode(_node); } virtual bool visit(ContractDefinition& _node) { return visitNode(_node); } virtual bool visit(InheritanceSpecifier& _node) { return visitNode(_node); } virtual bool visit(UsingForDirective& _node) { return visitNode(_node); } @@ -109,7 +109,7 @@ public: virtual void endVisit(SourceUnit& _node) { endVisitNode(_node); } virtual void endVisit(PragmaDirective& _node) { endVisitNode(_node); } virtual void endVisit(ImportDirective& _node) { endVisitNode(_node); } - virtual void endVisit(ImportedContractDefinition& _node) { endVisitNode(_node); } + virtual void endVisit(ImportedInterfaceDefinition& _node) { endVisitNode(_node); } virtual void endVisit(ContractDefinition& _node) { endVisitNode(_node); } virtual void endVisit(InheritanceSpecifier& _node) { endVisitNode(_node); } virtual void endVisit(UsingForDirective& _node) { endVisitNode(_node); } @@ -184,7 +184,7 @@ public: virtual bool visit(SourceUnit const& _node) { return visitNode(_node); } virtual bool visit(PragmaDirective const& _node) { return visitNode(_node); } virtual bool visit(ImportDirective const& _node) { return visitNode(_node); } - virtual bool visit(ImportedContractDefinition const& _node) { return visitNode(_node); } + virtual bool visit(ImportedInterfaceDefinition const& _node) { return visitNode(_node); } virtual bool visit(ContractDefinition const& _node) { return visitNode(_node); } virtual bool visit(InheritanceSpecifier const& _node) { return visitNode(_node); } virtual bool visit(StructDefinition const& _node) { return visitNode(_node); } @@ -237,7 +237,7 @@ public: virtual void endVisit(SourceUnit const& _node) { endVisitNode(_node); } virtual void endVisit(PragmaDirective const& _node) { endVisitNode(_node); } virtual void endVisit(ImportDirective const& _node) { endVisitNode(_node); } - virtual void endVisit(ImportedContractDefinition const& _node) { endVisitNode(_node); } + virtual void endVisit(ImportedInterfaceDefinition const& _node) { endVisitNode(_node); } virtual void endVisit(ContractDefinition const& _node) { endVisitNode(_node); } virtual void endVisit(InheritanceSpecifier const& _node) { endVisitNode(_node); } virtual void endVisit(UsingForDirective const& _node) { endVisitNode(_node); } diff --git a/libsolidity/ast/AST_accept.h b/libsolidity/ast/AST_accept.h index b6fe25dd4..ef5a8517a 100644 --- a/libsolidity/ast/AST_accept.h +++ b/libsolidity/ast/AST_accept.h @@ -79,13 +79,13 @@ void StructuredDocumentation::accept(ASTConstVisitor& _visitor) const _visitor.endVisit(*this); } -void ImportedContractDefinition::accept(ASTVisitor& _visitor) +void ImportedInterfaceDefinition::accept(ASTVisitor& _visitor) { _visitor.visit(*this); _visitor.endVisit(*this); } -void ImportedContractDefinition::accept(ASTConstVisitor& _visitor) const +void ImportedInterfaceDefinition::accept(ASTConstVisitor& _visitor) const { _visitor.visit(*this); _visitor.endVisit(*this); diff --git a/libsolidity/interface/CompilerStack.cpp b/libsolidity/interface/CompilerStack.cpp index 1388d442a..e16814086 100644 --- a/libsolidity/interface/CompilerStack.cpp +++ b/libsolidity/interface/CompilerStack.cpp @@ -289,9 +289,9 @@ void CompilerStack::loadMissingInterfaces(int64_t _baseNodeID) for (ASTPointer const& astNode: source->nodes()) { - if (auto const* importedContract = dynamic_cast(astNode.get())) + if (auto const* importedInterface = dynamic_cast(astNode.get())) { - string const fileName = *importedContract->path(); + string const fileName = *importedInterface->path(); ReadCallback::Result result{false, string("File not supplied initially.")}; if (m_readFile) result = m_readFile(ReadCallback::kindString(ReadCallback::Kind::ReadFile), fileName); @@ -303,9 +303,9 @@ void CompilerStack::loadMissingInterfaces(int64_t _baseNodeID) ASTPointer importedSource = interfaceImporter.importInterfaceAsSourceUnit( - importedContract->location(), + importedInterface->location(), source->licenseString(), - importedContract->name(), + importedInterface->name(), json ); @@ -317,7 +317,7 @@ void CompilerStack::loadMissingInterfaces(int64_t _baseNodeID) m_errorReporter.fatalParserError( 31415_error, // TODO: ensure this number is unique (we should have a CI for that) astNode->location(), - "Cannot load JSON source." + "Cannot load JSON source. " + result.responseOrErrorMessage ); } } diff --git a/libsolidity/parsing/Parser.cpp b/libsolidity/parsing/Parser.cpp index ade37addf..73792014c 100644 --- a/libsolidity/parsing/Parser.cpp +++ b/libsolidity/parsing/Parser.cpp @@ -317,7 +317,7 @@ ASTPointer Parser::parseInterfaceDefinition() expectToken(Token::Semicolon); auto fileName = make_shared(jsonSourceFileName.string()); - return nodeFactory.createNode(name, fileName); + return nodeFactory.createNode(name, fileName); } baseContracts = parseContractInheritanceList();