Are you proposing that == behaves as STREQUAL, or as EQUAL?

 

Similarly, would you propose < and > for numbers only, or for string 
comparisons?

 

You’ll just add to the mix of possibilities, and add to people’s confusion by 
adding these. At least the existing stuff is clearly string OR numeric 
comparisons, even though people are thwarted in their attempts at full 
understanding by the strangeness of the “if(VARIABLE” rules. 

 

I don’t think these are a good idea, unless there is a very clear benefit to 
adding them.

 

You cite these advantages:

 

- it implements the behaviour probably most people expect

Are you sure? I am unclear about whether == means EQUAL or STREQUAL, so I don’t 
really know what to expect from it... And given that I already know how these 
things work with if(VARIABLE constructs, I would expect that same thing from 
this new syntax. i.e. if(VAR == 5) works just like if(${VAR} == 5)


- it shouldn't be able to break anything

“Shouldn’t” is not the same as “definitely will not” -- I agree it’s unlikely 
to break anything, but unlikely breakages have been known to occur


- the syntax is nice

Agreed.


- it doesn't need a policy, existing behaviour doesn't change

Agreed. (Unless you still expect the if(VAR behavior as you have with the other 
operators.)


- minimal implementation effort, i.e. we could have it right now

So what? That’s an advantage for you developing the code. What we seek is an 
advantage for people writing IF commands, to understand the CMake IF constructs 
fully without adding too much to their cognitive load. Putting yet another set 
of operators into the mix doesn’t decrease the level of understanding necessary 
to use it correctly.

 

I’m against this proposal unless you can change my mind.

 

 

😊

David C.

 

(Thought you were done with me, did ya?)


 

 

From: Alexander Neundorf
Sent: ‎March‎ ‎20‎, ‎2013 ‎4‎:‎12‎ ‎PM
To: cmake-developers@cmake.org
Subject: Re: [cmake-developers] if (FOO == BAR) ...


On Thursday 14 March 2013, Brad King wrote:
> On 03/14/2013 03:47 PM, Alexander Neundorf wrote:
> > I pushed the AddEqualOperator to stage, it adds the == operator to if(),
> > which simply string-compares the both arguments, with no variable lookup
> > (... which can lead to unwanted effects when using STREQUAL)
> > 
> > Does that look like a good solution ?
> 
> It adds yet another interface to the if() command.  Syntactically
> the name "==" tells me nothing about how the comparison is done,
> and we don't have typed values.  Once "==" is there people will
> want <,<=,>,>=,etc. and they will all have the same ambiguity as
> to how values like "0" v. "0.0" are handled.

Yes, I am aware of all that, I was thinking even about adding <, >, etc.

I know that adding == is not the ideal solution, I'd also a prefer if STREQUAL 
wouldn't have the issue it has.

Still simply adding == has its advantages:
- it implements the behaviour probably most people expect
- it shouldn't be able to break anything
- the syntax is nice
- it doesn't need a policy, existing behaviour doesn't change
- minimal implementation effort, i.e. we could have it right now

Alex
--

Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers
--

Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers

Reply via email to