<!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=59723">59723</a>
[1.5] Compiler rejects usage of ArrayList.toArray(char[][])
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=59628">59628</a>
[1.5] Erroneous diagnosis for missing abstract method implementation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=59641">59641</a>
[1.5] Compiler should refuse usage of wildcard argument values
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=59147">59147</a>
[1.5] Compiler rejects correct code with wildcards and raw types
<br><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_424"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M9 Build - ? April 2004
<br>Project org.eclipse.jdt.core v_424
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_424">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=58069">58069</a>
Compilation ERROR: Missing code implementation in the compiler
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51911">51911</a>
@see method w/out ()
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49025">49025</a>
Util.bind(String, String[]) can be optimized a little bit
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=59743">59743</a>
[Compiler] Incorrect diagnosis of ambiguous method when inheriting
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=57871">57871</a>
Override Indicator: blocks editor from opening when error occurs in java compiler
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=59421">59421</a>
Bad error message from Eclipse Java Compiler when file is missing
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=58946">58946</a>
Standalone compiler help text is incorrect on Unix
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=59084">59084</a>
[content type] ensure content types/file associations are contributed by the right plugins
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=59716">59716</a>
Using 200404201300, one more blank line is inserted in front of import declarations when no package is defined
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=59575">59575</a>
invalid formatting
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51213">51213</a>
Unable to resolve conflict between type and package name in binaries

<a name="v_423"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.0M9 Build - 22nd April 2004
<br>Project org.eclipse.jdt.core v_423
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_423">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=59363">59363</a>
Should surface cancellation exceptions 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51075">51075</a>
Compiler warning "is hiding a field" given for static inner class
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=38658">38658</a>
Search for existing type fails
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=59291">59291</a>
Deadlock between AllTypes cache and setClasspathContainer

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