PR# 17119 Compiling mixed-case file name generates invalid ECF

Problem Report Summary
Submitter: peter_gummer
Category: Compiler
Priority: Medium
Date: 2010/09/19
Class: Bug
Severity: Serious
Number: 17119
Release: 6.6.83873
Confidential: No
Status: Open
Responsible:
Environment: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-au) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5
Synopsis: Compiling mixed-case file name generates invalid ECF

Description
If I create a class HELLOWORLD inside a file called helloWorld.e (note the upper-case W), and then compile twice, the second compilation fails, as shown below.

It adds the "helloworld" target to the ECF twice. Note that it has changed the target name to lower case. This is probably the cause of the problem. Presumably it is doing a case-sensitive search of the existing ECF for "helloWorld", and of course it does not find it, so it adds the target to the ECF again.
To Reproduce
$ ec helloWorld.e
Eiffel Compilation Manager
Version 6.6.8.3873 GPL Edition - macosx-x86

Degree 6: Examining System
Degree 5: Parsing Classes
Degree 4: Analyzing Inheritance
Degree 3: Checking Types
Degree 2: Generating Byte Code
Freezing System Changes
Degree -1: Generating Code
System Recompiled.
Eiffel C/C++ Compilation Tool - Version 6.5
Copyright Eiffel Software 1985-2009. All Rights Reserved

Preparing C compilation
Compiling C code in E1
Compiling C code in C1
C compilation completed
$ ec helloWorld.e
-------------------------------------------------------------------------------

Error code: VD00

General configuration parsing error.
What to do: fix the configuration file.

Parse error in ./helloWorld.ecf (line 10, column 27): Multiple targets with name helloworld.

-------------------------------------------------------------------------------

Press <Return> to resume compilation or <Q> to quit
q
$ cat helloWorld.ecf
<?xml version="1.0" encoding="ISO-8859-1"?>
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-6-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-6-0 http://www.eiffel.com/developers/xml/configuration-1-6-0.xsd" name="helloworld" uuid="4D76B88D-1442-4942-B339-B74FA2A17721">
	<target name="helloworld">
		<root class="HELLOWORLD" feature="make"/>
		<setting name="console_application" value="true"/>
		<precompile name="base_pre" location="$ISE_PRECOMP\base.ecf"/>
		<library name="base" location="$ISE_LIBRARY\library\base\base.ecf"/>
		<cluster name="helloworld" location=".\"/>
	</target>
	<target name="helloworld">
		<root class="HELLOWORLD" feature="make"/>
		<setting name="console_application" value="true"/>
		<precompile name="base_pre" location="$ISE_PRECOMP\base.ecf"/>
		<library name="base" location="$ISE_LIBRARY\library\base\base.ecf"/>
		<cluster name="helloworld" location=".\"/>
	</target>
</system>
$ 
Problem Report Interactions