From 6a5aad3ae9e28fc5c5433d9dd1bced88194017a0 Mon Sep 17 00:00:00 2001 From: Konstantin Nazarov Date: Sun, 1 Sep 2024 23:11:53 +0100 Subject: [PATCH] Fix dict tests --- src/common.hpp | 4 ++++ src/reader.cpp | 16 ++++++++-------- src/reader.hpp | 8 ++++---- test/dict.cpp | 4 ++-- 4 files changed, 18 insertions(+), 14 deletions(-) diff --git a/src/common.hpp b/src/common.hpp index 4d4233c..504081e 100644 --- a/src/common.hpp +++ b/src/common.hpp @@ -25,6 +25,7 @@ class Symbol; class Syntax; class Pair; class Array; +class Dict; class ByteArray; class Writer; class Opcode; @@ -71,6 +72,9 @@ class Object { virtual Result cmp(const Array&) const { return cmp_tag(tag(), Tag::Array); } + virtual Result cmp(const Dict&) const { + return cmp_tag(tag(), Tag::Dict); + } virtual Result cmp(const ByteArray&) const { return cmp_tag(tag(), Tag::ByteArray); } diff --git a/src/reader.cpp b/src/reader.cpp index d0e5698..c773999 100644 --- a/src/reader.cpp +++ b/src/reader.cpp @@ -517,22 +517,22 @@ bool Reader::forward_exponent() { return forward_decimal_number(); } -Result read_one(const Value& value) { +Result read_one(const Value& value, bool as_code) { if (!value.is()) return ERROR(TypeMismatch); - auto r = Reader(*value.to()); + auto r = Reader(*value.to(), as_code); return r.read_one(); } -Result read_one(const String& value) { - auto r = Reader(value); +Result read_one(const String& value, bool as_code) { + auto r = Reader(value, as_code); return r.read_one(); } -Result read_one(const char* value) { +Result read_one(const char* value, bool as_code) { auto s = TRY(String::create(value)); - auto r = Reader(s); + auto r = Reader(s, as_code); return r.read_one(); } -Result read_multiple(const String& value) { - auto r = Reader(value); +Result read_multiple(const String& value, bool as_code) { + auto r = Reader(value, as_code); return r.read_multiple(); } diff --git a/src/reader.hpp b/src/reader.hpp index 67225fe..61c8e45 100644 --- a/src/reader.hpp +++ b/src/reader.hpp @@ -49,8 +49,8 @@ class Reader { SourcePosition position_{1, 1, 0}; }; -Result read_one(const Value& value); -Result read_one(const String& value); -Result read_one(const char* value); +Result read_one(const Value& value, bool as_code = true); +Result read_one(const String& value, bool as_code = true); +Result read_one(const char* value, bool as_code = true); -Result read_multiple(const String& value); +Result read_multiple(const String& value, bool as_code = true); diff --git a/test/dict.cpp b/test/dict.cpp index 9cc5306..0909bb7 100644 --- a/test/dict.cpp +++ b/test/dict.cpp @@ -26,11 +26,11 @@ TEST_CASE(dict_insert) { } TEST_CASE(dict_read) { - auto v = DIEX(read_one("{}")); + auto v = DIEX(read_one("{}", false)); auto s = DIEX(write_one(v)); ASSERT_EQUALS(s, "{}"); - v = DIEX(read_one("{1 2 3 4}")); + v = DIEX(read_one("{1 2 3 4}", false)); s = DIEX(write_one(v)); ASSERT_EQUALS(s, "{1 2 3 4}");