#3953 assigned Bug

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

Reported by: AspirinJunkie Owned by: J-Paul Mesnage
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 by Jos, on Apr 27, 2023 at 8:22:44 AM

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 by J-Paul Mesnage, on Apr 27, 2023 at 9:47:46 AM

Owner: set to J-Paul Mesnage
Status: newassigned

Thanks
Fix sent to Jon for next beta

comment:3 by mLipok, on May 3, 2023 at 11:15:19 PM

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