Community
Participate
Working Groups
The following compile error occurs when running a source build from I20060207-1305 (http://download.eclipse.org/downloads/drops/I20060207-1305/eclipse-sourceBuild-srcIncluded-I20060207-1305.zip) # 2/7/06 3:56:43 PM EST # Eclipse Java Compiler 0.637, pre-3.2.0 milestone-5, Copyright IBM Corp 2000, 2006. All rights reserved. ---------- 1. ERROR in D:\src1\plugins\org.eclipse.ui.workbench\Eclipse UI\org\eclipse\ui\internal\menus\LocationElementTokenizer.java (at line 34) interface ILocationElementTokenizer { ^^^^^^^^^^^^^^^^^^^^^^^^^ The type ILocationElementTokenizer is already defined ---------- 1 problem (1 error) The same error does not occur in the releng-style build on Linux.
I am investigating.
The problem is gone if the file LocationElementTokenizer.java in plugins\org.eclipse.ui.workbench\Eclipse UI\org\eclipse\ui\internal\menus is renamed in ILocationElementTokenizer.java. Since this is what has been done in the HEAD branch, there is no need for further investigation. Kent, would you have an idea why this could occur?
This change should go in a rebuild. So Platform/UI should submit at least this change in tomorrow's rebuild.
Olivier pinged me, and I had a look at the situation. There have been many subsequent changes in HEAD, so I'm hesitant to do a submission with all these changes. Plus, I'm timing out here. Since it's just the source build that's affected, I suggest we live with it until next week's I-build.
Kent - independantly from the fact UI has fixed their code. Isn't this surfacing a false collision scenario in our builder ?
Olivier thinks its a problem with the build script - he'll look into it more.
It appears the -enableJavadoc compile arg is part of the problem. The plug-in compiles without error when this is omitted.
This is a bug in the batch compiler.
Suspect the bug is FileSystem.initializeKnownFileNames() Likely caused by path separators
Created attachment 34432 [details] Proposed patch With this patch I get a slight improvement in the compilation time. Ensure that the cache contains only name using '/' and never '\'. This is why the build worked on Linux and not on Windows. I'll try to build up a regression test. Philippe, I changed the initialFileNames cache to be a set to prevent iterating the array for search class name. Could you please review it?
Created attachment 34433 [details] Regression test Call the batch compiler with the following command line: d:\tests_sources\p\X.java d:\tests_sources\p\Y.java -d d:\tests_sources -classpath d:\tests_sources -time -nowarn -g -enableJavadoc It is important to compile both source files at the same time.
All tests passed with this patch.
Patch looks good. I noticed a Hashtable was still there. Do we need sync there ? I believe not. private Hashtable directoryCache;
Philippe, this is old code that was package visible and I changed it to be private. I will release this patch and the regression test.
Fixed and released in HEAD.
Added org.eclipse.jdt.core.tests.compiler.regression.LocalVariableTest.test010
Verified for 3.2 M5 using build I20060215-0010