gpui 0.2.2 asserts on a deferred draw inside another, and every dialog, sheet and popover draws inside one, so opening a date field in the snooze or schedule dialog panicked, as would any list, menu or picker opened in an overlay. primitives::raise replaces each deferred draw: at the top it defers as before; inside something raised it leaves a placeholder in the tree, and its layer lays it out on its own, then draws it last. check.sh refuses gpui's deferred anywhere else. The time dialog's rule is now times::ahead, tested for a moment behind, now itself, a moment ahead and another zone; a gpui test picks yesterday in the snooze dialog, sees that it has passed and that nothing is sent, then picks two days ahead and hears that moment.
21 lines
1.1 KiB
Bash
Executable File
21 lines
1.1 KiB
Bash
Executable File
#!/bin/sh
|
|
# Pre-review gate: build rules plus house rules.
|
|
set -eu
|
|
cargo fmt --check
|
|
cargo clippy --all-targets --features test-support -- -D warnings
|
|
cargo test --lib --features test-support --quiet
|
|
fail=0
|
|
files=$(git ls-files -co --exclude-standard '*.rs')
|
|
multi=$(awk 'FNR==1{prev=0} /^[[:space:]]*\/\// {if(prev) print FILENAME":"FNR; prev=1; next} {prev=0}' $files)
|
|
[ -z "$multi" ] || { echo "multi-line comments:"; echo "$multi"; fail=1; }
|
|
for f in $files AGENTS.md README.md TASKS.md tasks/*.md; do
|
|
n=$(wc -l < "$f")
|
|
[ "$n" -le 500 ] || { echo "$f has $n lines"; fail=1; }
|
|
done
|
|
components=$(find src -name '*.rs' ! -path 'src/theme/*' ! -path 'src/motion/*' ! -path '*/tests/*' ! -name 'tests.rs')
|
|
raw=$(awk '/#\[cfg\(test\)\]/{nextfile} /(^|[^.[:alnum:]_])px\(/{print FILENAME":"FNR": "$0}' $components)
|
|
[ -z "$raw" ] || { echo "raw px in components:"; echo "$raw"; fail=1; }
|
|
deferred=$(grep -rn 'deferred(' src --include='*.rs' | grep -v '^src/primitives/layer.rs' || true)
|
|
[ -z "$deferred" ] || { echo "gpui deferred outside primitives::raise:"; echo "$deferred"; fail=1; }
|
|
exit $fail
|