Opened on Oct 20, 2022 at 12:50:57 AM
Last modified on Nov 3, 2022 at 9:22:38 AM
#3924 assigned Bug
Run-time error calling MyByRefFunc($map["foo"].bar) ==> Expected a variable in user function call
| Reported by: | nurupo | Owned by: | Jon |
|---|---|---|---|
| Milestone: | Component: | AutoIt | |
| Version: | 3.3.16.1 | Severity: | None |
| Keywords: | Cc: |
Description
The following causes a run-time error:
Global $map[], $submap[] $submap.bar = 0 $map["foo"] = $submap foo($map["foo"].bar) ; ==> Expected a variable in user function call.: Func foo(ByRef $var) EndFunc
You have to use [] and then dot notation to reproduce the error. [] and [] works and doesn't result in error.
Using a dot notation and then [] also results in the error, i.e.:
foo($map.foo["bar"])
This seems to be an issue of operator precedence, as putting () to force the left-most element to get extracted first doesn't result in any run-time error, i.e.:
foo(($map["foo"]).bar)
and
foo(($map.foo)["bar"])
respectably.
(Note that declaring the function before it is used results in an AU3Check instead, not a run-time error, which supposedly was fixed in 3.3.16.1 but I'm still experiencing it: https://www.autoitscript.com/trac/autoit/ticket/3902#comment:3)
Attachments (0)
Change History (6)
comment:1 by , on Oct 20, 2022 at 7:54:25 AM
| Resolution: | → Fixed |
|---|---|
| Status: | new → closed |
comment:2 by , on Oct 20, 2022 at 1:04:31 PM
| Milestone: | → Future Release |
|---|
follow-up: 4 comment:3 by , on Oct 21, 2022 at 2:26:21 AM
I'm a bit confused with your reply. You have linked to the Au3Check.exe, but this is a run-time issue, the application runs and then crashes after encountering this issue, it's not the Au3Check.exe linter issue. The one in 3902 is the linter issue, but not this one.
comment:4 by , on Oct 21, 2022 at 7:00:57 AM
| Resolution: | Fixed |
|---|---|
| Status: | closed → reopened |
Replying to nurupo:
I'm a bit confused with your reply. You have linked to the Au3Check.exe, but this is a run-time issue, the application runs and then crashes after encountering this issue, it's not the Au3Check.exe linter issue. The one in 3902 is the linter issue, but not this one.
Ah yes, you are right ... sorry about that and will correct my answer.
comment:5 by , on Oct 21, 2022 at 7:01:59 AM
| Milestone: | Future Release |
|---|
comment:6 by , on Nov 3, 2022 at 9:22:38 AM
| Owner: | set to |
|---|---|
| Status: | reopened → assigned |

EDIT: this is indeed an AutoIt3 internal issue..