ADR-43: リテラルと値束縛の締め——日付値域・固定オフセット正準形・点の値束縛
判断: 字句と値束縛に残っていた未規定 3 点(F66 (a)(b)・F97)を確定する(設計者裁定 3 件・ 2026-07-09。いずれも推奨案どおり)。
- 日付リテラルの値域は字句エラー(F66 (a))。日付部の暦は proleptic Gregorian 固定
(premise 非依存——リテラルの暦は言語の字句が定める・ADR-28)なので、値域(月 01–12・日は
月と閏年規則の実在日)は字句層で閉じて検査できる。時刻部の検査(
23:59:60拒否=ADR-33)と 同じ層に置き、日付部だけ検査が無い非対称(F66 で顕在化)を解消する。裁定の直接の動機は実測—— リファレンス実装は2026-02-30を黙って2026-03-02にロールオーバーしていた(黙って違う 結果=ADR-16 の危険基準そのもの)。 - 固定オフセット TZ の正準形=厳格一意形(F66 (b))。
"±HH:MM"(ゼロ埋め必須・HH は 00–14・ MM は 00–59)のみ合法。"+9:00"・"+0900"・"Z"・"UTC+9"級は明示エラー(正準形か IANA 名 への誘導つき)。UTC は IANA 名"UTC"で書く。動機は ADR-36 判断 6——tz 名の等値はリテラル 字面の等値(リンク解決前)なので、正準形が一意でないと別綴りの混在が整列検査の安全側エラーを 量産する。字句が一意なら「字面の等値」がそのまま意味の等値になる。値域は裁定の字面どおり HH 00–14・MM 00–59 で、"+14:30"級(実在の最大は +14:00)は字句上合法——実在オフセットへの 締めが要る需要が出たら改訂で対応(字句は形式・実在性はデータの領分、の役割分担)。 なお実測(Node 24/ICU)では Intl が"+0900"(コロンなし)と"+15:00"(域外)を受理して いた——Intl 前段の字句検査が実際に必要だったことの確認。 - 日付リテラルの裸の値束縛を正式に認める(F97)。
d0 = 2026-05-15は合法で、時点は値型の 一員(数値・論理・列挙・リスト・文字列に時点を加える——型は増えない・値型の内訳の明文化。 ADR-25 の三型体系は不変)。ADR-42 の dispatch 表は「点→射影・点以外の値→インスタンス参照」 に精密化される(year(d0)=射影。dispatch は展開後・実引数束縛後の実引数型なので変数経由でも 正しく分岐する——F97 が指摘した「どこにも書かれていない前提」が要らなくなる)。同じ日付をanchor:/from:とテーブルで二度書く重複も消える。ラベル値の型域(ADR-34 判断 3)に時点は 含まれないため、インスタンス参照との衝突面は生じない。
却下した案:
- (a) を評価時検査に——時刻部(字句)と層が非対称のまま。日付部は premise 非依存で字句に 閉じるので、遅らせる理由が無い。
- (a) ロールオーバー容認(現状追認)——日付算術としての利便はあるが、サイレント面の容認は
この言語の危険基準に真っ向から反する。ずらしたいなら
shiftで明示する。 - (b) 別綴りを受理して正規化——書きやすいが、正規化層が入ると ADR-36「リテラル字面の等値」の 原則が濁る(等値の基準が「正規化後」に動く)。
- (c)=F97 の静的エラー化(点はリテラル位置のみ)——明示志向には合うが利便を捨て、実装の 現挙動とも逆行。「点は値束縛できない」という暗黙前提を明文化するより、値型の内訳に時点を 明文化する方が三型体系を変えずに済む。
帰結:
- spec: §5.5(字句——日付値域・固定オフセット正準形)・§2.2(値型の内訳に時点)・§2.7 (dispatch 字面「点以外の値」・F97 解消)・glossary(TZ 項の固定オフセット字面)。
- ADR-28 に改訂ポインタ((a)=日付部の値域検査)・ADR-33 に改訂ポインタ((b)=判断 10 の 固定オフセット表記の正準形)・ADR-42 に改訂ポインタ(F97 解消)。
- リファレンス実装: 字句検査 2 種(非実在日付・オフセット正準形=Intl 受理より先に字句で 閉じる)・F97 の挙動固定テスト。
- 同日の純命名確定(F51——正本は spec §5.4):
nonWorking・coincides・rebase・bizOpen・bizClose・isOpenはそのまま正式名、供給の対はsessionOpens/sessionClosesに改名 (旧opens/closes。ADR-41 に改訂節)。残る仮称はshiftBoundary一語(1.0 送り・k可変組の射程外問題と連動——RC2 の据え置き継続)。