PR# 15384 Debugger does not step at correct position.

Problem Report Summary
Submitter: ted_eiffel
Category: EiffelStudio
Priority: Medium
Date: 2009/02/11
Class: Bug
Severity: Serious
Number: 15384
Release: 6.4.7.7057
Confidential: No
Status: Closed
Responsible:
Environment: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6
Synopsis: Debugger does not step at correct position.

Description
See attached video.
To Reproduce
Compile the example for EiffelParse library.
Debug the following routine as the video demos: {AGGREGATE}.parse_body
Problem Report Interactions
From:jfiat_es    Date:2009/02/13    Status: Closed    Download   
Fixed by rev#77146

From:alexk_es    Date:2009/02/12    Download   
I believe there is a bug in the feature tool that puts an extra breakable slot when it should not, because the compiler does not generate the precondition at all, as it is always true.

From:jfiat_es    Date:2009/02/12    Download   
I am working on fixing this at the formatter level.
Patch ready soon...

From:jfiat_es    Date:2009/02/12    Download   
note that this bug is also present in 6.2.7.3753  (and 6.3)

From:jfiat_es    Date:2009/02/12    Download   
small system to reproduce

check generated C code fro {BAR}.foo
no precondition code is generated

BUT in the feature tool, we have that output (there is an extra breakable slot)

	foo
			-- (from BAR)
		require -- from  FOO
			True
		require else -- from BAR
O			pre: pre
		do
O			print ("foo")
O			print ("bar%N")
O		end

It seems to me that "require else" are never generated in this case.
Which might be logical, since this is a "require else" and inherited missing precondition stands for  ... "True"

This shows that adding precondition when redefining a feature without any precondition is .. useless.

Attachment: C:\projects\eiffel\bug_15384\bug_15384.zip     Size:1159
From:jfiat_es    Date:2009/02/12    Status: Analyzed    Download   
It seems that the compiler does not generate RTHOOK when dealing with "require else" and precursor without any precondition

	foo
		require else
			pre: pre
		do
			print ("foo")
			print ("%N")
		end

From:ted_eiffel    Date:2009/02/11    Download   
In Feature tool, you can see that the execution should never go back to the line `print ("expanding %N")' after the first reach.
It looks like the indicating arrow shifts line number by 1.

From:jfiat_es    Date:2009/02/11    Download   
can you just describe in word, where the stepping is wrong?
This will save me some time, trying to figure out from the video.
(of course I will try to reproduce, but in the meantime, this might indicate me where to look for)

From:ted_eiffel    Date:2009/02/11    Download   
Attachments for problem report #15384

Attachment: Debugger_bug_demo.7z     Size:1191174