diff options
Diffstat (limited to 'src/ast')
-rw-r--r-- | src/ast/dump.cpp | 5 | ||||
-rw-r--r-- | src/ast/expr.cpp | 6 | ||||
-rw-r--r-- | src/ast/expr.hpp | 7 |
3 files changed, 12 insertions, 6 deletions
diff --git a/src/ast/dump.cpp b/src/ast/dump.cpp index 0d77054c..363123fa 100644 --- a/src/ast/dump.cpp +++ b/src/ast/dump.cpp @@ -404,8 +404,9 @@ public: inc_indent(); for( const auto& i : n.m_values ) { - m_os << indent() << i.first << ": "; - AST::NodeVisitor::visit(i.second); + // TODO: Attributes + m_os << indent() << i.name << ": "; + AST::NodeVisitor::visit(i.value); m_os << ",\n"; } if( n.m_base_value.get() ) diff --git a/src/ast/expr.cpp b/src/ast/expr.cpp index c1baf9b4..535c2e24 100644 --- a/src/ast/expr.cpp +++ b/src/ast/expr.cpp @@ -286,7 +286,7 @@ NODE(ExprNode_StructLiteral, { os << m_path << " { "; for(const auto& v : m_values) { - os << v.first << ": " << *v.second << ", "; + os << v.name << ": " << *v.value << ", "; } if(m_base_value) { @@ -297,7 +297,7 @@ NODE(ExprNode_StructLiteral, { ExprNode_StructLiteral::t_values vals; for(const auto& v : m_values) { - vals.push_back( ::std::make_pair(v.first, v.second->clone()) ); + vals.push_back({ v.attrs.clone(), v.name, v.value->clone() }); } return NEWNODE(ExprNode_StructLiteral, AST::Path(m_path), OPT_CLONE(m_base_value), mv$(vals) ); @@ -550,7 +550,7 @@ NV(ExprNode_StructLiteral, { visit(node.m_base_value); for( auto& val : node.m_values ) - visit(val.second); + visit(val.value); }) NV(ExprNode_Array, { diff --git a/src/ast/expr.hpp b/src/ast/expr.hpp index a6b58e03..2c9a1c35 100644 --- a/src/ast/expr.hpp +++ b/src/ast/expr.hpp @@ -417,7 +417,12 @@ struct ExprNode_Closure: struct ExprNode_StructLiteral: public ExprNode { - typedef ::std::vector< ::std::pair< ::std::string, unique_ptr<ExprNode> > > t_values; + struct Ent { + MetaItems attrs; + ::std::string name; + unique_ptr<ExprNode> value; + }; + typedef ::std::vector<Ent> t_values; Path m_path; unique_ptr<ExprNode> m_base_value; t_values m_values; |