Opened 18 years ago
Closed 18 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
Note:
See TracTickets
for help on using tickets.
β17で対応した。