diff --git a/.clang-format b/.clang-format index da0e3b8..d4b2d2f 100644 --- a/.clang-format +++ b/.clang-format @@ -6,3 +6,6 @@ AlignAfterOpenBracket: AlwaysBreak BinPackArguments: false BinPackParameters: false ColumnLimit: 100 +BreakTemplateDeclarations: Yes +SpaceAfterTemplateKeyword: false +QualifierAlignment: Right diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index fb02dfa..1c54835 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -41,7 +41,7 @@ jobs: if: ${{ matrix.fuzz }} pre-commit: - runs-on: ubuntu-24.04 + runs-on: ubuntu-slim timeout-minutes: 5 steps: - uses: actions/checkout@v6 @@ -49,16 +49,20 @@ jobs: - 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 @@ -66,7 +70,7 @@ jobs: - 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 diff --git a/starlark/parser.h b/starlark/parser.h index 9b8d1da..d4142d9 100644 --- a/starlark/parser.h +++ b/starlark/parser.h @@ -449,7 +449,8 @@ class Parser { return true; } - template [[nodiscard]] std::optional next_token_as() { + template + [[nodiscard]] std::optional next_token_as() { auto next = next_token(); if (!next) { std::cerr << "Unexpected end of input.\n"; diff --git a/starlark/token.h b/starlark/token.h index 18f928c..bf92a43 100644 --- a/starlark/token.h +++ b/starlark/token.h @@ -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 ""; } +constexpr std::string_view to_string(Eof const &) { return ""; } } // namespace token @@ -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); } diff --git a/starlark/tokenizer.h b/starlark/tokenizer.h index b27e4e9..7d0150b 100644 --- a/starlark/tokenizer.h +++ b/starlark/tokenizer.h @@ -178,7 +178,7 @@ class Tokenizer { } std::optional tokenize_punctuator() { - static const auto puncts = [] { + static auto const puncts = [] { auto punctuators = std::to_array>({ {"+", token::Plus{}}, {"-", token::Minus{}}, @@ -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; diff --git a/starlark/tokenizer_test.cc b/starlark/tokenizer_test.cc index cc7363b..d176992 100644 --- a/starlark/tokenizer_test.cc +++ b/starlark/tokenizer_test.cc @@ -19,7 +19,7 @@ int main() { namespace t = starlark::token; - const auto test_cases = + auto const test_cases = std::to_array>>>({ { R"(load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test"))", @@ -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);