背景
unlaxer-parser 3.0.2 への移行作業を進めてきたが、以下の理由でリセット判断をした。
transaction nest is illegal の根本原因を追えず unlaxer-parser 側を弄り始めた
- デバッグ中に /tmp に 9000+ のテスト一時ファイルを撒き散らした(テストの temp リーク問題も発見)
- MapperGenerator への ScopeStore.registerDispatcher 追加を試みたが、テスト失敗は解消しなかった
- 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 固定
次セッションへの推奨
- まず現状テストを走らせてベースラインを取る
cd /home/opa/work/tinyexpression
mvn test 2>&1 | tail -5
- 失敗を分類する(transaction nest / compilation error / assertion failure / timeout)
- transaction nest を 1 テストケースで最小再現 → ParseContext のデバッグログで begin/commit/rollback を追う
- unlaxer-parser 側を弄るのは最小再現で原因特定した後
関連
背景
unlaxer-parser 3.0.2 への移行作業を進めてきたが、以下の理由でリセット判断をした。
transaction nest is illegalの根本原因を追えず unlaxer-parser 側を弄り始めた現在の状態
unlaxer-parser
96b3e81— test: add @enum/@CommonField AST coverage.flattened-pom.xml×2 がビルド副産物として modified(無視してよい)tinyexpression
2c4d26e— feat(p4-lsp): register trigger characters38fd4e4unlaxer-dsl 3.0.2 適用edd1d25p4-smoke プロファイル追加16dcf1erelease runbook2c4d26eLSP trigger characters未解決の課題
1. transaction nest is illegal(#6)
ParseContext.close()時にtokenStack.size() != 1ScopeStore.registerDispatcher(context)追加 → 効果なし2. ベースラインテスト大量失敗
7a7da7d)でも ~66件失敗3. remaining work(#11)
次セッションへの推奨
関連
opaopa6969/unlaxer-parsermaster96b3e81