aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/ast
diff options
context:
space:
mode:
authorchriseth <c@ethdev.com>2015-12-10 00:35:20 +0800
committerchriseth <c@ethdev.com>2015-12-10 02:21:02 +0800
commitf8228e8ab116799a1b28ea9cbb01fdd7342b395c (patch)
tree182796217c88cdfa49b2dedf3c192f75dd7a8052 /libsolidity/ast
parent7cb7818ceaf8f2e50cdd66b33a4e0d17c2a0e879 (diff)
downloaddexon-solidity-f8228e8ab116799a1b28ea9cbb01fdd7342b395c.tar.gz
dexon-solidity-f8228e8ab116799a1b28ea9cbb01fdd7342b395c.tar.zst
dexon-solidity-f8228e8ab116799a1b28ea9cbb01fdd7342b395c.zip
Relative paths in import directives.
Diffstat (limited to 'libsolidity/ast')
-rw-r--r--libsolidity/ast/AST.cpp7
-rw-r--r--libsolidity/ast/AST.h1
-rw-r--r--libsolidity/ast/ASTAnnotations.h6
3 files changed, 14 insertions, 0 deletions
diff --git a/libsolidity/ast/AST.cpp b/libsolidity/ast/AST.cpp
index 6006d441..701202f9 100644
--- a/libsolidity/ast/AST.cpp
+++ b/libsolidity/ast/AST.cpp
@@ -56,6 +56,13 @@ Error ASTNode::createTypeError(string const& _description) const
return Error(Error::Type::TypeError) << errinfo_sourceLocation(location()) << errinfo_comment(_description);
}
+ImportAnnotation& ImportDirective::annotation() const
+{
+ if (!m_annotation)
+ m_annotation = new ImportAnnotation();
+ return static_cast<ImportAnnotation&>(*m_annotation);
+}
+
map<FixedHash<4>, FunctionTypePointer> ContractDefinition::interfaceFunctions() const
{
auto exportedFunctionList = interfaceFunctionList();
diff --git a/libsolidity/ast/AST.h b/libsolidity/ast/AST.h
index 446088ad..75cb9ab2 100644
--- a/libsolidity/ast/AST.h
+++ b/libsolidity/ast/AST.h
@@ -142,6 +142,7 @@ public:
virtual void accept(ASTConstVisitor& _visitor) const override;
ASTString const& identifier() const { return *m_identifier; }
+ virtual ImportAnnotation& annotation() const override;
private:
ASTPointer<ASTString> m_identifier;
diff --git a/libsolidity/ast/ASTAnnotations.h b/libsolidity/ast/ASTAnnotations.h
index 4e0187cf..0bc91c60 100644
--- a/libsolidity/ast/ASTAnnotations.h
+++ b/libsolidity/ast/ASTAnnotations.h
@@ -54,6 +54,12 @@ struct DocumentedAnnotation
std::multimap<std::string, DocTag> docTags;
};
+struct ImportAnnotation: ASTAnnotation
+{
+ /// The absolute path of the source unit to import.
+ std::string absolutePath;
+};
+
struct TypeDeclarationAnnotation: ASTAnnotation
{
/// The name of this type, prefixed by proper namespaces if globally accessible.