Printer: Fix HashMap printing spacing
This commit is contained in:
+18
-12
@@ -4,10 +4,12 @@
|
|||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "lexer.h"
|
#include <iterator> // std::next
|
||||||
|
|
||||||
#include "ruc/format/print.h"
|
#include "ruc/format/print.h"
|
||||||
|
|
||||||
#include "error.h"
|
#include "error.h"
|
||||||
|
#include "lexer.h"
|
||||||
#include "printer.h"
|
#include "printer.h"
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
|
|
||||||
@@ -53,9 +55,9 @@ void Printer::dumpImpl(ASTNode* node)
|
|||||||
print("(");
|
print("(");
|
||||||
m_firstNode = false;
|
m_firstNode = false;
|
||||||
m_previousNodeIsList = true;
|
m_previousNodeIsList = true;
|
||||||
List* list = static_cast<List*>(node);
|
auto nodes = static_cast<List*>(node)->nodes();
|
||||||
for (size_t i = 0; i < list->nodes().size(); ++i) {
|
for (size_t i = 0; i < nodes.size(); ++i) {
|
||||||
dumpImpl(list->nodes()[i]);
|
dumpImpl(nodes[i]);
|
||||||
m_previousNodeIsList = false;
|
m_previousNodeIsList = false;
|
||||||
}
|
}
|
||||||
print(")");
|
print(")");
|
||||||
@@ -65,9 +67,9 @@ void Printer::dumpImpl(ASTNode* node)
|
|||||||
print("[");
|
print("[");
|
||||||
m_firstNode = false;
|
m_firstNode = false;
|
||||||
m_previousNodeIsList = true;
|
m_previousNodeIsList = true;
|
||||||
Vector* vector = static_cast<Vector*>(node);
|
auto nodes = static_cast<Vector*>(node)->nodes();
|
||||||
for (size_t i = 0; i < vector->nodes().size(); ++i) {
|
for (size_t i = 0; i < nodes.size(); ++i) {
|
||||||
dumpImpl(vector->nodes()[i]);
|
dumpImpl(nodes[i]);
|
||||||
m_previousNodeIsList = false;
|
m_previousNodeIsList = false;
|
||||||
}
|
}
|
||||||
print("]");
|
print("]");
|
||||||
@@ -77,12 +79,16 @@ void Printer::dumpImpl(ASTNode* node)
|
|||||||
print("{{");
|
print("{{");
|
||||||
m_firstNode = false;
|
m_firstNode = false;
|
||||||
m_previousNodeIsList = true;
|
m_previousNodeIsList = true;
|
||||||
HashMap* hash_map = static_cast<HashMap*>(node);
|
auto elements = static_cast<HashMap*>(node)->elements();
|
||||||
for (auto element : hash_map->elements()) {
|
for (auto it = elements.begin(); it != elements.end(); ++it) {
|
||||||
print("{} ", element.first.front() == 0x7f ? ":" + element.first.substr(1) : element.first); // 127
|
print("{} ", it->first.front() == 0x7f ? ":" + it->first.substr(1) : it->first); // 127
|
||||||
dumpImpl(element.second);
|
dumpImpl(it->second);
|
||||||
m_previousNodeIsList = false;
|
|
||||||
|
if (it != elements.end() && std::next(it) != elements.end()) {
|
||||||
|
print(" ");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
m_previousNodeIsList = false;
|
||||||
print("}}");
|
print("}}");
|
||||||
}
|
}
|
||||||
else if (is<String>(node)) {
|
else if (is<String>(node)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user