Skip to content

handoff: tinyexpression × unlaxer 3.0.2 再スタート — 状態整理と次ステップ #12

Description

@opaopa6969

背景

unlaxer-parser 3.0.2 への移行作業を進めてきたが、以下の理由でリセット判断をした。

  1. transaction nest is illegal の根本原因を追えず unlaxer-parser 側を弄り始めた
  2. デバッグ中に /tmp に 9000+ のテスト一時ファイルを撒き散らした(テストの temp リーク問題も発見)
  3. MapperGenerator への ScopeStore.registerDispatcher 追加を試みたが、テスト失敗は解消しなかった
  4. tinyexpression・unlaxer-parser ともにローカル変更を 全 revert してクリーンスレートにした

現在の状態

unlaxer-parser

  • HEAD: 96b3e81 — test: add @enum/@CommonField AST coverage
  • バージョン: 3.0.2 リリース済み(Maven Central)
  • ローカル = リモート(同期済み、未コミット変更なし)
  • .flattened-pom.xml ×2 がビルド副産物として modified(無視してよい)

tinyexpression

  • HEAD: 2c4d26e — feat(p4-lsp): register trigger characters
  • 依存: unlaxer 3.0.2
  • ローカルが remote より 3 commit 先(未 push):
    • 38fd4e4 unlaxer-dsl 3.0.2 適用
    • edd1d25 p4-smoke プロファイル追加
    • 16dcf1e release runbook
    • 2c4d26e LSP trigger characters
  • 未コミット: LSP extension 1 ファイル
  • テスト: ベースライン(revert 後)でも 446 中 60–90 件失敗

未解決の課題

1. transaction nest is illegal(#6

  • 全 TernaryExpressionTest (32件) が ERROR
  • ParseContext.close() 時に tokenStack.size() != 1
  • 試したこと: MapperGenerator で ScopeStore.registerDispatcher(context) 追加 → 効果なし
  • 原因仮説を再検討すべき:
    • ScopeStore dispatcher は本当に問題の根?
    • ParseContext の transaction begin/commit が不均衡になる別の原因がある?
    • ternary 式特有のバックトラック深さの問題?
    • unlaxer 2.8.0 時点でも同じエラーが出る(3.0.x 起因ではない)

2. ベースラインテスト大量失敗

  • revert 後(unlaxer 2.8.0 依存の HEAD 7a7da7d)でも ~66件失敗
  • 3.0.2 移行済み HEAD でも ~66件失敗
  • つまり「3.0.2 に上げたから壊れた」わけではない
  • どのテストが「本来通るべき」なのか基準を明確にする必要あり

3. remaining work(#11

  • release/install 導線
  • preferred root / compat parse のローカル facade 問題
  • LSP parity
  • CI smoke set 固定

次セッションへの推奨

  1. まず現状テストを走らせてベースラインを取る
    cd /home/opa/work/tinyexpression
    mvn test 2>&1 | tail -5
  2. 失敗を分類する(transaction nest / compilation error / assertion failure / timeout)
  3. transaction nest を 1 テストケースで最小再現 → ParseContext のデバッグログで begin/commit/rollback を追う
  4. unlaxer-parser 側を弄るのは最小再現で原因特定した後

関連

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions