Transitional to Complete Void Safety

29 views
Skip to first unread message

Larry Rix

unread,
Oct 1, 2019, 10:49:25 AM10/1/19
to Eiffel Users
Hi All,

I have an ECF with the following

<capability>
<concurrency use="thread"/>
<void_safety support="transitional" use="transitional"/>
</capability>

I need to take it to Complete VS, but the Project tool will not allow me to make the change. What do I need to do?

Thanks!

Larry Rix

unread,
Oct 1, 2019, 10:55:00 AM10/1/19
to Eiffel Users
FYI—I have tried directly editing the ECF text file and changing transitional to complete in either or both "support" and "use". No matter how I set these two, Eiffel Studio then comes up with an "error" condition when reading (parsing) the ECF while attempting to open it.

Larry Rix

unread,
Oct 1, 2019, 11:18:00 AM10/1/19
to Eiffel Users
An even BIGGER FYI!!!!

I decided to see if I could use the Project Settings tool to walk the Void-safe setting back down by changing it at load time and doing a clean compile.

I found that if I switched targets I was able to use the Project Settings tool to change the VS settings, and then selected clean compile. 

This resulted in the compiler issuing 5 errors (easily corrected). The real issue is: Those 5 errors were not showing up in Transitional, where I was coming from. They did not have anything to do with the Void-safe setting. They were improper creation calls (the code was presuming default_create and the compiler finally caught that there was no default_create, demanding me to choose a creation procedure from the defined choices in the create clause for the failing class creation calls).

So--I correct these errors and decide to up the ante from Conformance to Initialization.

Again--I back out, open ES, use the Project Settings tool to change the VS setting from Conformance to Intialization. I then close the tool, select Clean and Compile and what do I get? 57 (mostly Void-safe) errors that the compiler previously did NOT complain about when the project was previously in VS Initialization mode.

This is really REALLY disappointing. So, I am wondering why I was able to clear all of the compiler errors before--only to return later after clearing all errors in Transitional, going back to Initialization and suddenly I have errors where I had none before?

This tells me that something is perhaps not right in the EIFGENs or perhaps this is just the amazing PAIN of taking a non-void-safe system to void safety???

Oh well -- no more time for this today. Just thought you all would like some FAT to chew!!! :-)


Cheers,

Larry

Larry Rix

unread,
Oct 1, 2019, 11:23:42 AM10/1/19
to Eiffel Users
It may well be this is the source of the issue!

<capability>
<concurrency use="thread"/>
<void_safety support="transitional" use="transitional"/>
<void_safety support="transitional" use="initialization"/>
</capability>

This is from GitHub's view. The top line for Void-safety is what WAS and the line below it is WHAT IS.

Note that when I hacked this by hand, I set both support and use to either transitional or to initialization.

In the case of Eiffel Studio, it's made a different choice (as you can see above) using support = transitional and use = initialization.

Now--the real question is: How does this change how the compiler view the code and would having a "bad" setting here make the compiler "miss" certain errors that a "correct" (or "good" or "valid") setting picks up?

Inquiring minds want to know!

Chris Tillman

unread,
Oct 1, 2019, 2:07:39 PM10/1/19
to eiffel...@googlegroups.com
I ran into these types of strangeness when I was doing the same thing for a project a few years ago. I didn't document it, but just wanted to chime in to say you're not alone.

--
You received this message because you are subscribed to the Google Groups "Eiffel Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to eiffel-users...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/eiffel-users/f61701fa-8439-48c5-835a-d5aa3b436f72%40googlegroups.com.


--
Chris Tillman
Developer

Larry Rix

unread,
Oct 1, 2019, 2:20:49 PM10/1/19
to Eiffel Users
Hi Chris,

Thanks for the feedback!

I have only ever started projects off at Void Safe being Complete or Transitional, with Provisional Syntax, and Full Class Checking = True. So, starting with an ECF and working it up to that place is turning out to be challenging! :-)

Cheers,

Larry

Larry Rix

unread,
Oct 1, 2019, 2:23:43 PM10/1/19
to Eiffel Users
it may well also be that I was unable to change the Void Safety setting because I was not load/opening the root library target of the ECF!

I was in a subordinate target I named "test", where the void safe settings are in the root (top-most) target. This all seems to have started when I actually made the changes to root target and loaded and clean compiled the root.

Larry Rix

unread,
Oct 3, 2019, 6:46:00 AM10/3/19
to Eiffel Users
The answer is to use the word "all" instead of "complete".
Reply all
Reply to author
Forward
0 new messages