bun run clang-format (#14148)

Co-authored-by: Electroid <Electroid@users.noreply.github.com>
This commit is contained in:
Ashcon Partovi
2024-09-24 20:39:29 -07:00
committed by GitHub
parent 17d719fa4e
commit 30dc72c17b
16 changed files with 254 additions and 164 deletions

55
.github/workflows/clang-format.yml vendored Normal file
View File

@@ -0,0 +1,55 @@
name: clang-format
permissions:
contents: write
on:
workflow_call:
workflow_dispatch:
pull_request:
paths:
- ".github/workflows/clang-format.yml"
- ".clang-format"
- "package.json"
- "scripts/**"
- "cmake/**"
- "src/**/*.{c,cpp,h,hpp}"
- "packages/**/*.{c,cpp,h,hpp}"
env:
BUN_VERSION: "1.1.27"
LLVM_VERSION: "18.1.8"
LLVM_VERSION_MAJOR: "18"
jobs:
clang-format:
name: clang-format
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
sparse-checkout: |
.github
.clang-format
package.json
scripts
cmake
src
packages
- name: Setup Bun
uses: ./.github/actions/setup-bun
with:
bun-version: ${{ env.BUN_VERSION }}
- name: Install LLVM
run: |
curl -fsSL https://apt.llvm.org/llvm.sh | sudo bash -s -- ${{ env.LLVM_VERSION_MAJOR }} all
sudo apt-get update
sudo apt-get install -y ninja-build ccache
- name: Format
run: |
bun run clang-format -DLLVM_VERSION=${{ env.LLVM_VERSION }}
- name: Commit
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: "`bun run clang-format`"

View File

@@ -47,9 +47,6 @@ jobs:
- name: Format Zig
run: |
bun fmt:zig
- name: Format Cpp
run: |
bun fmt:cpp
- name: Commit
uses: stefanzweifel/git-auto-commit-action@v5
with:

View File

@@ -39,3 +39,7 @@ include(SetupRust)
# --- Targets ---
include(BuildBun)
# --- Analysis ---
include(RunClangFormat)

View File

@@ -377,12 +377,12 @@ function(register_command)
get_source_file_property(generated ${output} GENERATED)
if(generated)
list(REMOVE_ITEM CMD_EFFECTIVE_OUTPUTS ${output})
list(APPEND CMD_EFFECTIVE_OUTPUTS ${output}.always_run)
list(APPEND CMD_EFFECTIVE_OUTPUTS ${output}.always_run_${CMD_TARGET})
endif()
endforeach()
if(CMD_ALWAYS_RUN)
list(APPEND CMD_EFFECTIVE_OUTPUTS ${CMD_CWD}/.always_run)
list(APPEND CMD_EFFECTIVE_OUTPUTS ${CMD_CWD}/.always_run_${CMD_TARGET})
endif()
if(CMD_TARGET_PHASE)

View File

@@ -0,0 +1,37 @@
find_command(
VARIABLE
CLANG_FORMAT_PROGRAM
COMMAND
clang-format
REQUIRED
OFF
)
set(CLANG_FORMAT_SOURCES ${BUN_C_SOURCES} ${BUN_CXX_SOURCES})
register_command(
TARGET
clang-format-check
COMMENT
"Running clang-format"
COMMAND
${CLANG_FORMAT_PROGRAM}
-Werror
--dry-run
--verbose
${CLANG_FORMAT_SOURCES}
ALWAYS_RUN
)
register_command(
TARGET
clang-format
COMMENT
"Fixing clang-format"
COMMAND
${CLANG_FORMAT_PROGRAM}
-i # edits files in-place
--verbose
${CLANG_FORMAT_SOURCES}
ALWAYS_RUN
)

View File

@@ -577,6 +577,10 @@ file(GLOB BUN_C_SOURCES ${CONFIGURE_DEPENDS}
${BUN_USOCKETS_SOURCE}/src/crypto/*.c
)
if(WIN32)
list(APPEND BUN_C_SOURCES ${CWD}/src/bun.js/bindings/windows/musl-memmem.c)
endif()
register_repository(
NAME
picohttpparser
@@ -588,15 +592,10 @@ register_repository(
picohttpparser.c
)
list(APPEND BUN_C_SOURCES ${VENDOR_PATH}/picohttpparser/picohttpparser.c)
if(WIN32)
list(APPEND BUN_C_SOURCES ${CWD}/src/bun.js/bindings/windows/musl-memmem.c)
endif()
list(APPEND BUN_CPP_SOURCES
${BUN_C_SOURCES}
${BUN_CXX_SOURCES}
${VENDOR_PATH}/picohttpparser/picohttpparser.c
${BUN_ZIG_GENERATED_CLASSES_OUTPUTS}
${BUN_JS_SINK_OUTPUTS}
${BUN_JAVASCRIPT_OUTPUTS}

View File

@@ -43,7 +43,7 @@
"bump": "bun ./scripts/bump.ts",
"typecheck": "tsc --noEmit && cd test && bun run typecheck",
"fmt": "prettier --config=.prettierrc-ci --write --cache './{.vscode,src,test,bench,packages/{bun-types,bun-inspector-*,bun-vscode,bun-debug-adapter-protocol}}/**/*.{mjs,ts,tsx,js,jsx}'",
"fmt:cpp": "clang-format -i src/bun.js/bindings/**/*.{cpp,h} --verbose",
"fmt:cpp": "bun run clang-format",
"fmt:zig": "bun run zig:fmt",
"lint": "eslint './**/*.d.ts' --cache",
"lint:fix": "eslint './**/*.d.ts' --cache --fix",
@@ -54,6 +54,8 @@
"zig:fmt": "bun run zig fmt src/*.zig src/*/*.zig src/*/*/*.zig src/*/*/*/*.zig",
"zig:check": "bun run zig build check --summary new",
"zig:check-all": "bun run zig build check-all --summary new",
"zig:check-windows": "bun run zig build check-windows --summary new"
"zig:check-windows": "bun run zig build check-windows --summary new",
"clang-format": "bun run build --target clang-format",
"clang-format:check": "bun run build --target clang-format-check"
}
}

View File

@@ -0,0 +1 @@
DisableFormat: true

View File

@@ -0,0 +1 @@
DisableFormat: true

View File

@@ -120,19 +120,13 @@ static void addInspector(void* app, JSC::JSGlobalObject* globalObject)
globalObject->setInspectable(true);
*ws->getUserData() = new SSLBunInspectorConnection(ws, globalObject);
SSLBunInspectorConnection* inspector = *ws->getUserData();
inspector->onOpen(globalObject);
//
},
inspector->onOpen(globalObject); },
.message = [](auto* ws, std::string_view message, uWS::OpCode opCode) {
SSLBunInspectorConnection* inspector = *(SSLBunInspectorConnection**)ws->getUserData();
inspector->onMessage(message);
//
},
inspector->onMessage(message); },
.drain = [](auto* ws) {
SSLBunInspectorConnection* inspector = *(SSLBunInspectorConnection**)ws->getUserData();
inspector->drain();
//
},
inspector->drain(); },
.ping = [](auto* /*ws*/, std::string_view) {
/* Not implemented yet */ },
.pong = [](auto* /*ws*/, std::string_view) {
@@ -162,19 +156,13 @@ static void addInspector(void* app, JSC::JSGlobalObject* globalObject)
globalObject->setInspectable(true);
*ws->getUserData() = new BunInspectorConnectionNoSSL(ws, globalObject);
BunInspectorConnectionNoSSL* inspector = *ws->getUserData();
inspector->onOpen(globalObject);
//
},
inspector->onOpen(globalObject); },
.message = [](auto* ws, std::string_view message, uWS::OpCode opCode) {
BunInspectorConnectionNoSSL* inspector = *(BunInspectorConnectionNoSSL**)ws->getUserData();
inspector->onMessage(message);
//
},
inspector->onMessage(message); },
.drain = [](auto* ws) {
BunInspectorConnectionNoSSL* inspector = *(BunInspectorConnectionNoSSL**)ws->getUserData();
inspector->drain();
//
},
inspector->drain(); },
.ping = [](auto* /*ws*/, std::string_view) {
/* Not implemented yet */ },
.pong = [](auto* /*ws*/, std::string_view) {
@@ -190,7 +178,8 @@ static void addInspector(void* app, JSC::JSGlobalObject* globalObject)
}
}
extern "C" void Bun__addInspector(bool isSSL, void* app, JSC::JSGlobalObject* globalObject)
extern "C" void
Bun__addInspector(bool isSSL, void* app, JSC::JSGlobalObject* globalObject)
{
if (isSSL) {
addInspector<true>((uWS::TemplatedApp<true>*)app, globalObject);

View File

@@ -320,7 +320,8 @@ static JSValue constructBunShell(VM& vm, JSObject* bunObject)
// This value currently depends on a zig feature flag
extern "C" JSC::EncodedJSValue Bun__getTemporaryDevServer(JSC::JSGlobalObject* bunObject);
static JSValue constructBunKit(VM& vm, JSObject* bunObject) {
static JSValue constructBunKit(VM& vm, JSObject* bunObject)
{
return JSC::JSValue::decode(Bun__getTemporaryDevServer(bunObject->globalObject()));
}

View File

@@ -11,7 +11,8 @@ void generateNativeModule_BunObject(JSC::JSGlobalObject *lexicalGlobalObject,
JSC::MarkedArgumentBuffer &exportValues) {
// FIXME: this does not add each property as a top level export
JSC::VM &vm = lexicalGlobalObject->vm();
Zig::GlobalObject *globalObject = jsCast<Zig::GlobalObject *>(lexicalGlobalObject);
Zig::GlobalObject *globalObject =
jsCast<Zig::GlobalObject *>(lexicalGlobalObject);
JSObject *object = globalObject->bunObject();

View File

@@ -30,13 +30,14 @@ extern "C" mach_port_t io_darwin_create_machport(uint64_t wakeup, int32_t fd,
// Modify the port queue size to be 1 because we are only
// using it for notifications and not for any other purpose.
mach_port_limits_t limits = {.mpl_qlimit = 1};
kr = mach_port_set_attributes(self, port, MACH_PORT_LIMITS_INFO, (mach_port_info_t)&limits, MACH_PORT_LIMITS_INFO_COUNT);
kr = mach_port_set_attributes(self, port, MACH_PORT_LIMITS_INFO,
(mach_port_info_t)&limits,
MACH_PORT_LIMITS_INFO_COUNT);
if (UNLIKELY(kr != KERN_SUCCESS)) {
return 0;
}
// Configure the event to directly receive the Mach message as part of the
// kevent64() call.
kevent64_s event{};
@@ -85,15 +86,10 @@ extern "C" bool io_darwin_schedule_wakeup(mach_port_t waker) {
.msgh_id = 0,
};
mach_msg_return_t kr = mach_msg(
&msg,
MACH_SEND_MSG | MACH_SEND_TIMEOUT,
msg.msgh_size,
0,
MACH_PORT_NULL,
mach_msg_return_t kr = mach_msg(&msg, MACH_SEND_MSG | MACH_SEND_TIMEOUT,
msg.msgh_size, 0, MACH_PORT_NULL,
0, // Fail instantly if the port is full
MACH_PORT_NULL
);
MACH_PORT_NULL);
switch (kr) {
case MACH_MSG_SUCCESS: {

View File

@@ -1,13 +1,15 @@
#include "KitDevGlobalObject.h"
#include "JavaScriptCore/GlobalObjectMethodTable.h"
#include "JSNextTickQueue.h"
#include "JavaScriptCore/GlobalObjectMethodTable.h"
#include "headers-handwritten.h"
namespace Kit {
#define INHERIT_HOOK_METHOD(name) Zig::GlobalObject::s_globalObjectMethodTable. name
#define INHERIT_HOOK_METHOD(name) \
Zig::GlobalObject::s_globalObjectMethodTable.name
const JSC::GlobalObjectMethodTable DevGlobalObject::s_globalObjectMethodTable = {
const JSC::GlobalObjectMethodTable DevGlobalObject::s_globalObjectMethodTable =
{
INHERIT_HOOK_METHOD(supportsRichSourceInfo),
INHERIT_HOOK_METHOD(shouldInterruptScript),
INHERIT_HOOK_METHOD(javaScriptRuntimeFlags),
@@ -31,9 +33,11 @@ const JSC::GlobalObjectMethodTable DevGlobalObject::s_globalObjectMethodTable =
INHERIT_HOOK_METHOD(canCompileStrings),
};
DevGlobalObject* DevGlobalObject::create(JSC::VM& vm, JSC::Structure* structure, const JSC::GlobalObjectMethodTable* methodTable)
{
DevGlobalObject* ptr = new (NotNull, JSC::allocateCell<DevGlobalObject>(vm)) DevGlobalObject(vm, structure, methodTable);
DevGlobalObject *
DevGlobalObject::create(JSC::VM &vm, JSC::Structure *structure,
const JSC::GlobalObjectMethodTable *methodTable) {
DevGlobalObject *ptr = new (NotNull, JSC::allocateCell<DevGlobalObject>(vm))
DevGlobalObject(vm, structure, methodTable);
ptr->finishCreation(vm);
return ptr;
}
@@ -46,7 +50,8 @@ void DevGlobalObject::finishCreation(JSC::VM &vm) {
extern "C" BunVirtualMachine *Bun__getVM();
// A lot of this function is taken from 'Zig__GlobalObject__create'
extern "C" DevGlobalObject* KitCreateDevGlobal(DevServer* owner, void* console) {
extern "C" DevGlobalObject *KitCreateDevGlobal(DevServer *owner,
void *console) {
JSC::VM &vm = JSC::VM::create(JSC::HeapType::Large).leakRef();
vm.heap.acquireAccess();
JSC::JSLockHolder locker(vm);
@@ -54,7 +59,8 @@ extern "C" DevGlobalObject* KitCreateDevGlobal(DevServer* owner, void* console)
WebCore::JSVMClientData::create(&vm, bunVM);
JSC::Structure *structure = DevGlobalObject::createStructure(vm);
DevGlobalObject* global = DevGlobalObject::create(vm, structure, &DevGlobalObject::s_globalObjectMethodTable);
DevGlobalObject *global = DevGlobalObject::create(
vm, structure, &DevGlobalObject::s_globalObjectMethodTable);
if (!global)
BUN_PANIC("Failed to create DevGlobalObject");
@@ -70,7 +76,8 @@ extern "C" DevGlobalObject* KitCreateDevGlobal(DevServer* owner, void* console)
vm.setOnEachMicrotaskTick([global](JSC::VM &vm) -> void {
if (auto nextTickQueue = global->m_nextTickQueue.get()) {
global->resetOnEachMicrotaskTick();
Bun::JSNextTickQueue* queue = jsCast<Bun::JSNextTickQueue*>(nextTickQueue);
Bun::JSNextTickQueue *queue =
jsCast<Bun::JSNextTickQueue *>(nextTickQueue);
queue->drain(vm, global);
return;
}