Skip to content

Commit 67828c5

Browse files
committed
refactor(fe): add array->span conversion to simplify code
1 parent 90bbecf commit 67828c5

File tree

2 files changed

+7
-8
lines changed

2 files changed

+7
-8
lines changed

src/quick-lint-js/fe/expression.h

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1146,9 +1146,7 @@ inline expression_arena::array_ptr<expression *> expression::children() const
11461146
case expression_kind::compound_assignment:
11471147
case expression_kind::conditional_assignment: {
11481148
auto *assignment = static_cast<const expression::assignment *>(this);
1149-
return expression_arena::array_ptr<expression *>(
1150-
assignment->children_.data(),
1151-
narrow_cast<int>(assignment->children_.size()));
1149+
return expression_arena::array_ptr<expression *>(assignment->children_);
11521150
}
11531151

11541152
case expression_kind::_delete:
@@ -1196,18 +1194,15 @@ inline expression_arena::array_ptr<expression *> expression::children() const
11961194
return static_cast<const expression::call *>(this)->children_;
11971195
case expression_kind::conditional: {
11981196
auto *conditional = static_cast<const expression::conditional *>(this);
1199-
return expression_arena::array_ptr<expression *>(
1200-
conditional->children_.data(),
1201-
narrow_cast<int>(conditional->children_.size()));
1197+
return expression_arena::array_ptr<expression *>(conditional->children_);
12021198
}
12031199
case expression_kind::dot: {
12041200
auto *dot = static_cast<const expression::dot *>(this);
12051201
return expression_arena::array_ptr<expression *>(&dot->child_, 1);
12061202
}
12071203
case expression_kind::index: {
12081204
auto *index = static_cast<const expression::index *>(this);
1209-
return expression_arena::array_ptr<expression *>(
1210-
index->children_.data(), narrow_cast<int>(index->children_.size()));
1205+
return expression_arena::array_ptr<expression *>(index->children_);
12111206
}
12121207
case expression_kind::non_null_assertion: {
12131208
auto *assertion = static_cast<const expression::non_null_assertion *>(this);

src/quick-lint-js/port/span.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@ class span {
2727

2828
explicit span() noexcept : data_(nullptr), size_(0) {}
2929

30+
template <std::size_t N>
31+
explicit span(const std::array<std::remove_const_t<T>, N> &data) noexcept
32+
: data_(data.data()), size_(N) {}
33+
3034
explicit span(T *data, size_type size) noexcept : data_(data), size_(size) {}
3135

3236
explicit span(T *begin, T *end) noexcept

0 commit comments

Comments
 (0)