<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
   <meta name="Author" content="IBM">
   <title>JDT/Core Release Notes 3.2.x</title>
   <link rel="stylesheet" href="jdt_core_style.css" charset="iso-8859-1" type="text/css">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<table border=0 cellspacing=5 cellpadding=2 width="100%" >
  <tr> 
    <td align="left" width="72%" class="title1">
      <font size="+3"><b>jdt core - build notes 3.2.x stream</b></font>
    </td>
  </tr>
  <tr><td align="left" width="72%" class="title2"><font size="-2">java development tooling core</font></td></tr>
  <tr><td>&nbsp;</td></tr>
  <tr>
  	<td class="title3">
	  <font size="-1">
	  Here are the build notes for the Eclipse JDT/Core plug-in project 
	  <a href="http://www.eclipse.org/jdt/core/index.php"><b>org.eclipse.jdt.core</b></a>, 
	  describing <a href="http://bugs.eclipse.org/bugs" target=new>bug</a> resolution and substantial changes in the <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=TARGET_321"><b>TARGET_321</b></a> branch. 
	  <!--
	  This present document covers all changes since Release 3.0 (also see a summary of <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.jdt.core/notes/API_changes.html">API changes</a>).
	  Older changes which occurred up to Release 3.0 can be found in 
	  <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.jdt.core/notes/R21_buildnotes_jdt-core.html">build notes R2.1</a>.
	  -->
	  This present document covers all changes since Release 3.1 (also see a summary of <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.jdt.core/notes/API_changes.html">API changes</a>).
	  <br>Maintenance of previous releases of JDT/Core is performed in parallel branches: 
		  <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=R3_1_maintenance">R3.1.x</a>,
		  <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=R3_0_maintenance">R3.0.x</a>,
		  <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=R2_1_maintenance">R2.1.x</a>,
		  <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=R2_0_1">R2.0.x</a>, 
		  <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=ECLIPSE_1_0">R1.0.x</a>.
	  </font>
	</td>
  </tr>
</table>
<a name="v_688_Startup_R32x"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2.x - ?th April 2007
<br>Project org.eclipse.jdt.core v_688_Startup_R32x
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_688_Startup_R32x">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=172444">172444</a>
build workspace operation launched after each startup
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=179699">179699</a>
type.newTypeHierarchy doesn't cancel
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=138309">138309</a>
[index] Optimize index files path storage in DiskIndex and IndexManager
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=171653">171653</a>
[index] Java Tooling initialization performance issue after startup

<a name="v_687_Startup_R32x"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2.x - 11th April 2007
<br>Project org.eclipse.jdt.core v_687_Startup_R32x
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_687_Startup_R32x">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=151787">151787</a>
[compiler] compiler allows assignment to final field in constructor other than through 'this'
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=176118">176118</a>
Missing library classes kill Intellisense without Error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=177194">177194</a>
[1.5][compiler] preserveAllLocals option has undesirable side-effect when invoking generic method
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=177372">177372</a>
[1.5][compiler] Missing unboxing conversion when no value required from message send
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=177115">177115</a>
NullPointerException in BindingKeyResolver.consumeTypeVariable(...)

<a name="v_686_R32x"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2.2 - 8th February 2007 - 3.2.2 RELEASE
<br>Project org.eclipse.jdt.core v_686_R32x
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_686_R32x">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=172633">172633</a>
NPEs while starting my workspace

<a name="v_685_R32x"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2.2 - 25th January 2007
<br>Project org.eclipse.jdt.core v_685_R32x
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_685_R32x">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=171653">171653</a>
Java Tooling initialization performance issue after startup
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=173279">173279</a>
[indexing] Category table is not cached for rt.jar since 1.5 version

<a name="v_684_R32x"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2.2 - 10th January 2007
<br>Project org.eclipse.jdt.core v_684_R32x
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_684_R32x">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=169744">169744</a>
[AST] character position range wrong for super method call with type arguments
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=162478">162478</a>
NPE in MethodBinding#signature
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=161846">161846</a>
Expanding a java project with invalid classpath container entries in Project Explorer  causes CPU to stay at 100%
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=169596">169596</a>
anewarray not propertly supported in 1.6
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=168665">168665</a>
[1.6][compiler] AIOOBE during stack map frame generation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=162991">162991</a>
[1.5][compiler] Name clash reported for (correct) eclipse-generated code
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=157336">157336</a>
build output contains unnecessary empty directories
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=99738">99738</a>
[formatting] each format shifts code inside &lt;pre&gt; one space to the right
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=160550">160550</a>
Infinite build when projects have cycle and build path errors
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=114349">114349</a>
[compiler] Problems building cyclical projects
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=166977">166977</a>
[vista] Unexpected errors while running JDT/Core tests

<a name="v_683_R32x"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2.2 - 20th December 2006
<br>Project org.eclipse.jdt.core v_683_R32x
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_683_R32x">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=167750">167750</a>
[content assist] From some point in time Eclipse crashes on code completion
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=167217">167217</a>
[1.5][compiler] ClassCastException during annotation code generation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=166641">166641</a>
[compiler] uninitialized variable not reported in if (false) block

<a name="v_682_R32x"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2.2 - 29th November 2006
<br>Project org.eclipse.jdt.core v_682_R32x
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_682_R32x">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=163680">163680</a>
[1.5] [compiler] JDT Internal Exception under import circularity
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=165291">165291</a>
[1.5] Missing diagnosis for illegal forward field ref in generics
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=160637">160637</a>
getKey(...) for BinaryMethod returns a key with '.' in the return type instead of '/'

<a name="v_681_R32x"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2.2 - 22nd November 2006
<br>Project org.eclipse.jdt.core v_681_R32x
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_681_R32x">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=154993">154993</a>
org.eclipse.jdt.ui.JavaNoTypeCompletionProposalComputer throws a runtime exception when using content assist on 'this.' in annontations
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=161557">161557</a>
[assist] JavaTypeCompletionProposalComputer throws a runtime exception when using content assist on generics type argument with instance member arrays

<a name="v_680_R32x"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2.2 - 15th November 2006
<br>Project org.eclipse.jdt.core v_680_R32x
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_680_R32x">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=162621">162621</a>
[model][delta] Validation errors do not clear after replacing jar file
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=163600">163600</a>
[compiler] Internal references to static inner classes fail in presence of assert keyword
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=162296">162296</a>
[compiler] Anonymous and local classes are tagged as final and/or private in the inner class infos
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=163896">163896</a>
Failures in maintenance build M20061108-1320

<a name="v_679_R32x"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2.2 - 8th November 2006
<br>Project org.eclipse.jdt.core v_679_R32x
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_679_R32x">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>Incremented plug-in version ID to &quot;3.2.3&quot;</li>
<li>The compiler now tolerates that methods implementing a method declared
    in an implemented interface or an extended abstract class bear an @Override
    annotation (1.6 mode only - see also bug 
    <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=141931">141931</a>).</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=159631">159631</a>
[dom] NPE while trying to cleanup specific pair of file
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=162400">162400</a>
[1.5][compiler] Return type inference does not perform well in array initializer
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=161459">161459</a>
9 tests in org.eclipse.jdt.core.tests.compiler.regression fail on IBM Java2 5.0
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=161555">161555</a>
org.eclipse.jdt.core.tests.model.ReconcilerTests#testDeleteTwoMethods is failing on IBM 1.5 VM
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=154111">154111</a>
Compiler API (JSR 199)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=156736">156736</a>
[compiler] Add compiler option to warn overriding methods that do not call super
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=160962">160962</a>
[nls] Breaking catalog change for batch compiler
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=159641">159641</a>
patch to refactor Main and add new &quot;GCCMain&quot; driver
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=141931">141931</a>
[1.5][compiler] @Override: upcoming changes of the reference implementation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=159973">159973</a>
[1.5] [compiler] VerifyError due to compiler generating incorrect synthetic methods
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=159654">159654</a>
[compiler] unverifiable bytecode created by current cvs head compiler
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=155115">155115</a>
UnresolvedReferenceBindings surfacing through DOM AST
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=160132">160132</a>
[1.5][compiler] Compiler fails with indirect reference error message
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=150289">150289</a>
[hierarchy] NPE in hierarchy builder when region is empty
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=159250">159250</a>
[1.5][compiler] Should better locate raw type usage for array qualified type references
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=159245">159245</a>
[1.5][compiler] Missing raw type usage warning for array type ref
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=159243">159243</a>
[compiler] Should better locate deprecation issue for qualified type ref
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=149751">149751</a>
Enum-valued annotation element handles non-enum constant badly
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=157333">157333</a>
calling delete on enum constant deletes entire Enum
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=159021">159021</a>
[compiler] Unused locals initialisation is optimized out when it is a single name reference
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=156591">156591</a>
[1.5][compiler] constant-specific methods in enum cannot be abstract
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=155255">155255</a>
[1.5][compiler] ternary conditional operator returns wrong type

<a name="v_678_R32x"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2.1 - 6th October 2006
<br>Project org.eclipse.jdt.core v_678_R32x
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_678_R32x">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=159325">159325</a>
[classpath] Util.getJDKLevel reading a lot of classpath jars because ClasspathEntry checks for string object reference instead of equals

<a name="v_677_R32x"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2.1 - 15th September 2006 - 3.2.1 RELEASE
<br>Project org.eclipse.jdt.core v_677_R32x
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_677_R32x">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=157389">157389</a>
[1.4][compiler] assertionStatus is not set properly for nested types
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=157247">157247</a>
[1.6] [compiler] VerifyError with StackMap frames when no local variable attributes are generated

<a name="v_676_R32x"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2.1 - 6th September 2006
<br>Project org.eclipse.jdt.core v_676_R32x
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_676_R32x">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=153874">153874</a>
Compiler fails to consider bridge method with -source 1.4
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=148010">148010</a>
Code select doesn't find binary parameterized method

<a name="v_675_R32x"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2.1 - 6th September 2006
<br>Project org.eclipse.jdt.core v_675_R32x
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_675_R32x">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=148859">148859</a>
[model][delta] Package Explorer only shows default package after import
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=156108">156108</a>
[1.5][compiler] Autoboxing doesnt workt in switch-statement
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=155887">155887</a>
Breakpoint in 'finally' not hit - test suite failing
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=154170">154170</a>
Printing warnings breaks in-editor quick fixes
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=155423">155423</a>
[compiler] Unoptimal code generation when an initializer contains a statement that returns
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=152725">152725</a>
[1.6][formatter] Code formatter does not format 1.5 code when source level is 1.6
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=154880">154880</a>
DeltaProcessor does not set project references if first build is a project build

<a name="v_674_R32x"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2.1 - 23rd August 2006 - 3.2.1 RELEASE CANDIDATE 2
<br>Project org.eclipse.jdt.core v_674_R32x
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_674_R32x">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=145397">145397</a>
[1.6][compiler] Invalid StackMap attribute
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=151153">151153</a>
[1.6][compiler] Invalid Stackmap attribute generated for ternary operator

<a name="v_673_R32x"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2.1 - 10th August 2006 - 3.2.1 RELEASE CANDIDATE 1
<br>Project org.eclipse.jdt.core v_673_R32x
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_673_R32x">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>New fix for <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=95152">bug 95152</a> required the index version to be incremented. 
     Indexes will be automatically regenerated upon subsequent search queries (accounting for indexing notification in search progress dialogs).
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=95152">95152</a>
[search] F3 can't find synthetic constructor
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=149376">149376</a>
Internal compiler error on &quot;import static&quot;

<a name="v_672_R32x"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2.1 - 19th July 2006
<br>Project org.eclipse.jdt.core v_672_R32x
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_672_R32x">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>Incremented plug-in version ID to &quot;3.2.1&quot;</li>
<li>Progressive help message for the batch compiler.<br>
	The new <tt>-help:warn</tt> option displays details about the various 
    parameters applicable to the <tt>-warn</tt> option; these details are no
    more part of the general help message, which is thus more compact.
    (See also bug 
    <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=144248">144248</a>.)
    </li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=150758">150758</a>
[1.5][compiler] NullPointerException in internal compiler
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=150074">150074</a>
[compiler] init part of for each loop with empty body is not executed
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=149028">149028</a>
Limiting number of characters to read with the file size is invalid.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=149893">149893</a>
[1.5] Compilation error: The method is ambiguous for the type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=117302">117302</a>
Clean build of large project gives unresolved type errors
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=147875">147875</a>
[1.5][compiler] NPE when initializing annotations of a binary field
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=148523">148523</a>
[batch] Batch compiler output contains extra linebreak before line position
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=148215">148215</a>
[search] Exception while searching for declarations of referenced types in binary java elements packaged in a jar
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=145007">145007</a>
[1.5][javadoc] Generics + Inner Class -&gt; Javadoc &quot;missing @throws&quot; warning
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=147690">147690</a>
[1.5][compiler] Incompatible serialversionuid when using covariant in Java 1.5
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=147747">147747</a>
max stack for clinit of enum overestimated
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=142059">142059</a>
[efs] renaming package fails to update references
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=143013">143013</a>
SWTException: Failed to execute runnable (...AbortCompilation)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=147024">147024</a>
[compiler] Compiler bug when accessing static final attribute in a non-static way
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=143684">143684</a>
Creating of static imports is unavailable..
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=147736">147736</a>
ClassCastException in TypeHierarchy
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=91709">91709</a>
[1.5][model] Quick Fix Error but no Problem Reported
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=147381">147381</a>
[1.5][compiler] Generics discrepancy between Eclipse compiler and Sun compiler.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=144573">144573</a>
compilationParticipant extension point schema incomplete
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=145835">145835</a>
getJavaClassLibs needs to account for IBM J2SE 1.5
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=147096">147096</a>
ecj.jar manifest should not use x-friends, but use x-internal=true instead
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=146015">146015</a>
Some JDT/Core tests results are still VM dependent
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=146324">146324</a>
Batch builds produce "The type X is already defined" errors
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=146615">146615</a>
[hierarchy] TypeHierarchyTests is tests order dependent
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=142207">142207</a>
[batch][options] Source/target level names 5 and 5.0 missing from batch 
compiler help message
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=146215">146215</a>
JDT Core tests should not be dependent on HashMap implementation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=145746">145746</a>
[1.5][compiler] Enum synthetic methods should be improved
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=145732">145732</a>
[1.5][compiler] Inconsistent behavior in ECJ code for enum types
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=145516">145516</a>
Bad performance when compiling a java file with non java content
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=142897">142897</a>
[1.5][compiler] Compiler cannot resolve type of inner class of a bounded generic type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=144976">144976</a>
[hierarchy] NPE in ReferenceBinding
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=145500">145500</a>
[hierarchy] Superclass could be more resilient
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=144866">144866</a>
[assist][javadoc] Wrong completion inside @value tag
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=144414">144414</a>
JDT Compiler fails while standard javac compiler can proceed
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=142772">142772</a>
[1.5][compiler] Compilation succeeds with static imports that fail with javac
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=144504">144504</a>
JDT Core model JUnit tests fail when ordering of methods reversed
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=143259">143259</a>
[1.5][compiler] NullPointerException in ReferenceBinding.binarySearch , Eclipse 3.2RC4
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=144426">144426</a>
[compiler] Compiler incorrectly reports "assignment to variable has no effect" when it is a duplicate
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=144248">144248</a>
[batch] Progressive help text
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=141512">141512</a>
[batch] re-format the help message so as to fit into 80 columns
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=141522">141522</a>
[compiler][batch] ClassFile#buildAllDirectoriesInto should protect itself 
against concurrent directory creation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=141330">141330</a>
[1.5][compiler] Suspicious error message for type mismatch
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=141252">141252</a>
[1.6]][compiler] ClassFormatError: Illegal class name "" in class file
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=141810">141810</a>
[1.5][compiler] Enum switch tables incorrectly generated by the compiler
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=141327">141327</a>
StackFrame and VerificationTypeInfo must call super.clone() in their clone() method
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=140476">140476</a>
JDOM: IDOMType.setSuperInterfaces(new String [0]) fails to remove existing implements clause
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=132430">132430</a>
[1.5][javadoc] Unwanted missing tag warning for overridden method with parameter containing type variable
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=130752">130752</a>
[comments] first BlockComment parsed as LineComment
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=140156">140156</a>
[1.5][search] Invalid method handle with parameterized parameters when no source is attached
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=123679">123679</a>
[search] missing icon or bad hit in search results
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=141550">141550</a>
Enable now passing tests

<a name="v_671"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2 - 6th June 2006 - 3.2 RELEASE (R3_2)
<br>Project org.eclipse.jdt.core v_671
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_671">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=145248">145248</a>
MD5 checksums missing for JDT Core Batch Compiler JARs

<a name="v_670"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2RC7 - 2nd June 2006 - 3.2 RELEASE CANDIDATE 7
<br>Project org.eclipse.jdt.core v_670
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_670">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=140879">140879</a>
Spontaneous error &quot;java.util.Set cannot be resolved...&quot;

<a name="v_669"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2RC7 - 2nd June 2006
<br>Project org.eclipse.jdt.core v_669
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_669">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=143718">143718</a>
[1.6][compiler] ClassFormatError : wrong stack map frame is used

<a name="v_668"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2RC6 - 26th May 2006 - 3.2 RELEASE CANDIDATE 6
<br>Project org.eclipse.jdt.core v_668
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_668">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=142793">142793</a>
NPE in core.dom.ASTConverter.createFakeEmptyStatement results in java.lang.OutOfMemory
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=142653">142653</a>
[1.5][compiler] JDT Internal Compiler Error: NullPointerException in MethodVerifier.computeInheritedMethods(), Eclipe 3.2RC4

<a name="v_667"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2RC5 - 19th May 2006 - 3.2 RELEASE CANDIDATE 5
<br>Project org.eclipse.jdt.core v_667
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_667">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=142087">142087</a>
[1.5][compiler] NPE in computeCompatibleMethod
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=141800">141800</a>
[1.5][compiler] Necessary cast is marked as "unnecessary" for cast check in 3.2RC4
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=141949">141949</a>
Missing usage restrictions specification
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=142001">142001</a>
[batch][options] Typo in help message
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=141797">141797</a>
Spelling mistakes in JDT error messages
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=141704">141704</a>
[1.5][compiler] Eclipse 3.2RC4 Doesn't recognize implemented method by abstract class

<a name="v_666"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2RC4 - 11th May 2006 - 3.2 RELEASE CANDIDATE 4
<br>Project org.eclipse.jdt.core v_666
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_666">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=139931">139931</a>
[1.5][compiler] Unnecessary cast warning and varargs
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=140569">140569</a>
[1.5][compiler] Ambiguous conversion from generic to parameterized/raw type confuses Eclipse's way of resolving unresolved binary references
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=141155">141155</a>
[1.5][compiler] Enum valueOf(String) method should not be final
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=127766">127766</a>
[1.5][compiler] inconsistent treatment of explicit subclasses of Enum
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=140750">140750</a>
java.lang.IllegalStateException: zip file closed on typing while &quot;Computing additional info&quot;
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=140318">140318</a>
AST: Invalid annotation binding for incomplete code
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=140873">140873</a>
No version range specified when requiring bundles
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=140643">140643</a>
[compiler] $foo() not found in anonymous type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=140301">140301</a>
API documentation of CharOperation.camelCaseMatch/4 is wrong or misleading

<a name="v_665"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2RC3 - 5th May 2006 - 3.2 RELEASE CANDIDATE 3
<br>Project org.eclipse.jdt.core v_665
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_665">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>Reverting change for bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=140262">140262</a>.
     Note that ver665 is no longer used and has been removed from CVS.</li>
</ul>

<a name="v_664"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2RC3 - 4th May 2006
<br>Project org.eclipse.jdt.core v_664
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_664">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=140168">140168</a>
Ambiguous Failure in Connection with Varargs

<a name="v_663"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2RC3 - 4th May 2006
<br>Project org.eclipse.jdt.core v_663
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_663">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=138577">138577</a>
Package content disapear in package explorer
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=139937">139937</a>
CompletionContext not automatically accepted when using IEvaluationContext
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=139689">139689</a>
NPE in packages explorer

<a name="v_662"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2RC3 - 2nd May 2006 
<br>Project org.eclipse.jdt.core v_662
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_662">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=139099">139099</a>
[compiler] Ambiguous method regression error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=139137">139137</a>
Increment build failure
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=139160">139160</a>
IMethod#getParameterNames() should not throw JME if javadoc not parseable
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=139279">139279</a>
Fup of bug 134110, got CCE changing an external jar contents and refreshing the project
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=138999">138999</a>
Regression: Fix for 128258 introduces regression in JavaProject.exists()
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=139569">139569</a>
Batch compiler should check if java home is null when trying to set the extDirs and endorsed dirs
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=139525">139525</a>
[1.5][compiler] Valid generics involved assignment is flagged as an error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=106631">106631</a>
Access rule has no effect


<a name="v_661"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2RC2 - 28th April 2006 - 3.2 RELEASE CANDIDATE 2
<br>Project org.eclipse.jdt.core v_661
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_661">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Released an improvement for performance tests</li>
</ul>

<a name="v_660"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2RC2 - 27th April 2006
<br>Project org.eclipse.jdt.core v_660
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_660">cvs</a>).
<h2>
What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=95839">95839</a>
[ast rewrite] problems with single line comments
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=138672">138672</a>
Bad code completion formatting for Collections.synchronizedMap


<br><a name="v_659"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2RC2 - 27th April 2006
<br>Project org.eclipse.jdt.core v_659
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_659">cvs</a>).
<h2>
What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=129814">129814</a>
NPE due to CompilationUnit.getContents() returning null
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=138684">138684</a>
Javadoc of ASTRewrite.getExtendedSourceRangeComputer() refers to inexistent class
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=135323">135323</a>
[compiler] Anonymous inner class scope error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=138435">138435</a>
[search] Stack trace while searching
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=138167">138167</a>
Java Model Exception when proposal window opened
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=136095">136095</a>
Type Hierarchy incomplete with illegally parameterized superinterfaces
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=138507">138507</a>
exception in .class file editor for classes imported via plug-in import
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=138432">138432</a>
Spec of ICodeAssist#codeSelect() doesn't describe the behavior of empty selection
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=127570">127570</a>
[compiler][null] lazy initialization coding pattern within loops
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=136508">136508</a>
Inner Classes in Interfaces No Longer Compiles
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=97085">97085</a>
(3.1M7) Static import code assist shouldn't propose &lt;package&gt;.*;
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=137984">137984</a>
[search] Field references not found when type is a qualified member type [regression]
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=136580">136580</a>
[ast rewrite] Comma is missing between update expressions in the ForStatement
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=137649">137649</a>
grammar problem in progress message
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=133737">133737</a>
[1.5][compiler] Eclipse compiler compiles program but javac does not (1 of 2)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=129388">129388</a>
[1.5][compiler] Non-public Junit Assert.format accessible to test cases
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=137634">137634</a>
CompilationParticipant not correctly recording new dependencies
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=135729">135729</a>
Cant resolve class A, if class A was enhanced in a post compilation step
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=90438">90438</a>
[compiler][1.5] Two problems: Automatically generated method has wrong generic type; Compilation error with JDK
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=95829">95829</a>
[assist] toArray proposed twice
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=137918">137918</a>
[1.5][compiler] instanceof accepts primitive type as left-hand-side
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=137623">137623</a>
Exception calculating java content assist
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=137744">137744</a>
[compiler] java.lang.ClassFormatError: test/B (Repetitive method name/signature)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=80904">80904</a>
Quick Fix &quot;Assign parameter to new field&quot; doesn't appear with commented type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=83685">83685</a>
[assist] Content assist fails when there's a dot ('.') after type name
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=137203">137203</a>
[1.5][compiler] enclosing parameterized types seem to confuse eclipse's build process
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=137619">137619</a>
Compiler doesn't log exceptions when a runtime exception occurs
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=112030">112030</a>
ContentAssist fails with IllegalArgumentException on primitive array class
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=137456">137456</a>
NPE when trying to view a class file with attached source
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=133491">133491</a>
Missing code assist in annotation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=137298">137298</a>
[compiler] Local variables not reported as not been initialized when more than 64 locals are defined
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=136972">136972</a>
[reconciler] Error in static init blok with inner classes
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=137053">137053</a>
Better error reporting when the output directory is a file
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=126419">126419</a>
ecj should include value of &quot;java.endorsed.dirs&quot; system property in its bootclasspath
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=137087">137087</a>
Open Type - missing matches when using mixed case pattern
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=135997">135997</a>
[AST] invalid source range with recovered node
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=136678">136678</a>
missing @param in internal API (Compiler new constructors, options parameter) + spelling mistake
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=136946">136946</a>
[1.5][compiler] internal compiler error -- ArrayOutOfBoundException
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=136886">136886</a>
Open declaration gives NPE in Scope.minimalErasedCandidates
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=133071">133071</a>
Cycles are wrongly detected.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=136543">136543</a>
[1.5][compiler] Eclipse gives a "name clash" error while javac accepts the code
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=134110">134110</a>
[regression] Does not pick-up interface changes from classes in the build path
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=104293">104293</a>
[1.5][DOM] Extract local doesn't replace all occurences of expression.

<a name="v_658"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2RC1 - 13th April 2006 - 3.2 RELEASE CANDIDATE 1
<br>Project org.eclipse.jdt.core v_658
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_658">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Fixed failing test on Linux and MacOS</li>
</ul>

<h3>Problem Reports Fixed</h3>

<a name="v_657"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2RC1 - 12th April 2006
<br>Project org.eclipse.jdt.core v_657
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_657">cvs</a>).
<h2>
What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=99729">99729</a>
[ast rewrite] first annotation not on new line
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=136313">136313</a>
Open Type is case-sensitive

<a name="v_656"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2RC1 - 12th April 2006
<br>Project org.eclipse.jdt.core v_656
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_656">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>
CamelCase patterns now accept lowercases (see bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=130390">130390</a>).<br>
For example, <code>NuPoEx</code> type string pattern will match <code>NullPointerException</code> type but will not match <code>NoPermissionException</code>.<br>
This allow user to reduce matches list on small or common patterns.<br>
</li>
<li>
Search Engine now returns subclasses as exact matches while searching for implementors of a class
(see bugs <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=124645">124645</a> and
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=122442">122442</a>).
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=81949">81949</a>
[1.5][compiler] Cycle detected / type hierarchy error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=106450">106450</a>
[1.5][assist] Code assist doesn't propose methods when hinting generic methods
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=124645">124645</a>
[search] for implementors does not find subclasses of binary classes
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=133848">133848</a>
-sourcepath should also be supported for jars and zip files
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=136231">136231</a>
encoding of CharOperation.java
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=136016">136016</a>
[refactoring] CCE during Use Supertype refactoring
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=135296">135296</a>
opening a special java file results in an &quot;out of memory&quot; message
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=135838">135838</a>
[search] Improve search progress monitor label
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=108180">108180</a>
[compiler] Sanity check error with try/finally block
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=130390">130390</a>
CamelCase algorithm cleanup and improvement
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=133351">133351</a>
[compiler] No effect assignment diagnosis range isn't correct
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=121734">121734</a>
Cycle in class hierarchy causes infinite loop in Decoration Calculation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=115918">115918</a>
[1.5][compiler] Internal compiler error : NPE in Scope.minimalErasedCandidates
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=129330">129330</a>
strange statement recovery
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=135602">135602</a>
[compiler] Codegen bug for continue statement
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=86293">86293</a>
[search] Search for method declaration with pattern "run()" reports match in binary field instead of anonymous class
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=135292">135292</a>
[compiler] NPE in ProblemReporter.invalidField plus .log swamping
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=135217">135217</a>
Compiler class constructor change in 3.2
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=135083">135083</a>
RangeUtil#isInInterval(...) takes significant amount of time while editing
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=134976">134976</a>
[completion] relevance of some types aren't correct
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=125823">125823</a>
Buildpath marker not of marker type 'buildpath_problem'
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=89686">89686</a>
[1.5][search][enum] Reference to constructors does not include parameters
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=109691">109691</a>
Importing preferences does not update classpath variables
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=128562">128562</a>
Javadoc of ITypeBinding#isAssignmentCompatible() is unclear
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=132191">132191</a>
IMethodBinding.overrides(IMethodBinding) returns true even if the given argument is private.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=135110">135110</a>
Duplicate Assert class in org.eclipse.core.internal.expressions
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=133562">133562</a>
Extract to local variable generates variable called 'enum'
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=108087">108087</a>
Java conventions default formatter settings confused
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110811">110811</a>
[1.5] Raw type binding for reference to non-generic type

<a name="v_655a"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2RC1 - 5th April 2006
<br>Project org.eclipse.jdt.core v_655a
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_655a">cvs</a>).
<h2>
What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=131707">131707</a>
Cannot add classpath variables when starting with -pluginCustomization option
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=134839">134839</a>
[compiler] Incorrect compile errors reported in 1.3 compliance level
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=128423">128423</a>
[1.5][compiler] ClassCastException on illegal code fragment
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=107901">107901</a>
Clarify Javadoc for ASTParser#setUnitName
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=132841">132841</a>
[1.5][compiler] Incorrectly compared method parameters when member types
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=132831">132831</a>
[1.5][compiler] Compiler generate brige when not needed
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=119844">119844</a>
javadoc extraction: type comment
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=131519">131519</a>
JDK with attached source unnavigable.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=92357">92357</a>
ITypeHierarchy#getType() should return an unresolved handle
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=97494">97494</a>
[1.5][compiler] Inappropriate error level and message for generic type mismatch

<a name="v_654"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2RC1 - 4th April 2006
<br>Project org.eclipse.jdt.core v_654
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_654">cvs</a>).
<h2>
What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=134172">134172</a>
Crap Perfomance opening Java file with lots of imports
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=134255">134255</a>
Unoptimal JavaElementInfo construction
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=134645">134645</a>
[1.5][compiler] Java Compiler throws internal exception..
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=134118">134118</a>
[1.5][compiler] 'ambiguous' error on legal static import
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=96648">96648</a>
Batch compiler - error messages for duplicate output, bootclasspath, sourcepath and extdirs entries could be more explicit
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=86813">86813</a>
[compiler] step into switch statement locate wrong line
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=83318">83318</a>
[1.5] 'Open declaration' fails for type variables in class files
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=134345">134345</a>
Problems from CompilationParticipants do not get cleaned up unless there are Java errors
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=133918">133918</a>
[1.5][compiler] Duplicate return; in CastExpression line 258
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=89347">89347</a>
[compiler] public constructor of protected inner class invisible in subclass
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=134064">134064</a>
[1.5][compiler] Duplicate error messages when an annotation value expects a boolean but gets an array

<a name="v_653"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M6 - 30th March 2006 - 3.2 MILESTONE 6
<br>Project org.eclipse.jdt.core v_653
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_653">cvs</a>).
<h2>
What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=134064">134064</a>
recreateModifiedClassFileInOutputFolder only works in default package

<a name="v_652"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M6 - 29th March 2006
<br>Project org.eclipse.jdt.core v_652
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_652">cvs</a>).
<h2>
What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=133738">133738</a>
[compiler] Eclipse compiler compiles program but javac does not (2 of 2)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=133748">133748</a>
Javac task includes all files from the extDirs list

<a name="v_651"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M6 - 29th March 2006
<br>Project org.eclipse.jdt.core v_651
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_651">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Added new option to JavaCore
<pre>
* BUILDER / Recreate Modified class files in Output Folder
*    Indicate whether the JavaBuilder should check for any changes to .class files
*    in the output folders while performing incremental build operations. If changes
*    are detected to managed .class files, then a full build is performed, otherwise
*    the changes are left as is. Tools further altering generated .class files, like optimizers,
*    should ensure this option remains set in its default state of ignore.
*     - option id:         "org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder"
*     - possible values:   { "enabled", "ignore" }
*     - default:           "ignore"
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=131935">131935</a>
[1.5][compiler] Illegal generic conversion allowed.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=129082">129082</a>
[regression] Refresh->Run action deletes all files in 'bin' directory and recompiles all classes
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=132613">132613</a>
NPE in java builder when trying to retrieve a file
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=106090">106090</a>
[generics] Method invocation resolution depends on declaration order
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=133440">133440</a>
[1.5][compiler] JDT allows annotation to have a null default
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=130982">130982</a>
META-INF directories shown as empty META-INF.* packages in J2EE Navigator

<a name="v_650"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M6 - 27th March 2006
<br>Project org.eclipse.jdt.core v_650
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_650">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Types, fields and methods annotated with the @Deprecated annotation are now rendered as deprecated in the Outline view.</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=133292">133292</a>
[compiler] Compiler accepts spurious semicolon in array initialiser
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=89807">89807</a>
Outliner should recognize @Deprecated annotation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=123476">123476</a>
[compiler] misleading error message (root cause not reported)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=133334">133334</a>
Indexing project 3 times during import
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=132494">132494</a>
JavaModelException opening up class file in non java project


<a name="v_649"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M6 - 26th March 2006
<br>Project org.eclipse.jdt.core v_649
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_649">cvs</a>).
<h2>
What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=130359">130359</a>
[compiler][null] wrong warning in try/catch with RuntimeException
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=128962">128962</a>
[compiler][null] incorrect analysis within try finally with a constructor
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=132974">132974</a>
[compiler] missing error on uninitialized final local
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=120892">120892</a>
[assist] inconsistent completions for constructors an methods
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=129371">129371</a>
[compiler][null] False positives from null reference analyzer with break
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=132651">132651</a>
Javadoc of CompletionContext#getTokenEnd() and CompletionProposal#getCompletionLocation are not correct.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=94925">94925</a>
[search] Bad performance on showing package selection dialog when creating new import group
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=131720">131720</a>
[compiler] optimization: the distribution of the number of elements into CharArrayCache instances suggest that smaller instances should be optimized/removed
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=131921">131921</a>
NPE caugth in DefaultBindingResolver.resolveName(Name)

<a name="v_648"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M6 - 22nd March 2006
<br>Project org.eclipse.jdt.core v_648
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_648">cvs</a>).
<h2>
What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=132813">132813</a>
[compiler] NPE in Javadoc.resolve(Javadoc.java:196) + log swamped
<a name="v_647"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M6 - 21st March 2006
<br>Project org.eclipse.jdt.core v_647
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_647">cvs</a>).
<h2>
What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=123943">123943</a>
[1.5][compiler] Invalid ambiguous method error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=129056">129056</a>
compiler fails to detect ambiguous method when autoboxing and implementing an interface
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=132575">132575</a>
Incorrect classpath are not reported inside the log xml
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=128276">128276</a>
Breakpoint Propertie Error.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=129991">129991</a>
[refactoring] Rename sourcefolder fails with JME
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=131459">131459</a>
Java model returns stale resolved source type for binary type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=131937">131937</a>
JDT core adding problem markers to non-java projects
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=132120">132120</a>
[compiler][null] NPE batch compiling JDT/Core from HEAD
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=132072">132072</a>
[compiler][null] AIOOBE in null check compiling com.sun.org.apache.xalan.internal.res.XSLTErrorResources 
from JDK 1.5 source
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=131681">131681</a>
NullPointerException during javaCompletionProposalComputer
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=128547">128547</a>
[compiler] null reference analysis: false positive in try/finally

<a name="v_646"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M6 - 14th March 2006
<br>Project org.eclipse.jdt.core v_646
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_646">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>The ASTParser can now be used without initializing JDT/Core. See bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=87852">87852</a> for details.</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=87852">87852</a>
ASTParser fails when called from another program
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=99114">99114</a>
[search] OOM Exception in Java search
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=121569">121569</a>
[Import/Export] Importing projects in workspace, the default build order is alphabetical instead of by dependency
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=131373">131373</a>
Verbose mode of the ant adapter should be a real verbose mode
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=122650">122650</a>
ASTParser.createBindings(IJavaElement[]) returns wrong element
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=130140">130140</a>
ASTParser should specify failure for IClassFile without source
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=130317">130317</a>
ASTParser with IClassFile as source creates type bindings that are not isEqualTo(..) binary bindings
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=130683">130683</a>
NPE in DeltaProcessingState.addElementChangedListener()
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=130980">130980</a>
[compiler] When the contents of the unit cannot be retrieved, the compiler should report an error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=130330">130330</a>
bogus null check in BindingComparator#isEqual(MethodBinding, MethodBinding, HashSet)

<a name="v_645"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M6 - 7th March 2006
<br>Project org.eclipse.jdt.core v_645
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_645">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Compilation participant reporting problems using <code>BuildContext#recordNewProblems(...)</code> now need to declare the problems
     marker type as being managed for this problems to be persisted as markers by the Java builder. Declaring a managed marker type is
     done using the 'managedMarker' sequence in the 'compilationParticipant' extension point.</li>
<li>Compiler now supports <code>@SuppressWarnings("cast")</code> for silencing unnecessary cast diagnostics.</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=130543">130543</a>
[1.5][compiler] Error creating array of generics of inner class.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=130528">130528</a>
NPE in FieldBinding.getAnnotations(..) for length field of array
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=130516">130516</a>
[1.5][compiler] Add support for "cast" warning token
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=105801">105801</a>
[1.5][compiler] Too many warnings for non-matching types of arguments of varargs call
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=128418">128418</a>
[1.5][compiler] eclipse doesn't emit unchecked warning
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=129957">129957</a>
Binary class file editor shows &quot;implements&quot; instead of &quot;extends&quot; for an interface's super-interfaces
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=104536">104536</a>
[compiler] Ant adapter doesn't use the right source and target values
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=130117">130117</a>
[compiler] Wrong error generated "The method Inner in type Inner can only set one of public / protected / private"
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=129190">129190</a>
[1.5][compiler] Contrary behaviour to Sun's compiler concerning typed classes, non-static inner classes and inheritence
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=129909">129909</a>
Recovered AST - VariableDeclaratorId isn't recovered
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=130017">130017</a>
[1.5][compiler] @Override cannot be used for static methods
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=100919">100919</a>
Closing or deleting projects leads to Java model error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=129624">129624</a>
AccessRuleSet#messageTemplates takes a lot of memory
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=117758">117758</a>
[compiler] private dropped from inner class constructor
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=128219">128219</a>
Builder participants should create their own marker types
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=61189">61189</a>
Error messages with "AssignmentOperator ArrayInitializer" could be improved
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=128063">128063</a>
[1.5][compiler] Compiler reports errors against compilabale code
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=116072">116072</a>
cached classpath containers not removed when project deleted
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=119238">119238</a>
[1.5][compiler] Unchecked generic type operation warning if access to static field of parameterized type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=122775">122775</a>
[1.5][compiler] StackOverflow in compiler
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=114140">114140</a>
assertion failed when opening a class file not not the classpath

<a name="v_644"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M6 - 28th February 2006
<br>Project org.eclipse.jdt.core v_644
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_644">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>For 1.5 targets (or when toggling preference for Inlining Finally Blocks), the compiler is inlining finally blocks
at every exit point inside a try statement. With fix for bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=128705">128705</a>,
the inlining got smarter, and identical exit point are now sharing the same inlined finally block (to be truly identical,
exit points must denote the same break/continue label, or be return from void method, or return the same constant or null value.</li>
<li>Fix for <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=127628">bug 127628</a> required the index version to be incremented. 
     Indexes will be automatically regenerated upon subsequent search queries (accounting for indexing notification in search progress dialogs).
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=128814">128814</a>
[prefs] NPEs in log during tests
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=127628">127628</a>
[index] CodeAssist doesn't filter deprecated types
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=128848">128848</a>
closing bracket added into comment upon format
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=128258">128258</a>
Project name of java elements from external file is _E_X_T_E_R_N_A_L_P_R_O_J_E_C_T_
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=127241">127241</a>
SIOOBE in StubUtility.hasConstantName during quick fix
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=127395">127395</a>
AST: SimpleName must not be empty
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=128014">128014</a>
[compiler][null] invalid analysis when redundant check is done
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=129555">129555</a>
[dom] The length of a recovered fake SimpleName should be 0
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=129241">129241</a>
[Javadoc] deprecation warning wrongly reported when ignoring Malformed Javadoc comments
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=128877">128877</a>
[search] reports inexistent IMethod for binary constructor of inner class
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=127919">127919</a>
[compiler][null] non String objects references involved into string concatenation should not raise null ref. warnings
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=113371">113371</a>
Performance: discardWorkingPerCopyInfo emptys Cache before building Delta
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=128705">128705</a>
[Compiler][1.5] Jsr inlining limitation in the compiler
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=129305">129305</a>
[compiler] Could optimize "return null" in presence of subroutine
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=129306">129306</a>
[compiler] inlineJSR may cause entering twice finally block
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=129096">129096</a>
Wrong positions for array of parameterized type as a parameter
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=128961">128961</a>
AST: errors with parentheses expressions in for-init initialisers
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=128960">128960</a>
AST: errors with parameter array and full qualified types
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=129361">129361</a>
Uninitialized fields in jdt/core code
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=102160">102160</a>
[compiler][1.5] Only first error is reported on circularity references between annotations
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=127275">127275</a>
[compiler] Generalize ProblemReporter#localSourceEnd
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=128840">128840</a>
[compiler] Wrong warning for unnecessary semicolon as else statement
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=129316">129316</a>
[compiler] Incremental compile confuses unsound type hierarchy and deprecation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=125956">125956</a>
[1.5][compiler] Failed to compile Jaxb 2.0
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=129142">129142</a>
VariableDeclarator isn't recovered by statments recovery
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=128594">128594</a>
Javadoc problems with category CAT_INTERNAL
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=128169">128169</a>
[codeassist] Type parameter name of method declaration proposal must not create conflit
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=128823">128823</a>
ArrayIndexOutOfBoundsException in log



<a name="v_643"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M6 - 21st February 2006
<br>Project org.eclipse.jdt.core v_643
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_643">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>In problem view, all optional errors treated as fatal are now grouped into the "Fatal errors" category.
Note that there is an option to control whether optional errors are intended to be fatal or not, by default
they are considered fatal (see <code>Preferences&gt;Java&gt;Compiler&gt;Building&gt;Treat configurable errors like fatal errors...</code></li>
<li>Build states for very large projects should now save in a fraction of the time.</li>
<li>Diagnosis for assignment with no effect can now recognize following patterns:
  <ul>
  <li><code>int i = i = 0;</code></li>
  <li><code>i = i = 0;</code></li>
  <li><code>i = ++i;</code></li>
  </ul></li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=106446">106446</a>
[compiler] "Cannot be resolved to a type" errors for some default top-level class
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=128045">128045</a>
[assist] Autocomplete on variable names fails if name starts with a part of an existing prefix
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=100369">100369</a>
[compiler] No effect assignment diagnosis could be made smarter
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=127323">127323</a>
context assist exception when trying to autocomplete inside a malformed enum switch
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=127244">127244</a>
[compiler] Null reference analysis doesn't understand assertions
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=128560">128560</a>
[compiler] Java 1.4 compiler (UI?) incorrectly reports incompatible return type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=128077">128077</a>
AST - instanceof - getLength returns wrong length
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=127996">127996</a>
Performance: long time spent in State.write(..) looping over ArrayList&lt;char[][]&gt;
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=128389">128389</a>
[compiler][1.5] generic inner type cannot extend Throwable
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=127583">127583</a>
[1.5][compiler] Call to constructor with mismatched type parameter and arguement not detected
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=128217">128217</a>
Grouping all fatal problems together


<a name="v_642"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M5 - 16th February 2006 - 3.2 MILESTONE 5
<br>Project org.eclipse.jdt.core v_642
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_642">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Added API <code>CategorizedProblem#getExtraMarkerAttributeNames()</code> and <code>getExtraMarkerAttributeValues()</code> to allow to 
	specify extra attributes in problem markers.</li>
<li>Added 'managedMarker' sequence on 'compilationParticipant' extension point to declare marker types that are persisted by the Java builder.</li>
</ul>

<h3>Problem Reports Fixed</h3>


<a name="v_641"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M5 - 15th February 2006
<br>Project org.eclipse.jdt.core v_641
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_641">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Fix for <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=128033">bug 128033</a> required the index version to be incremented. 
     Indexes will be automatically regenerated upon subsequent search queries (accounting for indexing notification in search progress dialogs).
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=128033">128033</a>
[1.5][search] Not all references are found in standard annotations
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=128008">128008</a>
type parameter with final bound is categorized as non-optional


<a name="v_640"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M5 - 15th February 2006
<br>Project org.eclipse.jdt.core v_640
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_640">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>The Java model now better accommodates very big JAR files (i.e. containing lots of packages). Before 3.2 M5, such JAR files would 
cause the Java model cache to overflow frequently, which induced poor performance, since the same JAR file kept being read over 
and over again. A workaround was to start Eclipse with more memory to enjoy good performance again (as the cache size is a function 
of the memory size).
<p>JAR files are now read more selectively, and thus interesting portions remain in the cache longer without consuming lots of memory.
User editing experience is thus significantly improved on large workspaces containing big JARs. 
As a consequence, our experiments show that the memory requirement for developing Eclipse in Eclipse can be lowered 
to 128MB only (i.e. passing -Xmx128m to the VM) as opposed to 256MB as currently specified in the eclipse.ini file. 
</li>
<li>Removed <code> IMethodBinding#isOverriding()</code> API introduced during 3.2 in DOM AST, as it doesn't meet
client expectation, who isn't even using it (also see bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=90660">90660</a>).
<li>
Added optional compiler diagnosis for signaling fall-through switch cases.
<pre>
* COMPILER / Reporting Switch Fall-Through Case
*    When enabled, the compiler will issue an error or a warning if a case may be
*    entered by falling through previous case. Empty cases are allowed.         *     
*     - option id:         "org.eclipse.jdt.core.compiler.problem.fallthroughCase"
*     - possible values:   { "error", "warning", "ignore" }
*     - default:           "ignore"
</pre>
Fall-through warnings can be silenced using <code>@SuppressWarnings("fallthrough")</code>.<br>
Also see bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=67836">67836</a> for details.
</li></ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=67836">67836</a>
[compiler] warning on fall through
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=127393">127393</a>
uncategorized problems
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=127213">127213</a>
Flags class missing methods

<a name="v_639"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M5 - 13th February 2006
<br>Project org.eclipse.jdt.core v_639
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_639">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Code Assist can filter deprecated types and members.<br>
When filtering is enabled all deprecated types and members aren't proposed unless
they are in the same compilation unit as the completion location.<br>
Added new options to control this new behavior.
<pre>
 *  CODEASSIST / Activate Deprecation Sensitive Completion
 *    When active, completion doesn't show deprecated members and types.
 *     - option id:         "org.eclipse.jdt.core.codeComplete.deprecationCheck"
 *     - possible values:   { "enabled", "disabled" }
 *     - default:           "disable"
 * 
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=126564">126564</a>
[1.5][compiler]Inconsistent error reporting between static import and direct field access
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=127239">127239</a>
BuildContext needs to be spec'ed
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=127296">127296</a>
[codeasist]Add the ability to hide deprecated methods from Code Assist

<a name="v_638"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M5 - 13th February 2006
<br>Project org.eclipse.jdt.core v_638
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_638">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Added optional null reference analysis for local variables. It can be activated using the following
	preference:
	<code>Window&gt;Preferences&gt;Java&gt;Compiler&gt;Errors/Warnings&gt;Potential programming problems&gt;Null reference</code>.
	Also see bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110030">110030</a> for details.
	<br>Note that the analysis is fairly conservative, aligned on definite assignment rules.  It is intentionally not complaining on all
	possible cases, but only considering these for which a suspicion gets introduced (e.g. if later on a null check is performed).
	The analysis could be further improved by introducing annotations (@CanBeNull, @CannotBeNull) but these would need to
	get standardized first. 
	<br>	Null reference warnings can be silenced using <code>@SuppressWarnings("null")</code>.</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=126803">126803</a>
Compile error in LocationElementTokenizer.java in source build
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=127255">127255</a>
[compiler] Compiler incorrectly reports &quot;variable may not have been initialized&quot;
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=125731">125731</a>
[api] Separate category id for 'type restriction' problems
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=116647">116647</a>
[compiler] Incorrect warning about unnecessary cast


<a name="v_637"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M5 - 10th February 2006
<br>Project org.eclipse.jdt.core v_637
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_637">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Added constants in the code formatter.<br>
<code>org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_INDENT_BODY_DECLARATIONS_COMPARE_TO_ANNOTATION_DECLARATION_HEADER</code>
<code>org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_INSERT_NEW_LINE_IN_EMPTY_ANNOTATION_DECLARATION</code>
<br>See bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=126625">126625</a> for details.</li>
<li>Code Assist: Improve variable name completion<br>
Variable name completion try to keep typed characters even if they don't match to a part of the type name.<br>
e.g: Element rootE| is completed to Element rootElement.
</li>
<li>Added API <code>org.eclipse.jdt.core.CorrectionEngine#getAllWarningTokens()</code> to 
    get all the valid warning tokens, which can be used into <code>@SuppressWarnings</code>
    annotations. See bug 
    <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=126326">126326</a> for details.</li>
<li>Changed the way to flag DOM AST nodes as RECOVERED.<br>
Now only nodes which really contains added/removed/replaced tokens are flagged. A parent of these kind of node isn't flagged.
Sometimes our heuristic can't recognize the really recovered node, so in this case all potentially recovered nodes are flagged.</li>
<li>Fix for bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=119203">119203</a>
has been removed due to bad side effects (see bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=127048">127048</a>)</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=127048">127048</a>
[search] References to Java element 'CorrectionEngine' not found
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=98684">98684</a>
[search] Code assist shown inner types of unreleated project
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=127078">127078</a>
[compiler] inappropriate error location for QualifiedNameReferences
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=127181">127181</a>
New API elements missing @since
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=127144">127144</a>
beginTask/done not called on progress monitor to ASTParser
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=123470">123470</a>
AST: new type IResolvedAnnotation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=108539">108539</a>
Error popup at breakpoint in tomcat project
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=99006">99006</a>
Incorrect warning when a non-varargs method overrides a varargs method.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=120563">120563</a>
Javadoc has many references to .java where all java source files are meant
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=42253">42253</a>
[plan][dom/ast] Make AST more robust against syntax errors
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=125006">125006</a>
ClassFile wastes memory
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=126156">126156</a>
IBinding#getJavaElement() should spec 'null' for anonymous constructor
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=126326">126326</a>
[api] all supported SuppressWarning tokens
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=121652">121652</a>
100% CPU usage when changing application focus or saving
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=120838">120838</a>
typos in spec of ICodeAssist
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=126227">126227</a>
default constructor not resolving for method-level classes
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=124525">124525</a>
[assist] Smarter Autocompletion for variable names
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=126625">126625</a>
Added missing options for formatting annotation types
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=126673">126673</a>
NPE in Buffer.addBufferChangedListener

<a name="v_636"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M5 - 7th February 2006
<br>Project org.eclipse.jdt.core v_636
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_636">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Added API to ASTRewrite to get actual value of a property as managed by the rewriter. See bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=96663">96663</a> for details.</li>
<li>Added an application to format code in a headless environment. See bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=75333">75333</a> for details.</li>
<li>Java projects can now depend on other Java projects that have replaced the default builder with their own builder, such as an Ant builder.
We will now trust that the Ant build was successful and propagate any changes to the affected class files.
<br>Note: When projects are associated with the Java builder, it is able to track structural changes to classfiles (signatures etc...) and only recompile
dependents of structurally changed classfiles. In the absence of a Java builder on a prereq project, all modified classfiles will be considered as
(potentially) structurally changed; and thus recompilation will be less optimal.</li>
<li>Access restriction warnings (discouraged &amp; non-accessible) can now be silenced using <code>@SuppressWarnings("restriction")</code>.
     Note: if certain restrictions are configured as errors, the annotation has no effect. </li>
<li>Added API <code>org.eclipse.jdt.core.formatter.CodeFormatter#createIndentationString(int)</code> to return the indentation string corresponding to the given indentation level.<br>
See bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=111446">111446</a> for details.</li>
<li>Added new class <code>org.eclipse.jdt.core.formatter.IndentManipulation</code> to deal with indentations.<br>
See bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=111446">111446</a> for details.</li>
<li>Fix for <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=124469">bug 124469</a> required the index version to be incremented. 
     Indexes will be automatically regenerated upon subsequent search queries (accounting for indexing notification in search progress dialogs).
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=99497">99497</a>
In some cases Java project refresh should kick clean build
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=126598">126598</a>
[DOM][AST] String[] s =  {&quot;&quot;,,,} leads to wrong positions after conversion
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=126347">126347</a>
AIOOBE in CompilerUnitScope
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=126148">126148</a>
IAE when typing String[] s =  {"",,,};
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=126330">126330</a>
Type reference not found in jar file if sources was not already opened
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=126321">126321</a>
[options] Add constant in JavaCore for nullReference
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=126160">126160</a>
method from outer scope not resolved with erroneous arguments
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=97693">97693</a>
[1.5][compiler] Unchecked generic cast gives false compiler error.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=125965">125965</a>
[prefs] &quot;Export/Import preferences&quot; should let user to choose wich preference to export/import
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=124469">124469</a>
[1.5][search] does not find references to enum type in binary annotation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=75333">75333</a>
[format] standalone code reformatter
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=122987">122987</a>
[1.5][compiler] Boxing conversion should be performed in conditional expression
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=125807">125807</a>
NPE in ResolvedMemberValuePair#init()
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=79359">79359</a>
Project cannot depend on a project built by ant
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=126091">126091</a>
[1.5][compiler] Java compiler generates extra field for enums with abstract methods
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=126191">126191</a>
Code formatter doesn't format properly empty enums
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=126177">126177</a>
[1.5][compiler] Visibility issue with intersection type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=126180">126180</a>
[1.5][compiler] NPE reporting invalid enclosing type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=114456">114456</a>
@SuppressWarnings for access restriction
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=126087">126087</a>
[1.5][compiler] Java compiler generates incorrect byte code for empty enums
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=124611">124611</a>
IAE in Signature.createCharArrayTypeSignature
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=90660">90660</a>
[plan] Consider surfacing override information available in compiler AST in DOM AST
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=111446">111446</a>
API to work with tabWidth/indentWidth and indents
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=126015">126015</a>
reconcile does not provide AST if there's no problem requestor
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=125903">125903</a>
[javadoc] Treat whitespace in javadoc tags as invalid tags
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=125301">125301</a>
Handling of classes with $ in class name.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=125961">125961</a>
Add &quot;emacs style&quot; output to batch compiler
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=125953">125953</a>
UnconditionalFlowInfo.java has non-UTF-8 character
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=124853">124853</a>
[compiler] Compiler generates wrong code (try-catch-finally)


<a name="v_635"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M5 - 31st January 2006
<br>Project org.eclipse.jdt.core v_635
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_635">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Added API <code>org.eclipse.jdt.core.dom.IVariableBinding#isParameter()</code> in order to fix bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=106545">106545</a>.</li>
<li>Added API <code>BindingKey#toSignature()</code> to transform a binding key into a resolved signature.</li>
<li>Added marker attribute "categoryId" onto Java problem markers.
<li>Added API <code>WorkingCopyOwner#newWorkingCopy(String,IClasspathEntry[],IProblemRequestor,IProgressMonitor)</code>
     for editing compilation units outside the workspace.</li>
<li>The temporary option JavaCore.COMPILER_STATEMENTS_RECOVERY is removed</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=119452">119452</a>
CategorizedProblem's category should be available from markers
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=125676">125676</a>
@category should not read beyond end of line
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=125360">125360</a>
IJavaProject#setOption() doesn't work if same option as default
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=106545">106545</a>
API: IVariableBinding.isMethodParameter
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=125641">125641</a>
Problems enabling AST with recovery
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=125675">125675</a>
@category not reflected in outliner in live fashion
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=125570">125570</a>
[1.5][compiler] Named inner inner classes have illegal names
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=124943">124943</a>
[1.4][compiler] 1.4 Compiler Compliance not working for compareTo
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=124810">124810</a>
Strange field binding has inconsistent hierarchy
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=125291">125291</a>
Enable conditional loading of APT
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=125178">125178</a>
[search] AIOOBE in PatternLocator when searching for dependency extent from manifest
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=124388">124388</a>
[DOM AST] Method defaults not resolved
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=125270">125270</a>
ASTParser fails to parse text to ArrayInitializer expression
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=100869">100869</a>
[1.5][compiler] The eclipse compiler thinks my method is ambiguous but javac does not
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=65637">65637</a>
[model] Excluded package still in Java model
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=125217">125217</a>
Two failures in the BatchCompilerTests on MacOS
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=124290">124290</a>
AbstractImageBuilder writeClassFileBytes creates resources before calling setDerived
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=124145">124145</a>
Questions on IAccessRule.ignoreIfBetter
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=125047">125047</a>
IMethodBinding#getJavaElement() should spec 'null' for default constructor
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=120079">120079</a>
[api] need solution for BindingKey#internalToSignature()
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=125036">125036</a>
ResolvedMemberValuePair#buildDOMValue(..) uses &quot;new Boolean(..)&quot;
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=121715">121715</a>
Util#getJavaLikeExtensions doesn't consider Java-like content types
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=125067">125067</a>
Should not resolved binary fields/methods when computing hierarchy
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=61013">61013</a>
[plan][model] Minimal support for editing units outside workspace

<a name="v_634"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M5 - 24th January 2006
<br>Project org.eclipse.jdt.core v_634
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_634">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Added EFS support for zip and jar files. JDT/Core now fully supports EFS.</li>
<li>Added support for optional classpath entries. When optional, a missing entry is not complained
     against, and simply ignored.
     In order to be optional, an entry must carry an <code>IClasspathAttribute#OPTIONAL</code> 
     extra attribute. The possible values for this attribute are <code>"true"</code> or <code>"false"</code>. 
	 When not present, <code>"false"</code> is assumed. If the value of this attribute is <code>"true"</code>, 
	 the classpath entry is optional. </li>
<li>Added support for statement recovery in Parser<br>
	 Currently this new behavior is incomplete (mapping non-terminals -> terminals) and disabled. The option JavaCore.COMPILER_STATEMENTS_RECOVERY must be set to ENABLED to use it (It's a temporary option).</li>
<li>Added API for DOM ASTNode flag: <code>ASTNode.RECOVERED</code><br>
	 It is a flag constant indicating that this node or a part of this node is recovered
	 from source that contains a syntax error detected in the vicinity.</li>
<li>Added API: <code>ASTParser#setStatementsRecovery(boolean enabled)</code><br>
	 This method allow to enable statements recovery for ASTParser.
	 Statements recovery is disabled by default.</li>
<li>Added API: <code>ICompilationUnit#reconcile(int astLevel, boolean forceProblemDetection, boolean enableStatementsRecovery, WorkingCopyOwner owner, IProgressMonitor monitor)</code><br>
	 This method allow to enable statements recovery for reconcile operation.</li>
<li>Added two warning tokens to the batch compiler options: <code>discouraged</code> and 
    <code>forbidden</code>, so as to suppress warnings about access rules restrictions.</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110030">110030</a>
[compiler] Provide support for null reference analysis
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=99620">99620</a>
[compiler] The batch compiler should not print to the console when taking another output stream in input
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=124212">124212</a>
Eclipse compiler produces incomplete debug info for variables
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=124533">124533</a>
[batch] Ability to turn off discouraged references warnings
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=124471">124471</a>
ResolvedAnnotations are not completely resolved
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=124346">124346</a>
[1.5][compiler] Unexpected deprecation warning when @deprecated tag and @Deprecated annotation are mixed
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=123522">123522</a>
@SuppressWarnings("unused") does not suppress "unused import" warning
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=122442">122442</a>
[search] API inconsistency with IJavaSearchConstants.IMPLEMENTORS and SearchPattern
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=123437">123437</a>
Support EFS for zip/jar files
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=124296">124296</a>
Recovered ast nodes don't nest properly
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=124101">124101</a>
[compiler] NPE when resolving array initializer in fault tolerant mode
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=95056">95056</a>
[1.5][compiler] @Deprecated not recognized
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=123514">123514</a>
[1.5] [assist]ArrayStoreException in content assist for malformed field
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=122615">122615</a>
validate classpath propose to exlude a source folder even though exlusion patterns are disabled
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=124117">124117</a>
Optional classpath entry

<a name="v_633"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M5 - 17th January 2006
<br>Project org.eclipse.jdt.core v_633
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_633">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Added API <code>IAccessRule#IGNORE_IF_BETTER</code> that indicates that the rule should be ignored if a better rule is found.
     E.g. if a rule <code>K_NON_ACCESSIBLE | IGNORE_IF_BETTER</code> matches type p.X and a rule <code>K_DISCOURAGED</code> 
     that also matches p.X is found after the first one, then p.X will be reported as discouraged.</li>
<li>Added the support to compute the stack map frames (requires a 6.0 VM to run). See bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=109980">109980</a> for details.
<br>This is still experimental.</li>
<li>Added API for the configuration of the Import Rewrite: <code>ImportRewrite#setImportOrder()</code>, <code>ImportRewrite#setOnDemandImportThreshold()</code> and
<code>ImportRewrite#setStaticOnDemandImportThreshold()</code>. For compatibility reasons the actual configuration option values stay in
JDT.UI</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=98127">98127</a>
Access restrictions started showing up after switching to bundle
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=122316">122316</a>
Problems using new Compilation Participant extension point
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=123893">123893</a>
CCE in ResolvedAnnotation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=124003">124003</a>
JavaCore should spec 1.6 compliance/source compatibility
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=87718">87718</a>
Listener on build process on a per file basis.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=122881">122881</a>
[1.5][compiler] Multiple interface inheritance is incompatible with Sun compiler
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=109980">109980</a>
[plan] Add support for StackMapTable attribute as per jsr-202
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=122995">122995</a>
[1.5][compiler] Access rules don't apply to generic types
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=123721">123721</a>
two types of 'remove' for TODO task tags
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=123396">123396</a>
Regression: NameLookup creation longs around 1mn on project with heavy hiearchy (200 src folders * 200 packages)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=103615">103615</a>
[organize import] Organize imports should have separate "limit" for static import *-ing

<a name="v_632"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M5 - 10th January 2006
<br>Project org.eclipse.jdt.core v_632
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_632">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Added Import Rewrite as API (<code>org.eclipse.jdt.core.dom.ImportRewrite</code>). The import rewriter is used to add new imports according
to a user specified import order. See bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=73054">73054</a> for details.</li>
<li>Added new APIs for checking modifiers (<code>org.eclipse.jdt.core.dom.Modifier#isPublic(), org.eclipse.jdt.core.dom.Modifier#isStatic(), ...</code>). See bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=122460">122460</a> for details.</li>
<li>Added new API <code>org.eclipse.jdt.core.IJavaElement#String getAttachedJavadoc(IProgressMonitor monitor)</code>. See bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=122506">122506</a> for details.
The former API <code>org.eclipse.jdt.core.IJavaElement#String getAttachedJavadoc(IProgressMonitor monitor, String defaultEncoding)</code> has been deprecated.</li>
<li>Added new API <code>org.eclipse.jdt.core.dom.ITypeBinding#getComponentType()</code> in order to retrieve the binding 
corresponding to the component type of the array binding. See bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=120264">120264</a> for details.
This API is still subject to change before 3.2 release.
</li>
<li>
Added optional compiler diagnosis for signaling method parameter assignments.
<pre>
* COMPILER / Reporting Parameter Assignment
*    When enabled, the compiler will issue an error or a warning if a parameter is
*    assigned to.
*     - option id:         "org.eclipse.jdt.core.compiler.problem.parameterAssignment"
*     - possible values:   { "error", "warning", "ignore" }
*     - default:           "ignore"
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=123096">123096</a>
[javadoc][assist] @linkplain no longer proposed when 1.4 compliance is used
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=123078">123078</a>
[1.5][compiler] Problem inferring from #getClass() invocation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=103839">103839</a>
Format of variablesAndContainers.dat doesn't scale well
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=121026">121026</a>
[javadoc][assist] @link method proposal has superfluous space
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=120130">120130</a>
IField.getConstant() fails for a certain constant
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=122755">122755</a>
Exceptions thrown if you type a period immediately after final slash of Javadoc inside a method
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=117282">117282</a>
Package declaration inserted on wrong CU while copying class if names collide and editor opened
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=118507">118507</a>
Autobuild churn during classpath init
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=119249">119249</a>
codeResolve, search, etc. don't work on constructor of binary inner class
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=118823">118823</a>
[model] Secondary types cache not reset while removing _all_ secondary types from CU
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=122763">122763</a>
[builder] OutOfMemoryError while cleaning org.eclipse.jdt.core project - this fix triggers a
full rebuild of the workspace
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=119161">119161</a>
classes in &quot;deep&quot; packages not fully recognized when using tight inclusion filters
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=108830">108830</a>
[compiler] Improve switch fault-tolerance
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=122610">122610</a>
[1.5][compiler] Qualified this has generic type binding instead of parameterized one
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=121076">121076</a>
Wrong field gets renamed
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=73054">73054</a>
[import rewrite] Make Import Rewriter API
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=122618">122618</a>
[assist][javadoc] Javadoc code assist should support @category tag
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=122616">122616</a>
[javadoc] IMember.getCategories() only returns first category
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=53773">53773</a>
[compiler] Warning on assignments to parameters
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=122460">122460</a>
Why is checking a modifier so code intensive
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=120816">120816</a>
[search] NullPointerException at ...jdt.internal.compiler.lookup.SourceTypeBinding.getMethods
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=76266">76266</a>
[compiler] Access restriction should also apply to inherited members - this fix triggers a
full rebuild of the workspace
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=122506">122506</a>
[hovering] javadoc hover shows a broken string from DBCS javadoc html files.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=116833">116833</a>
IMethodBinding#isEqualTo(..) returns true for methods in anonymous classes with error in parent
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=120264">120264</a>
[api] have array binding X[][][], want X[][] and X[]
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=116615">116615</a>
Use a publicID in the DOCTYPE of the compilation XML log
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=120263">120263</a>
[compiler] missing binding on array initializer
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=120410">120410</a>
Wasted space on problems due to large underlying char[]
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=120875">120875</a>
Javadoc extraction might includes optional annotation type member information for an annotation type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=121187">121187</a>
Javadoc contains undefined HTML entity &amp;ast;
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=119175">119175</a>
[compiler] Wrong pc in the line number table attribute
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=118897">118897</a>
ASTParser resolves bindings without request


<a name="v_631"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M4 - 14th December 2005 - 3.2 MILESTONE 4
<br>Project org.eclipse.jdt.core v_631
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_631">cvs</a>).
<h2>
What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=120902">120902</a>
Member.getJavadocRange() causes AIOOBE


<a name="v_630"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M4 - 14th December 2005
<br>Project org.eclipse.jdt.core v_630
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_630">cvs</a>).
<h2>
What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=120847">120847</a>
[javadoc] AIOOBE while getting attached javadoc in Javadoc view

<a name="v_629"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M4 - 13th December 2005
<br>Project org.eclipse.jdt.core v_629
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_629">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>The constant <code>JavaCore.CODEASSIST_TIMEOUT_FOR_PARAMETER_NAME_FROM_ATTACHED_JAVADOC</code> has been deprecated and it will be removed
after M4. Use <code>JavaCore.TIMEOUT_FOR_PARAMETER_NAME_FROM_ATTACHED_JAVADOC</code> instead.</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=120640">120640</a>
[javadoc] Open External Javadoc fails for nested binary types
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=120597">120597</a>
JME extracting Javadoc for public fields from 1.5 doc
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=120637">120637</a>
javadoc extraction: includes field title for Java 5 classes
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=120559">120559</a>
Getting Javadoc from attached Javadoc gives JavaModelException
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=120545">120545</a>
Misleading constant: CODEASSIST_TIMEOUT_FOR_PARAMETER_NAME_FROM_ATTACHED_JAVADOC
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=120522">120522</a>
[assist] No proposal in @Target annotation attributes

<a name="v_628"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M4 - 12th December 2005
<br>Project org.eclipse.jdt.core v_628
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_628">cvs</a>).
<h2>
What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=120350">120350</a>
[model] Secondary type not found by code resolve

<a name="v_627"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M4 - 9th December 2005
<br>Project org.eclipse.jdt.core v_627
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_627">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Change the default value of JavaCore#CODEASSIST_CAMEL_CASE_MATCH to "enabled" as
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=114098">bug 114098</a> is fixed.</li>
<li>Added support for EFS on non zip file. Support for zip and jar files is blocked by 
     <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=119244">bug 119244</a></li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=120092">120092</a>
[search] Java like extensions functionality causes performance issue for search engine
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=117740">117740</a>
Parameter names completion should be done asynchronoulsy
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110422">110422</a>
[search] BasicSearchEngine doesn't find all type declarations
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110291">110291</a>
[search] BasicSearchEngine return constructor declarations that doesn't exist in source
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=83064">83064</a>
[plan][1.5] Unidentical bindings for declaration of and reference to Class.MethodArray
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=119545">119545</a>
[search] Binary java method model elements returned by SearchEngine have unresolved parameter types

<a name="v_626"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M4 - 6th December 2005
<br>Project org.eclipse.jdt.core v_626
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_626">cvs</a>).
<h2>
What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=119430">119430</a>
Potential performance problem in getViolatedRestriction()
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=113944">113944</a>
[plan] Support for refactoring of JAR files

<a name="v_625"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M4 - 6th December 2005
<br>Project org.eclipse.jdt.core v_625
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_625">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Added API methods on IJavaProject to find secondary types while searching for type
on a project (see bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=118789">118789</a>):
<pre>
	/**
	 * Same functionality as {@link #findType(String)} but also look for secondary
	 * types if given name does not match a compilation unit name.
	 * 
	 * @param fullyQualifiedName the given fully qualified name
	 * @param progressMonitor the progress monitor to report progress to,
	 * 	or <code>null</code> if no progress monitor is provided
	 * @exception JavaModelException if this project does not exist or if an
	 *		exception occurs while accessing its corresponding resource
	 * @return the first type found following this project's classpath 
	 * with the given fully qualified name or <code>null</code> if none is found
	 * @see IType#getFullyQualifiedName(char)
	 * @since 3.2
	 */
	IType findType(String fullyQualifiedName, IProgressMonitor progressMonitor) throws JavaModelException;
	/**
	 * Same functionality as {@link #findType(String, WorkingCopyOwner)}
	 * but also look for secondary types if given name does not match
	 * a compilation unit name.
	 * 
	 * @param fullyQualifiedName the given fully qualified name
	 * @param owner the owner of the returned type's compilation unit
	 * @param progressMonitor the progress monitor to report progress to,
	 * 	or <code>null</code> if no progress monitor is provided
	 * @exception JavaModelException if this project does not exist or if an
	 *		exception occurs while accessing its corresponding resource
	 * @return the first type found following this project's classpath 
	 * with the given fully qualified name or <code>null</code> if none is found
	 * @see IType#getFullyQualifiedName(char)
	 * @since 3.2
	 */
	IType findType(String fullyQualifiedName, WorkingCopyOwner owner, IProgressMonitor progressMonitor) throws JavaModelException;
	/**
	 * Same functionality as {@link #findType(String, String)} but also look for
	 * secondary types if given name does not match a compilation unit name.
	 * 
	 * @param packageName the given package name
	 * @param typeQualifiedName the given type qualified name
	 * @param progressMonitor the progress monitor to report progress to,
	 * 	or <code>null</code> if no progress monitor is provided
	 * @exception JavaModelException if this project does not exist or if an
	 *		exception occurs while accessing its corresponding resource
	 * @return the first type found following this project's classpath 
	 * with the given fully qualified name or <code>null</code> if none is found
	 * @see IType#getFullyQualifiedName(char)
	 * @since 3.2
	 */
	IType findType(String packageName, String typeQualifiedName, IProgressMonitor progressMonitor) throws JavaModelException;
	/**
	 * Same functionality as {@link #findType(String, String, WorkingCopyOwner)}
	 * but also look for secondary types if given name does not match a compilation unit name.
	 * 
	 * @param packageName the given package name
	 * @param typeQualifiedName the given type qualified name
	 * @param owner the owner of the returned type's compilation unit
	 * @param progressMonitor the progress monitor to report progress to,
	 * 	or <code>null</code> if no progress monitor is provided
	 * @exception JavaModelException if this project does not exist or if an
	 *		exception occurs while accessing its corresponding resource
	 * @return the first type found following this project's classpath 
	 * with the given fully qualified name or <code>null</code> if none is found
	 * @see IType#getFullyQualifiedName(char)
	 * @since 3.2
	 */
	IType findType(String packageName, String typeQualifiedName, WorkingCopyOwner owner, IProgressMonitor progressMonitor) throws JavaModelException;
</pre>
Note that previously existing find type API methods:
<ul>
<li><code>IJavaproject#findType(String)</code></li>
<li><code>IJavaproject#findType(String, WorkingCopyOwner)</code></li>
<li><code>IJavaproject#findType(String, String)</code></li>
<li><code>IJavaproject#findType(String, String, WorkingCopyOwner)</code></li>
</ul>
will <b>not</b> find secondary types (same behavior than for 3.1 version).<br>
This means that fix for bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36032">36032</a>
was slightly modified as it introduced an non-deterministic behavior of these API methods
(see bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=118789">118789</a> for the whole story...).
</li>
<li>Added API <code>SearchParticipant#removeIndex(IPath)</code> to remove both index file
    from a given location and its corresponding Index in IndexManager cache.
</li>
<li>Added API <code>IJavaProject#setRawClasspath(IClasspathEntry[], IPath, boolean, IProgressMonitor)</code>
     to change the output location as well as the classpath without touching resources.</li>
<li>Added constant constant JavaCore#JAVA_SOURCE_CONTENT_TYPE to retrieve the Java source content type from 
     the content type manager (see org.eclipse.core.runtime.content.IContentTypeManager#getContentType(String))</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=119108">119108</a>
Access Rules and Path separators
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110593">110593</a>
[1.5][compiler] NPE in ProblemReporter
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=115693">115693</a>
[1.5][compiler] Unnecessary double checkcast instruction emmited
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=118789">118789</a>
IJavaProject#findType(String) returns null for secondary type quickly after creation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=118876">118876</a>
[dom] TypeDeclaration nodes aren't flagged as MALFORMED
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=105592">105592</a>
Enum switch statement compile error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=118888">118888</a>
Need an entry point to create a org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader using a stream
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=118092">118092</a>
Eclipse hangs on code assist when writing ?&lt;c
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=116650">116650</a>
[search] SearchParticipant has no way to remove specific index file from IndexManager cache
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=118798">118798</a>
Unexpected JME on IMethod.getParameterNames
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=114571">114571</a>
concurrent access to HashMap
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=71460">71460</a>
[model] Non *.java file association with Java contents.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=118397">118397</a>
[javadoc][assist] No completion available while completing inside a qualified reference
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=118393">118393</a>
ICompilationUnit.findPrimaryType: Should use JavaCore.removeJavaLikeExtension

<a name="v_624"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M4 - 29th November 2005
<br>Project org.eclipse.jdt.core v_624
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_624">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Added API <code>IJavaProject#setRawClasspath(IClasspathEntry[], boolean, IProgressMonitor)</code> 
     to set the classpath without touching the .classpath file.</li>
<li>Added API <code>org.eclipse.jdt.core.compiler.CharOperation#equals(char[], char[], int, int, boolean)</code>.</li>
<li>Added API <code>org.eclipse.jdt.core.compiler.CharOperation#replace(char[], char[], char, int, int)</code>.</li>
<li>Plugin version now respects new versionning requirements. See <a href="http://eclipse.org/equinox/documents/plugin-versioning.html">plugin versioning</a> and bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=99393">99393</a>.</li>
<li>Fix for <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36032">bug 36032</a> required the index version to be incremented. 
     Indexes will be automatically regenerated upon subsequent search queries (accounting for indexing notification in search progress dialogs).
</li>
<li>Added API <code>IMember#getOccurrenceCount()</code> to return the relative position of the member in the source.</li>
<li>Added API <code>WorkingCopyOwner#newWorkingCopy(String,IProgressMonitor)</code> to create a new working copy 
     without an underlying resource.</li>
<li>Added API on TypeReferenceMatch to report local element and other elements while
searching for type references (see bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110336">110336</a>):
<pre>
	/**
	 * Returns the local element of this search match.
	 * This may be a local variable which declaring type is the referenced one
	 * or a type parameter which extends it.
	 * 
	 * @return the element of the search match, or <code>null</code> if none or there's
	 * 	no more specific local element than the element itself ({@link SearchMatch#getElement()}).
	 */
	public final IJavaElement getLocalElement()
	/**
	 * Returns other enclosing elements of this search match.
	 *
	 * If {@link #getLocalElement()} is not <code>null</code>, these may be other
	 * local elements such as additional local variables of a multiple local
	 * variables declaration. Otherwise, these may be other elements such as
	 * additional fields of a multiple fields declaration.
	 * 
	 * @return the other elements of the search match, or <code>null</code> if none
	 */
	public final IJavaElement[] getOtherElements()
	/**
	 * Sets the local element of this search match.
	 * 
	 * @param localElement A more specific local element that corresponds to the match,
	 * 	or <code>null</code> if none
	 */
	public final void setLocalElement(IJavaElement localElement)
	/**
	 * Sets the other elements of this search match.
	 * 
	 * @param otherElements the other elements of the match,
	 * 	or <code>null</code> if none
	 */
	public final void setOtherElements(IJavaElement[] otherElements)
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=118246">118246</a>
Definition of getJavaLikeExtensions() leads to programming errors
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=118311">118311</a>
type \@ in javadoc comment and code assist == hang
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=117020">117020</a>
[search] Search for '*' does not report empty packages
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=111416">111416</a>
[search] wrong potential matches on a static method open
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=118214">118214</a>
[completion] "has inconsistent hierarchy" field should not be proposed
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=118105">118105</a>
[javadoc][assist] Hang with 100% CPU during code assist on comment
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=118064">118064</a>
Access rules are not flushed between classpaths in batch mode.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=117451">117451</a>
[compiler] Codegen could better optimize field access when value not required
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=117120">117120</a>
[compiler] VerifyError: Expecting to find integer on stack
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36032">36032</a>
[plan] JavaProject.findType() fails to find second type in source file
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=117183">117183</a>
[javadoc][assist] No completion in text when cursor location is followed by a '.'
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=116573">116573</a>
wrong guess of binding with overloaded methods
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=117861">117861</a>
[1.5][compiler] invalid handling of static import
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110336">110336</a>
[plan][search] Should optionaly return the local variable for type reference
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=117890">117890</a>
JavaElement.getURLContents(...) leaves file open
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=117589">117589</a>
Completion dialog shows html file name
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=115040">115040</a>
Provide API for getting occurrence count from initializers and types
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=117121">117121</a>
Can't create class called A$B in eclipse
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=116858">116858</a>
java code formatter problem with switch statements and comments
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=117495">117495</a>
Compiler: ternary ops return wrong type when condition is boolean literal
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=61013">61013</a>
[plan][model] Minimal support for editing units outside workspace
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=117487">117487</a>
Classpaths in the build scripts need to be updated

<a name="v_623"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M4 - 22nd November 2005
<br>Project org.eclipse.jdt.core v_623
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_623">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li><code>JavaCore#initializeAfterLoad(IProgressMonitor)</code> used to schedule a job to do its work. 
      It now does it in the same thread. Note this is not an API change as the spec allows both scenarii.
</li>
<li> DOM type bindings for generics got adjusted. There were situations where a reference to a generic type from within itself would expose the declared 
generic type binding, instead of a parameterized type binding (using its own type parameters as type arguments). This is now corrected, clients should 
ensure they did not rely on the previous inconsistency (note: no change was required from direct JDT dependents).
</li>
<li>Added APIs <code>JavaCore#getJavaLikeExtensions(), isJavaLikeFileName(String), and removeJavaLikeExtension(String)</code>
     to get the available Java-like extensions (from the Java source content-type), checking if a file is a Java-like file, and removing
     the Java-like extension from a file name.
</li>
<li>Added new API for org.eclipse.jdt.core.dom.CompilationUnit:
<pre>
	/**
	 * Returns the column number corresponding to the given source character
	 * position in the original source string. Column number are zero-based. 
	 * Return <code>-1</code> if it is beyond the valid range or <code>-2</code>
	 * if the column number information is unknown.
	 * 
	 * @param position a 0-based character position, possibly
	 *   negative or out of range
	 * @return the 0-based column number, or <code>-1</code> if the character
	 *    position does not correspond to a source line in the original
	 *    source file or <code>-2</code> if column number information is unknown for this
	 *    compilation unit
	 * @see ASTParser
	 * @since 3.2
	 */
	public int getColumnNumber(final int position)
	/**
	 * Given a line number and column number, returns the corresponding 
	 * position in the original source string.
	 * Returns -2 if no line number information is available for this
	 * compilation unit. 
	 * Returns the total size of the source string if <code>line</code>
	 * is greater than the actual number lines in the unit.
	 * Returns -1 if <code>column</code> is less than 0,  
	 * or the position of the last character of the line if <code>column</code>
	 * is beyond the legal range, or the given line number is less than one. 
	 * 
	 * @param line the one-based line number
	 * @param column the zero-based column number
	 * @return the 0-based character position in the source string; 
	 * <code>-2</code> if line/column number information is not known 
	 * for this compilation unit or <code>-1</code> the inputs are not valid
	 * @since 3.2
	 */
	 public int getPosition(int line, int column)
	/**
	 * Returns the line number corresponding to the given source character
	 * position in the original source string. The initial line of the 
	 * compilation unit is numbered 1, and each line extends through the
	 * last character of the end-of-line delimiter. The very last line extends
	 * through the end of the source string and has no line delimiter.
	 * For example, the source string <code>class A\n{\n}</code> has 3 lines
	 * corresponding to inclusive character ranges [0,7], [8,9], and [10,10].
	 * Returns -1 for a character position that does not correspond to any
	 * source line, or -2 if no line number information is available for this
	 * compilation unit.
	 * 
	 * @param position a 0-based character position, possibly
	 *   negative or out of range
	 * @return the 1-based line number, or <code>-1</code> if the character
	 *    position does not correspond to a source line in the original
	 *    source file or <code>-2</code> if line number information is not known for this
	 *    compilation unit
	 * @see ASTParser
	 * @since 3.2
	 */
	public int getLineNumber(int position) 	
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=117382">117382</a>
synthetic class$N fields generated unnecessarily
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=115658">115658</a>
ReconcileContext/CompilationParticipant clarifications
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=61946">61946</a>
AST: NPE in IVariableBinding.getConstantValue
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=116472">116472</a>
Ambigous API definition on CompilationUnit.getPosition()
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=117032">117032</a>
AST line numbers: Problems with single line source
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=116745">116745</a>
[compiler] VerifyError: Incompatible type for getting or setting field
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=98154">98154</a>
Code assist from Javadoc
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=116464">116464</a>
[javadoc] Unicode tag name are not correctly parsed
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=114941">114941</a>
Remove init job
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=114935">114935</a>
ASTParser.createASTs parses more CUs then required
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=116311">116311</a>
[search] NPE searching for reference to our Assert class
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=115067">115067</a>
Util#getJavaLikeExtensions should become API
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=80472">80472</a>
Binding of parameterized return type List&lt;E&gt; subList(...) should not be generic binding


<a name="v_622"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M4 - 16th November 2005
<br>Project org.eclipse.jdt.core v_622
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_622">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Added API <code>IMethod#getRawParameterNames()</code> that returns the invented names arg0...argn for a binary method.</li>
<li>Added API <code>IOpenable#findRecommendedLineSeparator()</code> that finds the line separator for the given Java element.</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=116419">116419</a>
code assist regression: POTENTIAL_METHOD_DECLARATION not offered anymore
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=84750">84750</a>
[perf] BinaryMethod.getParameterNames does not follow IMethod API contract
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110650">110650</a>
Need API for determining Java line delimiter

<a name="v_621"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M4 - 15th November 2005
<br>Project org.eclipse.jdt.core v_621
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_621">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>
Due to bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110964">110964</a> fix,
some javadoc compiler options default value have been changed.
<pre>
JavaCore.COMPILER_PB_INVALID_JAVADOC_TAGS:
	- old default value = "enabled"
	- new default value = "disabled"
JavaCore.COMPILER_PB_INVALID_JAVADOC_TAGS__DEPRECATED_REF
	- old default value = "enabled"
	- new default value = "disabled"
JavaCore.COMPILER_PB_INVALID_JAVADOC_TAGS__NOT_VISIBLE_REF
	- old default value = "enabled"
	- new default value = "disabled"
JavaCore.COMPILER_PB_INVALID_JAVADOC_TAGS_VISIBILITY
	- old default value = "private"
	- new default value = "public"
JavaCore.COMPILER_PB_MISSING_JAVADOC_TAGS_VISIBILITY
	- old default value = "private"
	- new default value = "public"
</pre>
</li>
<li>Added new API for org.eclipse.jdt.core.dom.CompilationUnit:
<pre>
	/**
	 * Return the index in the whole comments list {@link #getCommentList() }
	 * of the first leading comments associated with the given node. 
	 * 
	 * @param node the node
	 * @return 0-based index of first leading comment or -1 if node has
	 *	no associated comment before its start position.
	 * @since 3.2
	 */
	public int firstLeadingCommentIndex(ASTNode node)
	/**
	 * Return the index in the whole comments list {@link #getCommentList() }
	 * of the last trailing comments associated with the given node. 
	 * 
	 * @param node the node
	 * @return 0-based index of last trailing comment or -1 if node has
	 * 	no associated comment after its end position.
	 * @since 3.2
	 */
	public int lastTrailingCommentIndex(ASTNode node)
	/**
	 * Returns the column number corresponding to the given source character
	 * position in the original source string. Column number are zero-based. 
	 * Return zero if it is beyond the valid range.
	 * 
	 * @param position a 0-based character position, possibly
	 *   negative or out of range
	 * @return the 0-based coloumn number, or <code>0</code> if the character
	 *    position does not correspond to a source line in the original
	 *    source file or if column number information is not known for this
	 *    compilation unit
	 * @see ASTParser
	 * @since 3.2
	 */
	public int columnNumber(final int position)
	/**
	 * Given a line number and column number, returns the corresponding 
	 * position in the original source string.
	 * Returns 0 if no line number information is available for this
	 * compilation unit or the requested line number is less than one. 
	 * Returns the total size of the source string if <code>line</code>
	 * is greater than the actual number lines in the unit.
	 * Returns 0 if <code>column</code> is less than 0,  
	 * or the position of the last character of the line if <code>column</code>
	 * is beyond the legal range. 
	 * 
	 * @param line the one-based line number
	 * @param column the zero-based column number
	 * @return the 0-based character position in the source string; 
	 * returns <code>0</code> if line/column number information is not known 
	 * for this compilation unit or the inputs are not valid
	 * @since 3.2
	 */
	 public int getPosition(int line, int column)
</pre>
</li>
<li>A tool to automate the update of the build notes is available on this update-site:<br>
http://www.eclipse.org/jdt/core/tools/jdtcoretools/update-site/<br>
<p>This is matching the format of the JDT/Core buildnotes. But the code can be easily customized for a different format.</p>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=115662">115662</a>
[javadoc][assist] link completion in types
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=106140">106140</a>
[compiler] Eclipse3.1.0: unrecognized class invisibility
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=113108">113108</a>
[API][comments] CompilationUnit.getNodeComments(ASTNode)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110964">110964</a>
[javadoc] Change compiler default options to have minimum javadoc warnings
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=116028">116028</a>
annotations only applied to first field in a declaration
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=112843">112843</a>
Cut blocked by background build
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=116028">116028</a>
annotations only applied to first field in a declaration
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110797">110797</a>
In case of multiple task tags on a single line, the tasks view does not show the complete line for each tag
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110173">110173</a>
[plan] API to extract the Javadoc as HTML from attached HTML
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110188">110188</a>
[plan][assist] Provide hook for completing inside string literal
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=107105">107105</a>
[1.5][compiler] method override check does not detect differences in additional type bounds
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=115408">115408</a>
[compiler] ArrayIndexOutOfBoundsException in CodeStream.java
	  	
<a name="v_620"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M4 - 8th November 2005
<br>Project org.eclipse.jdt.core v_620
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_620">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Added support for participating in reconcile (see <code>compilationParticipant</code> extension point as well as 
     <code>CompilationParticipant</code> and <code>ReconcileContext</code> classes.)
     Note that this support is still work in progress and it is subject to change.
     Ability to participate in building will be added later.
</li>
<li>Code Assist: added support for completing on label in break/continue statement.
</li>
<li>Added new CompletionContext API (first part of fix for bug
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110181">110181</a>) :
<pre>
/**
 * Returns the completed token.
 * This token is either the identifier or Java language keyword
 * or the string literal under, immediately preceding, 
 * the original request offset. If the original request offset
 * is not within or immediately after an identifier or keyword or
 * a string literal then the returned value is &lt;code&gt;null&lt;/code&gt;.
 * 
 * @return completed token or &lt;code&gt;null&lt;/code&gt;
 * @since 3.2
 */
public char[] getToken()

/**
 * Returns the kind of completion token being proposed.
 * 
 * The set of different kinds of completion token is
 * expected to change over time. It is strongly recommended
 * that clients do not assume that the kind is one of the
 * ones they know about, and code defensively for the
 * possibility of unexpected future growth.
 * 
 * @return the kind; one of the kind constants declared on
 * this class whose name starts with &lt;code&gt;TOKEN_KIND&lt;/code&gt;,
 * or possibly a kind unknown to the caller
 * @since 3.2
 */
public int getTokenKind()

/**
 * Returns the character index of the start of the
 * subrange in the source file buffer containing the
 * relevant token being completed. This
 * token is either the identifier or Java language keyword
 * under, or immediately preceding, the original request 
 * offset. If the original request offset is not within
 * or immediately after an identifier or keyword, then the
 * position returned is original request offset and the
 * token range is empty.
 * 
 * @return character index of token start position (inclusive)
 * @since 3.2
 */
public int getTokenStart()

/**
 * Returns the character index of the end (exclusive) of the subrange
 * in the source file buffer containing the
 * relevant token. When there is no relevant token, the
 * range is empty
 * (&lt;code&gt;getTokenEnd() == getTokenStart()&lt;/code&gt;).
 * 
 * @return character index of token end position (exclusive)
 * @since 3.2
 */
public int getTokenEnd()

/**
 * Returns the offset position in the source file buffer
 * after which code assist is requested.
 * 
 * @return offset position in the source file buffer
 * @since 3.2
 */
public int getOffset()
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=115363">115363</a>
java.lang.VerifyError in org.eclipse.ui.workbench from HEAD, using N20051107
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22072">22072</a>
Code completion on continue label: broken.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=113950">113950</a>
[1.5][compiler] Problems implementing inherited generic abstract methods and type erasure
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=115181">115181</a>
[1.5][compiler] Wrongly flagged "Usage of a raw type"
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=113945">113945</a>
No codeassist in anonymous class in generics
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=114086">114086</a>
Refactor->Rename of instance variables fails with "-1" when Code Style->Fields prefix list has dangling ","
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=114341">114341</a>
[javadoc][assist] range of the qualified type completion in javadoc text isn't correct
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=114338">114338</a>
[javadoc] Reconciler reports wrong javadoc warning (missing return type)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=102286">102286</a>
Error when trying F4-Type Hierarchy
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=114909">114909</a>
AST: String concatenation represented as single node
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=114539">114539</a>
[search] Internal error when refactoring code with errors
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=114855">114855</a>
[compiler] OutOfMemoryError compiling deeply nested try-catch
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=114087">114087</a>
[1.5][compiler] Eclipse compiles code that cannot be compiled with JDK!
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=114304">114304</a>
[1.5][compiler] Return type not compatible with generic subinterface.


<a name="v_619"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M3 - 31st October 2005 - 3.2 MILESTONE 3
<br>Project org.eclipse.jdt.core v_619
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_619">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Three new API methods have been added on SearchPattern (see bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=113549">113549</a>):
<pre>
/**
 * Answers true if the pattern matches the given name using CamelCase rules, or false otherwise. 
 * CamelCase matching does NOT accept explicit wild-cards '*' and '?' and is inherently case sensitive.
 *
 * CamelCase denotes the convention of writing compound names without spaces, and capitalizing every term.
 * This function recognizes both upper and lower CamelCase, depending whether the leading character is capitalized
 * or not. The leading part of an upper CamelCase pattern is assumed to contain a sequence of capitals which are appearing
 * in the matching name; e.g. 'NPE' will match 'NullPointerException', but not 'NewPerfData'. A lower CamelCase pattern
 * uses a lowercase first character. In Java, type names follow the upper CamelCase convention, whereas method or field
 * names follow the lower CamelCase convention.
 *
 * The pattern may contain trailing lowercase characters, which will be match in a case sensitive way. These characters must
 * appear in sequence in the name, after the last matching capital of the pattern. For instance, 'NPExcep' will match
 * 'NullPointerException', but not 'NullPointerExCEPTION'.
 * 
 * For example:
 *  - pattern = "NPE"
 *    name = NullPointerException
 *    result => true
 *  - pattern = "npe"
 *    name = NullPointerException
 *    result => false
 *
 * @see CharOperation#camelCaseMatch(char[], char[])
 * 	Implementation has been entirely copied from this method except for array lengthes
 * 	which were obviously replaced with calls to {@link String#length()}.
 * 
 * @param pattern the given pattern
 * @param name the given name
 * @return true if the pattern matches the given name, false otherwise
 */
public static final boolean camelCaseMatch(String pattern, String name)

/**
 * Answers true if a sub-pattern matches the subpart of the given name using CamelCase rules, or false otherwise.  
 * CamelCase matching does NOT accept explicit wild-cards '*' and '?' and is inherently case sensitive. 
 * Can match only subset of name/pattern, considering end positions as non-inclusive.
 * The subpattern is defined by the patternStart and patternEnd positions.
 *
 * CamelCase denotes the convention of writing compound names without spaces, and capitalizing every term.
 * This function recognizes both upper and lower CamelCase, depending whether the leading character is capitalized
 * or not. The leading part of an upper CamelCase pattern is assumed to contain a sequence of capitals which are appearing
 * in the matching name; e.g. 'NPE' will match 'NullPointerException', but not 'NewPerfData'. A lower CamelCase pattern
 * uses a lowercase first character. In Java, type names follow the upper CamelCase convention, whereas method or field
 * names follow the lower CamelCase convention.
 *
 * The pattern may contain trailing lowercase characters, which will be match in a case sensitive way. These characters must
 * appear in sequence in the name, after the last matching capital of the pattern. For instance, 'NPExcep' will match
 * 'NullPointerException', but not 'NullPointerExCEPTION'.
 * 
 * For example:
 *	- pattern = "NPE"
 *    patternStart = 1
 *    patternEnd = 3
 *    name = NullPointerException
 *    nameStart = 0
 *    nameEnd = 20
 *    result => true
 *  - pattern = "npe"
 *    patternStart = 1
 *    patternEnd = 3
 *    name = NullPointerException
 *    nameStart = 0
 *    nameEnd = 20
 *    result => false
 *
 * @see CharOperation#camelCaseMatch(char[], int, int, char[], int, int)
 * 	Implementation has been entirely copied from this method except for array lengthes
 * 	which were obviously replaced with calls to {@link String#length()} and
 * 	for array direct access which were replaced with calls to {@link String#charAt(int)}.
 * 
 * @param pattern the given pattern
 * @param patternStart the given pattern start
 * @param patternEnd the given pattern end
 * @param name the given name
 * @param nameStart the given name start
 * @param nameEnd the given name end
 * @return true if a sub-pattern matches the subpart of the given name, false otherwise
 */
public static final boolean camelCaseMatch(String pattern, int patternStart, int patternEnd, String name, int nameStart, int nameEnd)

/**
 * Validate compatibility between given string pattern and match rule.
 *
 * Optimized (ie. returned match rule is modified) combinations are:
 *  - {@link #R_PATTERN_MATCH} without any '*' or '?' in string pattern:
 * 		pattern match bit is unset,
 * 	- {@link #R_PATTERN_MATCH} and {@link #R_PREFIX_MATCH}  bits simultaneously set:
 * 		prefix match bit is unset,
 * 	- {@link #R_PATTERN_MATCH} and {@link #R_CAMELCASE_MATCH}  bits simultaneously set:
 * 		camel case match bit is unset,
 * 	- {@link #R_CAMELCASE_MATCH} with invalid combination of uppercase and lowercase characters:
 * 		camel case match bit is unset and replaced with prefix match pattern,
 * 	- {@link #R_CAMELCASE_MATCH} combined with {@link #R_PREFIX_MATCH} and {@link #R_CASE_SENSITIVE}
 * 		bits is reduced to only {@link #R_CAMELCASE_MATCH} as Camel Case search is already prefix and case sensitive.
 *
 * Rejected (ie. returned match rule -1) combinations are:
 * 	- {@link #R_REGEXP_MATCH} with any other match mode bit set.
 *
 * @param stringPattern The string pattern
 * @param matchRule The match rule
 * @return Optimized valid match rule or -1 if an incompatibility was detected.
 */
public static int validateMatchRule(String stringPattern, int matchRule) {
</pre>
</li>
<li>Added Camel Case support in completion.
When you perform code complete, the proposals list contains proposals whose name match with the camel case pattern.
<br>
eg. a possible proposal for TT| is ToTo.
</li>
<li>Added option to control Camel Case completion.
<pre>
/**
 * CODEASSIST / Activate Camel Case Sensitive Completion
 *    When active, completion show proposals whose name match to the CamelCase pattern.
 *     - option id:         "org.eclipse.jdt.core.codeComplete.camelCaseMatch"
 *     - possible values:   { "enabled", "disabled" }
 *     - default:           "disabled"
 */
JavaCore#CODEASSIST_CAMEL_CASE_MATCH
</pre>
Currently this option is disabled by default. The default value of this option will be set to enabled when JDT/Text will be able to manage this kind of proposal
(see <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=114098">bug 114098</a>)
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=114091">114091</a>
[assist][javadoc] eternal loop 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=114077">114077</a>
No NLS Warning if unnecessary nls tag before declaration
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=83206">83206</a>
ICodeAssist#codeSelect(..) on implicit methods should not return a java element
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=102572">102572</a>
[plan] Add CamelHumps completion
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=113649">113649</a>
[javadoc][assist] CompletionOnJavadocTag token is not correct
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=113765">113765</a>
[1.5] Insufficient recovery in generic method
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=113671">113671</a>
[search] AIOOBE in SearchEngine#searchAllTypeNames
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=113549">113549</a>
Need camel case matching routines for Strings
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=113722">113722</a>
Sort members is confused with syntax errors
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=113273">113273</a>
[1.5][compiler] Compiler confused by multiply bounded type parameter


<a name="v_618"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M3 - 25th October 2005
<br>Project org.eclipse.jdt.core v_618
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_618">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>
Completion engine now supports completion inside Javadoc. User can complete after any word
in Javadoc and get most appropriate proposal depending on area of completion.<br>
Here is a breaf summary of code assist functionality in javadoc:
<ul>
<li>Completion of javadoc tag now only gives valid proposals.<br>
Some examples:
<ul>
<li>complete <code>@pa|</code> will give <code>@param</code> proposal only in javadoc of method or generic type declarations,</li>
<li>complete <code>{@co|</code> will give <code>{@code }</code> proposal only if your compiler compliance has been set to 1.5 or over,</li>
<li>etc.</li>
</ul>
</li>
<li>Completion in "formal reference" of <code>@see</code>, <code>@throws</code>, <code>@exception</code>, <code>{@link}</code>,
<code>{@linplain}</code> or <code>{@value}</code> tags will behave like completion in java code. Type qualification for
types will be inserted depending on "Add import instead of qualified name" Code Assist preferences.
</li>
<li>Completion is now available in text area of javadoc comment.<br>
Some examples:
<ul>
<li>complete at caret in following code:
<pre>
/**
 * This is an example of completion inside text area: S|
 */
public class Sample {}
</pre>
will propose both <code>String</code> and <code>Sample</code>, but also <code>{@link String }</code> and
<code>{@link Sample }</code>.
Currently each proposal is available either as java code type name or direclty inserted as a {@link} tag.
This part is still under work and final behavior should depend on a new JDT/UI preferences...<br>
<br>
</li>
<li>complete at caret in following code:
<pre>
/**
 * This is an example of completion inside text area: #m|
 */
public class Sample {
  void method() {}
}
</pre>
will propose <code>{@link #method() }</code>.
</li>
</ul>
</li>
</ul>
<br>
New API methods have also been added to <code>CompletionContext</code>:
<pre>
/**
 * Tell user whether completion takes place in a javadoc comment or not.
 * 
 * @return boolean true if completion takes place in a javadoc comment, false otherwise.
 * @since 3.2
 */
public boolean isInJavadoc() {...}
/**
 * Tell user whether completion takes place in text area of a javadoc comment or not.
 * 
 * @return boolean true if completion takes place in a text area of a javadoc comment, false otherwise.
 * @since 3.2
 */
public boolean isInJavadocText() {...}
/**
 * Tell user whether completion takes place in a formal reference of a javadoc tag or not.
 * Tags with formal reference are:
 * 	- @see
 * 	- @throws
 * 	- @exception
 * 	- {@link Object}
 * 	- {@linkplain Object}
 * 	- {@value} when compiler compliance is set at leats to 1.5
 * 
 * @return boolean true if completion takes place in formal reference of a javadoc tag, false otherwise.
 * @since 3.2
 */
public boolean isInJavadocFormalReference() {...}
</pre>
</li>
<li>Added API <code>org.eclipse.jdt.core.IMember#ISourceRange getJavadocRange() throws JavaModelException</code>. This API can be used
to retrieve the source range of a javadoc comment attached to the corresponding member.
</li>
<li>Added compiler option so as to specify whether optional errors should be fatal or not. By default, an optional error is 
treated as fatal as a normal language error (as defined by the language spec book), when disabling this option, clients will
be able to treat optional errors as severe warnings only, which will be rendered as errors, but no longer prevent from running
the code. There is some work planned on UI side so as to better distinguish amongst mandatory vs. optional errors.
<pre>
* COMPILER / Treating Optional Error as Fatal
*    When enabled, optional errors (i.e. optional problems which severity is set to "error") will be treated as standard
*    compiler errors, yielding problem methods/types preventing from running offending code until the issue got resolved.
*    When disabled, optional errors are only considered as warnings, still carrying an error indication to make them more
*    severe. Note that by default, errors are fatal, whether they are optional or not.
*     - option id:         "org.eclipse.jdt.core.compiler.problem.fatalOptionalError"
*     - possible values:   { "enabled", "disabled" }
*     - default:           "enabled"
</pre>	 
</li>
<li>Added <code>IJavaElementDelta#F_CATEGORIES</code>. This flag is set when one or more categories of an element 
     are added/changed/removed.</li>
<li>
Java search engine is now able to perform search using Camel Case pattern while using new match rule flag
defined on <code>SearchPattern</code> (see bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110060">110060</a>):
<pre>
/**
 * Match rule: The search pattern contains a Camel Case expression.
 * For example, <code>NPE</code> type string pattern will match
 * <code>NullPointerException</code> type.
 * @see CharOperation#camelCaseMatch(char[], char[]) for a detailed explanation
 * of Camel Case matching.
 *
 * Can be combined to {@link #R_PREFIX_MATCH} match rule. For example,
 * when prefix match rule is combined with Camel Case match rule,
 * <code>"nPE"</code> pattern will match <code>nPException</code>.
 *
 * Match rule {@link #R_PATTERN_MATCH} may also be combined but both rules
 * will not be used simultaneously as they are mutually exclusive.
 * Used match rule depends on whether string pattern contains specific pattern 
 * characters (e.g. '*' or '?') or not. If it does, then only Pattern match rule
 * will be used, otherwise only Camel Case match will be used.
 * For example, with <code>"NPE"</code> string pattern, search will only use
 * Camel Case match rule, but with <code>N*P*E*</code> string pattern, it will 
 * use only Pattern match rule.
 * 
 * @since 3.2
 */
public static final int R_CAMELCASE_MATCH = 0x0080;
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=113506">113506</a>
[javadoc][assist] No tag proposals when there is a prefix on a line
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=113376">113376</a>
[javadoc][assist] wrong overwrite range on completion followed by a tag
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=113374">113374</a>
[javadoc][assist] do not propose anything if the prefix is preceded by a special character
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=106466">106466</a>
[1.5][compiler] Type parameter followed by other types in bound - rejected by javac, accepted by Eclipse
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110172">110172</a>
[plan] API to extract the Javadoc on org.eclipse.jdt.core.IMember
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=87868">87868</a>
[1.5][javadoc][assist] Dodgy completion in javadoc comment
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=86112">86112</a>
[javadoc][assist] Wrong reference to binary static initializer in javadoc
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=67732">67732</a>
[javadoc][assist] Content assist doesn't work in Javadoc "line breaks"
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22043">22043</a>
[javadoc][assist] Code Completion in Javadoc @see/@link doesn't work on partially entered argument types
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=107282">107282</a>
[plan][compiler] Non mandatory JLS errors should not end up in problem methods
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=52840">52840</a>
Howto generate the parser: LPG 2.30 is which version of JikesPG?
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=113051">113051</a>
No classpath marker produced when cycle through PDE container
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=113110">113110</a>
TestFailures in DebugSuite
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=112109">112109</a>
Compilation problem: Eclipse does not recognise parametrized notify-method in generic context
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=100970">100970</a>
[1.5][compiler] Interface methods may conflict with Object methods
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=112418">112418</a>
PDE generate build file and ant task eclipse.buildScript ignore javaSource and javaTarget
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=112973">112973</a>
NLS tags like //$NON-NLS-?$ don't have the right range
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110060">110060</a>
[plan][search] Add support for Camel Case search pattern
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=100182">100182</a>
[1.5][compiler] unecessary cast in case of boxing


<a name="v_617"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M3 - 18th October 2005
<br>Project org.eclipse.jdt.core v_617
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_617">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>In 5.0 compliant mode, the classfile name for an anonymous class is now correctly referring to its 
innermost enclosing type name, e.g. "X$1$1" for an anonymous nested inside another anonymous; where 
it was "X$2" before 5.0.</li>
<li>Added compiler diagnosis to signal unused label (from labeled statement). Note that a label is considered to be
used if explicitly referenced only.
<pre>
* COMPILER / Reporting Unreferenced Label
*    When enabled, the compiler will issue an error or a warning when encountering a labeled statement which label
*    is never explicitly referenced. A label is considered to be referenced if its name explicitly appears behind a break
*    or continue statement; for instance the following label would be considered unreferenced;   LABEL: { break; }
*     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedLabel"
*     - possible values:   { "error", "warning", "ignore" }
*     - default:           "warning"
</pre>
</li>
<li>Added API <code>org.eclipse.jdt.core.ToolFactory#createDefaultClassFileReader(java.io.InputStream,int)</code>
     that allows to the creation of an org.eclipse.jdt.core.util.IClassFileReader object using an input stream.
</li>
<li>Added API <code>JavaCore#addPreProcessingResourceChangedListener(IResourceChangeListener,int)</code>
     that allows to register an <code>IResourceChangedListener</code> for a given event type that runs
     before JDT Core.</li>
<li>Added APIs to get the values of the @category tag in the Javadoc of a type, field or method: 
     <code>IMember#getCategories()</code> and to get the children of a type for a given category
     <code>IType#getChildrenForCategory(String)</code>.</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=112137">112137</a>
ConcurrentModificationException when CTRL+LeftClick on constructor call in Java editor
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=85298">85298</a>
[1.5][enum] IType of anonymous enum declaration says isLocal() == false
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=108856">108856</a>
[1.5][compiler] Inner inner classes have illegal names
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=112231">112231</a>
[1.5][compiler] enum declaration
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=112381">112381</a>
Javadoc of IMethodBinding#overrides(IMethodBinding) refers to wrong JLS2 section
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=105756">105756</a>
[1.5][model] Incorrect warning on using raw types
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=112609">112609</a>
StackOverflow when initializing Java Core
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=112666">112666</a>
[1.5][compiler] Compiler rejects valid assignment to complex capture
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=63840">63840</a>
warning on unused labels
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=112617">112617</a>
[API] Add ToolFactory.createDefaultClassFileReader(InputStream,int)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=112518">112518</a>
[performance] NLS detection should be faster
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=107814">107814</a>
@SuppressWarnings("unused") requires additional //$NON-NLS-1$
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110613">110613</a>
[1.5][compiler] Should not report warnings for nls string inside annotation declaration
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=112500">112500</a>
[1.5][compiler] bug between inference and wilcard
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=111350">111350</a>
[1.5][compiler] method override and generics
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=108782">108782</a>
[1.5][compiler] inconsistent @Override error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=108780">108780</a>
[1.5][compiler] Subsignature checking does not respect erasure conversion
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=105808">105808</a>
[1.5][dom] MethodBinding#overrides(..) should not consider return types
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23669">23669</a>
[plan][DCR][Javadoc] Add support for @cat / @category organization of class members
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=112268">112268</a>
[1.5][compiler] Type mismatch introduced in 3.1.1
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=112346">112346</a>
[1.5][javadoc] Unexpected "Invalid reference" on javadoc field reference
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=112190">112190</a>
batch compiler option "-warn:+allUnchecked" does not work
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=112223">112223</a>
Scanner#getNextToken() behavior doesn't seems consistent if there is an unicode inside a string.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=107045">107045</a>
[1.5][compiler] Compiler misses name clash with bounded class type parameter


<a name="v_616"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M3 - 11th October 2005
<br>Project org.eclipse.jdt.core v_616
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_616">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Added CharOperation API to perform CamelCase matching. This new matching mode will be leveraged into
codeassist and search.
<pre>
* Answers true if the pattern matches the given name using CamelCase rules, or false otherwise. 
* char[] CamelCase matching does NOT accept explicit wild-cards '*' and '?'. 
*
* CamelCase denotes the convention of writing compound names without spaces, and capitalizing every term.
* This function recognizes both upper and lower CamelCase, depending whether the leading character is capitalized
* or not. The leading part of an upper CamelCase pattern is assumed to contain a sequence of capitals which are appearing
* in the matching name; e.g. 'NPE' will match 'NullPointerException', but not 'NewPerfData'. A lower CamelCase pattern
* uses a lowercase first character. In Java, type names follow the upper CamelCase convention, whereas method or field
* names follow the lower CamelCase convention.
*
* The pattern may contain trailing lowercase characters, which will be match in a case sensitive way. These characters must
* appear in sequence in the name, after the last matching capital of the pattern. For instance, 'NPExcep' will match
* 'NullPointerException', but not 'NullPointerExCEPTION'.
public static final boolean camelCaseMatch(char[] pattern, char[] name)
public static final boolean camelCaseMatch(char[] pattern, int patternStart, int patternEnd, char[] name, int nameStart, int nameEnd)
</pre>
</li>
<li>Tuned new compiler diagnosis for raw type references. This problem can now be enabled independantly from 
unchecked type operations, and carries its own severity settings. Removed "Type safety:" prefix from problem description
as it is not truly fragilizing type integrity. This warning can still be silenced by <code>@SuppressWarnings("unchecked")</code>
<pre>
* COMPILER / Reporting Raw Type Reference
*    When enabled, the compiler will issue an error or a warning when detecting references to raw types. Raw types are 
*    discouraged, and are intended to help interfacing with legacy code. In the future, the language specification may 
*    reject raw references to generic types.
*     - option id:         "org.eclipse.jdt.core.compiler.problem.rawTypeReference"
*     - possible values:   { "error", "warning", "ignore" }
*     - default:           "ignore"
</pre></li>
<li>Added API <code>CategorizedProblem</code> to extend <code>IProblem</code> definitions with notion of
problem category and marker type. This will enable other pluggable tool to participate in various compilation stages
and report domain specific problems through the existing API (<code>IProblem</code> based). It is recommended that
clients do not directly implement <code>IProblem</code> but instead do extend the abstract class <code>CategorizedProblem</code>.
<pre>
/**
 * Returns an integer identifying the category of this problem. Categories, like problem IDs are
 * defined in the context of some marker type. Custom implementations of <code>CategorizedProblem</code>
 * may choose arbitrary values for problem/category IDs, as long as they are associated with a different
 * marker type.
 * @return id - an integer identifying the category of this problem
 */
public abstract int getCategoryID();
</pre><pre>	
/**
 * Returns the marker type associated to this problem, if it was persisted into a marker by the JavaBuilder
 * Standard Java problems are associated to marker type "org.eclipse.jdt.core.problem"), standard tasks 
 * are associated to marker type "org.eclipse.jdt.core.task".
 * @return the type of the marker which would be associated to the problem
 * @see org.eclipse.jdt.core.IJavaModelMarker#JAVA_MODEL_PROBLEM_MARKER
 * @see org.eclipse.jdt.core.IJavaModelMarker#TASK_MARKER
 */
public abstract String getMarkerType(); 
</pre></li>
<li>Added API <code>IJavaElementDelta#F_AST_AFFECTED</code> and <code>IJavaElementDelta#getCompilationUnitAST()</code>.
     The Java element delta's flag is set to <code>F_AST_AFFECTED</code> when a reconcile operation affects the AST
     created in the last reconcile operation. In this case the AST should be re-acquired using <code>getCompilationUnitAST()</code>.
</li>
<li>Added API to encode and decode a classpath entry (<code>IJavaProject#encodeClasspathEntry(IClasspathEntry)
     and decodeClasspathEntry(String)</code>.
<li>Added API <code>IClassFile#becomeWorkingCopy(...)</code> that returns an <code>ICompilationUnit</code>
     in working copy mode on the given class file. See its Javadoc for more details.</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=111898">111898</a>
[compiler] Wrong code generation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=111822">111822</a>
DOMParser.createASTs() NPE at FieldReference.getConstantFor(FieldReference.java:408)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=109118">109118</a>
[1.5][compiler] Unhandled Exception Compiler error involving generics in java 1.5
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=111812">111812</a>
[compiler] should improve error highlighting for static initializer errors
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=111208">111208</a>
[1.5][compiler] Compiler gets confused by multiple generic-extends'
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=111618">111618</a>
[1.5][dom] Foreach statement shows extraneous semi column into debug variables view
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=111703">111703</a>
Static initialization block in anonymous inner class causes compiler to fail
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110168">110168</a>
[plan] Broadcast AST when reconciling
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=111767">111767</a>
Disassembler doesn't produce an output that can be compiled for annotation types
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=111299">111299</a>
JavaModelCache may overflow the memory.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110596">110596</a>
[assist] don't rank java.lang types lower if a simple name duplicate exists
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110171">110171</a>
[plan] API to encode/decode a classpath entry into XML form
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=111511">111511</a>
Comments in compiler @arguments file
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=111420">111420</a>
Disassembler doesn't generate type parameters
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=111396">111396</a>
TypeHierarchy doesn't notify listeners on addition of fully qualified subtypes
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110160">110160</a>
[plan] Working copy for class file

<a name="v_615"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M3 - 4th October 2005
<br>Project org.eclipse.jdt.core v_615
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_615">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Compiler diagnosis for unnecessary cast is now able to recognize situations like:
  <ul>
  <li> <code>List l = (ArrayList) someList; </code></li>
  <li> <code>List foo(List someList) { return (ArrayList) someList;} </code></li>
  </ul></li>
  <li>Compliance settings can now refer to "1.6" (aka "6.0") in addition to 1.3, 1.4 and 1.5. When classfile target is toggled to "1.6"
  the major/minor version will be adjusted accordingly. Some 1.6 specific attributes (e.g. StackMapTable) are not produced yet.
  </li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=111222">111222</a>
[compiler] add new constants to support JDK 6.0
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=111219">111219</a>
Disassembler generates syntactically incorrect code
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=111014">111014</a>
Internal Compiler Error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=106010">106010</a>
[1.5][compiler] Wrong warning message issued in generic nesting type casting
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110813">110813</a>
[search] ImportMatchLocatorParser should be implemented in its own CU
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=70228">70228</a>
new compiler warning for stuff like Object o = (Integer)(new Object())
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110576">110576</a>
[encoding] Rename CU looses encoding for file which charset is determined by contents
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110304">110304</a>
Formatter has no options for 'return'
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110251">110251</a>
Inaccurate problem description on bad nested class
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110657">110657</a>
[DOM] wrong position for single variable declaration inside enhanced for statement
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110987">110987</a>
[compiler] the operator is not used to InstanceOfExpression
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=108731">108731</a>
improved error message
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110433">110433</a>
JavaModelManager#getElementsOutOfSynchWithBuffers() should use a HashSet
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110434">110434</a>
Move WeakHashSet to model
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110439">110439</a>
HashableWeakReference should be static
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110449">110449</a>
Remove field IndexBasedHierarchyBuilder#handleToWorkingCopy
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110789">110789</a>
ProjectCache.pathToResolvedEntries should be rootToResolvedEntries
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=69471">69471</a>
[DOM/AST] Improve guessing of method binding for overloaded methods
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110773">110773</a>
ITypeBinding#isEqualTo(..) is wrong when comparing NodeList&lt;String&gt;.Cursor to its type declaration
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=109963">109963</a>
[dom] Two VariableDeclarationStatements in switch
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=109940">109940</a>
[dom] IllegalArgumentException is thrown in CharacterLiteral.charValue()
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110270">110270</a>
Failure in model test 20050921-1200
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110082">110082</a>
[compiler] Increase compiler performance for "Remove superfluous NLS strings" warnings
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110849">110849</a>
[compiler] Batch compiler doesn't use the user.dir if no classpath is specified
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110738">110738</a>
[1.5][compiler] Internal compiler error while processing Currency
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110826">110826</a>
[compiler] Batch compiler doesn't work when set on the bootclasspath

<a name="v_614"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M3 - 27th September 2005
<br>Project org.eclipse.jdt.core v_614
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_614">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>
Added optional compiler diagnosis for signaling usage of raw types. A raw type is a reference to some
generic type without any type argument (e.g. "List" in place of "List&lt;Element&gt;").
<pre>
* COMPILER / Reporting Raw Type Reference
*    When enabled, the compiler will signal references to raw types. Raw types are discouraged, and are intended to help interfacing
*    with legacy code. In the future, the language specification may reject raw references to generic types.
*    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation".
*     - option id:         "org.eclipse.jdt.core.compiler.problem.rawTypeReference"
*     - possible values:   { "enabled", "disabled" }
*     - default:           "disabled"
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=107004">107004</a>
NPE in TypeBinding.getKey()
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=108740">108740</a>
[1.5][compiler] Type hierarchy with generics fails with NPE
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=101456">101456</a>
Proposals and Open Declaration fail with NPE
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110570">110570</a>
[1.5][compiler] error in type deduction
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110563">110563</a>
[1.5][compiler] Internal compiler error for varags
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=89529">89529</a>
[1.5][compiler] improve warnings for raw types
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=110182">110182</a>
[compiler] Eclipse does not recompile rt.jar properly 


<a name="v_613"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M2 - 21st September 2005 - 3.2 MILESTONE 2
<br>Project org.eclipse.jdt.core v_613
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_613">cvs</a>).
<h2>
What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=109055">109055</a>
Error starting JDT Core due to IAE: Path for project must have only one segment.
	  	
<a name="v_612"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M2 - 19th September 2005
<br>Project org.eclipse.jdt.core v_612
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_612">cvs</a>).
<h2>
What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=108203">108203</a>
[1.5][compiler] cannot compile internal class implementing interface with parameterized method
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=107681">107681</a>
[1.5][compiler] invalid ambiguous invocation diagnostic
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=107098">107098</a>
[1.5][compiler] method override check fails with instantiated type parameter in bound
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=103849">103849</a>
[jdk][compiler] Incorrect ambiguity error for generic types + inheritance
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=102631">102631</a>
[1.5][compiler] false java error for ambiguous methods

<a name="v_611"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M2 - 16th September 2005
<br>Project org.eclipse.jdt.core v_611
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_611">cvs</a>).
<h2>
What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=109646">109646</a>
[DOM] Parsing using K_STATEMENTS doesn't return the right tree for multiple local declarations
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=109535">109535</a>
[DOM] Wrong infix expression when '-' is used within string literals

<a name="v_610"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M2 - 13th September 2005
<br>Project org.eclipse.jdt.core v_610
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_610">cvs</a>).
<h2>
What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=109333">109333</a>
[DOM/AST] OR_OR and AND_AND expression are not converted to an infix expression using extended operands
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=109340">109340</a>
[Formatter] Wrong positionning of empty statements
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=108622">108622</a>
[javadoc][dom] ASTNode not including javadoc
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=52283">52283</a>
do &lt;single-statement&gt; while(&lt;condition&gt;) is ill-formatted
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=101080">101080</a>
NPE during computePriority for problems
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=108783">108783</a>
[1.5][compiler] Runnable masks Iterable interface in bounds
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=107110">107110</a>
IMethodBinding.isSubsignature not yet correctly implemented
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=101380">101380</a>
[1.5][compiler] Problem when implementing generic interface with method that has enum parameter
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=108820">108820</a>
Index based type hierarchy should not consider interfaces in index when focus is a class
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=99734">99734</a>
[select] CodeSelect fails when selecting an anonymous class of Object
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=108615">108615</a>
Unable to inherit abstract methods from jarred interface
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=108263">108263</a>
[1.5][compiler] Constants initilialization doesn't work inside Annotation


<a name="v_609"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M2 - 6th September 2005
<br>Project org.eclipse.jdt.core v_609
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_609">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>The size limit of the internal Java model cache is now function of the max heap size (-Xmx VM argument) given to the Java Virtual Machine.
      Thus users who give more memory to the VM because they have big .jar files on their classpath will see an increase in performance.
</li>
<li>Reading the .classpath file is now forward compatible with upcoming versions. If a .classpath file contains unknown elements and attributes,
     these are left untouched and are persisted.
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=104695">104695</a>
[1.5][compiler] Compiler allows instanceof with non-reifiable array type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=101425">101425</a>
Classpath persistence should be resilient with unknown attributes
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=108372">108372</a>
[1.5][compiler] Inner class of enclosing raw type don't works
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=106202">106202</a>
JavaModelCache should have configurable LRU cache limits
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=107756">107756</a>
[1.5][compiler] Invalid diagnostic invoking method through raw interface
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=100636">100636</a>
[model] Can't find overriden methods of protected nonstatic inner class.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=100606">100606</a>
NPE during reconcile
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=101228">101228</a>
JME on code assist
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=103466">103466</a>
Stack Overflow: Requesting Java AST from selection
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=87193">87193</a>
CodeFormatter Indent on column wrapping
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=99645">99645</a>
[select] CodeSelect doesn't work for type parameter declaration of a local type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=71766">71766</a>
[format] Formatter fails to wrap lines for assignment statements
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=102284">102284</a>
[5.0 ] CCE in ParameterizedTypeBinding [code assist]
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=83206">83206</a>
ICodeAssist#codeSelect(..) on implicit methods should not return a java element
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=72402">72402</a>
[format] align method arguments
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=103706">103706</a>
[formatter] indent empty lines

<a name="v_608"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M2 - 30th August 2005
<br>Project org.eclipse.jdt.core v_608
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_608">cvs</a>).
<h2>
What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=83005">83005</a>
[1.5][assist] Content Assist in annotation offers to override methods
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=105581">105581</a>
Creating a Java project from existing source fails because of "Unhandled event loop exception": ArrayIndexOutOfBoundsException
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=104486">104486</a>
newNotPresentException when reconciling CU in a non-java project
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=104879">104879</a>
BindingKey#internalToSignature() returns invalid signature for local type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=106725">106725</a>
[content assist] wrong method created when overriding static method
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=107330">107330</a>
ASTParser#createASTs(..) returns invalid binding for key of local type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=107580">107580</a>
Putting a period after an enum element with a constructor causes a crash
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=107735">107735</a>
StringIndexOutOfBoundsException in Util.getNameWithoutJavaLikeExtension()
	  	
<a name="v_607"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M2 - 23rd August 2005
<br>Project org.eclipse.jdt.core v_607
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_607">cvs</a>).
<h2>
What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=107535">107535</a>
batch compiler should put is own version in the compiler log file
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=107079">107079</a>
[1.5][compiler] mis-compiled Wildcard capture leads to a ClassCastException
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=107249">107249</a>
NullPointerException at BinaryIndexer.indexDocument()
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=104202">104202</a>
Better locations for assignement errors
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=102422">102422</a>
Exception referencing class in large jar files
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=100549">100549</a>
Strange binding keys from AST on class file of nested type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=101777">101777</a>
[search] selecting class with a main type ignores the default package
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=107124">107124</a>
NullPointerException at ClassFileStruct.u2At
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=106581">106581</a>
[javadoc] null type binding for parameter in javadoc
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=106936">106936</a>
[1.5][compiler] Unoptimal lub computation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=106865">106865</a>
[1.5][compiler] capture conversion doesn't handle array types
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=105284">105284</a>
[1.5][compiler] Autoboxing: Type mismatch


<a name="v_606"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M2 - 16th August 2005
<br>Project org.eclipse.jdt.core v_606
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_606">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48976">48976</a> is now enabled again. A tool can be installed from <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/jdt-core-home/tools/jdtcoretools/update-site">update site</a>
to easily remove unnecessary nls tags. Copy the link as a new update site under Eclipse. The tool requires a build &gt; 20050812.
<ul>
<li>nls tags are ignored in isolated line comments like:<br>
<pre>
<code>		...
		// System.out.println(""); //$NON-NLS-1$
		...</code>
</pre>
</li>
<li>Other nls comments are reported as unnecessary if they don't match a corresponding string literal</li>
<li>The tool removes the unnecessary nls tags even if the line comment is used for another comment:
<pre>
<code>String s = "Hello, World"; //$NON-NLS-1$ This won't be removed //$NON-NLS-2$ at all</code>
</pre>
becomes:
<pre>
<code>String s = "Hello, World"; //$NON-NLS-1$ This won't be removed  at all</code>
</pre>

</li>
</ul>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=106964">106964</a>
[1.5][search] AIOBE in MethodLocator.matchOverriddenMethod
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=99903">99903</a>
[1.5][search] range wrong for package-info
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=99662">99662</a>
[1.5] JavaModel returns inexistent IType for package-info ICompilationUnits
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=106875">106875</a>
[compiler] Unnecessary nls tags detection fails on duplicate tags
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=105284">105284</a>
[1.5][compiler] Autoboxing: Type mismatch
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=106834">106834</a>
IMethodBinding#isEqualTo(..) wrong with overloaded parameterized methods
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48976">48976</a>
Remove superfluous $NON-NLS comments
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=105816">105816</a>
Extraneous NLS tag incorrectly found in comments
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=106106">106106</a>
[1.5][compiler] Compiler error with Arrays.asList in Java 5 mode?
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=106403">106403</a>
PublicScanner returns EOF late
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=105531">105531</a>
[1.5][compiler] ecj from CVS generates spurious incomprehensible error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=106514">106514</a>
[1.5][compiler] Improve diagnostic on bound mismatch for GenericTypeTests.test790


<a name="v_605"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M1 - 10th August 2005 - 3.2 MILESTONE 1 
<br>Project org.eclipse.jdt.core v_605
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_605">cvs</a>).
<h2>
What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=106656">106656</a>
[compiler] Batch compiler exits with error code -1 when only warnings are found


<a name="v_604"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M1 - 9th August 2005
<br>Project org.eclipse.jdt.core v_604
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_604">cvs</a>).
<h2>
What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=106297">106297</a>
[1.5][compiler] new A&lt;X&gt;().new B(){}


<a name="v_603"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M1 - 8th August 2005
<br>Project org.eclipse.jdt.core v_603
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_603">cvs</a>).
<h2>
What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=100041">100041</a>
[javadoc][dom] Wrong positions when javadoc comment inside method declaration


<a name="v_602"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M1 - 2nd August 2005
<br>Project org.eclipse.jdt.core v_602
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_602">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>The compiler won't report anymore unnecessary non nls tags (see bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48976">48976</a> for details).<br>
This will be reverted after 3.2M1 build.
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=105635">105635</a>
incorrect parsing of field declarations with generic types
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=100772">100772</a>
[1.5][search] Search for declarations in hierarchy reports too many matches
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=100695">100695</a>
[1.5][search] Renaming a field of generic array type has no effect

<a name="v_601"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M1 - 2nd August 2005
<br>Project org.eclipse.jdt.core v_601
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_601">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>The Java conventions built-in code formatter profile has been updated to reflect the tab size at 8.</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=104765">104765</a>
Tab width error in Java Conventions [built-in]
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=105192">105192</a>
NaiveASTFlattener incorrectly renders a for statement with multiple initializers or multiple updaters

<a name="v_600"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.2M1 - 26th July 2005
<br>Project org.eclipse.jdt.core v_600
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_600">cvs</a>).
<h2>
What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=105430">105430</a>
ecj chokes when classpath has leading separator
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=104738">104738</a>
[1.5][compiler] Enclosing method attribute is generated for member type of a local type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=104704">104704</a>
[compiler] caching in the constant pool could be improved
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=104664">104664</a>
[compiler] repeat mode is broken in the batch compiler
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=99423">99423</a>
[1.5] [javadoc] inconsistent getStartPosition()
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=104649">104649</a>
[1.5][compiler] method type variable: inference broken for null
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=104877">104877</a>
[1.5] TypeDeclarationStatement should use DECLARATION_PROPERTY in JLS3 API
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=104780">104780</a>
TVT 3.1: TCT 386 - wrong description for option FORMATTER_INSERT_NEW_LINE_AFTER_ANNOTATION
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=104655">104655</a>
[1.5] inconsistent compiler behavior in generic methods
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=104551">104551</a>
[1.5][compiler] Method override checks fail with raw subtype and type variable as type bound
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=104492">104492</a>
[AST]java.lang.ClassCastException: org.eclipse.jdt.core.dom.PrimitiveType
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=103485">103485</a>
[1.5][compiler] compiler: wrongfully accepted method call
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=104245">104245</a>
AST.newCompilationUnit javadoc error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=103994">103994</a>
[1.5][compiler] Internal compiler error while overriding bootstrap class
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=103528">103528</a>
[1.5][compiler] compiler allows invalid assignment with method type parameter and nested wildcards
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=104082">104082</a>
[1.5][compiler] 1.5 source code gets internal eclipse null pointer error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=104167">104167</a>
[1.5][compiler] incorrect 'unread field' diagnosis
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=103320">103320</a>
Method-local subtype with instance initializer break JDOM
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=103636">103636</a>
JDT compiler produces invalid XML
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=103227">103227</a>
[1.5][compiler] VerifyError in case of a parametrized anonymous class inside a static inner class
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=103148">103148</a>
[1.5][assist] Code completion breaks if using static method generics ( Class.&lt;T&gt;staticMethod(params) )
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=103472">103472</a>
[1.5][compiler] Should detect incompatible super interfaces
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=91426">91426</a>
[Markers] Java task tags in Task View don't have configured priority
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=103023">103023</a>
[1.5][compiler] StackOverflow inferring type arguments
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=102778">102778</a>
Scrapbook page doesn't work with enhanced for statement
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=101283">101283</a>
[1.5][javadoc] Javadoc validation raises missing implementation in compiler
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=100868">100868</a>
Code assist does not recommend methods in anonymous enum subclass
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=101456">101456</a>
Proposals and Open Declaration fail with NPE
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=101387">101387</a>
[1.5][compiler] Incorrect Cycle detected in type hierarchy error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=97326">97326</a>
[dom] ITypeBinding#isFromSource() is always false for type variables, wildcards, and capture types
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=100153">100153</a>
[1.5][compiler] Bound check failure on recursive formal bound
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=100808">100808</a>
[assist] Wrong replace range for package proposals if there is no line termination
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=98532">98532</a>
[1.5][compiler] Spurious 'type parameter T is hiding the type T' warning for static nested classes
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=100797">100797</a>
editor general failure
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=100043">100043</a>
[1.5][compiler] false compiler error on ?: ternary operator with boxing
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=102181">102181</a>
[1.5][compiler] Generic varargs are built with incorrect array type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=102305">102305</a>
Error in JDT Core during reconcile
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=102213">102213</a>
[1.5][compiler] enum constants cannot be referenced inside enum constants initializer
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=101955">101955</a>
NullPointerException after invoking extract method
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=97220">97220</a>
Should not issue nls warning for annotation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=101885">101885</a>
[mode] sort operation doesn't set the RELATIVE_ORDER for enum constants
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=101247">101247</a>
[formatter] Fails to format some labelled statements
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=101713">101713</a>
[1.5][compiler] Access to static fields within enum constructors inconsistent with javac
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=101779">101779</a>
[1.5][compiler] VerifyError using -- operator on unboxed generic Integer type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=101208">101208</a>
[compiler] instanceof check cannot be unnecessary on null values
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=100619">100619</a>
[1.5][compiler] Incorrect duplicate bound diagnosis
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=94759">94759</a>
[1.5][compiler] @Override doesn't report an error inside interface when specified for clone() method
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=98538">98538</a>
[1.5][compiler] Inference broken for subtypes of subtypes of F-bounded types
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=102650">102650</a>
[ast rewrite] Removing all TYPE_PARAMETERS_PROPERTY values in a derived type gives incompilable code


<p><hr>
For earlier build notes, also see <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.jdt.core/notes/R31_buildnotes_jdt-core.html">build notes up to Release 3.1</a>.
<br>
  <p>
    <a href="http://validator.w3.org/check?uri=referer"><img
        src="http://www.w3.org/Icons/valid-html401"
        alt="Valid HTML 4.01 Transitional" height="31" width="88"></a>
  </p>
</body>
</html>