PR# 16330 Using "assign" with external routines crashes run-time

Problem Report Summary
Submitter: sauzachn
Category: Compiler
Priority: Medium
Date: 2009/10/02
Class: Bug
Severity: Non-critical
Number: 16330
Release: 6.5.8.945
Confidential: No
Status: Open
Responsible:
Environment: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.14) Gecko/2009090217 Ubuntu/9.04 (jaunty) Firefox/3.0.14
Synopsis: Using "assign" with external routines crashes run-time

Description
Using the "assign" keyword with external routines does not work (it seems to not have any effect in older devel EiffelStudio releases, it crashes in the latest devel release). However, using the setter routine (provided as the assigner) directly does work. 

On closer inspection, using a non-static call (ie. not through {CLASS} but through an object) also works directly with the assigner. Other static calls to external routines without an "assign" clause work.
To Reproduce
In one of my classes (e.g. TEST) I have the two routines:

i:INTEGER_32 assign set_i external ... end
set_i(a_i:INTEGER_32) external ... end

* When I call {TEST}.set_i(4) it works.

* Using {TEST}.i := 4 does not work. In the newest dev. release of EiffelStudio (ISE EiffelStudio version 6.5.8.945 GPL Edition - linux-x86-64) this call crashes the whole runtime with a segfault, in older releases (ISE EiffelStudio version 6.5.7.9743 GPL Edition - linux-x86-64) it just has no effect on execution and "i" still contains the old value.

* Using test.i := 4 works, where test is an initialized object of TEST.

* Using test.set_i(4) also works.
Problem Report Interactions