<!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_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>
<ul>
<li>Incremented plug-in version ID to &quot;3.2.2&quot;</li>
</ul>

<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>