Opened 19 months ago

Last modified 9 months ago

#3953 assigned Bug

missing bracket error when using ternary operator inside array definition — at Version 3

Reported by: AspirinJunkie Owned by: Jpm
Milestone: Component: AutoIt
Version: 3.3.16.0 Severity: None
Keywords: ternary bracket Cc:

Description (last modified by mLipok)

When using a ternary operator inside a direct array definition, an error is thrown at runtime when the if branch is applied:

; no error thrown
Global $A = [ 1 > 2  ? 1 : 2 ] ; else path
Global $A = [ 2 < 1  ? 2 : 1 ] ; else path
Global $A = [ 1 <> 1 ? 1 : 2 ] ; else path
Global $A = [ False  ? 1 : 2 ] ; else path

; error "Missing right bracket ')' in expression."
Global $A = [ 2 > 1 ? 2 : 1 ] ; if path
Global $A = [ 1 < 2 ? 1 : 2 ] ; if path
Global $A = [ 1 = 1 ? 1 : 2 ] ; if path
Global $A = [ True  ? 1 : 2 ] ; if path

A workaround would be to add a parenthesis around the expression.
Nevertheless, there seems to be a parsing problem here.

Change History (3)

comment:1 Changed 19 months ago by Jos

Yep, that is why this comment is in the helpfile:

Remarks
This Conditional operator allows a binary choice to be executed without the overhead of an
If...Else...EndIf structure.

Although not necessary in all cases, it is strongly recommended that the 3 elements are enclosed in parentheses.

"

comment:2 Changed 19 months ago by Jpm

  • Owner set to Jpm
  • Status changed from new to assigned

Thanks
Fix sent to Jon for next beta

comment:3 Changed 19 months ago by mLipok

  • Description modified (diff)
Note: See TracTickets for help on using tickets.