Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,6 @@ AlignAfterOpenBracket: AlwaysBreak
BinPackArguments: false
BinPackParameters: false
ColumnLimit: 100
BreakTemplateDeclarations: Yes
SpaceAfterTemplateKeyword: false
QualifierAlignment: Right
16 changes: 10 additions & 6 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -41,32 +41,36 @@ jobs:
if: ${{ matrix.fuzz }}

pre-commit:
runs-on: ubuntu-24.04
runs-on: ubuntu-slim
timeout-minutes: 5
steps:
- uses: actions/checkout@v6
- run: pipx install pre-commit==4.3.0
- run: pre-commit run --all-files

clang-format:
runs-on: ubuntu-24.04
runs-on: ubuntu-slim
timeout-minutes: 5
steps:
- uses: actions/checkout@v6
- run: sudo apt-get update && sudo apt-get install --assume-yes --no-install-recommends clang-format-18
- run: find . -name "*.h" -o -name "*.cc" | xargs clang-format-18 -style=file -i
- name: Set up the llvm repository
run: |
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
sudo apt-add-repository "deb http://apt.llvm.org/noble/ llvm-toolchain-noble-19 main"
- run: sudo apt-get update && sudo apt-get install --no-install-recommends clang-format-19
- run: find . -name "*.h" -o -name "*.cc" | xargs clang-format-19 -style=file -i
- run: git diff --exit-code

buildifier:
runs-on: ubuntu-24.04
runs-on: ubuntu-slim
timeout-minutes: 5
steps:
- uses: actions/checkout@v6
- run: wget --output-document=buildifier https://github.com/bazelbuild/buildtools/releases/download/v8.2.1/buildifier-linux-amd64 && sudo chmod +x buildifier
- run: ./buildifier --lint=warn --warnings=all -mode diff $(find . -type f -iname "*.bazel" -or -iname "*.bzl")

prettier:
runs-on: ubuntu-24.04
runs-on: ubuntu-slim
timeout-minutes: 5
steps:
- uses: actions/checkout@v6
Expand Down
3 changes: 2 additions & 1 deletion starlark/parser.h
Original file line number Diff line number Diff line change
Expand Up @@ -449,7 +449,8 @@ class Parser {
return true;
}

template <typename T> [[nodiscard]] std::optional<T> next_token_as() {
template<typename T>
[[nodiscard]] std::optional<T> next_token_as() {
auto next = next_token();
if (!next) {
std::cerr << "Unexpected end of input.\n";
Expand Down
8 changes: 4 additions & 4 deletions starlark/token.h
Original file line number Diff line number Diff line change
Expand Up @@ -309,20 +309,20 @@ struct Identifier {
constexpr bool operator==(Identifier const &) const = default;
};

constexpr std::string_view to_string(const Identifier &id) { return id.name; }
constexpr std::string_view to_string(Identifier const &id) { return id.name; }

struct StringLiteral {
std::string value;
constexpr bool operator==(StringLiteral const &) const = default;
};

inline std::string to_string(const StringLiteral &str) { return std::format(R"("{}")", str.value); }
inline std::string to_string(StringLiteral const &str) { return std::format(R"("{}")", str.value); }

struct Eof {
constexpr bool operator==(Eof const &) const = default;
};

constexpr std::string_view to_string(const Eof &) { return "<eof>"; }
constexpr std::string_view to_string(Eof const &) { return "<eof>"; }

} // namespace token

Expand Down Expand Up @@ -387,7 +387,7 @@ using Token = std::variant<
token::StringLiteral,
token::Eof>;

inline std::string to_string(const Token &token) {
inline std::string to_string(Token const &token) {
return std::visit([](auto &&arg) { return std::string{to_string(arg)}; }, token);
}

Expand Down
4 changes: 2 additions & 2 deletions starlark/tokenizer.h
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ class Tokenizer {
}

std::optional<Token> tokenize_punctuator() {
static const auto puncts = [] {
static auto const puncts = [] {
auto punctuators = std::to_array<std::pair<std::string_view, Token>>({
{"+", token::Plus{}},
{"-", token::Minus{}},
Expand Down Expand Up @@ -232,7 +232,7 @@ class Tokenizer {
return punctuators;
}();

for (const auto &[str, punctuator] : puncts) {
for (auto const &[str, punctuator] : puncts) {
if (input_.substr(pos_, str.size()) == str) {
pos_ += str.size();
return punctuator;
Expand Down
4 changes: 2 additions & 2 deletions starlark/tokenizer_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
int main() {
namespace t = starlark::token;

const auto test_cases =
auto const test_cases =
std::to_array<std::pair<std::string_view, std::optional<std::vector<starlark::Token>>>>({
{
R"(load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test"))",
Expand All @@ -40,7 +40,7 @@ int main() {

etest::Suite s{};

for (const auto &[input, expected] : test_cases) {
for (auto const &[input, expected] : test_cases) {
s.add_test(std::string{input}, [input, &expected](etest::IActions &a) {
auto tokens = starlark::tokenize(input);
a.expect_eq(tokens, expected);
Expand Down