summaryrefslogtreecommitdiff
path: root/src/ast
diff options
context:
space:
mode:
Diffstat (limited to 'src/ast')
-rw-r--r--src/ast/item.cpp1
-rw-r--r--src/ast/item.hpp2
-rw-r--r--src/ast/item_test.cpp20
3 files changed, 14 insertions, 9 deletions
diff --git a/src/ast/item.cpp b/src/ast/item.cpp
index d27e231..623f5c6 100644
--- a/src/ast/item.cpp
+++ b/src/ast/item.cpp
@@ -142,6 +142,7 @@ namespace item
SPAN_EXTRACT(TRY_UNWRAP(lex_nonscript(lr, false), return EOL_ERROR(lr)), item.wlv);
SPAN_EXTRACT(TRY_UNWRAP(lex_nonscript(lr, false), return EOL_ERROR(lr)), item.elv);
SPAN_EXTRACT(TRY_UNWRAP(lex_nonscript(lr, false), return EOL_ERROR(lr)), item.view);
+ SPAN_EXTRACT(TRY_UNWRAP(lex_nonscript(lr, false), return EOL_ERROR(lr)), item.mode);
item.use_script = TRY(lex_script(lr));
item.equip_script = TRY(lex_script(lr));
ItemOrComment rv = std::move(item);
diff --git a/src/ast/item.hpp b/src/ast/item.hpp
index c772655..90d51a1 100644
--- a/src/ast/item.hpp
+++ b/src/ast/item.hpp
@@ -63,6 +63,8 @@ namespace item
Spanned<int> wlv;
Spanned<int> elv;
Spanned<ItemLook> view;
+ Spanned<ItemMode> mode;
+
ast::script::ScriptBody use_script;
ast::script::ScriptBody equip_script;
};
diff --git a/src/ast/item_test.cpp b/src/ast/item_test.cpp
index 7bb7193..33ed9cb 100644
--- a/src/ast/item_test.cpp
+++ b/src/ast/item_test.cpp
@@ -87,11 +87,11 @@ namespace item
QuietFd q;
LString inputs[] =
{
- // 1 2 3 4 5
- //2345678901234567890123456789012345678901234567890123456789
- "1,abc , 3,4,5,6,7,8,9,10,xx,2,16,12,13,11, {end;}, {}"_s,
- "1,abc , 3,4,5,6,7,8,9,10,xx,2,16,12,13,11, {end;}, {}\n"_s,
- "1,abc , 3,4,5,6,7,8,9,10,xx,2,16,12,13,11, {end;}, {}\nabc"_s,
+ // 1 2 3 4 5 6
+ //23456789012345678901234567890123456789012345678901234567890123456789
+ "1,abc , 3,4,5,6,7,8,9,10,xx,2,16,12,13,11,1, {end;}, {}"_s,
+ "1,abc , 3,4,5,6,7,8,9,10,xx,2,16,12,13,11,1, {end;}, {}\n"_s,
+ "1,abc , 3,4,5,6,7,8,9,10,xx,2,16,12,13,11,1, {end;}, {}\nabc"_s,
};
for (auto input : inputs)
{
@@ -99,7 +99,7 @@ namespace item
auto res = TRY_UNWRAP(parse_item(lr), FAIL());
EXPECT_TRUE(res.get_success().is_some());
auto top = TRY_UNWRAP(std::move(res.get_success()), FAIL());
- EXPECT_SPAN(top.span, 1,1, 1,58);
+ EXPECT_SPAN(top.span, 1,1, 1,60);
auto p = top.get_if<Item>();
EXPECT_TRUE(p);
if (p)
@@ -135,10 +135,12 @@ namespace item
EXPECT_SPAN(p->elv.span, 1,42, 1,43);
EXPECT_EQ(p->elv.data, 13);
EXPECT_SPAN(p->view.span, 1,45, 1,46);
- EXPECT_EQ(p->view.data, ItemLook::BOW);
- EXPECT_SPAN(p->use_script.span, 1,49, 1,54);
+ EXPECT_EQ(p->view.data, ItemLook::W_BOW);
+ EXPECT_SPAN(p->mode.span, 1,48, 1,48);
+ EXPECT_EQ(p->mode.data, ItemMode::NO_DROP);
+ EXPECT_SPAN(p->use_script.span, 1,51, 1,56);
EXPECT_EQ(p->use_script.braced_body, "{end;}"_s);
- EXPECT_SPAN(p->equip_script.span, 1,57, 1,58);
+ EXPECT_SPAN(p->equip_script.span, 1,59, 1,60);
EXPECT_EQ(p->equip_script.braced_body, "{}"_s);
}
}