<!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">
   <meta name="GENERATOR" content="Mozilla/4.75 [en] (Windows NT 5.0; U) [Netscape]">
   <title>JDT/Core Release Notes</title>

</head>
<body>

<body text="#000000" bgcolor="#FFFFFF">
&nbsp;

<table border=0 cellspacing=5 cellpadding=2 width="100%" >
  <tr> 
    <td align=left width="72%">
      <font face="Verdana, Arial, Helvetica" size="+3"><b>jdt core - build notes 3.0 stream</b></font>
      <br><font face="Arial, Helvetica, sans-serif" size="-2" color="#8080ff">java development tooling core</font></td>
  </tr>
	<tr><td>&nbsp;</td></tr>
  <tr>
  	<td>
	  <font face="Arial, Helvetica, sans-serif" size="-1">
	  Here are the build notes for the Eclipse JDT/Core plug-in project 
	  <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/jdt-core-home/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. 
	  This present document covers all changes since Release 2.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>).
	  Older changes which occurred up to Release 2.1 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>.
	  </font>
	</td>
  </tr>
</table>

<a name="v_500"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0-JDK1.5 Build - ?th ? 2004
<br>Project org.eclipse.jdt.core v_500
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_500">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li> JDK 1.5 support.
<li> JavaCore 1.5 specific options. Either augmented to consider 1.5 or added.
<pre>
* COMPILER / Setting Compliance Level
*    Select the compliance level for the compiler. In "1.3" mode, source and target settings
*    should not go beyond "1.3" level.
*     - option id:         "org.eclipse.jdt.core.compiler.compliance"
*     - possible values:   { "1.3", "1.4", "1.5" }
*     - default:           "1.4"
* 
* COMPILER / Setting Source Compatibility Mode
*    Specify whether which source level compatibility is used. From 1.4 on, 'assert' is a keyword
*    reserved for assertion support. Also note, than when toggling to 1.4 mode, the target VM
*   level should be set to "1.4" and the compliance mode should be "1.4".
*   Source level 1.5 is necessary to enable generics, autoboxing, covariance, annotations, enumerations
*   enhanced for loop, static imports and varargs. Once toggled, the target VM level should be set to "1.5"
*   and the compliance mode should be "1.5".
*     - option id:         "org.eclipse.jdt.core.compiler.source"
*     - possible values:   { "1.3", "1.4", "1.5" }
*     - default:           "1.3"
* 
* COMPILER / Defining Target Java Platform
*    For binary compatibility reason, .class files can be tagged to with certain VM versions and later.
*    Note that "1.4" target require to toggle compliance mode to "1.4" too. Similarily, "1.5" target require
*    to toggle compliance mode to "1.5".
*     - option id:         "org.eclipse.jdt.core.compiler.codegen.targetPlatform"
*     - possible values:   { "1.1", "1.2", "1.3", "1.4", "1.5" }
*     - default:           "1.2"
* 
* COMPILER / Reporting Unsafe Type Operation
*    When enabled, the compiler will issue an error or a warning whenever an operation involves generic types, and potentially
*    invalidates type safety since involving raw types (e.g. invoking #foo(X<String>) with arguments  (X)).
*     - option id:         "org.eclipse.jdt.core.compiler.problem.unsafeTypeOperation"
*     - possible values:   { "error", "warning", "ignore" }
*     - default:           "warning"
*
* COMPILER / Reporting final Bound for Type Parameter
*    When enabled, the compiler will issue an error or a warning whenever a generic type parameter is associated with a 
*    bound corresponding to a final type; since final types cannot be further extended, the parameter is pretty useless.
*     - option id:         "org.eclipse.jdt.core.compiler.problem.finalParameterBound"
*     - 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=58979">58979</a>
[1.5] NullPointerException in compiler
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=58715">58715</a>
[1.5] The return type is incompatible
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=58631">58631</a>
[1.5] Cycle in hierarchy no longer detected
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=58666">58666</a>
[1.5] Object.getClass() need to be treated special ?
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=57784">57784</a>
[1.5] Errors using Arrays.asList(T [])
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=58461">58461</a>
[1.5] java.lang.VerifyError from enhanced for loop
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=53036">53036</a>
Incorrect highlighting for type problem in qualified type name
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=57716">57716</a>
[1.5] NPE compiling SelectionParser in source 1.5
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=57397">57397</a>
[1.5] Unable to save unit
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=56731">56731</a>
[1.5] NPE inside ClassFileStruct when compiling with jre 1.5.0
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51262">51262</a>
[1.5] Handling of additional bounds in type parameters
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=52673">52673</a>
[1.5] ArrayStoreException in 1.5 parser


<a name="v_422"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M9 Build - 20th April 2004
<br>Project org.eclipse.jdt.core v_422
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_422">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Added API for User Library Container support in JavaCore:
<pre>

	/**
	 * Name of the User Library Container id.
	 */
	public static final String USER_LIBRARY_CONTAINER_ID= "org.eclipse.jdt.USER_LIBRARY"; //$NON-NLS-1$
	
	/**
	 * Returns the names of all defined user libraries. The corresponding classpath container path
	 * is the name appended to the USER_LIBRARY_CONTAINER_ID.  
	 * @return Return an array containing the names of all known user defined.
	 */
	public static String[] getUserLibraryNames();
</pre>
</li>
<li>Added API to get classpath container comparison ID in ClasspathContainerInitializer:
<pre>
	/**
	 * Returns an object which identifies a container for comparison purpose. This allows
	 * to eliminate redundant containers when accumulating classpath entries (e.g. 
	 * runtime classpath computation). When requesting a container comparison ID, one
	 * should ensure using its corresponding container initializer. Indeed, a random container
	 * initializer cannot be held responsible for determining comparison IDs for arbitrary 
	 * containers.
	 * <p>
	 * @param containerPath the path of the container which is being checked
	 * @param project the project for which the container is to being checked
	 * @return returns an Object identifying the container for comparison
	 * @since 3.0
	 */
	public Object getComparisonID(IPath containerPath, IJavaProject project);
</pre>
By default, containers are identical if they have same container path first segment
but this may be refined by other container initializer implementations.
<br>
For example, the User Library classpath container initializer added for User Library Container API
implementation (UserLibraryClasspathContainerInitializer) refines the comparison ID to the entire container path.
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=52747">52747</a>
formatter - please special case empty array init
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=59000">59000</a>
Code formatter struggles with end-of-line comments
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=52679">52679</a>
Code formatter formats braces in case and default statements, but no settings exist
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=52940">52940</a>
Formatter: Separate control of new lines in control statements by statement type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47815">47815</a>
Refactoring doesn't work with some project names [refactoring] 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=37657">37657</a>
[plan item] Improve code formatter
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50989">50989</a>
Non-externalized strings wrap lines incorrectly
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=57689">57689</a>
ArrayIndexOutOfBoundsException when creating a new class
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=55004">55004</a>
[DCR] IVariableBinding should have a method returning the constant value
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=58606">58606</a>
Inner class in child calling protected method in parent
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=55979">55979</a>
There are still deprecated formatter constants without new way
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=57117">57117</a>
Ant adapter preserves all deprecation when using compiler arg even if deprecation is set to off

<a name="v_421"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M9 Build - 13th April 2004
<br>Project org.eclipse.jdt.core v_421
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_421">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=57829">57829</a>
Should optimize assert true case
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=57294">57294</a>
Ignore serialVersionUID hiding another field
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=41395">41395</a>
StackOverflowError when pasting code 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=57414">57414</a>
Summary: GB18030: Can not open Java Search dialog. 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=57886">57886</a>
Concurrency issue while initializing containers and variables 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=57858">57858</a>
[Compiler] Marking a field deprecated still report deprecated usage #46973
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=57743">57743</a>
[Compiler] invalid byte code produced when catching Throwable
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=57235">57235</a>
DCR: AST Name.getQualifiedName()

<a name="v_420"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M9 Build - 6th April 2004
<br>Project org.eclipse.jdt.core v_420
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_420">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Added inclusion patterns support. See <code>JavaCore.newSourceEntry(IPath,IPath[],IPath[],IPath)</code> 
	 and <code>IClasspathEntry.getInclusionPatterns()</code> for details.</li>
<li>Added API on WorkingCopyOwner to set the primary buffer provider (for internal use by the jdt-related plug-ins only).
<pre>
	/**
	 * Sets the buffer provider of the primary working copy owner. Note that even if the
	 * buffer provider is a working copy owner, only its createBuffer(ICompilationUnit)
	 * method is used by the primary working copy owner. It doesn't replace the internal primary 
	 * working owner.
 	 * 
	 * This method is for internal use by the jdt-related plug-ins.
	 * Clients outside of the jdt should not reference this method.
	 * 
	 * @param primaryBufferProvider the primary buffer provider
	 */
	public static void setPrimaryBufferProvider(WorkingCopyOwner primaryBufferProvider);
</pre></li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=54009">54009</a>
jardesc should be known to Team/File Content
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51867">51867</a>
An anonymous type is missing in type hierarchy when editor is modified 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=54763">54763</a>
[Compiler] Unnecessary cast not detected
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=52347">52347</a>
NPE in LaunchingPlugin.shutdown 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=55992">55992</a>
AssertionFailed during preference import
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29964">29964</a>
Add inclusion filter 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=55088">55088</a>
IAE when using ICU.reconcile(GET_AST_TRUE, ...) 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=56462">56462</a>
[formatter] java profile; array initializer before closing brace
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=56449">56449</a>
Need to know if a reference match is in Javadoc or in Code 

<a name="v_419"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M9 Build - 30th March 2004
<br>Project org.eclipse.jdt.core v_419
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_419">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Replaced "name" property of ParameterizedType node (DOM/AST) 
with "type" property. The old methods and fields (added earlier in 3.0 cycle)
are deprecated and will be removed shortly.</li>
<li>Added typeParameters property to ClassInstanceCreation node (DOM/AST).</li>
<li>Package org.eclipse.jdt.core.internal.dom.rewrite renamed to org.eclipse.jdt.internal.core.dom.rewrite.</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=56316">56316</a>
JavaProject exists should not populate 
	  	
<a name="v_418"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M8 Build - 25th March 2004 - 3.0 MILESTONE-8
<br>Project org.eclipse.jdt.core v_418
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_418">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=55930">55930</a>
File encoding should be used on save
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=55478">55478</a>
Unused import not reported in IDE
	  	
<a name="v_417"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M8 Build - 24th March 2004
<br>Project org.eclipse.jdt.core v_417
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_417">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Removed failing tests re: encoding support.
</li>
</ul>

<h3>Problem Reports Fixed</h3>

<a name="v_416"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M8 Build - 23rd March 2004
<br>Project org.eclipse.jdt.core v_416
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_416">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=55504">55504</a>
@<tasktag> should not be reported

<a name="v_415"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M8 Build - 23rd March 2004
<br>Project org.eclipse.jdt.core v_415
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_415">cvs</a>).
<h2>
What's new in this drop</h2>
<ul> 
<li> Added rewriting support to DOM AST.
There are two set of API to perform rewriting.
<ul> 
<li>An AST-modifying rewrite API<br>
To use the AST-modifying rewrite the client must create an AST from an existing
compilation unit (ASTParser#createAST(...)).
Then the client need to start the record process of the AST changes (CompilationUnit#recordModifications())
and modify the AST after. When modifications are done, the client can call a method to
compute a text edit tree containing all the text changes (CompilationUnit#rewrite()).

<pre>
CompilationUnit
	public void recordModifications()
	public TextEdit rewrite(IDocument document, Map options) throws RewriteException
</pre>
</li>
<li>A describing rewrite API<br>
To use the describing AST rewrite, the client starts with creating an instance of NewASTRewrite. Then the client
must not modify the AST directly but use NewASTRewrite instead. When modifications are done, the client can call
a method to compute a text edit tree containing all the text changes (NewASTRewrite#rewrite()).
<pre>
NewASTRewrite
	public final void markAsRemoved(ASTNode node, TextEditGroup editGroup)
	public final void markAsReplaced(ASTNode node, ASTNode replacingNode, TextEditGroup editGroup)
	public ListRewriter getListRewrite(ASTNode parent, ChildListPropertyDescriptor childProperty)
	public TextEdit rewriteAST(IDocument document, Map options) throws RewriteException
	...
	
ListRewriter
	remove(ASTNode, TextEditGroup)
	public void replace(ASTNode, ASTNode, TextEditGroup)
	public void insertAfter(ASTNode, ASTNode, TextEditGroup)
	public void insertBefore(ASTNode, ASTNode, TextEditGroup)
	public void insertFirst(ASTNode, TextEditGroup)
	public void insertLast(ASTNode, TextEditGroup)
	public void insertAt(ASTNode, int, TextEditGroup)
	...
</pre>
</li>
</ul>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39068">39068</a>
Adopt new core API for encoding on a per file basis

<a name="v_414"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M8 Build - 22nd March 2004
<br>Project org.eclipse.jdt.core v_414
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_414">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=46668">46668</a>
Changes to class path containers should not change .project 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=55421">55421</a>
Cannot save a .java file in a non-java project anymore 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=55223">55223</a>
Bug in comment mapper: Same comment mapped to 2 statements
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=54044">54044</a>
Ant log does not use system newline character
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=55372">55372</a>
Should not assume that Preferences.defaultPropertyNames() returns default-default properties 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=55221">55221</a>
Bug in comment mapper: Grabs next node's Javadoc
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=55102">55102</a>
NPE when using ICU.reconcile(GET_AST_TRUE, ...) 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49986">49986</a>
setRawClasspath(...) should fire a F_CLASSPATH_CHANGED delta 

<a name="v_413"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M8 Build - 15th March 2004
<br>Project org.eclipse.jdt.core v_413
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_413">cvs</a>).
<h2>
What's new in this drop</h2>
<ul> 
<li> Added compiler option JavaCore.COMPILER_TASK_CASE_SENSITIVE to control whether the task detection
should be case sensitive or not. By default, it is.
<pre>
	 * COMPILER / Determine whether task tags are case-sensitive
	 *    When enabled, task tags are considered in a case-sensitive way.
	 *     - option id:         "org.eclipse.jdt.core.compiler.taskCaseSensitive"
	 *     - possible values:   { "enabled", "disabled" }
	 *     - default:           "enabled"
</pre>
</li>
<li> Added 2 default task tags: "FIXME" and "XXX".
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=54776">54776</a>
DefaultCommentMapper: different behaviour
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=54431">54431</a>
ASTParser should honor set compiler options in all cases
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=54043">54043</a>
Problems with type hierarchy for binary types
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=53095">53095</a>
I20040225: Won't accept breakpoint on NoClassDefFoundError
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=54294">54294</a>
No default for JavaCore.COMPILER_CODEGEN_INLINE_JSR_BYTECODE
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48435">48435</a>
Java Search for OR-pattern finds too much in strange project setup
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40921">40921</a>
Task tags should be case-insensitive
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49266">49266</a>
FIXME task tag


<a name="v_412"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M8 Build - 8th March 2004
<br>Project org.eclipse.jdt.core v_412
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_412">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li> Added new global JavaCore.COMPILER_DOC_COMMENT_SUPPORT option for doc comment (Javadoc) support. By default, this option is enabled for backward compatibility.
<pre>
	 * COMPILER / Javadoc Comment Support
	 *    When this support is disabled, the compiler will ignore all javadoc problems options settings
	 *    and will not report any javadoc problem. It will also not find any reference in javadoc comment and
	 *    DOM AST Javadoc node will be only a flat text instead of having structured tag elements.
	 *     - option id:         "org.eclipse.jdt.core.compiler.doc.comment.support"
	 *     - possible values:   { "enabled", "disabled" }
	 *     - default:           "enabled"
</pre>
See bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=52264">52264</a>.
</li>
<li> Added new JavaCore.COMPILER_CODEGEN_INLINE_JSR_BYTECODE option to allow user to inline subroutine code instead of generating JSR instructions. By default, this option is disabled.
<pre>
	 * COMPILER / Inline JSR Bytecode Instruction
	 *    When enabled, the compiler will no longer generate JSR instructions, but rather inline corresponding
	 *    subroutine code sequences (mostly corresponding to try finally blocks). The generated code will thus
	 *    get bigger, but will load faster on virtual machines since the verification process is then much simpler. 
	 *    This mode is anticipating support for the Java Specification Request 202.
	 *     - option id:         "org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode"
	 *     - possible values:   { "enabled", "disabled" }
	 *     - default:           "disabled"
	 * 
</pre>
Corresponding command line compiler option <code>-noJSR</code> has been renamed to:
<pre>
    <code>-inlineJSR</code> : inline JSR bytecode
</pre>
which means that when specified, the compiler will no longer generate JSR bytecodes, but instead inlining the corresponding subroutine (e.g. finally block).
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=53757">53757</a>
Javadoc tag @transient  ignored
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=530757">53075</a>
https://bugs.eclipse.org/bugs/show_bug.cgi?id=53075
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=53357">53357</a>
Java AST creation error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=52264">52264</a>
Need a global preference to enable Javadoc support
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51529">51529</a>
"Organize imports" is confused by references inside Javadoc
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=53477">53477</a>
AnonymousClassDeclaration has wrong range
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=53624">53624</a>
StackOverFlow in Code assist 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50433">50433</a>
Rationalize signatures of AST.parse* methods 

<a name="v_411"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M8 Build - 3rd March 2004
<br>Project org.eclipse.jdt.core v_411
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_411">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Added new constant <code>IJavaElementDelta.F_CLASSPATH_CHANGED</code> that indicates that
	  the project's raw classpath has changed.
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49986">49986</a>
setRawClasspath(...) should fire a F_CLASSPATH_CHANGED delta 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=53242">53242</a>
Consitent Out of Memory problems indexing (with multiple Java libraries)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=52474">52474</a>
UI Blocked when opening Java Perspective during CVS check out 

<a name="v_410"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M8 Build - 2nd March 2004
<br>Project org.eclipse.jdt.core v_410
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_410">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Added following APIs to <code>org.eclipse.jdt.core.dom.CompilationUnit</code>:
<ul>
<li><code>getCommentList()</code>: Returns a list of the comments encountered while parsing the compilation unit.</li>
<li><code>getExtendedStartPosition(ASTNode)</code>: Returns the extended start position of the given node.</li>
<li><code>getExtendedLength(ASTNode)</code>: Returns the extended source length of the given node.</li>
</li>
</ul>
Unlike <code>ASTNode#getStartPosition()</code> and <code>ASTNode#getLength()</code>, the extended source range may include
comments and whitespace immediately before or after the normal source range for the node.
<br>
See bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=53445">53445</a> for more details on heuristic to find leading and trailing comments.
</li>
<li>Added API <code>FieldReferenceMatch.isReadAccess()</code> and <code>isWriteAccess()</code>.
<li>Added API <code>JavaCore.run(IWorkspaceRunnable action, ISchedulingRule rule, IProgressMonitor monitor)</code> 
	 to control the scheduling rule during a Java batch operation.
</li>
<li>Added API <code>SearchEngine.createJavaSearchScope(IJavaElement[], int)</code> that allows to filter the
     classpath entries added in the scope: SOURCES, APPLICATION_LIBRARIES, SYSTEM_LIBRARIES and REQUIRED_PROJECTS.
</li>
<li> New command line options for batch compiler:
  <ul>
  <li> <code>-maxProblems &lt;n&gt;</code> :  max number of problems per compilation unit (100 by default) </li>
  <li> <code>-noJSR</code> : do not use JSR bytecode </li>
  </ul>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=53445">53445</a>
[DCR] [DOM Comments] Provide extended ranges including leading/trailing comments for AST nodes
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=53276">53276</a>
[DOM Comments] Wrong text element length when containing '\' character
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=52908">52908</a>
[DOM Comments] Wrong text element positions when starting/ending with { or }
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48337">48337</a>
[Search] FieldReferenceMatch should report read/write access 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=52691">52691</a>
Add batch compiler option for maxProblemsPerUnit
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51045">51045</a>
Offer to call JavaCore.run with scheduling rule 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=52273">52273</a>
Add option on predefined search scope to include/exclude system contain libraries 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49809">49809</a>
NPE from MethodVerifier 

<a name="v_409"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M8 Build - 24th February 2004
<br>Project org.eclipse.jdt.core v_409
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_409">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Added new API to create a DOM AST while reconciling 
	 <code>ICompilationUnit.reconcile(boolean, boolean, WorkingCopyOwner, IProgressMonitor)</code>.
</li>
<li>Removed compiler support for deprecating jsr bytecode in 1.5 compliant mode (turned off until future release).
</li>
<li>The constant DefaultCodeFormatterConstants.FORMATTER_PRESERVE_USER_LINEBREAKS will be removed. It has been deprecated for now and
has no effect in the UI anymore.
</li>
<li>The constant DefaultCodeFormatterConstants.FORMATTER_FILLING_SPACE will be removed. It has been deprecated for now and
has no effect in the UI anymore.
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=52916">52916</a>
Strang error message when using jre1.5.0 libraries
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50586">50586</a>
[Code Formatter] trim trailing blanks/whitespace
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=52851">52851</a>
Space before else should be removed in some cases
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=52283">52283</a>
do <single-statement> while(<condition>) is ill-formatted
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=52479">52479</a>
Code Format fails on not on-demand imports
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=52246">52246</a>
M7 Source formatter fails silently when assert present in source
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=52429">52429</a>
code formatter seems to ignore settings
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51623">51623</a>
[formatter] Wrong formatting when "Preserve existing line breaks" switched on
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=52305">52305</a>
Code Formatter strips blank lines in methods and field definitions when I try to tell it not to
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=52746">52746</a>
Formatter - preserve line breaks conflicts with keep blank lines
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=52804">52804</a>
Deprecated formatter constant should indicate new way
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=52619">52619</a>
NPE running Java model tests
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36889">36889</a>
[DCR] Keep AST created in reconcile for active editor 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=52384">52384</a>
OutOfMemoryError opening hierarchy on Object 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=52355">52355</a>
Not present exception trying to create a class in excluded package
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49809">49809</a>
NPE from MethodVerifier
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22104">22104</a>
[infrastructure] NPE from IndexSummary.read(...)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31013">31013</a>
 [infrastructure] npe in index crash recovery
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31014">31014</a>
[infrastructure] exception in indexer
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51447">51447</a>
[infrastructure] NPE running JDT Core tests
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=52221">52221</a>
[Compiler] should reject Local type usage when defined in other switch case block
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=52216">52216</a>
[regression in M7] javadoc: @see <a href> shows a warning
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51990">51990</a>
'parameter' vs 'argument' in compiler errors/settings
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=52012">52012</a>
Special 'serialPersistentFields' marked as 'never used locally'
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51353">51353</a>
The type AbstractStringBuilder is not visible
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49259">49259</a>
Task tags starting with TODO don't correctly display their priority in Tasks View
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49879">49879</a>
java.lang.ClassCastException (SourceTypeBinding to a BinaryTypeBinding) in 30M6 within jdt.core.dom.TypeBinding.getKey(TypeBinding.java:411)

<a name="v_408"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M7 Build - 12th February 2004 - 3.0 MILESTONE-7
<br>Project org.eclipse.jdt.core v_408
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_408">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=51603">51603</a>
[preferences] Code formatter line wrapping preference inconsistent preview behaviour
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51476">51476</a>
Javadoc: String or URL @see references are not stored in DOM AST Javadoc structure
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51478">51478</a>
Javadoc: @deprecated/@inheritDoc tags are not stored in DOM AST Javadoc structure
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51508">51508</a>
Javadoc: Package references DOM AST nodes binding is null
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51626">51626</a>
Javadoc - DOM/AST is not correct after a @see tag
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51650">51650</a>
Incorrected deprecation check
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51770">51770</a>
Javadoc AST Node: wrong binding on qualified name part


<a name="v_407"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M7 Build - 11th February 2004
<br>Project org.eclipse.jdt.core v_407
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_407">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Fixed most of the API Java doc comments. 
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51659">51659</a>
New Code Formatter: minor problem with "White spaces/Array Initializers" option


<a name="v_406"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M7 Build - 10th February 2004
<br>Project org.eclipse.jdt.core v_406
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_406">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=51035">51035</a>
[Formatter] endline comment in case of simple if-then statement


<a name="v_405"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M7 Build - 9th February 2004
<br>Project org.eclipse.jdt.core v_405
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_405">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=51363">51363</a>
Wrong comment positions inside the Scanner.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51201">51201</a>
Code formatter missing 'between empty brackets' option in Whitespace Array allocation configuration
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50695">50695</a>
Javadoc: package reference in @see tags is wrongly warned
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49994">49994</a>
Strange matches with start=0, end=1 in type reference search
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51300">51300</a>
VerifyError when using a array reference assigned to null
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51128">51128</a>
[Code Formatter] Indent statements within blocks and methods
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51241">51241</a>
IllegalArgumentException while creating a DOM/AST
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51249">51249</a>
Performance problems in PackageFragment.getPath 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50276">50276</a>
Function call line wrapping fails on chained calls
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51190">51190</a>
comment after else block goes to next line
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51226">51226</a>
Javadoc inside DOM AST does not support starting characters in unicode
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51104">51104</a>
Comments are not recorded when inside a method body
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50858">50858</a>
Javadoc IProblem constant not defined
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50898">50898</a>
Javadoc AST: Missing binding for reference to non-visible type

<a name="v_404"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M7 Build - 3rd February 2004
<br>Project org.eclipse.jdt.core v_404
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_404">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=50938">50938</a>
Javadoc AST: Still invalid range for embedded tag

<a name="v_403"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M7 Build - 3rd February 2004
<br>Project org.eclipse.jdt.core v_403
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_403">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Updated porting guide to introduce search participant story (see <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.jdt.core/notes/porting_guide.html">porting guide</a>)</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51089">51089</a>
Java AST creation failure 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50571">50571</a>
search sender in hierarchy hangs 

<a name="v_402"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M7 Build - 30th January 2004
<br>Project org.eclipse.jdt.core v_402
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_402">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=50883">50883</a>
Javadoc AST node: Range problem with embedded tags
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50884">50884</a>
Compiler crashes without a trace in the log leaving workspace in unhappy state
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50831">50831</a>
DCR Javadoc AST: Offer well known tag names as constants 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50880">50880</a>
JavadocAST Nodes: Wrong ranges on link
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50877">50877</a>
Javadoc AST Nodes: Wrong ranges
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47396">47396</a>
JAVA AST Creation failure
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50844">50844</a>
AbortCompilation thrown from Name#resolveBinding() 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50746">50746</a>
Searching for variable references can cause an internal error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50838">50838</a>
Javadoc bindings: No bindings in constructor ref parameter
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50840">50840</a>
Javadoc AST: wrong start position on MemberRef

<a name="v_401"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M7 Build - 29th January 2004
<br>Project org.eclipse.jdt.core v_401
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_401">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=46126">46126</a>
[DCR] IBinding should have a method to check @since javadoc tag
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50785">50785</a>
Javadoc bindings: No bindings member refs
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50784">50784</a>
Javadoc bindings: No binding in {@link } and link disturbs other bindings
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50781">50781</a>
Javadoc bindings: No bindings for qualified names
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50736">50736</a>
Out of bounds exception while formatting

<a name="v_400"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M7 Build - 28th January 2004
<br>Project org.eclipse.jdt.core v_400
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_400">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=50694">50694</a>
Javadoc: Cannot find DOM AST bindings for types in @see tags
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50692">50692</a>
Javadoc: Cannot find DOM AST bindings for inline link tags references
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50719">50719</a>
wrong formatting for java coding conventions

<a name="v_399"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M7 Build - 27th January 2004
<br>Project org.eclipse.jdt.core v_399
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_399">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Improve DOM/AST support for doc comments.
<br>Following changes have been made to the DOM/AST API:
<ul>
<li>added Javadoc.tags() to represent structure of the doc comments</li>
<li>deprecated Javadoc.get/setComment</li>
<li>added 5 new node types that occur only within doc comments: TagElement, TextElement, MemberRef, MethodRef, MethodRefParameter</li>
<li>tag elements like MemberRef, MethodRef, and Name can carry binding information (must be requested like elsewhere)</li>
<li>added ASTVisitor(boolean) for controlling whether Javadoc.tags() are visited by default</li>
<li>added ASTMatcher(boolean) for controlling whether Javadoc.tags() are compared vs. only Javadoc.getComment()</li>
<li>AST.parse*(...) now returns structured doc comments (for compatibility, Javadoc.getComment() is also set as before)</li>
</ul>
See bugs <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50683">50683</a>.
</li>
<li>
Improve DOM/AST support for locating all comments.
<br>Following changes have been made to the DOM/AST API:
<ul>
<li>added CompilationUnit.getCommentTable() to record locations of all comments found in the source</li>
<li>added 2 new node types, LineComment and BlockComment, to represent end-of-line and traditional comments respectively</li>
<li>these new nodes are placeholders for comments</li>
<li>these new node types only occur in the comment table (since they can occur anywhere (lexically), there is no way to properly parent them in the regular AST nodes that reflects their position)</li>
<li>AST.parse*(...) now returns sets the comment table on the compilation unit to include all comments (including attached and free-floating doc comments)</li>
</ul>
See bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50697">50697</a>.
</li>
<li> Added option to control whether diagnosis for unused thrown exceptions should be enabled when overriding another
method. By default, it is disabled.
<pre>
* COMPILER / Reporting Unused Declared Thrown Exception in Overridind Method
*    When disabled, the compiler will not include overriding methods in its diagnosis for unused declared
*    thrown exceptions.
*    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException".
*     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding"
*     - 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=50644">50644</a>
Deprecation check doesn't check that the @deprecated is at the beginning of the line
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27134">27134</a>
Add a ASTNode for non-Javadoc comments
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50683">50683</a>
Improve DOM/AST support for doc comments
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50697">50697</a>
Improve DOM/AST support for locating all comments
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50667">50667</a>
Deadlock on Refactor -> Extract method
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47430">47430</a>
the immutable bit is copied from the original resource to the ouput directory
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50601">50601</a>
Blank lines before package declaration is one fewer than specified
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48292">48292</a>
[DCR] Need AST.parsePartialClassFile(....)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50320">50320</a>
Java model operations should use IResourceRuleFactory 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50207">50207</a>
Compile errors fixed by 'refresh' do not reset problem list or package explorer error states 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49691">49691</a>
JavaProject looses property listeners on preferences
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50265">50265</a>
Emulate old formatter with the new formatter
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50225">50225</a>
Calling the default formatter with an empty string returns an invalid Edit 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44876">44876</a>
"Unnecessary declaration of thrown exception" problems


<a name="v_398"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M7 Build - 20th January 2004
<br>Project org.eclipse.jdt.core v_398
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_398">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Major renaming of constants in the code formatter. See <code>org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants</code>. See bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49908">49908</a>.
The old constants have been deprecated and will be removed before M7. So we encourage you to save your code formatter preferences if
you modified the default settings. The UI will provide an automatic conversion to the new options.
</li>
<li>Added API for alignment options in the code formatter.  See <code>org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants</code>. See bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49968">49968</a>.
</li>
<li>Changed 3.0 APIs on <code>org.eclipse.jdt.core.dom.AST</code> to take an <code>IProgressMonitor</code>. This progress monitor is checked for the cancelation of the AST creation only.
</li>
<li>Added API on <code>org.eclipse.jdt.core.dom.AST</code> to parse an expression or statements or class body declarations without requiring the parsing
of the whole compilation unit. This is still subject to change before 3.0.
<pre>
	/**
	 * Parses the given source between the bounds specified by the given offset (inclusive)
	 * and the given length and creates and returns a corresponding abstract syntax tree.
	 * 
	 * The root node of the new AST depends on the given kind.
	 * - <code>org.eclipse.jdt.core.dom.AST.K_CLASS_BODY_DECLARATIONS</code>: The root node is an instance of
	 * <code>org.eclipse.jdt.core.dom.TypeDeclaration</code>. The type declaration itself doesn't contain any information.
	 * It is simply used to return all class body declarations inside the bodyDeclaratins() collection.
	 * - <code>org.eclipse.jdt.core.dom.AST.K_STATEMENTS</code>: The root node is an instance of
	 * <code>org.eclipse.jdt.core.dom.Block</code>. The block itself doesn't contain any information.
	 * It is simply used to return all the statements.
	 * - <code>org.eclipse.jdt.core.dom.AST.K_EXPRESSION</code>: The root node is an instance of a subclass of
	 * <code>org.eclipse.jdt.core.dom.Expression</code>.
	 *  
	 * Each node in the subtree carries source range(s) information relating back
	 * to positions in the given source (the given source itself
	 * is not remembered with the AST). 
	 * The source range usually begins at the first character of the first token 
	 * corresponding to the node; leading whitespace and comments are <b>not</b>
	 * included. The source range usually extends through the last character of
	 * the last token corresponding to the node; trailing whitespace and
	 * comments are <b>not</b> included. There are a handful of exceptions
	 * (including compilation units and the various body declarations); the
	 * specification for these node type spells out the details.
	 * Source ranges nest properly: the source range for a child is always
	 * within the source range of its parent, and the source ranges of sibling
	 * nodes never overlap.
	 * 
	 * This method does not compute binding information; all <code>resolveBinding</code>
	 * methods applied to nodes of the resulting AST return <code>null</code>.
	 * 
	 * <code>null</code> is returned:
	 * 1. If a syntax error is detected while parsing,
	 * 2. If the given source doesn't correspond to the given kind.
	 *  
	 * @param kind the given kind to parse
	 * @param source the string to be parsed
	 * @param offset the given offset
	 * @param length the given length
	 * @param options the given options. If null, <code>JavaCore.getOptions()</code> is used.
	 * @param monitor the progress monitor used to check if the AST creation needs to be canceled
	 * 
	 * @return ASTNode
	 * @see ASTNode#getStartPosition()
	 * @see ASTNode#getLength()
	 * @see AST#K_CLASS_BODY_DECLARATIONS
	 * @see AST#K_EXPRESSION
	 * @see AST#K_STATEMENTS
	 * @see JavaCore#getOptions()
	 * @since 3.0
	 */
	public static ASTNode parse(int kind, char[] source, int offset, int length, Map options, IProgressMonitor monitor);
</pre>
</li>
<li>Added API on <code>org.eclipse.jdt.core.dom.AST</code> to parse a compilation unit and specify
the set of options to use. This is still subject to change before 3.0. The previous API was directly
using <code>JavaCore.getOptions()</code>. This could be problematic in case you want to parse assert
statements.
<pre>
	/**
	 * Parses the given string as a Java compilation unit and creates and 
	 * returns a corresponding abstract syntax tree.
	 * 
	 * The given options are used to find out the compiler options to use while parsing.
	 * This could implies the settings for the assertion support. See the <code>JavaCore.getOptions()</code>
	 * methods for further details.
	 * 
	 * 
	 * The returned compilation unit node is the root node of a new AST.
	 * Each node in the subtree carries source range(s) information relating back
	 * to positions in the given source string (the given source string itself
	 * is not remembered with the AST). 
	 * The source range usually begins at the first character of the first token 
	 * corresponding to the node; leading whitespace and comments are <b>not</b>
	 * included. The source range usually extends through the last character of
	 * the last token corresponding to the node; trailing whitespace and
	 * comments are <b>not</b> included. There are a handful of exceptions
	 * (including compilation units and the various body declarations); the
	 * specification for these node type spells out the details.
	 * Source ranges nest properly: the source range for a child is always
	 * within the source range of its parent, and the source ranges of sibling
	 * nodes never overlap.
	 * If a syntax error is detected while parsing, the relevant node(s) of the
	 * tree will be flagged as <code>MALFORMED</code>.
	 * 
	 * 
	 * This method does not compute binding information; all <code>resolveBinding</code>
	 * methods applied to nodes of the resulting AST return <code>null</code>.
	 * 
	 * 
	 * @param source the string to be parsed as a Java compilation unit
	 * @param options options to use while parsing the file. If null, <code>JavaCore.getOptions()</code> is used.
	 * @param monitor the progress monitor used to check if the AST creation needs to be canceled
	 * @return CompilationUnit
	 * @see ASTNode#getFlags()
	 * @see ASTNode#MALFORMED
	 * @see ASTNode#getStartPosition()
	 * @see ASTNode#getLength()
	 * @see JavaCore#getOptions()
	 * @since 3.0
	 */
	public static CompilationUnit parseCompilationUnit(char[] source, Map options, IProgressMonitor monitor);
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50258">50258</a>
AST.parseCompilationUnit(... IWorkingCopyOwner..) should allow null 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49937">49937</a>
JavaDoc of ITypeBinding#isLocal() talks about local interfaces 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49845">49845</a>
DCR: Allow to cancel the AST creation 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48489">48489</a>
[DCR] AST support for a single expression (vs. CU)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49327">49327</a>
formatter can return null TextEdit when parsing valid java
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49908">49908</a>
Renaming of DefaultCodeFormatterConstants.java
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49968">49968</a>
[formatter] Alignment API
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49953">49953</a>
[Code Formatter] Cannot customize the spaces around brackets in array allocation expression
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50025">50025</a>
uppercase ZIP and JAR classpath entries ignored
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45060">45060</a>
Missing external jar prevents build, but jar still in Java model 

<a name="v_397"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M7 Build - 13th January 2004
<br>Project org.eclipse.jdt.core v_397
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_397">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Added API to get the scheduling rule for a Java element:
<pre>
	/**
	 * Returns the scheduling rule associated with this Java element.
	 * This is a handle-only method.
	 * 
	 * @return the scheduling rule associated with this Java element
	 * @since 3.0
	 */
	ISchedulingRule getSchedulingRule();
</pre>
</li>
<li>Code formatter: If you did change the value of the setting controlling the insertion of a white space between empty arguments of a method declaration,
then you have to change it again. Indeed, a spelling mistake has been fixed in the constant name. See bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49530">49530</a>.</li>
<li>Inline tags are now supported in Javadoc comments:
<ul><li>{@link} and {@linkplain} tags are now parsed using same rules as for @see tag. See bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48385">48385</a>.
<br>Because references declared in these tags should be now found during search operation,  the index format had to be changed. Indexes will be automatically regenerated upon subsequent search queries (accounting for indexing notification in search progress dialogs).</li>
<li>{@inheritDoc} tag is now parsed. When this tag is present in a method javadoc comment, all missing tags errors are ignored.
See bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45782">45782</a>.</li>
</ul>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49843">49843</a>
Not reporting error on constructor with no body
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49491">49491</a>
Add option to toggle warning for Javadoc multiple same name @throws tags
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49260">49260</a>
Malformed Javadoc Compiler option sensitive to line breaks
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45782">45782</a>
[DCR] Compiler should take into account {@inheritDoc} tag
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48385">48385</a>
[DCR] Need Javadoc warning for {@link }
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49760">49760</a>
Splitting up FORMATTER_INSERT_SPACE_WITHIN_MESSAGE_SEND
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49763">49763</a>
New formatter: Problem with empty statement in while
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48701">48701</a>
NPE evaluating watch expression 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49290">49290</a>
NullpointerException in TypeBinding.getInterfaces(). 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49660">49660</a>
Code formatter line wrapping indentation ignores whitespace settings
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48293">48293</a>
[DCR] IJavaElement should implement ISchedulingRule 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48459">48459</a>
NPE in Type hierarchy 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49653">49653</a>
Unnecessary white space is added after last semicolon in for statement without increments
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49351">49351</a>
New code formatter: left curly brace placement
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49530">49530</a>
Spelling mistake in the FORMATTER_INSERT_SPACE_BETWEEN_EMPTY_ARGUMENTS string constant
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49298">49298</a>
Code formatter does not correctly space closing bracket on method calls
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48395">48395</a>
Hierarchy on region misses local classes 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47743">47743</a>
Open type hiearchy problems [type hierarchy] 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49571">49571</a>
White space options for method and constructor declarations
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49577">49577</a>
Add an option to specify the number of blank lines between two type declarations
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49551">49551</a>
formatter fails on empty statement between package and imports
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39943">39943</a>
[navigation] outliner auto-changes selection (multi-fields) 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49490">49490</a>
New Code Formatter; Java Coding Conventions; Blank Lines; Before first declaration
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49561">49561</a>
Commit should only lock parent's folder 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47699">47699</a>
Make org.eclipse.core.runtime.compatibility non optional 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=41444">41444</a>
[navigation] error dialog on opening class file 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48350">48350</a>
IType#resolveType(String) fails on local types 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49120">49120</a>
search doesn't find references to anonymous inner methods 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49482">49482</a>
New Code Formatter; if/else without curly braces; guardian clause (2)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49481">49481</a>
New Code Formatter; if/else without curly braces; guardian clause (1)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49361">49361</a>
FORMATTER_INSERT_SPACE_BETWEEN_EMPTY_ARRAY_INITIALIZER
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49243">49243</a>
New code formatter: missing feature
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49429">49429</a>
error during build
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48404">48404</a>
formatter: no edit returned

<a name="v_396"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M6 Build - 18th December 2003 - 3.0 MILESTONE-6
<br>Project org.eclipse.jdt.core v_396
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_396">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=49081">49081</a>
JDT is no more using the tab character by default for indentation 

<a name="v_395"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M6 Build - 17th December 2003
<br>Project org.eclipse.jdt.core v_395
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_395">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=48706">48706</a>
NPE in move refactoring 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48965">48965</a>
Javadoc problem preference settings: Use 'include' instead of 'ignore'

<a name="v_394"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M6 Build - 16th December 2003
<br>Project org.eclipse.jdt.core v_394
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_394">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=47209">47209</a>
Javadoc: Type references are not found in @see tag inside a method reference

<a name="v_393"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M6 Build - 16th December 2003
<br>Project org.eclipse.jdt.core v_393
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_393">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=48818">48818</a>
NPE in delta processor 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48711">48711</a>
javadoc-warning if derived exception in @throws clause
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46040">46040</a>
NPE in Eclipse console 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48725">48725</a>
Cannot search for local vars in jars. 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48749">48749</a>
[Compiler] deprecation check in initializer fooled by trailing deprecated field decl


<a name="v_392"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M6 Build - 15th December 2003
<br>Project org.eclipse.jdt.core v_392
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_392">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li> Added option to avoid reporting a warning when overriding a deprecated method. By default, such
warnings are no longer reported.
<pre>
 * COMPILER / Reporting Deprecation When Overriding Deprecated Method
 *    When enabled, the compiler will signal the declaration of a method overriding a deprecated one.
 *    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.deprecation".
 *     - option id:        "org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod"
 *     - possible values:   { "enabled", "disabled" }
 *     - default:           "disabled"
</pre>	 
<li>Compiler options to signal problems with javadoc comments have been improved. User can now decide to report
independently problems on invalid tags (syntax and references), missing tags and missing comments.
Invalid references, missing tags or missing comments problem can be now ignored below a specific visibility level.
Finally, user will also have the possibility to ignore missing tags and missing comments on overriding methods
(assuming that complete Javadoc comments is done in superclass or interface declaration).
<br>
Here's the complete list of these options:
<pre>
	 * COMPILER / Reporting Invalid Javadoc Comment
	 *    This is the generic control for the severity of Javadoc problems.
	 *    When enabled, the compiler will issue an error or a warning for a problem in Javadoc.
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.invalidJavadoc"
	 *     - possible values:   { "error", "warning", "ignore" }
	 *     - default:           "ignore"
	 *
	 * COMPILER / Visibility Level For Invalid Javadoc Tags
	 *    Set the minimum visibility level for Javadoc tag problems. Below this level problems will be ignored.
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility"
	 *     - possible values:   { "public", "protected", "default", "private" }
	 *     - default:           "private"
	 * 
	 * COMPILER / Reporting Invalid Javadoc Tags
	 *    When enabled, the compiler will signal unbound or unexpected reference tags in Javadoc.
	 *    A 'throws' tag referencing an undeclared exception would be considered as unexpected.
	 *    <br>Note that this diagnosis can be enabled based on the visibility of the construct associated with the Javadoc;
	 *    also see the setting "org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility".
	 *    <br>
	 *    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.invalidJavadoc".
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.invalidJavadocTags"
	 *     - possible values:   { "disabled", "enabled" }
	 *     - default:           "enabled"
	 * 
	 * COMPILER / Reporting Missing Javadoc Tags
	 *    This is the generic control for the severity of Javadoc missing tag problems.
	 *    When enabled, the compiler will issue an error or a warning when tags are missing in Javadoc comments.
	 *    <br>Note that this diagnosis can be enabled based on the visibility of the construct associated with the Javadoc;
	 *    also see the setting "org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility".
	 *    <br>
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.missingJavadocTags"
	 *     - possible values:   { "error", "warning", "ignore" }
	 *     - default:           "ignore"
	 * 
	 * COMPILER / Visibility Level For Missing Javadoc Tags
	 *    Set the minimum visibility level for Javadoc missing tag problems. Below this level problems will be ignored.
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility"
	 *     - possible values:   { "public", "protected", "default", "private" }
	 *     - default:           "private"
	 * 
	 * COMPILER / Reporting Missing Javadoc Tags on Overriding Methods
	 *    Specify whether the compiler will verify overriding methods in order to report Javadoc missing tag problems.
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding"
	 *     - possible values:   { "enabled", "disabled" }
	 *     - default:           "enabled"
	 * 
	 * COMPILER / Reporting Missing Javadoc Comments
	 *    This is the generic control for the severity of missing Javadoc comment problems.
	 *    When enabled, the compiler will issue an error or a warning when Javadoc comments are missing.
	 *    <br>Note that this diagnosis can be enabled based on the visibility of the construct associated with the expected Javadoc;
	 *    also see the setting "org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility".
	 *    <br>
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.missingJavadocComments"
	 *     - possible values:   { "error", "warning", "ignore" }
	 *     - default:           "ignore"
	 * 
	 * COMPILER / Visibility Level For Missing Javadoc Comments
	 *    Set the minimum visibility level for missing Javadoc problems. Below this level problems will be ignored.
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility"
	 *     - possible values:   { "public", "protected", "default", "private" }
	 *     - default:           "public"
	 * 
	 * COMPILER / Reporting Missing Javadoc Comments on Overriding Methods
	 *    Specify whether the compiler will verify overriding methods in order to report missing Javadoc comment problems.
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding"
	 *     - possible values:   { "enabled", "disabled" }
	 *     - default:           "enabled"
	 * 
</pre>
Note that backward compatibility with previous options IDs: <code>"org.eclipse.jdt.core.compiler.problem.missingJavadoc"</code>
will be supported until 3.0M7 build and removed after.
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47214">47214</a>
Cannot open declaration on a selected method of an anonymous class 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47795">47795</a>
NPE selecting method in anonymous 2 level deep 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48335">48335</a>
[Compiler] Need option to not report deprecation in override scenarii
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48523">48523</a>
@throws reference incorrectly warned as not declared
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47940">47940</a>
Unable to control level  of JavaDoc errors
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47319">47319</a>
Compiler warns on missing Javadoc tags for private methods.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46976">46976</a>
Do not warn about 'Missing Javadoc'  for overriding methods
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46854">46854</a>
[DCR] Javadoc configuration setting needs more flexibility
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48617">48617</a>
Error range for unresolved names in qualified references
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48333">48333</a>
[Compiler] Implicit deprecation isn't propagated to anonymous type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46084">46084</a>
ArrayIndexOutOfBoundsException in compiler after feeding with non-real java code 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43354">43354</a>
CodeAssist relevance should privilege package completion over type name 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48422">48422</a>
Calling isStructureKnown() on ILocalVaraible throws JavaModelExceptions 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48261">48261</a>
Search does not show results 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47213">47213</a>
Inefficient recursion while initializing classpath container 

<a name="v_391"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M6 Build - 10th December 2003
<br>Project org.eclipse.jdt.core v_391
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_391">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>We reverted back the behavior when using the class literal. See bugs <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=37565">37565</a> and
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48086">48086</a>. As long as javac doesn't clarify this case, we keep
the old behavior.</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48086">48086</a>
Compiler does not resolve references in static init blocks correctly
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48353">48353</a>
Indexes deleted on shutdown 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=42579">42579</a>
Eclipse allows setting a source folder's parent as output folder, which wipes out source code

<a name="v_390"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M6 Build - 9th December 2003
<br>Project org.eclipse.jdt.core v_390
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_390">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>The classpath validation rules now allow an excluded directory to be used as an output location. 
Remember that a source folder can be associated with exclusion rules so as to eliminate portions of the
source tree. Nested source/library entries were already allowed given proper exclusion rules were specified,
now we also enable nesting an output folder as well under the same restrictions.
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47338">47338</a>
CCE in CompletionParser
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45589">45589</a>
Too many Util classes in JDTCore 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39539">39539</a>
Cannot select excluded directory as output folder for class files
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48070">48070</a>
[CodeAssist] ArrayIndexOutOfBoundsException in AssistParster
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48167">48167</a>
Indentation/line wrapping problems with array initializers
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32022">32022</a>
Indirect static proposal: Wrong compiler positions
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48141">48141</a>
Formatter: Java Conventions/WS/Expressions/Operators 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45157">45157</a>
Source Formatter: Clear all Blank lines needs to have the ability to set a number of lines to keep.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44673">44673</a>
Formatting
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=38523">38523</a>
so add "Insert new line after each parameter if line is too long" checkbox to Preferences > Java > Code Formatter > New Lines
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=34897">34897</a>
Code Formatter feature request
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46937">46937</a>
[Compiler] Marking a field deprecated still report deprecated usage
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47989">47989</a>
Exception when searching for IPackageFragment "java.util.zip"
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47997">47997</a>
No empty line after opening brace [formatter]
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48064">48064</a>
Javadoc: NPE during build process
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44815">44815</a>
Continuation indent for array initializer should be customizable
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44813">44813</a>
Option "Insert new line before an open brace" should work also for array initializers
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43212">43212</a>
catch variable not recognized by code-completion 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46060">46060</a>
regression - content assist fails to present proposal 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47918">47918</a>
New code Formatter 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47968">47968</a>
Cannot find @see references in Class javadoc comment
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47909">47909</a>
Javadoc: NPE while searching a constructor references in jdt-core
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47986">47986</a>
Formatting of 'for' initializers
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47976">47976</a>
Implementation of IField.getConstant() fails for some constants
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47886">47886</a>
[Compiler] ACC_SUPER bit sets for interfaces

<a name="v_389"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M6 Build - 2nd December 2003
<br>Project org.eclipse.jdt.core v_389
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_389">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Spec and implementation for <code>ITypeBinding.getBinaryName()</code> was changed to be '.' separated:
<pre>
 /**
 * Returns the binary name of this type binding.
 * The binary name of a class is defined in the Java Language 
 * Specification 2nd edition, section 13.1.
 *
 * Note that in some cases, the binary name may be unavailable.
 * This may happen, for example, for a local type declared in 
 * unreachable code.
 *
 * @return the binary name of this type, or null 
 * if the binary name is unknown
 * @since 3.0
 */
public String getBinaryName();
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47881">47881</a>
[Compiler] x && false evaluates to "true"
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47802">47802</a>
New Code Formatter: NEXT_PER_LINE_SPLIT
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47811">47811</a>
New Code Formatter: doesn't handle several classes per CU
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47801">47801</a>
New Code Formatter: INSERT_SPACE_AFTER_PREFIX_OPERATOR
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47800">47800</a>
New Code Formatter: BINARY_EXPRESSION_ALIGNMENT
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47799">47799</a>
New Code Formatter: PUT_EMPTY_STATEMENT_ON_NEW_LINE
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47776">47776</a>
java.lang.VerifyError / Illegal target of jump or branch compiling with 3.0 M5
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47341">47341</a>
Javadoc problem for @see to protected method
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47339">47339</a>
Javadoc problem while using @see tag
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47132">47132</a>
Javadoc for method in anonymous type should not be mark as missing
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47215">47215</a>
Javadoc: type reference in @see tag ignore the following text
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46761">46761</a>
Search for references: misses match in Javadoc
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46675">46675</a>
[Compiler] NullPointerException with ? operator
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35220">35220</a>
CodeAssist - method of anonymous type should not be proposed
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47631">47631</a>
PerThreadObject (JavaModelManager.deltaState) leaks Threads.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46470">46470</a>
Wrong completion after a switch
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35232">35232</a>
CodeAssist - wrong completion for static method in anonymous type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47401">47401</a>
Wrong code assist proposals in anonymous class
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47443">47443</a>
All projects touched on startup
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44493">44493</a>
Improve formatting of throws clauses
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44765">44765</a>
New formatter not properly formatting long method invocation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44653">44653</a>
// $NON-NLS-1$ comments not kept on same line of the string while formatting
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46699">46699</a>
IBinding.isSynthetic() returns false for compiler-generated constructor
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47415">47415</a>
[Search] package references confused with multiple fragments
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=38679">38679</a>
Search for class ref shows local class containing a match on an import [search]
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47049">47049</a>
[Builder] Build output folder not getting flushed because files are not marked as derived
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46613">46613</a>
AST nodes and string buffers
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47396">47396</a>
JAVA AST Creation failure

<a name="v_388"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M6 Build - 25th November 2003
<br>Project org.eclipse.jdt.core v_388
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_388">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=47082">47082</a>
[Compiler] Problem with final variable initialization
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47180">47180</a>
Merge different type declarations into one class


<a name="v_387"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M5 Build - 21st November 2003 - 3.0 MILESTONE-5
<br>Project org.eclipse.jdt.core v_387
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_387">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=44397">44397</a>
Search doesn't find references to local types
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46571">46571</a>
Searching for all occurrences for method declarated in local types doesn't wor
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46943">46943</a>
refactoring: encapsulate field of local type: references from enclosing type are not replaced by setter 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47180">47180</a>
NPE in Delta Processor 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46788">46788</a>
Export scripts: shouldn't use variable name version
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47160">47160</a>
ArrayIndexOutOfBoundsException from CodeSnippetParser
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47177">47177</a>
ClassCastException during hover
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47079">47079</a>
[Builder] suspicious side-effects during incremental compile

<a name="v_386"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M5 Build - 20th November 2003
<br>Project org.eclipse.jdt.core v_386
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_386">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Removed APIs that create an <code>ICompilationUnit</code> handle given a <code>WorkingCopyOwner</code>
	 as these can be replaced with <code>ICompilationUnit.findWorkingCopy(WorkingCopyOwner)</code>:
	 <ul>
	 <li><code>IPackageFragment.getCompilationUnit(String, WorkingCopyOwner)</code></li>
	 <li><code>JavaCore.create(IFile, WorkingCopyOwner)</code></li>
	 <li><code>JavaCore.create(IResource, WorkingCopyOwner)</code></li>
	 <li><code>JavaCore.createCompilationUnitFrom(IFile, WorkingCopyOwner)</code></li>
	 <li><code>IDOMCompilationUnit.getCompilationUnit(IPackageFragment, WorkingCopyOwner)</code></li>
	 </ul>
	 <br>
</li>
<li>Added API on <code>ICompilationUnit</code> to find an existing working copy given a working
	 copy owner (it replaces <code>IWorkingCopy.findSharedWorkingCopy(IBufferFactory)</code>):
<pre>
/**
 * Finds the working copy for this compilation unit, given a <code>WorkingCopyOwner</code>. 
 * If no working copy has been created for this compilation unit associated with this
 * working copy owner, returns <code>null</code>.
 *
 * Users of this method must not destroy the resulting working copy. 
 * 
 * @param owner the given <code>WorkingCopyOwner</code>
 * @return the found working copy for this compilation unit, <code>null</code> if none
 * @see WorkingCopyOwner
 * @since 3.0
 */
ICompilationUnit findWorkingCopy(WorkingCopyOwner owner);
</pre>
</li>
<li>Added API on <code>IClassFile</code> to create a working copy on a class file (it replaces 
	 <code>IClassFile.getWorkingCopy(IProgressMonitor, IBufferFactory)</code>):
<pre>
/**
 * Returns a working copy on the source associated with this class file using the given 
 * owner to create the buffer, or <code>null</code> if there is no source associated
 * with the class file.
 * 
 * The buffer will be automatically initialized with the source of the class file
 * upon creation.
 * 
 * The only valid operations on this working copy are <code>getBuffer()</code> or <code>getPrimary()</code>.
 *
 * @param owner the owner that creates a buffer that is used to get the content of the working copy
 *                 or <code>null</code> if the primary owner should be used
 * @param monitor a progress monitor used to report progress while opening this compilation unit
 *                 or <code>null</code> if no progress should be reported 
 * @return a  a working copy on the source associated with this class file
 * @exception JavaModelException if the source of this class file can
 *   not be determined. Reasons include:
 *   - This class file does not exist (ELEMENT_DOES_NOT_EXIST)
 * @since 3.0
 */
ICompilationUnit getWorkingCopy(WorkingCopyOwner owner, IProgressMonitor monitor) throws JavaModelException;
</pre>
</li>
<li>Added API on <code>ITypeBinding</code> to get the binary name of a type binding:
<pre>
/**
 * Returns the binary name (as defined in the Java Language 
 * Specification Chapter 13 Section 1) of this type binding.
 * It is however slash ('/') separated instead of dot ('.') separated as said
 * in the specification.
 * Returns <code>null</code> if the type is defined in code that is unreachable.
 *
 * @return the binary name of this type or <code>null</code> if this type is unreachable
 */
String getBinaryName();
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46012">46012</a>
IllegalArgumentException in StringLiteral
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46769">46769</a>
NPE in PatternLocator.qualifiedSourceName
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47074">47074</a>
inability to detect invalid cast between interfaces
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46057">46057</a>
need mechanism for retrieving the name of anonymous and local classes 

<a name="v_385"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M5 Build - 19th November 2003
<br>Project org.eclipse.jdt.core v_385
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_385">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=46964">46964</a>
Can not set Javadoc compiler setting
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46901">46901</a>
Strange compile error in javadoc

<a name="v_384"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M5 Build - 19th November 2003
<br>Project org.eclipse.jdt.core v_384
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_384">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Added API on <code>ICompilationUnit</code> to query whether the working copy's resource has changed 
	 (it replaces <code>IWorkingCopy.isBasedOn(IResource)</code>):
<pre>
/**
 * Returns whether the resource of this working copy has changed since the
 * inception of this working copy.
 * Returns <code>false</code> if this compilation unit is not in working copy mode.
 * 
 * @return whether the resource has changed
 * @since 3.0
 */
public boolean hasResourceChanged();
</pre>
</li>
<li>Added APIs on <code>IType</code> to create hierarchies using <code>ICompilationUnits</code> instead of
     <code>IWorkingCopies</code>:
<pre>
/**
 * Creates and returns a type hierarchy for this type containing
 * this type and all of its supertypes, considering types in the given 
 * working copies. In other words, the list of working copies will take 
 * precedence over their original compilation units in the workspace.
 *
 * Note that passing an empty working copy will be as if the original compilation
 * unit had been deleted.
 *
 * @param workingCopies the working copies that take precedence over their original compilation units
 * @param monitor the given progress monitor
 * @return a type hierarchy for this type containing this type and all of its supertypes
 * @exception JavaModelException if this element does not exist or if an
 *		exception occurs while accessing its corresponding resource.
 * @since 3.0
 */
ITypeHierarchy newSupertypeHierarchy(ICompilationUnit[] workingCopies, IProgressMonitor monitor) throws JavaModelException;

/**
 * Creates and returns a type hierarchy for this type containing
 * this type, all of its supertypes, and all its subtypes in the workspace, 
 * considering types in the given working copies. In other words, the list of working 
 * copies that will take precedence over their original compilation units in the workspace.
 * 
 * Note that passing an empty working copy will be as if the original compilation
 * unit had been deleted.
 *
 * @param workingCopies the working copies that take precedence over their original compilation units
 * @param monitor the given progress monitor
 * @return a type hierarchy for this type containing
 * this type, all of its supertypes, and all its subtypes in the workspace
 * @exception JavaModelException if this element does not exist or if an
 *		exception occurs while accessing its corresponding resource.
 * @since 3.0
 */
ITypeHierarchy newTypeHierarchy(ICompilationUnit[] workingCopies, IProgressMonitor monitor) throws JavaModelException;
</pre>
<li>Added API on <code>SearchEngine</code> to create a search engine using 
	 <code>ICompilationUnits</code> instead of <code>IWorkingCopies</code>:
<pre>
/**
 * Creates a new search engine with a list of working copies that will take precedence over 
 * their original compilation units in the subsequent search operations.
 *
 * Note that passing an empty working copy will be as if the original compilation
 * unit had been deleted.
 *
 * Since 3.0 the given working copies take precedence over primary working copies (if any).
 * 
 * @param workingCopies the working copies that take precedence over their original compilation units
 * @since 3.0
 */
public SearchEngine(ICompilationUnit[] workingCopies) {...}
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>

<a name="v_383"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M5 Build - 18th November 2003
<br>Project org.eclipse.jdt.core v_383
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_383">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>To avoid confusion with annotations introduced in JDK 1.5 grammar, all internal references to "annotation" (added to handle Javadoc comments) 
got renamed into "Javadoc". As a consequence of this is that IDs for optional Javadoc problems have been updated accordingly:
<pre>
	 * COMPILER / Reporting Invalid Javadoc Comment
	 *    When enabled, the compiler will issue an error or a warning when a javadoc comment is inconsistent,
	 *    misses a tag entry or contains invalid references.
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.invalidJavadoc"
	 *     - possible values:   { "error", "warning", "ignore" }
	 *     - default:           "ignore"
	 * COMPILER / Reporting Missing Javadoc Comment
	 *    When enabled, the compiler will signal cases where public class, interface, method, constructor or field
	 *    (considered as part of the API) has no javadoc comment.
	 *    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.invalidJavadoc".
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.missingJavadoc"
	 *     - possible values:   { "enabled", "disabled" }
	 *     - default:           "disabled"
</pre>
Note that backward compatibility with previous options IDs: <code>"org.eclipse.jdt.core.compiler.problem.invalidAnnotation"</code> and <code>"org.eclipse.jdt.core.compiler.problem.missingAnnotation"</code>
will be supported until 3.0M6 build and removed after.
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46717">46717</a>
The code formatter does not insert a new line before /** Javadoc
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45958">45958</a>
Compiler wrongly complains against valid @see constructor reference
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45112">45112</a>
Use Javadoc instead of Annotation for comment compiler parsing
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46052">46052</a>
result of ITypeHierarchy.getAllSuperTypes() does not include Object 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46192">46192</a>
ILocalVariable.exists() always returns false 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=14103">14103</a>
[Builder] Too many dependents found when incrementally recompiling
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39601">39601</a>
[DOM/AST] clarify documentation of source ranges
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39739">39739</a>
[DOM/AST] VariableDeclarationStatements aren't full statements
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46690">46690</a>
Code formatter always inserts space after comma in multiple locals or field declarations
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46689">46689</a>
Code formatter always inserts a space in front of the '-' unary operator
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46686">46686</a>
Code formatter doesn't indent properly statements following a switch statement
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46356">46356</a>
[Builder] simple/qualified names list for indicting dependents should be hashed collections
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46612">46612</a>
[DOM/AST] BodyDeclaration should provide a method getModifiers

<a name="v_382"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M5 Build - 10th November 2003
<br>Project org.eclipse.jdt.core v_382
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_382">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=46276">46276</a>
Search for package declarations incorrectly finds matches in clone project
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46099">46099</a>
Batch compiler doesn't print stats if errors and not proceeding on errors
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40950">40950</a>
[infrastructure] NPE from indexer
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46150">46150</a>
formatter failed to format
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46013">46013</a>
IBinding.getKey() for local shouldn't return null 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46033">46033</a>
New formatter not formatting nested constructor/methods properly
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46093">46093</a>
[Builder] Unoptimal pre-check for not writing class files
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45847">45847</a>
[Builder] Reading build state is slow
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45982">45982</a>
Array out of bounds error while editing Java file
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=41611">41611</a>
CreateCompilationUnitOperation.executeOperation() should probably force creation more agressively 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45113">45113</a>
No hierarchy refresh when on region 


<a name="v_381"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M5 Build - 4th November 2003
<br>Project org.eclipse.jdt.core v_381
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_381">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=45968">45968</a>
[new formatter] Formatter introduces empty lines inside line comments
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44450">44450</a>
Strange name range for anonymous classes. 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43139">43139</a>
Delete member in Outliner not working 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45944">45944</a>
Stack trace attempting to find markers on a closed project 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44884">44884</a>
Wrong list displayed while code completion 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45661">45661</a>
Search for references of default package fails
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45671">45671</a>
Need source range and getTypeSignature() for local variables 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45575">45575</a>
Failure in nightly build of formatter tests (test325)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45783">45783</a>
NPE in MatchLocator
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22073">22073</a>
Each "format" adds one more level of indentation.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23709">23709</a>
for (/*comment*/; causes indentation to misbehave 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27249">27249</a>
incorrect formatting of empty array initialization blocks 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29473">29473</a>
wrong formatting of if...try... catch... else 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45786">45786</a>
No selection on method declaration in field initializer 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45721">45721</a>
Getting wrong deltas 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45674">45674</a>
Compiler should allow compound assignment to final in unreachable code
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43984">43984</a>
NPE in background search
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45707">45707</a>
Autobuild does not kick in when using classpath containers
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45655">45655</a>
exception while editing java file 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=42287">42287</a>
Should consider qualified name token positions

<a name="v_380"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M5 Build - 28th October 2003
<br>Project org.eclipse.jdt.core v_380
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_380">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Search is now able to find local variable references and declarations. In order to trigger such a search, the search engine must
	be fed with an <code>ILocalVariable</code> element. Searching a local variable by its name is not supported.
</li>
<li>Search is now finding references in Javadoc comments. Found references are method parameters declared in <code>@param</code> tags, 
	types of exceptions declared in <code>@throws</code>/<code>@exception</code> tags and all instance variables, methods, types or 
	packages declared in <code>@see</code> tags.
	<br>Note that only valid references in Javadoc comments will be reported during search. In order to ensure the integrity of your Javadoc comments,
	you may want to enable the compiler check for Javadoc (Preferences>Java>Compiler>Style>Problem in Javadoc tags).
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45641">45641</a>
CCE when using declarations view 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45596">45596</a>
Wrongly complains about missing parameter javadoc entry in anonymous class
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45592">45592</a>
NPE while searching a method references in jdt-core
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45520">45520</a>
Potential NPE
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45518">45518</a>
Search has to find references put in javadoc comments
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45436">45436</a>
Javadoc warnings: wrong errors in AST
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45198">45198</a>
NPE from AnnotationParser
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45459">45459</a>
JDT compiler more restrictive than javac
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35899">35899</a>
"hierarchy of type ... inconsistent" error message wrong
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43967">43967</a>
Search for references on local variable finds all occurances of variables of that type not just that variable. 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=37509">37509</a>
Open Declaration opens class declaration for local variables 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45433">45433</a>
Bug7 (and counting ;-): hundretAssignmentsToFinalVariable()
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45357">45357</a>
Compiler-Bug: "The local variable oResult may not have been initialized".txt

<a name="v_379"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M5 Build - 21st October 2003
<br>Project org.eclipse.jdt.core v_379
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_379">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li> Compiler options for controlling the severity of problems for invalid imports or unreachable code got discontinued. Indeed, allowing this kind of problems to be ignored
or treated as a warning would violate the language spec. As a consequence, <code>JavaCore#COMPILER_PB_INVALID_IMPORT</code> and
<code>JavaCore#COMPILER_PB_UNREACHABLE_CODE</code> got deprecated, 
further attempts to set these preferences are now ignored and import problems or unreachable code are always reported as errors.
<li> The warning level of the batch compiler can now be configured more easily using <code>-warn:+...</code> or <code>-warn:-...</code> command line
argument (as opposed to only existing <code>-warn:...</code> command line argument). 
<code>-warn:+...</code> will not override the default warning level, but simply enable
a few more specific warnings. Similarily, <code>-warn:-...</code> will only disable specific warnings.
<br>Note, by default the batch compiler is reporting the following warnings:
	<ul>
	<li>'assert' used as identifier</li>
	<li>char[] in String concat</li>
	<li>method with constructor name</li>
	<li>deprecation outside deprecated code</li>
	<li>finally block not completing normally</li>
	<li>interface non-inherited method compatibility</li>
	<li>hidden catch block</li>
	<li>assignment without effect</li>
	<li>attempt to override package-default method</li>
	<li>unused import declaration</li>
	<li>non-static reference to static member</li>
	</ul>
</li>
<li>Code select (i.e. <code>ICodeAssit.codeSelect(...)</code>) now returns an <code>ILocalVariable</code>
     element when a local variable or an argument is selected. 
     <br>Note that <code>ILocalVariable</code>s are pseudo-elements:
     they are not part of the Java model (<code>exists()</code> always returns <code>false</code>), 
     they are not returned when asking for the children of a method, and there is no other way to create such
     an element. One can only ask for the source range (<code>ISourceReference.getSourceRange()</code>) or
     for the name range (<code>ILocalVariable.getNameRange()</code>) of the local variable.
     <br>Searching a local variable is not yet implemented, but it is on the plan.
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35389">35389</a>
Compiler settings can violate JLS [build path]
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44869">44869</a>
Search: no refs found to overridden method in binary subclass
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45110">45110</a>
No constant for '..compiler.problem.missingAnnotation'
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45100">45100</a>
[formatter] test144 fails
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45036">45036</a>
[formatter] New formatter fails formatting multiple field declarations using K_CLASSBODY_DECLARATION kind
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45037">45037</a>
[formatter] New formatter doesn't insert a new line before the while in a do/while
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45014">45014</a>
Formatter misplaces semicolon
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44757">44757</a>
New code formatter does not format switch statements correctly
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44647">44647</a>
NPE code completion
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43754">43754</a>
How to position this comment?
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44839">44839</a>
New formater fails with out of memory error

<a name="v_378"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M5 Build - 15th October 2003
<br>Project org.eclipse.jdt.core v_378
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_378">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li> Removed dependency on Xerces.
</li>
<li> Remove deprecated previously added API <code>IJavaProject#forceClasspathReload(IProgressMonitor)</code>
(see comment of <a href="#v_368">v_368</a> drop below).
</li>
<li>Added optional compiler problem to signal problems with javadoc annotation.
<pre>
	 * COMPILER / Reporting Invalid Javadoc Annotation
	 *    When enabled, the compiler will issue an error or a warning when a javadoc annotation is inconsistent,
	 *    misses a tag entry or contains invalid references.
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.invalidAnnotation"
	 *     - possible values:   { "error", "warning", "ignore" }
	 *     - default:           "ignore"
	 * COMPILER / Reporting Missing Javadoc Annotation
	 *    When enabled, the compiler will signal cases where public class, interface, method, constructor or field
	 *    (considered as part of the API) has no javadoc annotation.
	 *    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.invalidAnnotation".
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.missingAnnotation"
	 *     - 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=44715">44715</a>
NullPointerException compiling Java file
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44697">44697</a>
Bug when i search reference of 'String' in 3.0M4
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=38091">38091</a>
DCR - Generate warnings for JavaDoc missing entries
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44637">44637</a>
NPE in Initializer.getPrimaryElement() 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=42762">42762</a>
Compiler tests should run both in 1.3 and 1.4 mode 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44580">44580</a>
No outline when unit name is not valid
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44651">44651</a>
Wrong formatting of multiple local variables declarations
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44643">44643</a>
Remove dependancy to xerces
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44662">44662</a>
Should not validate unit/classfile handles upon creation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44400">44400</a>
Unnecessary cast not being picked up
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44143">44143</a>
[JSR202] Remove usage of jsr bytecodes in 1.5 mode

<a name="v_377"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M4 Build - 9th October 2003 - 3.0 MILESTONE-4
<br>Project org.eclipse.jdt.core v_377
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_377">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=44576">44576</a>
Code formatter option "Insert a new line before an opening brace" has no effect for single else
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44570">44570</a>
Code formatter option "Insert a new line inside an empty block" has no effect
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44503">44503</a>
Unoptimal formatting for long constructor argument
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44546">44546</a>
New formatter unable to format
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44506">44506</a>
Type hierarchy is missing anonymous type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44481">44481</a>
"Insert new line between else and if" is not working as expected
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44480">44480</a>
Formatting the formatted string should not produce edits
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44444">44444</a>
jdt.core in trouble when project has no JRE
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44437">44437</a>
Typo in plugin.properties

<a name="v_376"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M4 Build - 8th October 2003
<br>Project org.eclipse.jdt.core v_376
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_376">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Fix for bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44289">44289</a>
     requires the index format to be changed. Indexes will be automatically regenerated upon
     subsequent search queries (accounting for indexing notification in search progress dialogs).
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44308">44308</a>
NullPointerException when searching jars
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44341">44341</a>
NPE from  delta processor
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44119">44119</a>
NPE while searching for references to Action#run() 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44331">44331</a>
Need indication that removal/add was targeted to a primary working copy 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32639">32639</a>
Missing empty fine-grain delta when reconciling 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44292">44292</a>
IDOMType.setFlags(Flag.AccPublic) when applied to an interface having default visibility produces uncompilable code
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44293">44293</a>
DOMFactory.createInitializer() always creates a static intializer
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44289">44289</a>
Search broken 

<a name="v_374"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M4 Build - 7th October 2003
<br>Project org.eclipse.jdt.core v_374
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_374">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>The new code formatter can be activated in the ui. See the work in progress section. This first release doesn't expose
yet all the preferences of the new code formatter. This will be done after M4. However the old formatter options should be honored by 
the new code formatter. This is a work in progress and all problems should be reported against JDT/Core.
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44242">44242</a>
Deadlock during jdt/debug test 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44066">44066</a>
Package Explorer doesn't show new file 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44219">44219</a>
NPE while creating TypeHierarchy for binary type "Group" 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44073">44073</a>
Override methods action does not work for local types [code manipulation] 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=16231">16231</a>
formatter creates ugly array initializer expressions
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=6284">6284</a>
Java formatter enhancements
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=6268">6268</a>
Code formatting
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44036">44036</a>
Java code formatter wraps line too much.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43651">43651</a>
Linewrapping of throws declarations (if many)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43545">43545</a>
Code Formatter: Don't separate long "import" clause.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43272">43272</a>
feature request : extend the code formatter to support blanks between method / class name and bracket.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43050">43050</a>
Formatting long arguments not very readable
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40777">40777</a>
Incorrect formatting for anonymous inner class with comment
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39607">39607</a>
Incorrect formatting of anonymous inner class inside if statement
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39603">39603</a>
for-Statement not correctly formatted by Codeformatter
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39357">39357</a>
Better code formatting
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=38151">38151</a>
Code formatter adds an unwanted blank line after an abstract method with a "throws" clause.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=37106">37106</a>
Code Formatter: Option to double indent wrapped lines in if statments, etc.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=37057">37057</a>
Code Formatter: Reduce number of blank lines to 1
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36832">36832</a>
wrong indent on Code Format of anonymous class
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36455">36455</a>
[Formatting] Too long lines look ugly
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36108">36108</a>
Code Formatter Clear Blank Lines Doesn't Work
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35799">35799</a>
code formatter: missing space after last array initializer
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35433">35433</a>
Simple Feature Request - Code Formatter Enhancement
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35173">35173</a>
Code formatter incorrectly formats this case:
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29110">29110</a>
RFE: Disable line splitting in the code formatter
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28098">28098</a>
Code Formatter doesn't format JavaDoc indentation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27196">27196</a>
Code Formatter Won't Indent Braces
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25559">25559</a>
more code formatter options
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24200">24200</a>
"Space inside parens & brackets" option in Code Formatter
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23144">23144</a>
formatter issues
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22528">22528</a>
Code formatter incorrectly indents lines
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22313">22313</a>
Formatter doesn't like some comment
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21943">21943</a>
Formatter should allow removing space after for/while/if
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=20721">20721</a>
Code formatter bug
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=19999">19999</a>
Code Formatter always clears blank lines to 1
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=19811">19811</a>
Code formatter bugs
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=17349">17349</a>
Code Formatter incorrectly formats static initializer
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=16233">16233</a>
formatter problem with constructor, array and line-end comments
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=15286">15286</a>
Code formatter: long param lists and line wrapping
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=14659">14659</a>
Align method arguments on line break
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=12456">12456</a>
Add formatter options for controlling spaces
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=12321">12321</a>
Code formatter and comments
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=10052">10052</a>
CodeFormatter - line splitting enhancement.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=7439">7439</a>
incorrect formatting: empty inner class
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=7224">7224</a>
Formatting splits package names in ugly ways
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=6747">6747</a>
Code Formatter exchange several blank lines w/ one
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=5824">5824</a>
Code Formatter needs to be more customizable to be useful
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=3327">3327</a>
Formatter - should ensure one empty line before a method declaration (1GHOJWD)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=3276">3276</a>
DCR: (LOW) Formatter option to not indent methods (1GE39ZO)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=3181">3181</a>
Does not format nicely anonymous type (1FRLTO1)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44085">44085</a>
becomeWorkingCopy() should add the working copy in the model 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44052">44052</a>
Deadlock on startup
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44092">44092</a>
Methods to generate parser files are not correct 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44084">44084</a>
No refresh when deleting edited unit 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=41643">41643</a>
Code assist doesn't propose all valid types
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44065">44065</a>
NPE during hot code replace 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43897">43897</a>
No completion in cast expression
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44061">44061</a>
CodeAssist - no completion after class literal access
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44018">44018</a>
Change superfluous semicolon error message
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43872">43872</a>
Hierarchy does not update properly when local class eliminated [type hierarchy] 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43294">43294</a>
Primary working copy: No updates when changed in working copy mode 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43907">43907</a>
Too many warnings reported by the jdt compiler adapter
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43847">43847</a>
IPackageFragment not updated after CUs have moved 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43879">43879</a>
working copy commit outside classpath doesn't save buffer

<a name="v_373"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M4 Build - 30th September 2003
<br>Project org.eclipse.jdt.core v_373
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_373">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=43728">43728</a>
Optimize CompilerOptions(Map....)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43842">43842</a>
JDTCompilerAdapter doesn't find bootclasspath 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40782">40782</a>
Primary working copies: unnecessary deltas on save 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43300">43300</a>
SearchEngine(IWorkingCopy[] workingCopies) not backward compatible 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43670">43670</a>
No classpath refresh when replacing binary project with source form
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43600">43600</a>
NPE from JDTCompilerAdapter
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43636">43636</a>
Compiler complain that class cannot be resolved when it should be only not visible
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43208">43208</a>
ICompilation.move not supported when in workingCopyMode 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40793">40793</a>
Primary working copies: Type search does not find type in modified CU 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43587">43587</a>
Searching for references to default constructors reports questionable results
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36143">36143</a>
Type hierarchy doesn't include anonymous subclasses 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=8613">8613</a>
Outline should show anonymous inner classes 


<a name="v_372"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M4 Build - 24th September 2003
<br>Project org.eclipse.jdt.core v_372
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_372">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=42692">42692</a>
JavaCC files cause VerifyError when compiled with Eclipse
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43437">43437</a>
Scanner does not like string literals
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43485">43485</a>
NPE in SearchEngine
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=37659">37659</a>
[plan item] Improve shared working copies 


<a name="v_371"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M4 Build - 22nd September 2003
<br>Project org.eclipse.jdt.core v_371
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_371">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li> As a consequence of migrating to background autobuild, the JavaModel will no longer broadcast deltas
during PRE_AUTO_BUILD event notification. These were somewhat inconsistent in so far as the model wasn't
totally up to date anyway. Now the model will only fire deltas during POST_CHANGE, or working copy reconcile
operations.
</li>
<li>Part of the new support for local and anonymous types in the Java model has been released. 
	<p>
	This includes:
	<ul>
	<li>local and anonymous types are shown in the Outline view and the Package Explorer view</li>
	<li>Java element deltas for these types are notified</li>
	<li>handles on these types can be created (see <code>IMember.getType(String, int)</code>)</li>
	<li><code>getChildren()</code> on a method, a field or an initializer returns the local or anonymous types defined in this element</li>
	<li>mementos for these handles are supported</li>
	<li>open on selection (F3) in a Java editor goes to the local type definition</li>
	<li>type hierarchies contain anonymous and local types</li>
	</ul>
	<p>
	This doesn't yet include:
	<ul>
	<li>search on these types</li>
	<li>anonymous/local binary types</li>
	</ul>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=42832">42832</a>
Cannot get rid of this error even if the compiler settings is ignore for incompatible required binaries
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=41583">41583</a>
[misc] Eclipse cannot save or compile files in non-Java project anymore
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43274">43274</a>
Type hierarchy broken 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=38931">38931</a>
Migrate delta processor to comply to new notification scheme in 3.0
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=42281">42281</a>
"Resource *.java does not exist"
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=38931">38931</a>
org.eclipse.jdt.internal.corext.dom.NodeFinder needed in API 


<a name="v_370"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M4 Build - 16th September 2003
<br>Project org.eclipse.jdt.core v_370 
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_370">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=43026">43026</a>
Running jdt/core tests on Linux is failing
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43045">43045</a>
Copy/move of package fragments with read-only subpackages fails on Linux
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43116">43116</a>
NPE copy and pasting a method
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43089">43089</a>
Search engine doesn't report all matches
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43080">43080</a>
NPE when searching in CU with incomplete method declaration 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=42856">42856</a>
CodeAssist - Does not work after an inner type reference
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=42839">42839</a>
Incorrect position in org.eclipse.jdt.core.dom.ArrayType

<a name="v_369"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M4 Build - 9th September 2003
<br>Project org.eclipse.jdt.core v_369 
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_369">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Default compiler compliance setting got raised to 1.4 level. Default source level is 1.3, and default target level is 1.2.
To ease the 1.4 migration, the default severity for optional problem 'assert used as identifier' got raised to warning.
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=42760">42760</a>
NullPointerException in JobManager when searching 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=42629">42629</a>
javac error message with missing classpath entry when claims entry dropped from path 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=42614">42614</a>
1.3 compliant mode should select default enclosing instance
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=42588">42588</a>
Incorrect selection of current enclosing instance
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35567">35567</a>
Classpath validation error messages should contain project name
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=42443">42443</a>
Error when inner class name has the same name than another class, but with not the same case sensitive
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=42459">42459</a>
DebugEvaluationTests don't run if target is 1.2
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39887">39887</a>
Resource exception while indexing
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=42366">42366</a>
Classpath validation error message removed while rebuilding a project.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=41680">41680</a>
Unnecessary cast  wrongly reported

<a name="v_368"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M4 Build - 1st September 2003
<br>Project org.eclipse.jdt.core v_368 
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_368">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Added optional compiler problem to signal unqualified access to a non-static field. In order to improve
code readability, qualifying field accesses is a simple way to syntactically distinguish a field access from 
a local variable access, and thus avoid resorting to a special naming convention for fields (such as "fField").
<pre>
* COMPILER / Reporting Unqualified Access to Field
*    When enabled, the compiler will issue an error or a warning when a field is access without any qualification.
*    In order to improve code readability, it should be qualified, e.g. 'x' should rather be written 'this.x'.
*     - option id:         "org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess"
*     - possible values:   { "error", "warning", "ignore" }
*     - default:           "ignore"
</pre>
</li>
<li>Added optional compiler problem to signal method/constructor declared thrown checked exception which
aren't actually raised inside the method/constructor body.
<pre>
* COMPILER / Reporting Unused Declared Thrown Exception
*    When enabled, the compiler will issue an error or a warning when a method or a constructor is declaring a
*    thrown checked exception, but never actually raises it in its body.
*     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException"
*     - possible values:   { "error", "warning", "ignore" }
*     - default:           "ignore"
</pre>
</li>
<li>Added optional compiler problem to flag situations where a finally block does not complete normally.
<pre>
* COMPILER / Reporting Finally Blocks Not Completing Normally
*    When enabled, the compiler will issue an error or a warning when a finally block does not complete normally.
*     - option id:         "org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally"
*     - possible values:   { "error", "warning", "ignore" }
*     - default:           "warning"
</pre>
</li>
<li>Improved problem description for unreachable catch block problems. Message will now mention the exception type 
name and better diagnose the cause of the problem. Also changed problem source range 
to rather highlight the caught exception type instead of entire catch block. 
<pre></pre>
</li>
<li>Added two new API methods <code>readRawClasspath()</code> and <code>readOutputLocation()</code> on <code>IJavaProject</code>
interface so as to allow user to read classpath directly from disk (<code>.classpath</code> file contents). This is useful to configure
a Java project before it is associated with the Java nature, or before the automatic classpath reconciliation mechanism has performed (within
a resource modifying operation, and prior to the change notification). Note that these API additions are obsoleting the previously
added API <code>IJavaProject#forceClasspathReload(IProgressMonitor)</code> (also see bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=20931">20931</a>)
which has thus been deprecated. Forcing the classpath reload can simply be achieved by: <code>p.setRawClasspath(p.readRawClasspath(), p.readOutputLocation(), ...)</code>.
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40383">40383</a>
Search - should only special treat unsaved working copies 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40658">40658</a>
IJavaProject.getOutputLocation/getRawClasspath require Java nature
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=42196">42196</a>
Method popup extremely slow for JOGL code 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=41534">41534</a>
incorrect shadowing reported by rename [refactoring] 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40937">40937</a>
ISourceReference.getSource throws ArrayIndexOutOfBoundsException 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=41373">41373</a>
SourceField.getConstant() returns null for final fields set in initializer
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=41604">41604</a>
Possible Compiler Bug 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22976">22976</a>
DCR - warning for unused declarations of thrown exceptions
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40736">40736</a>
JDT compiler fails to compile legitimate Java code.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40020">40020</a>
Exceptions in console 

<a name="v_367"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M3 Build - 22nd August 2003 - 3.0 MILESTONE-3
<br>Project org.eclipse.jdt.core v_367
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_367">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=40464">40464</a>
Index states not saved
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=41805">41805</a>
ArrayIndexOutOfBoundsException while creating AST
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39831">39831</a>
Search finds only "inexact" matches 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35980">35980</a>
illegal code completion suggested (abstract methods) 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40779">40779</a>
Primary working copies: no deltas on destroy 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36271">36271</a>
CodeAssist should treat array.clone() as visible
<br<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40681">40681</a>
no warnings for some externalized strings
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40584">40584</a>
Test suite configuration should be more flexible
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=41674">41674</a>
ToolFactory.createDefaultClassFileReader does not close zipfile
	  	
<a name="v_366"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M3 Build - 19th August 2003
<br>Project org.eclipse.jdt.core v_366 
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_366">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>In 1.4 mode, the compiler is now JCK 1.4a compliant (previously was passing JCK1.4).
</li>
<li>To reduce the memory consumption and improve performance, the following new APIs were added:
<ul>
<li>AST.parsePartialCompilationUnit(ICompilationUnit unit, int position, boolean resolveBindings)</li>
<li>AST.parsePartialCompilationUnit(ICompilationUnit unit, int position, boolean resolveBindings, WorkingCopyOwner owner)</li>
</ul>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=41602">41602</a>
missing @exception in javadoc of IPackageFragment.getNonJavaResources 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=38635">38635</a>
Refactor / Rename Package doesn't allow rename to same name with different case [refactoring]
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40476">40476</a>
refactor change method signature reports erroneous non-constant case statements
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40995">40995</a>
NPE in ast.ExplicitConstructorCall.analyseCode
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40880">40880</a>
Wrong error range for 'indirect static access'
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40174">40174</a>
Performance issues with builder
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39108">39108</a>
Numerous single type imports can slow compiler down significantly
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=41019">41019</a>
org.eclipse.jdt.core.Signature cannot resolve complex type that has package name starting with letters as any primitive type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=38633">38633</a>
Search should not open requested types with match locator parser
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40954">40954</a>
ArrayIndexOutOfBoundsException during sort members
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40804">40804</a>
NPE in MethodBinding.sourceMethod()
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40474">40474</a>
DOM/AST: Add API to parse only part of a compilation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40839">40839</a>
Deprecation is reported even if there is an empty member declaration prior to the field declaration
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40606">40606</a>
Unable to discard empty package if containing .class files 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39174">39174</a>
NPE in type hierarchy when opening type 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40082">40082</a>
NPE in TypeHierarchy.packageRegionContainsSamePackageFragment(TypeHierarchy.java:1314) 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40090">40090</a>
No need to close Java model on shutdown 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=42589">42589</a>
jck1.4a failures

<a name="v_365a"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M3 Build - 24th July 2003
<br>Project org.eclipse.jdt.core v_365a 
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_365a">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=40752">40752</a>
internal compiler error: java.lang.ClassCastException: org.eclipse.jdt.internal.compiler.lookup.ArrayBinding
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40594">40594</a>
wrong location set for org.apache.ant when building jdt component with baseLocation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40715">40715</a>
getWorkingCopy(...) should always return a new working copy for primary cus 

<a name="v_365"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M3 Build - 22nd July 2003
<br>Project org.eclipse.jdt.core v_365 
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_365">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li> Added optional diagnosis for undocumented empty blocks
<pre>
* COMPILER / Reporting Undocumented Empty Block
*    When enabled, the compiler will issue an error or a warning when an empty block is detected and it is not
*    documented with any comment.
*     - option id:         "org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock"
*     - possible values:   { "error", "warning", "ignore" }
*     - default:           "ignore"
</pre>
</li>
<li> Removed optional diagnosis for boolean methods throwing exception, since it proved to be useless as is.
</li>
<li>Fix for bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40116">40116</a>
     requires the index format to be changed. Indexes will be automatically regenerated upon
     subsequent search queries (accounting for indexing notification in search progress dialogs).
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40382">40382</a>
JavaModelException#printStackTrace should be improved 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40572">40572</a>
Unnecessary cast warning for necessary cast
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40322">40322</a>
Error creating new Java projects 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40421">40421</a>
Unnecessary cast warning...true but...
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32285">32285</a>
DCR - extra java compiler markers
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40514">40514</a>
ArrayIndexOutOfBoundsException during detection of unnecessary casts
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40442">40442</a>
Abstract class fails to invoke interface-defined method in 1.4 compliance mode.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40116">40116</a>
Search for references to nested class doesn't find anything 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40334">40334</a>
Model should be more tolerant for possible compiler failures
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36479">36479</a>
Rename operation during refactoring fails 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39865">39865</a>
Misleading error diagnosis on broken method signatures
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=12800">12800</a>
suboptimal error messages on mistyped 'throw/throws' keywords 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=38568">38568</a>
Search for method declarations fooled by array types 

<a name="v_364b"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M2 Build - 18th July 2003 - 3.0 MILESTONE-2
<br>Project org.eclipse.jdt.core v_364b 
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_364b">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=40495">40495</a>
VerifyError with return statements containing a cast expression

<a name="v_364a"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M2 Build - 17th July 2003
<br>Project org.eclipse.jdt.core v_364a 
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_364a">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=40423">40423</a>
NPE Saving a file
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40288">40288</a>
NPE while building

<a name="v_364"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M2 Build - 16th July 2003
<br>Project org.eclipse.jdt.core v_364 
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_364">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=40210">40210</a>
ICompilationUnit#isWorkingCopy() misbehaving for discarded working copies

<a name="v_363"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M2 Build - 15th July 2003
<br>Project org.eclipse.jdt.core v_363 
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_363">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Added flag <code>IJavaElementDelta.F_PRIMARY_WORKING_COPY</code> that signals that a compilation unit has become a
     primary working copy, or that a primary working copy has reverted to a compilation unit (i.e. primary working copies are not notified
     as being added/removed like other working copies, since the primary unit is only changing mode, also see bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40028">40028</a>).
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40028">40028</a>
Deltas and deleted working copies 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39823">39823</a>
AST: Would like to have binding of Serializable and Clonable
	  	
<a name="v_362"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M2 Build - 14th July 2003 
<br>Project org.eclipse.jdt.core v_362
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_362">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li> Added optional diagnosis for unnecessary cast or instanceof operations (matching problem IDs are
<code>IProblem.UnnecessaryCast</code>, <code>IProblem.UnnecessaryArgumentCast</code>, <code>IProblem.UnnecessaryInstanceof</code>).
<pre>
* COMPILER / Reporting Unnecessary Type Check
*    When enabled, the compiler will issue an error or a warning when a cast or an instanceof operation 
*    is unnecessary.
*     - option id:         "org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck"
*     - possible values:   { "error", "warning", "ignore" }
*     - default:           "ignore"
</pre>	 
</li>
<li> Changed Java element delta processing to be thread-safe.
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39926">39926</a>
deleting default package (not in source folder) does nothing 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39877">39877</a>
Rebuild All generates extra "Unable to read classpath" entry. 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39925">39925</a>
Unnecessary instanceof checking leads to a NullPointerException
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35442">35442</a>
flag unnecessary casts
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39841">39841</a>
Give better explanation of why abstract class can't be instantiated
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39467">39467</a>
Classes not implementing abstract methods compile without error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39763">39763</a>
Non NLS string is reported and it should not
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39779">39779</a>
End position of IType exceeds the size of CompilationUnit 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39766">39766</a>
compilation unit cannot be saved 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39664">39664</a>
setSuperInterfaces(String[] interfaceNames) API of org.eclipse.jdt.core.jdom.IDOMType interface does not work for an empty array parameter as Input
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39663">39663</a>
setSuperclass(String superclassName) API of org.eclipse.jdt.core.jdom.IDOMType interface does not work for null as Input
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39736">39736</a>
JavaModelException on copying read-only CompilationUnits 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39009">39009</a>
NPE in Delta processor while executing JDT/UI tests 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35739">35739</a>
Stack dump on console 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35632">35632</a>
NPE in DeltaProcessor 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39281">39281</a>
Unable Refacter (renaming) an inner class
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=38450">38450</a>
Delete: Removing default package removes source folder 

<a name="v_361"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M2 Build - 7th July 2003 
<br>Project org.eclipse.jdt.core v_361
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_361">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li> Added optional compiler diagnosis for boolean method declaring thrown exceptions
(matching problem ID is <code>IProblem.BooleanMethodThrowingException</code>)
<pre>
* COMPILER / Reporting Boolean Method Declaring Thrown Exceptions
*    When enabled, the compiler will issue an error or a warning when a boolean method declaration 
*    is specifying a clause for thrown exceptions. Some of them are predicates, and these should only 
*    return a boolean value and not raise exceptions.
*     - option id:         "org.eclipse.jdt.core.compiler.problem.booleanMethodThrowingException"
*     - possible values:   { "error", "warning", "ignore" }
*     - default:           "ignore"
</pre>
<li> Added optional compiler diagnosis for indirect references to static members (matching problem IDs are:
<code>IProblem.IndirectAccessToStaticField</code>, <code>IProblem.IndirectAccessToStaticMethod</code>, <code>IProblem.IndirectAccessToStaticType</code>).
<pre>
* COMPILER / Reporting Indirect Reference to a Static Member
*    When enabled, the compiler will issue an error or a warning whenever a static field
*    or method is accessed in an indirect way. A reference to a static member should
*    preferably be qualified with its declaring type name.
*     - option id:         "org.eclipse.jdt.core.compiler.problem.indirectStaticAccess"
*     - possible values:   { "error", "warning", "ignore" }
*     - default:           "ignore"
</pre>
</li>
<li> Removed method <code>Parser#grammar()</code>, which was hosting the Java grammar as a massive comment. 
From now on, the grammar is defined in its own separate file: <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/grammar/java_1_4.g"><code>java_1_4.g</code></a>.
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39624">39624</a>
Should warn about predicate throwing exceptions
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39168">39168</a>
Could remove JavaElement.fLEType field 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36989">36989</a>
Incorrect error for "super must be first statement in constructor"
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=3319">3319</a>
wrong compile-time error message (1GG1LDK)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39268">39268</a>
Optional warning for indirect static references
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39533">39533</a>
Working copy with no corresponding file not considered by NameLookup 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39502">39502</a>
No completion in message send
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39475">39475</a>
Extra error diagnosis in editor from siblings

<a name="v_360"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M2 Build - 1st July 2003 
<br>Project org.eclipse.jdt.core v_360
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_360">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li> Plugin version ID got incremented to 3.0.0. 
</li>
<li> Removed tolerance for relative source attachments in <code>JavaCore.newLibraryEntry(...)</code>. Only
allowing relative empty pathes so as to permit using classpath variables to denote the absence of a source attachment.
<li>To finish closing the gap between compilation units and working copies 
(see <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36888">bug 36888</a>), new APIs were added to generalize
the usage of a working copy owner (entire JavaModel is now aware of owned working copies). These new APIs are copies of existing APIs augmented with
a <code>WorkingCopyOwner</code> parameter, that defines the working copies to consider in the operation. 
When specifying an owner parameter, all working copies belonging to this owner will implicitly take precedence over primary ones
(without requiring the owner to remember all its working copies, as in 2.1 era). Note that when no owned working copy is found, a primary
unit will be considered instead, and since primary units have a built-in working copy (see <code>ICompilationUnit.becomeWorkingCopy(...)</code>),
the primary unit may already be in working copy mode (very likely since an editor got opened on it). This means that an owner will already 
transparently see unsaved editor contents for all units for which it has no better working copy to contribute.
The following new APIs were added:
	<ul>
	<li><code>AST.parseCompilationUnit(char[] source, String unitName, IJavaProject project, WorkingCopyOwner owner)</code></li>
	<li><code>AST.parseCompilationUnit(IClassFile classFile, boolean resolveBindings, WorkingCopyOwner owner)</code></li>
	<li><code>AST.parseCompilationUnit(ICompilationUnit unit, boolean resolveBindings, WorkingCopyOwner owner)</code></li>
	<li><code>IEvaluationContext.codeComplete(String codeSnippet, int position, ICompletionRequestor requestor, WorkingCopyOwner owner)</code></li>
	<li><code>IEvaluationContext.codeSelect(String codeSnippet, int offset, int length, WorkingCopyOwner owner)</code></li>
	<li><code>IDOMCompilationUnit.getCompilationUnit(IPackageFragment parent, WorkingCopyOwner owner)</code></li>
	<li><code>ICodeAssist.codeComplete(int offset, ICompletionRequestor requestor, WorkingCopyOwner owner)</code></li>
	<li><code>ICodeAssist.codeSelect(int offset, int length, WorkingCopyOwner owner)</code></li>
	<li><code>ICompilationUnit.reconcile(boolean forceProblemDetection, WorkingCopyOwner owner, IProgressMonitor monitor)</code></li>
	<li><code>IJavaProject.findElement(IPath path, WorkingCopyOwner owner)</code></li>
	<li><code>IJavaProject.findType(String packageName, String typeQualifiedName, WorkingCopyOwner owner)</code></li>
	<li><code>IJavaProject.findType(String fullyQualifiedName, WorkingCopyOwner owner)</code></li>
	<li><code>IJavaProject.newTypeHierarchy(IRegion region, WorkingCopyOwner owner, IProgressMonitor monitor)</code></li>
	<li><code>IJavaProject.newTypeHierarchy(IType type, IRegion region, WorkingCopyOwner owner, IProgressMonitor monitor)</code></li>
	<li><code>IPackageFragment.getCompilationUnit(String name, WorkingCopyOwner owner)</code></li>
	<li><code>IPackageFragment.getCompilationUnits(WorkingCopyOwner owner)</code></li>
	<li><code>IType.codeComplete(char[] snippet, int insertion, int position, char[][] localVariableTypeNames, char[][] localVariableNames, int[] localVariableModifiers, boolean isStatic, ICompletionRequestor requestor, WorkingCopyOwner owner)</code></li>
	<li><code>IType.newSupertypeHierarchy(WorkingCopyOwner owner, IProgressMonitor monitor)</code></li>
	<li><code>IType.newTypeHierarchy(IJavaProject project, WorkingCopyOwner owner, IProgressMonitor monitor)</code></li>
	<li><code>IType.newTypeHierarchy(WorkingCopyOwner owner, IProgressMonitor monitor)</code></li>
	<li><code>IType.resolveType(String typeName, WorkingCopyOwner owner)</code></li>
	<li><code>JavaCore.create(IFile file, WorkingCopyOwner owner)</code></li>
	<li><code>JavaCore.create(IResource resource, WorkingCopyOwner owner)</code></li>
	<li><code>JavaCore.create(String handleIdentifier, WorkingCopyOwner owner)</code></li>
	<li><code>JavaCore.createCompilationUnitFrom(IFile file, WorkingCopyOwner owner)</code></li>
	<li><code>JavaCore.getWorkingCopies(WorkingCopyOwner owner)</code></li>
	<li><code>SearchEngine.SearchEngine(WorkingCopyOwner workingCopyOwner)</code></li>
	<li><code>SearchEngine.createHierarchyScope(IType type, WorkingCopyOwner owner)</code></li>
	</ul>
</li>
<li> Added optional problem to signal superfluous semicolons (matching problem ID is <code>IProblem.SuperfluousSemicolon</code>).
<pre>
* COMPILER / Reporting Superfluous Semicolon
*    When enabled, the compiler will issue an error or a warning if a superfluous semicolon is met.
*     - option id:         "org.eclipse.jdt.core.compiler.problem.superfluousSemicolon"
*     - 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=26281">26281</a>
error hover text indicates wrong problem
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23166">23166</a>
Syntax error message from Java compiler is confusing. 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33213">33213</a>
Same error reported more than once? 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36214">36214</a>
TODOs reported twice when located at the end of the method declaration 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36232">36232</a>
binding do not fully consider working copies 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36888">36888</a>
Close the gap between original and working copies 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39311">39311</a>
Outliner did not refresh after method rename (refactor) 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39259">39259</a>
While statement has wrong source position
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39007">39007</a>
Infinite loop trying to index a non-existing external jar
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39172">39172</a>
Incorrect error reported if extra semi-colon exists on a return statement


<a name="v_359"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M2 Build - 23rd June 2003 
<br>Project org.eclipse.jdt.core v_359
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_359">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Added API on <code>ICompilationUnit</code> to get the primary compilation unit of a working copy 
	 (it replaces <code>IWorkingCopy.getOriginalElement()</code>):
<pre>
/**
 * Returns the primary compilation unit (whose owner is the primary owner)
 * this working copy was created from, or this compilation unit if this a primary
 * compilation unit.
 * Note that the returned primary compilation unit can be in working copy mode.
 * 
 * @return the primary compilation unit this working copy was created from,
 * or this compilation unit if it is primary
 * @since 3.0
 */
ICompilationUnit getPrimary();
</pre>
</li>
<li>Added API on <code>IJavaElement</code> to get the primary element of a working copy 
	 element (it replaces <code>IWorkingCopy.getOriginalElement(IJavaElement)</code>):
<pre>
/**
 * Returns the primary element (whose compilation unit is the primary compilation unit)
 * this working copy element was created from, or this element if it is a descendant of a
 * primary compilation unit or if it is not a descendant of a working copy (e.g. it is a
 * binary member).
 * The returned element may or may not exist.
 * 
 * @return the primary element this working copy element was created from, or this
 * 	element.
 * @since 3.0
 */
IJavaElement getPrimaryElement();
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=38678">38678</a>
workspace did not shutdown
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=37006">37006</a>
2 tasks in the tasks view instead of one
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=38759">38759</a>
Task Tags: should not consider text in substrings/parts of text
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36066">36066</a>
Outliner did not refresh after field rename 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=38951">38951</a>
NPE in editor while saving contents 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35877">35877</a>
Stack overflow in code assist
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35409">35409</a>
RC2 Compiler produces bogus error messages
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=38838">38838</a>
SyntaxError- unoptimal syntax error message


<a name="v_357b"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M2 Build - 18th June 2003 
<br>Project org.eclipse.jdt.core v_357b
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_357b">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Backported index manager deadlock fix on top of v_357</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=38901">38901</a>
IndexManager hangs in end-less loop


<a name="v_358"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M2 Build - 16th June 2003 
<br>Project org.eclipse.jdt.core v_358
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_358">cvs</a>).

<p><b>NOTE:</b> This version got backed out due to severe regression
(see <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=38951">38951</a> NPE in editor while saving contents).
Until subsequent version is made available (see above), integration builds will revert to previous version (v_357).

<h2>
What's new in this drop</h2>
<ul>
<li><code>JavaCore.newLibraryEntry(...)</code> will now allow an empty source attachment (<code>new Path("")</code>) to
be equivalent to no source attachment (i.e. <code>null</code>). This adjustment is made necessary for
library entries generated from classpath variables which cannot be set to <code>null</code>. Also see 
bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=38531">38531</a>.
<pre>
* @param sourceAttachmentPath the absolute path of the corresponding source archive or folder, 
*    or <code>null</code> if none. Note, since 3.0, an empty path is allowed to denote no source attachment.
*   and will be automatically converted to <code>null</code>.
</pre>
</li>
<li>Added API <code>IJavaProject#forceClasspathReload(IProgressMonitor)</code> to force reload of <code>.classpath</code> file
before next automatic update occurs.
<pre>
/**
 * Force the project to reload its <code>.classpath</code> file from disk and update the classpath accordingly.
 * Usually, a change to the <code>.classpath</code> file is automatically noticed and reconciled at the next 
 * resource change notification event. If required to consider such a change prior to the next automatic
 * refresh, then this functionnality should be used to trigger a refresh. In particular, if a change to the file is performed,
 * during an operation where this change needs to be reflected before the operation ends, then an explicit refresh is
 * necessary.
 * 
 * @param monitor a progress monitor for reporting operation progress
 * @exception JavaModelException if the classpath could not be updated. Reasons
 * include:
 *  - This Java element does not exist (ELEMENT_DOES_NOT_EXIST)</li>
 *  - Two or more entries specify source roots with the same or overlapping paths (NAME_COLLISION)
 *  - A entry of kind <code>CPE_PROJECT</code> refers to this project (INVALID_PATH)
 *  - This Java element does not exist (ELEMENT_DOES_NOT_EXIST)</li>
 *  - The output location path refers to a location not contained in this project (<code>PATH_OUTSIDE_PROJECT</code>)
 *  - The output location path is not an absolute path (<code>RELATIVE_PATH</code>)
 *  - The output location path is nested inside a package fragment root of this project (<code>INVALID_PATH</code>)
 *  - The classpath is being modified during resource change event notification (CORE_EXCEPTION)
 * @since 3.0
 */
</pre>
</li>
<li>In the process of closing the gap between compilation units and working copies 
(see <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36888 ">bug 36888 </a>), the following new APIs 
are added to <code>ICompilationUnit</code>:
	<ul>
	<li><pre>
/**
 * Changes this compilation unit handle into a working copy. A new IBuffer is
 * created using this compilation unit handle's owner. Uses the primary owner is none was
 * specified when this compilation unit handle was created.
 *
 * When switching to working copy mode, problems are reported to given 
 * IProblemRequestor.
 *
 * Once in working copy mode, changes to this compilation unit or its children are done in memory.
 * Only the new buffer is affected. Using commitWorkingCopy(boolean, IProgressMonitor)
 * will bring the underlying resource in sync with this compilation unit.
 *
 * If this compilation unit was already in working copy mode, an internal counter is incremented and no
 * other action is taken on this compilation unit. To bring this compilation unit back into the original mode 
 * (where it reflects the underlying resource), discardWorkingCopy must be call as many 
 * times as becomeWorkingCopy.
 * 
 * @param problemRequestor a requestor which will get notified of problems detected during
 * 	reconciling as they are discovered. The requestor can be set to null indicating
 * 	that the client is not interested in problems.
 * @param monitor a progress monitor used to report progress while opening this compilation unit
 * 	or null if no progress should be reported 
 * @exception JavaModelException if this compilation unit could not become a working copy.
 * @see discardWorkingCopy
 * @since 3.0
 */
void becomeWorkingCopy(IProblemRequestor problemRequestor, IProgressMonitor monitor) throws JavaModelException;	
	</pre></li>
	<li><pre>
/**
 * Commits the contents of this working copy to its underlying resource.
 *
 * It is possible that the contents of the original resource have changed
 * since this working copy was created, in which case there is an update conflict.
 * The value of the force parameter effects the resolution of
 * such a conflict:
 * - true - in this case the contents of this working copy are applied to
 * 	the underlying resource even though this working copy was created 
 * 	before a subsequent change in the resource
 * - false - in this case a JavaModelException is thrown
 * 
 * Since 2.1, a working copy can be created on a not-yet existing compilation
 * unit. In particular, such a working copy can then be committed in order to create
 * the corresponding compilation unit.
 * 
 * @param force a flag to handle the cases when the contents of the original resource have changed
 * since this working copy was created
 * @param monitor the given progress monitor
 * @exception JavaModelException if this working copy could not commit. Reasons include:
 * - A CoreException occurred while updating an underlying resource
 * - This element is not a working copy (INVALID_ELEMENT_TYPES)
 * - A update conflict (described above) (UPDATE_CONFLICT)
 * @since 3.0
 */
void commitWorkingCopy(boolean force, IProgressMonitor monitor) throws JavaModelException;	
	</pre></li>
	<li><pre>
/**
 * Changes this compilation unit in working copy mode back to its original mode.
 *
 * This has no effect if this compilation unit was not in working copy mode.
 * 
 * If becomeWorkingCopy was called several times on this
 * compilation unit, discardWorkingCopy must be called as 
 * many times before it switches back to the original mode.
 * 
 * @see becomeWorkingCopy
 * @exception JavaModelException if this working copy could not return in its original mode.
 * @since 3.0
 */
void discardWorkingCopy() throws JavaModelException;
	</pre></li>
	<li><pre>
/**
 * Returns the working copy owner of this working copy.
 * Returns null if it is not a working copy or if it has no owner.
 * 
 * @return WorkingCopyOwner the owner of this working copy or null
 * @since 3.0
 */
WorkingCopyOwner getOwner();
	</pre></li>	
	<li><pre>
/**
 * Returns a new working copy of this element if this element is not
 * a working copy, or this element if this element is already a working copy.
 * 
 * Note: if intending to share a working copy amongst several clients, then 
 * getWorkingCopy(WorkingCopyOwner, IProblemRequestor, IProgressMonitor) 
 * should be used instead.
 * 
 * When the working copy instance is created, an ADDED IJavaElementDelta is 
 * reported on this working copy.
 * 
 * Since 2.1, a working copy can be created on a not-yet existing compilation
 * unit. In particular, such a working copy can then be committed in order to create
 * the corresponding compilation unit.
 * 
* @param monitor a progress monitor used to report progress while opening this compilation unit
 * 	or null if no progress should be reported 
 * @exception JavaModelException if the contents of this element can
 * 	not be determined. 
 * @return a new working copy of this element if this element is not
 * 	a working copy, or this element if this element is already a working copy
 * @since 3.0
 */
ICompilationUnit getWorkingCopy(IProgressMonitor monitor) throws JavaModelException;
	</pre></li>	
	<li><pre>
/**
 * Returns a shared working copy on this element using the given working copy owner to create
 * the buffer, or this element if this element is already a working copy.
 * This API can only answer an already existing working copy if it is based on the same
 * original compilation unit AND was using the same working copy owner (that is, as defined by Object.equals).	 
 * 
 * The life time of a shared working copy is as follows:
 * - The first call to getWorkingCopy(WorkingCopyOwner, IProblemRequestor, IProgressMonitor)
 *   creates a new working copy for this element
 * - Subsequent calls increment an internal counter.
 * - A call to discardWorkingCopy() decrements the internal counter.
 * - When this counter is 0, the working copy is discarded.
 * 
 * So users of this method must discard exactly once the working copy.
 *
 * Note that the working copy owner will be used for the life time of this working copy, that is if the 
 * working copy is closed then reopened, this owner will be used.
 * The buffer will be automatically initialized with the original's compilation unit content
 * upon creation.
 * 
 * When the shared working copy instance is created, an ADDED IJavaElementDelta is reported on this
 * working copy.
 * 
 * Since 2.1, a working copy can be created on a not-yet existing compilation
 * unit. In particular, such a working copy can then be committed in order to create
 * the corresponding compilation unit.
 * 
 * @param owner the working copy owner that creates a buffer that is used to get the content 
 *  	of the working copy
 * @param problemRequestor a requestor which will get notified of problems detected during
 * 	reconciling as they are discovered. The requestor can be set to null indicating
 * 	that the client is not interested in problems.
 * @param monitor a progress monitor used to report progress while opening this compilation unit
 * 	or null if no progress should be reported 
 * @exception JavaModelException if the contents of this element can
 *  	not be determined. 
 * @return a new working copy of this element using the given factory to create
 * the buffer, or this element if this element is already a working copy
 * @since 3.0
 */
ICompilationUnit getWorkingCopy(WorkingCopyOwner owner, IProblemRequestor problemRequestor, IProgressMonitor monitor) throws JavaModelException;	
	</pre></li>
	</ul>
And the following abstract class replaces <code>IBufferFactory</code>:
	<pre>
/**
 * The owner of an ICompilationUnit handle in working copy mode. 
 * An owner is used to identify a working copy and to create its buffer.
 * 
 * @see ICompilationUnit#becomeWorkingCopy
 * @see ICompilationUnit#discardWorkingCopy
 * @since 3.0
 */
public abstract class WorkingCopyOwner {
	/**
	 * Creates a buffer for the given working copy.
	 * The new buffer will be initialized with the contents of the underlying file
	 * if and only if it was not already initialized by the compilation owner (a buffer is 
	 * uninitialized if its content is null).
	 * 
	 * @param workingCopy the working copy of the buffer
	 * @return IBuffer the created buffer for the given working copy
	 * @see IBuffer
	 */
	public IBuffer createBuffer(ICompilationUnit workingCopy) {
		...
	}
}
	</pre>
	The intent for the primary owner is to use a buffer factory that would be
	provided by the org.eclipse.text infractructure. This infrastructure not being
	ready yet, in the meantime one can change the primary owner's 
	<code>IBufferFactory</code> using the following internal API:
	<pre>
org.eclipse.jdt.internal.core.DefaultWorkingCopyOwner.PRIMARY.factory = ...;
	</pre>

</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=38901">38901</a>
IndexManager hangs in end-less loop
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=38908">38908</a>
Ant script reports that the bootclasspath cannot be infer
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=38531">38531</a>
IllegalArgumentException "Source attachment path should be absolute"
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=38424">38424</a>
Mistake on Web site
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=38732">38732</a>
organize imports does not work with assert in source code
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=38447">38447</a>
AST: Source ranges with missing bracket
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36854">36854</a>
NPE opening type hierarchy 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33530">33530</a>
JavaModel synchronization model should be more optimistic 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=20931">20931</a>
Need an API to reload the classpath from the file
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=38393">38393</a>
bytecode generated for evaluation with parentheses is wrong

<a name="v_357"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M1 Build - 5th June 2003 - 3.0 MILESTONE-1
<br>Project org.eclipse.jdt.core v_357
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_357">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=37274">37274</a>
Deadlock on plugin import


<a name="v_356"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M1 Build - 4th June 2003
<br>Project org.eclipse.jdt.core v_356
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_356">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=38362">38362</a>
Inconsistent output when using comparrisson operators


<a name="v_355"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M1 Build - 3rd June 2003
<br>Project org.eclipse.jdt.core v_355
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_355">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Fix for bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=37111">37111</a> may issue some outgoing changes
to .classpath file since the source attachment will be shortened into a project relative path when applicable. The .classpath file
is still backward compatible, and will continue to accept non relative source attachments as well. </li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=37111">37111</a>
classpath file - java source attachment shouldn't hardcode project name
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=38143">38143</a>
this = null; should raise compile time error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=38124">38124</a>
Brackets around cast accepted by Eclipse but not javac


<a name="v_354"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M1 Build - 26th May 2003
<br>Project org.eclipse.jdt.core v_354
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_354">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Added <code>JavaCore</code> optional problem to detect incompatible required binaries, so as to flag situations where
some prerequisite binaries are required a JRE level higher than the project target platform; i.e. compiling against 1.4 libraries 
when deploying for 1.1 platform is likely unwanted.
<pre>
* JAVACORE / Reporting Incompatible JDK Level for Required Binaries
*    Indicate the severity of the problem reported when a project prerequisites another project 
*    or library with an incompatible target JDK level (e.g. project targeting 1.1 vm, but compiled against 1.4 libraries).
*     - option id:         "org.eclipse.jdt.core.incompatibleJDKLevel"
*     - 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=37750">37750</a>
incorrect handle identifier for IImportContainer
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36674">36674</a>
compiler can generate Java 1.4-only bytecode regardless of compatibility settings
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=37962">37962</a>
Unexpected transient problem during reconcile 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=37166">37166</a>
NPE in SearchEngine when matching type against ProblemReferenceBinding 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=37438">37438</a>
searchenging NPE in searchDeclarationsOfReferencedTypes 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=37779">37779</a>
ExceptionInInitializerError when using JDTCompilerAdapter
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36307">36307</a>
JDK1.4.2: Wrong declaring class for clone method on array class


<a name="v_353"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M1 Build - 19th May 2003
<br>Project org.eclipse.jdt.core v_353
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_353">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=37621">37621</a>
java compiler creates class with internal inconsistency
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=37646">37646</a>
Help for JDTCompilerAdapter is dated
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36894">36894</a>
JobManager could wait when idle
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=37541">37541</a>
Unoptimal deprecation diagnosis
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=37565">37565</a>
JACKS: Class literal should not cause class initialization
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=37503">37503</a>
Compiler does not take care of exclusion filter


<a name="v_352"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M1 Build - 13th May 2003
<br>Project org.eclipse.jdt.core v_352
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_352">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Lowered default severity of field/local variable hiding optional diagnosis to <code>"ignore"</code>.
</li>
<li>Lowered default severity of accidental boolean assignment optional diagnosis to <code>"ignore"</code>.
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=37501">37501</a>
VerifyError with assert when optimizing out unused local variables
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=37387">37387</a>
Compiler generates unnecessary byte codes
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=37381">37381</a>
AST: Wrong source ranges on VariableDeclExpression
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=37200">37200</a>
"Source->Generate Delegate Methods..." fails

<a name="v_351"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M1 Build - 29th April 2003
<br>Project org.eclipse.jdt.core v_351
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_351">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=37040">37040</a>
VerifyError "Illegal target of jump or branch"
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36490">36490</a>
Java compiler misses dependency on 'static final' class variables
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36814">36814</a>
NaiveASTFlattener does not serialize try-finally statements correctly
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36772">36772</a>
AST: CompilationUnit.findDeclaringNode: Spec/Impl not same
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36711">36711</a>
Resource duplication message should list location of duplicate
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36718">36718</a>
Compiler should not generate references to classes not on the classpath

<a name="v_350"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M1 Build - 22nd April 2003
<br>Project org.eclipse.jdt.core v_350
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_350">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Added new compiler optional problem to signal cases where a boolean variable is assigned
in a condition expression. It is likely an accidental situation, where a comparison was actually meant.
<pre>
* COMPILER / Reporting Possible Accidental Boolean Assignment
*    When enabled, the compiler will issue an error or a warning if a boolean assignment is acting as the condition
*    of a control statement  (where it probably was meant to be a boolean comparison).
*     - option id:         "org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment"
*     - possible values:   { "error", "warning", "ignore" }
*     - default:           "warning"
</pre>
</li>
<li>Added new compiler settings to control the diagnosis of variable hiding other ones.
<pre>
* COMPILER / Reporting Local Variable Declaration Hiding another Variable
*    When enabled, the compiler will issue an error or a warning whenever a local variable
*    declaration is hiding some field or local variable (either locally, inherited or defined in enclosing type).
*     - option id:         "org.eclipse.jdt.core.compiler.problem.localVariableHiding"
*     - possible values:   { "error", "warning", "ignore" }
*     - default:           "warning"
*
* COMPILER / Reporting Field Declaration Hiding another Variable
*    When enabled, the compiler will issue an error or a warning whenever a field
*    declaration is hiding some field or local variable (either locally, inherited or defined in enclosing type).
*     - option id:         "org.eclipse.jdt.core.compiler.problem.fieldHiding"
*     - possible values:   { "error", "warning", "ignore" }
*     - default:           "warning"
*
* COMPILER / Reporting Special Parameter Hiding another Field
*    When enabled, the compiler will signal cases where a constructor or setter method parameter declaration 
*    is hiding some field (either locally, inherited or defined in enclosing type).
*    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.localVariableHiding".
*     - option id:         "org.eclipse.jdt.core.compiler.problem.specialParameterHidingField"
*     - 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=36510">36510</a>
Automatically attach source for source files located in a class folder 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36499">36499</a>
exists() returns true for a source file inside a classfolder 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36438">36438</a>
null == null causes java.lang.VerifyError
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35755">35755</a>
Search in hierarchy misses dependent projects 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36465">36465</a>
Unable to create multiple source folders when not using bin for output
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36339">36339</a>
Try codegen issues slightly incorrect ANY exception handler
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35965">35965</a>
Source not found in source attachment 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36447">36447</a>
Unoptimal wide conditional branch bytecode sequence
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=19286">19286</a>
Suspicious synchronized operations 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36213">36213</a>
ArrayIndex out of bounds
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36244">36244</a>
JDK1.4.2: Add -cp as a batch option 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35528">35528</a>
When I check out a project from CVS, Updating takes a very long time
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36058">36058</a>
Unknown NPE in log
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21661">21661</a>
Compile dependency problems
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28937">28937</a>
Compiler Problem Marker: Accidental Boolean Assignment
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33831">33831</a>
ast API: add FieldAccess.resolveFieldBinding
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35649">35649</a>
The SourceMapper instances could share the fileNamefilter 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=34896">34896</a>
compiler setting "unused private fields"
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33751">33751</a>
The numbering of anonymous could be optimized
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35849">35849</a>
Incremental compilation ignores linked folders
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35926">35926</a>
Batch compiler compile should return false when the command line is incorrect
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35421">35421</a>
[nls] Inconsistencies between properties files and nls strings
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=34173">34173</a>
Create a compiler warning when an instance variable is "re-declared" as a local variable.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21140">21140</a>
Warning/error on shadowing definition of data member?
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35490">35490</a>
Search doesn't work for reference of 'cursorLocation'
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35338">35338</a>
Cannot save file, "Save failed:null" error message received
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35438">35438</a>
CastExpression resolution departs from JLS section 6.5.1
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36165">36165</a>
[DOM/AST] Incorrect grammar rule in TypeDeclaration


<a name="v_312"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 2.1 Build (before 3.0/2.1.1 branching) - 31st March 2003
<br>Project org.eclipse.jdt.core v_312
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_312">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=35831">35831</a>
NPE navigating references using links

<p><hr>
For earlier build notes, also see <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.jdt.core/notes/R21_buildnotes_jdt-core.html">build notes up to Release 2.1</a>.

<br>&nbsp;
</body>
</html>
