comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » Re: Operator precedence flipflop?
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
Re: Operator precedence flipflop? [message #80428 is a reply to message #80427] Sat, 02 June 2012 08:02 Go to previous message
Lajos Foldy is currently offline  Lajos Foldy
Messages: 176
Registered: December 2011
Senior Member
On Saturday, June 2, 2012 12:23:48 AM UTC+2, Paulo Penteado wrote:
> Recently a user called my attention to some old and well-used software
> (for the FUSE space telescope) that apparently got broken. As she
> tracked it down, the problem was occurring when accessing an array
> pointed to by a structure element. This recreates the problem, IDL
> 8.0.1 and 8.1:
>
> IDL Version 8.1 (linux x86_64 m64). (c) 2011, ITT Visual Information
> Solutions
> IDL> s={str:[ptr_new(['1','2']),ptr_new(['a','b'])]}
> IDL> help,s.str
> <Expression> POINTER = Array[2]
> IDL> print,*(s.str(0))
> 1 2
> IDL> print,*s.str[0]
> 1 2
>
> So far, so good. But then:
>
> IDL> print,*s.str(0)
> % Expression must be a scalar in this context: S.
> % Execution halted at: $MAIN$
>
> So it seems that *s.str(0) means (*s.str)(0), instead of *(s.str(0)).
>
> But in IDL 7.1.1 and 8.2 it works:
>
> IDL Version 7.1.1 (linux x86_64 m64). (c) 2009, ITT Visual Information
> Solutions
> IDL> s={str:[ptr_new(['1','2']),ptr_new(['a','b'])]}
> IDL> print,*s.str(0)
> 1 2
>
> IDL Version 8.2 (linux x86_64 m64). (c) 2012, Exelis Visual
> Information Solutions, Inc.
> IDL> s={str:[ptr_new(['1','2']),ptr_new(['a','b'])]}
> IDL> print,*s.str(0)
> 1 2
>
> I know that none of these happen if one uses [] for array indexing, or
> parentheses to make the operations clear despite operator precedence.
> But this change in behaviour during the 8.0 to 8.1 period breaks old
> programs, as is the case of the mentioned FUSE software (cf_edit.pro).
> And I do not remember any information on operator precedence changes
> between versions. It seems it was a bug introduced in 8.0, that was
> quietly fixed in 8.2.


My guess is that the cause is the dot operator ambiguity introduced in IDL8. Probably s.str(0) in *s.str(0) is interpreted as a method call for which s must be a scalar. But I can not check, I could not find a list of fixed bugs in IDL 8.2.

regards,
Lajos
[Message index]
 
Read Message
Read Message
Previous Topic: Averaging component of time variable
Next Topic: How to Write Data to File with Particular Dimension Values?

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Sat Apr 04 11:33:50 PDT 2026

Total time taken to generate the page: 3.35496 seconds