Skip to content

handoff: P4 fallback=0 セッション (2026-06-27) — C(var宣言/型推論)完了 / 残ゲート=パース性能(#38/#20, packrat #40) #46

Description

@opaopa6969

このセッションの成果

handoff #44 を継承。残作業 C(var宣言/型推論)を完了し master へマージ。これで 純AST経路(if-source-shadow OFF)の testTypeInference 失敗が解消 → if-off 失敗 1 → 0

マージ済み(tinyexpression、master a5177f3

  • PR fix: declared-type-aware AST equality for var declarations (#32 "C") #45: declared-type-aware AST equality。consumer-only、unlaxer-dsl/codegen リリース不要
    • 精密化した根本原因: $name == $remitterBooleanEqualityExprComparisonExpr ではない)にマップされ、evalBooleanEqualityExpr両オペランドを無条件 boolean 強制 → 誤って等価。宣言は @declares のみで AST 脱落。欠けていたのは(as string)だけ( set-if-not-exists は既存経路で適用済み)。
    • 修正(legacy VariableTypeResolver と同等): P4TypedAstEvaluatordeclaredVariableTypes:Map<String,ExpressionType>(宣言なし式は空map→既存挙動と完全同一)。AstDeclarationRuntime.tryEvaluateMainExpression が宣言トークンから型mapを構築し受け渡し。
    • 恒久テスト P4TypedAstEvaluatorDeclaredTypeTest(if無し宣言型 equality、shadow非依存)。

検証

🎯 残ゲート = パース性能(#38 / #20、unlaxer-parser #40 packrat)

純AST経路は全テストで忠実になった(if-off 失敗 0)。fallback=0 / if-shadow の実除去に残るゲートは1つ:

if-shadow 除去の前提(再掲)

次セッションの選択肢

  1. perf: 生成パーサの指数バックトラック — 二重カッコ三項/ソース再パース経路で秒〜分単位の遅延 #38/test: BackendSpeedComparisonTest が legacy パーサー経路 (JavaCodeCalculatorV3 ctor) でハング — #19 の残り #20 パース性能: unlaxer-parser handoff: P4 fallback=0 セッション (2026-06-26) — #43 codegen根治継続 / #32 第2段 string-concat fold widening の再開手順 #40 packrat メモ化の設計・実装(大きめ・別リポジトリ)。fallback=0 への律速。
  2. if-shadow を実際に外す PoC(packrat 前提なので handoff: P4 fallback=0 セッション (2026-06-26) — #43 codegen根治継続 / #32 第2段 string-concat fold widening の再開手順 #40 とセット)。
  3. P4 機能ギャップ: ブロックコメント / len / ダブルクォート / .in / 宣言setter / scope / javacode math未対応 #22 の残ニッチ機能(dot-method リテラル受け手 等、文法拡張 + Central deploy)。

ビルド/検証コマンド

  • フル: mvn -o verify -Dmaven.test.failure.ignore=true -Dtinyexpression.skipRailroad=true -Dgpg.skip=true -Dmaven.javadoc.skip=true -Dspotbugs.skip=true -Derrorprone.skip=true
  • 緑判定ゲート: bash tools/ci/check-test-baseline.shOK: 新規失敗なし = 緑。既知失敗は perf: 生成パーサの指数バックトラック — 二重カッコ三項/ソース再パース経路で秒〜分単位の遅延 #38 testTernaryInSinWithDoubleParensStillWorks の1件)
  • 再生成: rm -rf target/generated-sources target/classes
  • if-off 計測: evalIfExpr 先頭を if (!Boolean.getBoolean("p4.disableIfSourceShadow")) { ...既存... } で包む → -Dp4.disableIfSourceShadow=true で実行 → 計測後 revert
  • 注意: 同一 target/ で maven を並行実行しない(surefire-reports / classes が破損する)。

運用メモ(ユーザー方針)

  • 速度優先: ローカル緑なら admin-merge 可。今回も fix: declared-type-aware AST equality for var declarations (#32 "C") #45 を admin-merge(外部依存変更なしなので Central 同期ラグも無関係)。
  • 不可逆な公開操作(Central deploy)・issueコメント投稿は権限ゲート(実行前にユーザー確認)。
  • .flattened-pom.xml / package-lock.json はビルド生成物(コミットしない)。

関連

#32(fallback=0計画), #35(workaround真っ当化), #22(機能ギャップ), #38(perf:指数バックトラック), unlaxer-parser #40(packrat)。前 handoff #44(closed)。
memory: p4-issue35-cycle-landscape(C完了・gotcha), p4-issue32-stringconcat-blocker, tinyexpression-ci-baseline-gate, workflow-speed-over-green-ci, p4-fallback-zero-project

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