<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<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</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 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/main.html"><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"><b>HEAD</b></a> branch. 
	  For more information on 3.2 planning, please refer to <a href="http://www.eclipse.org/jdt/core/r3.2/main.html#release-plan">JDT/Core release plan</a>, 
	  the next <a href="http://www.eclipse.org/jdt/core/r3.2/main.html#milestone-plan">milestone plan</a>, 
	  the overall <a href="http://www.eclipse.org/eclipse/development/eclipse_project_plan_3_2.html">official plan</a>,
	  or the <a href="http://www.eclipse.org/eclipse/platform-releng/buildSchedule.html">build schedule</a>.
	  <!--
	  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_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>
<ul>
</ul>

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

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

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

<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=119203">119203</a>
[search] references to method gives many inaccurate matches in Plug-in Dependencies
<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>
<ul>
</ul>

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

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

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

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

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

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

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

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

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

<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>&nbsp;
</body>
</html>
