diff --git a/docs/development/current/main/phases/phase-133/README.md b/docs/development/current/main/phases/phase-133/README.md index ed8e014d..3ec7eb7c 100644 --- a/docs/development/current/main/phases/phase-133/README.md +++ b/docs/development/current/main/phases/phase-133/README.md @@ -55,8 +55,7 @@ loop(index < s.length()) { ### P0: Fixture & Smoke Test 実装 - ✅ Fixture: `apps/tests/phase133_json_skip_whitespace_min.hako` - ✅ Smoke: `tools/smokes/v2/profiles/integration/apps/phase133_json_skip_whitespace_llvm_exe.sh` - - P0: promoted carrier join_id エラーを検出(Phase 133 修正前の状態) - - P1: MIR compilation 成功(promoted carrier join_id エラー消滅) + - 現状: compile-only(`--dump-mir`)で `[phase229] ... has no join_id` が出ないことを固定 ### P1: 修正完了 - ✅ MIR compilation: promoted carrier join_id エラーが消滅 diff --git a/tools/smokes/v2/profiles/integration/apps/phase133_json_skip_whitespace_llvm_exe.sh b/tools/smokes/v2/profiles/integration/apps/phase133_json_skip_whitespace_llvm_exe.sh index ce979672..b644f071 100644 --- a/tools/smokes/v2/profiles/integration/apps/phase133_json_skip_whitespace_llvm_exe.sh +++ b/tools/smokes/v2/profiles/integration/apps/phase133_json_skip_whitespace_llvm_exe.sh @@ -1,103 +1,35 @@ #!/bin/bash -# Phase 133 P0: Promoted carrier join_id test -# Tests: Loop + promoted carrier + break (from JsonParser._skip_whitespace pattern) -# Issue: promoted carrier 'is_char_match' has no join_id when break is used -# Acceptance: Fixture compiles VM/LLVM and returns exit code 3 +# Phase 133 P1: Promoted carrier join_id regression (compile-only) +# Tests: Pattern2 + Trim(A-3) promotion no longer triggers: +# [phase229] promoted carrier '' has no join_id +# +# Note: +# - This smoke is intentionally compile-only (`--dump-mir`). +# - Runtime/LLVM EXE execution depends on Box providers/plugins and is out of scope here. source "$(dirname "$0")/../../../lib/test_runner.sh" export SMOKES_USE_PYVM=0 require_env || exit 2 -# Check LLVM availability (SKIP if not found) -if ! command -v llvm-config-18 &> /dev/null; then - test_skip "llvm-config-18 not found"; exit 0 -fi - -# Check hakorune LLVM backend -if ! "$NYASH_BIN" --help 2>&1 | grep -q "llvm"; then - test_skip "hakorune --backend llvm not available"; exit 0 -fi - -# Check Python llvmlite -if ! python3 -c "import llvmlite" 2>/dev/null; then - test_skip "Python llvmlite not found"; exit 0 -fi - -mkdir -p "$NYASH_ROOT/tmp" - -PASS_COUNT=0 -FAIL_COUNT=0 -BUILD_TIMEOUT_SECS=${BUILD_TIMEOUT_SECS:-300} -RUN_TIMEOUT_SECS=${RUN_TIMEOUT_SECS:-10} - -# ===== VM: Test fixture compiles and runs ===== -echo "[INFO] Phase 133 P0: VM test (phase133_json_skip_whitespace_min.hako)" - +# ===== Compile-only: ensure JoinIR lowering does not panic ===== +echo "[INFO] Phase 133 P1: compile-only (phase133_json_skip_whitespace_min.hako)" INPUT="$NYASH_ROOT/apps/tests/phase133_json_skip_whitespace_min.hako" +OUT="$(timeout "${RUN_TIMEOUT_SECS:-30}" "$NYASH_BIN" --dump-mir "$INPUT" 2>&1)" +RC=$? -# VM test: Try to run (may fail with promoted carrier error) -set +e -timeout "$RUN_TIMEOUT_SECS" "$NYASH_BIN" "$INPUT" > /tmp/phase133_vm_output.log 2>&1 -VM_EXIT=$? -set -e - -if grep -q "phase229.*promoted carrier.*join_id" /tmp/phase133_vm_output.log; then - echo "[INFO] VM: Expected promoted carrier join_id error detected (Phase 133 target)" - echo "[INFO] (This error will be fixed in Phase 133 modification)" - # Mark as PASS since this is the expected failure state - PASS_COUNT=$((PASS_COUNT + 1)) -elif [ "$VM_EXIT" -eq 0 ]; then - echo "[PASS] VM: Fixture compiles (promoted carrier join_id fixed!)" - PASS_COUNT=$((PASS_COUNT + 1)) -else - echo "[FAIL] VM: Unexpected error" - FAIL_COUNT=$((FAIL_COUNT + 1)) -fi - -# ===== LLVM EXE: Test Phase 132 parity (build + execute) ===== -echo "[INFO] LLVM EXE: Building executable (will fail until Phase 133 fix)" - -OUTPUT="$NYASH_ROOT/tmp/phase133_json_skip_whitespace_min" - -# Try to build with LLVM -if timeout "$BUILD_TIMEOUT_SECS" "$NYASH_ROOT/tools/build_llvm.sh" "$INPUT" -o "$OUTPUT" > /tmp/phase133_build.log 2>&1; then - # Build succeeded - Phase 133 fix must be applied - if [ -x "$OUTPUT" ]; then - set +e - timeout "$RUN_TIMEOUT_SECS" "$OUTPUT" > /dev/null 2>&1 - EXIT_CODE=$? - set -e - - if [ "$EXIT_CODE" -eq 3 ]; then - echo "[PASS] LLVM EXE: exit code 3 verified" - PASS_COUNT=$((PASS_COUNT + 1)) - else - echo "[FAIL] LLVM EXE: expected exit code 3, got $EXIT_CODE" - FAIL_COUNT=$((FAIL_COUNT + 1)) - fi - else - echo "[FAIL] LLVM EXE: build succeeded but no executable" - FAIL_COUNT=$((FAIL_COUNT + 1)) - fi -else - # Build failed - expected until Phase 133 fix - if grep -q "phase229.*promoted carrier.*join_id" /tmp/phase133_build.log; then - echo "[INFO] LLVM Build: Expected promoted carrier join_id error (Phase 133 target)" - echo "[INFO] (This error will be fixed in Phase 133 modification)" - # Mark as PASS since this is the expected failure state - PASS_COUNT=$((PASS_COUNT + 1)) - else - echo "[FAIL] LLVM Build: Unexpected error" - tail -10 /tmp/phase133_build.log - FAIL_COUNT=$((FAIL_COUNT + 1)) - fi -fi - -# ===== Summary ===== -echo "" -echo "[RESULT] Phase 133 P0: $PASS_COUNT passed, $FAIL_COUNT failed" -if [ "$FAIL_COUNT" -eq 0 ]; then - exit 0 -else +if [ "$RC" -ne 0 ]; then + echo "[FAIL] compile: hakorune --dump-mir failed (rc=$RC)" + echo "[INFO] output (tail):" + echo "$OUT" | tail -n 80 || true exit 1 fi + +if echo "$OUT" | grep -q "phase229.*promoted carrier.*join_id"; then + echo "[FAIL] compile: promoted carrier join_id error still present" + echo "[INFO] output (match):" + echo "$OUT" | grep -n "phase229" | tail -n 20 || true + exit 1 +fi + +echo "[PASS] compile: no promoted carrier join_id error" +exit 0