Opened 17 years ago

Closed 17 years ago

#91 closed タスク (fixed)

Dimステートメントにおいて、初期値式とAsが同時に指定されていたとき、As以降も初期値式の一部として捉える

Reported by: dai Owned by: dai
Priority: 高-critical Milestone: AB5 CP4
Component: Compiler Version:
Keywords: Cc:

Description

Dim a = 10 As Double

という定義があったとき、従来(β16)までは下記のような処理が行われていた。

  • 初期値の式は "10"
  • 変数aの型指定は "As Double"

今後は、これを下記のように解釈する。

  • 初期値の式は "10 As Double"
  • 変数aの型指定は "10 As Double" の式の結果の型とする

どちらも同じように聞こえるかもしれないが、下記のようなケースで意味が曖昧になってしまう。

Dim a = 0.5 + 0.5 As Long
' 1. Dim a = (0.5 + 0.5) As Long   ※β16までの解釈
' 2. Dim a = 0.5 + (0.5 As Long)   ※β17からの解釈

このとき、1番目の解釈だと+演算子よりも優先順位が高いAs演算子が後に評価されるということになる。これは例外的な仕様、直感的ではない仕様というあまりよろしくないことなので、β17では2番目の解釈に変更する。

尚、下記のような初期値を一つの式として捉えることができないケースは従来どおり例外的に、As指定を特別視する。

Dim pos = [10,20] As POINTAPI

Change History (1)

comment:1 by dai, 17 years ago

Resolution: fixed
Status: newclosed

β17で対応した。

Note: See TracTickets for help on using tickets.