<!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>
   <link rel="stylesheet" href="../jdt_core_style.css" charset="iso-8859-1" type="text/css">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<table border=0 cellspacing=5 cellpadding=2 width="100%" >
  <tr> 
    <td align="left" width="72%" class="title1">
      <font size="+3"><b>jdt core - build notes 2.1 stream</b></font>
	</td>
  </tr>
  <tr>
	  <td align="left" width="72%" class="title2">
	  	  <font size="-2" color="#8080ff">Java development tools core</font>
	  </td>
  </tr>
	<tr><td>&nbsp;</td></tr>
  <tr>
  	<td class="title3">
	  <font size="-1">
	  Here are the build notes for the Eclipse JDT/Core plug-in project 
	  <a href="http://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.0, changes which occurred up to Release 2.0 can be found
	  in <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.jdt.core/notes/R20_buildnotes_jdt-core.html">build notes R2.0</a>.
	  </font>
	</td>
  </tr>
</table>

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 27th March 2003
<br>Project org.eclipse.jdt.core v_311 - 2.1 RELEASE (R2_1)
<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=35731">35731</a>
Unable to build problem

<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35754">35754</a>
NPE in Scope.getTypeOrPackage
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35298">35298</a>
NPE: Internal compiler error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31497">31497</a>
Internal compiler error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35476">35476</a>
Null pointer exception in org.eclipse.jdt.internal.compiler.lookup.Scope.getTypeOrPackage
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=34962">34962</a>
NPE in Scope.getTypeOrPackage
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35651">35651</a>
"Unused private types, methods or fields" should recognize serialVersionUID.

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 26th March 2003
<br>Project org.eclipse.jdt.core v_310
<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=24240">24240</a>
DOC - JavaConventions.validateIdentifier: must NOT have the same spelling as ...

<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35658">35658</a>
Cannot resolve Inner Class reference

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 25th March 2003
<br>Project org.eclipse.jdt.core v_309
<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=35654">35654</a>
spec bug in CompilationUnitSorter.sort
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35561">35561</a>
No source found if attached file contains 2 potential root paths
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35352">35352</a>
NPE when attaching source
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35456">35456</a>
The Eclipse compiler generates classes that throw a VerifyError
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35473">35473</a>
NPE when exiting Eclipse

<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35510">35510</a>
Assigning code to a library that is within a jarfile
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35642">35642</a>
NPE in index manager during shutdown
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35608">35608</a>
NPE on shutdown
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35437">35437</a>
can't call protected methods from derived classes in other pkg
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35396">35396</a>
Compiler error in RC2

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 20th March 2003
<br>Project org.eclipse.jdt.core v_308 - 2.1 RELEASE CANDIDATE 3a
<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=35306">35306</a>
Index update request can be incorrectly handled

<h3>Problem Reports Closed</h3>

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 19th March 2003
<br>Project org.eclipse.jdt.core v_307 - 2.1 RELEASE CANDIDATE 3
<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=34040">34040</a>
It takes a minute to expand a project in Package explorer

<h3>Problem Reports Closed</h3>

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 18th March 2003
<br>Project org.eclipse.jdt.core v_306 
<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=35237">35237</a>
Ant adapter should say where to look for the .log file
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35132">35132</a>
Need to reindex jar not on classpath not detected 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35131">35131</a>
Optimize source attachment query when no source attachment available 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35128">35128</a>
Problems with packages named "java"

<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=34214">34214</a>
createPackageDeclaration on ICompilationUnit
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35098">35098</a>
Delete compiled class files when deleting source file
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35087">35087</a>
NPE while importing plug-ins
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=34850">34850</a>
Need better control over deprecation messages
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=34322">34322</a>
SDK hangs while building on IBM1.3.1SR2
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30418">30418</a>
Inner classes cause compilation errors with asserts 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=34789">34789</a>
Search for references does not show subclassed methods 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33885">33885</a>
packages with javax in their name don't import properly
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=34992">34992</a>
TODO as a substring in a comment generates a task 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=34708">34708</a>
unreliable full build/refresh using linked source folders
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35093">35093</a>
Not only changes in working copy should refresh type hierarcy. 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=34851">34851</a>
Rename Class operation hangs 

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 13th March 2003
<br>Project org.eclipse.jdt.core v_305
<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=34845">34845</a>
asserts do not need to be NLS'ed
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=34658">34658</a>
Save All failed with unhelpful error message.

<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=34802">34802</a>
instanceof produce InternalCompilerError on MacOSX with JDK1.4.1
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=34734">34734</a>
internal compiler error ArrayIndexOutOfBound w/ 1.4.1 release
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=34706">34706</a>
Internal compiler error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=34907">34907</a>
ArrayIndexOutOfBoundsException after installing Java 1.4.1_01
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=34029">34029</a>
"False-positive" deprecated warning
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=34813">34813</a>
NPE from builder

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 11th March 2003
<br>Project org.eclipse.jdt.core v_304
<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=33927">33927</a>
Leak in Java Editor
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33950">33950</a>
Slow performance when changing code in a much referenced project
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=34000">34000</a>
JDK Compliance doesn't match javac generation from an IBM or SUN JDK
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=34078">34078</a>
Hierarchy: 27% of time spent reporting progress 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33998">33998</a>
unexpected NullPointerException 
   
<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=34566">34566</a>
can't get assert to work with mac os x java 1.4.1
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=34337">34337</a>
[RC2] Searches freezes ?
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33412">33412</a>
GB18030: Can't set JRE in a path contains GB18030 characters
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=34292">34292</a>
[RC2] OutOfMemory compiling
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=34130">34130</a>
Debug statements on console
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=34301">34301</a>
Java compiler doesn't dected always unreported exception
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32927">32927</a>
Exception while playing with type hierarchy 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=34059">34059</a>
When adding a library that is stored in a directory containing a "(" or ")" the classes are  *not* reachable for Code Assist.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33900">33900</a>
NPE setting output directory of a source folder

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 6th March 2003
<br>Project org.eclipse.jdt.core v_303 - 2.1 RELEASE CANDIDATE 2
<h2>
What's new in this drop</h2>
<ul>
<li><code>IJavaProject.isOnClasspath(...)</code> no longer throws any exception, but rather consistently return <code>false</code>
in these circumstances. Indeed, it is difficult for clients to work with predicates that throw exceptions. 
Although this change creates a source incompatibility, the change is binary compatible with 2.0 and within the original 
spirit of the original API contract. Include in 2.1 readme.
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33990">33990</a>
.class file time-stamps out of sync with .java files
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32665">32665</a>
Closing element trace should hide children 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32634">32634</a>
Improve readability of compiling progress message
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33949">33949</a>
DOM: assert statement has wrong length
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33695">33695</a>
project build path broken 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33475">33475</a>
Build path seems to be lost every time Eclipse restarts 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33785">33785</a>
Open on selection fails 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33800">33800</a>
search: reporting too many method occurrences 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33806">33806</a>
Code assist failure: assignment of double in for loop hides previous variables
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33754">33754</a>
IJavaProject.isOnClasspath should answer false for working copies outside the classpath

<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33918">33918</a>
Libraries are not presented in the Package Explorer (I030227)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33843">33843</a>
Compiler incorrectly generating static method calls
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33625">33625</a>
Searching for field references with SearchEngine returns some incorrect results
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31610">31610</a>
IDE does hang-up

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 4th March 2003
<br>Project org.eclipse.jdt.core v_302a
<h2>
What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33757">33757</a>
Problem not detected when opening a working copy 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33753">33753</a>
Missing resource messages could be improved
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33748">33748</a>
Cannot open working copy on .java file in simple project 

<h3>Problem Reports Closed</h3>

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 4th March 2003
<br>Project org.eclipse.jdt.core v_302
<h2>
What's new in this drop</h2>
<ul>
<li>Generalization of working copy deltas: the creation and destruction of any working copy (regular or shared) 
	now fires an <code>ElementChangedEvent</code> as well indicating that the working copy has been 
	<code>ADDED</code> or <code>REMOVED</code>. 
	Until now, only shared working copies were providing such delta notifications.
      <br>See: 
      <ul>
      <li><code>IWorkingCopy.getWorkingCopy()</code></li>
      <li><code>IWorkingCopy.getWorkingCopy(IProgressMonitor, IBufferFactory, IProblemRequestor)</code></li>
      <li><code>IWorkingCopy.destroy()</code></li>
      </ul>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31799">31799</a>
Getting squigglies in Java files not on classpath
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31858">31858</a>
NPE in log 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33371">33371</a>
Rename method dialog: Error message should quote name 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33686">33686</a>
Missing extension point schemas
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32981">32981</a>
Cancel Extract Interface refactoring does not cleanup working copies 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33692">33692</a>
Cleanup in the batch compiler default options
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33653">33653</a>
Relevance - should privilege type not needing qualification
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33039">33039</a>
Quick Fix: IAE n invocation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32588">32588</a>
Error saving changed source files; all files in project deleted
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33560">33560</a>
Workspace shows temporary problems also the compiler doesn't
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31765">31765</a>
private recursive methods not marked as unused
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33231">33231</a>
Deadlock performing CVS decoration while JRE initializers are invoked
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33571">33571</a>
SearchEngine.searchAllTypeNames: NPE when passing null as progress monitor 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33035">33035</a>
OutOfMemoryException while searching for references 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33445">33445</a>
CodeAssist - Relevance is not correct for local class
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33462">33462</a>
NPE during shutdown
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33424">33424</a>
No completion available in local type constructor
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33225">33225</a>
Override methods... inserts methods incorrectly if class body is as {}
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33207">33207</a>
Reject output folder that coincidate with source folder if not equal

<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33621">33621</a>
ICompilationUnit.getElementAt(int) returns strange things when parameter is in a field declaration inside anonymous and local classes
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33696">33696</a>
Java source exclusion filter stopped working in RC1
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32250">32250</a>
Reporting unused private methods could be improved
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33610">33610</a>
Deltas sent while in operation executed with JavaCore.run
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33573">33573</a>
NPE in IndexManager on shutdown
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33527">33527</a>
Inexact match searching in java.math.BigDecimal 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33505">33505</a>
Compiler fails on allowed inner class code
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33461">33461</a>
NPE upon shutdown
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33466">33466</a>
NPE on shutdown from IndexManager
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33475">33475</a>
Build path seems to be lost every time Eclipse restarts

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 27th February 2003
<br>Project org.eclipse.jdt.core v_301
<h2>
What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33321">33321</a>
NPE in IndexManager shutdown
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31764">31764</a>
CompletionEngine doesn't feed errors to completion requestor 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32488">32488</a>
Request to add/remove source folder to index should not look at active job 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32392">32392</a>
NPE in SourceMapper 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32701">32701</a>
Disassembler doesn't show actual modifiers for member types
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32919">32919</a>
Hierarchy views progress bar is useless 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32973">32973</a>
Codeassist relevance should privilege prefix match over need for qualification 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32629">32629</a>
DeltaProcessor walking some binary output 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32612">32612</a>
Saved index file names leaking names?
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32376">32376</a>
Signature.getSimpleName/Qualifier should not create an own char-array 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32628">32628</a>  
Too much time finding out there is no source during search 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32974">32974</a>
Invalid classpath error on ..classpath edition
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32986">32986</a>
Stack overflow, infinate recursion in compiler 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32607">32607</a>
Removing outer folder removes nested folder's cus from index 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32937">32937</a>
Kind not set for empty fine-grained delta 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32909">32909</a>
compiler error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32690">32690</a>
Classpath error are not detected after a Check out

<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32738">32738</a>
TVT: Externalized Strings to be removed from .properties file 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32957">32957</a>
StackOverFlowError renaming class 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32323">32323</a>
CVS information on class-Files lost during "rebuild project"
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32563">32563</a>
IAE in org.eclipse.jdt.core.Signature.toCharArray (M5) 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32900">32900</a>
Java out of memory problem
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25848">25848</a>
RedHat Linux LANG=en_US.UTF-8  causes some files *NOT* to be compiled
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32579">32579</a>
abstract protected method can't be overridden
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32545">32545</a>
Cannot override a method that's accessible in the superclass, but inaccessible in the super-superclass
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32179">32179</a>
Problems searching for references to selected text

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 21st February 2003
<br>Project org.eclipse.jdt.core v_300 - 2.1 RELEASE CANDIDATE 1
<h2>
What's new in this drop</h2>
<ul>
<li>In 1.4 compliant mode, the compiler will allow unterminated line comment (i.e. with no trailing line separator), as a consequence
of the JLS revisal. Thus removed temporary (and unused) 2.1 API :
<code>ToolFactory.createScanner(boolean tokenizeComments, boolean tokenizeWhiteSpace, boolean assertMode, boolean recordLineSeparator, <b>boolean strictComment</b>)</code>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32342">32342</a>
The field type Class_A is defined in an inherited type and an enclosing scope
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32476">32476</a>
Spec now allows line comment to end with EOF
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32339">32339</a>
Cannot find declaration of SIGNATURE in Java text search

<h3>Problem Reports Closed</h3>

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 20th February 2003
<br>Project org.eclipse.jdt.core v_299
<h2>
What's new in this drop</h2>
<ul>
<li>Added helper method to extract problem marker arguments: <code>CorrectionEngine.getProblemArguments(IMarker problemMarker)</code>
<li>Added 2 settings to disable classpath enhancements which could affect 2.0 clients.
<pre>
* JAVACORE / Enabling Usage of Classpath Exclusion Patterns
*    When set to "disabled", no entry on a project classpath can be associated with
*    an exclusion pattern.
*     - option id:         "org.eclipse.jdt.core.classpath.exclusionPatterns"
*     - possible values:   { "enabled", "disabled" }
*     - default:           "enabled"
* 
* JAVACORE / Enabling Usage of Classpath Multiple Output Locations
*    When set to "disabled", no entry on a project classpath can be associated with
*    a specific output location, preventing thus usage of multiple output locations.
*     - option id:         "org.eclipse.jdt.core.classpath.multipleOutputLocations"
*     - possible values:   { "enabled", "disabled" }
*     - default:           "enabled"
</pre>
<li>Removed temporary 2.1 API :
    <ul>
     <li><code>IPackageFragmentRoot.computeSourceAttachmentRootPath(IPath sourceAttachmentPath)</code>
     </li>
     <li><code>IJavaModelMarker.UNBOUND_CONTAINER</code>, use classpath problem marker ID instead (<code>IJavaModelStatusConstants.CP_CONTAINER_PATH_UNBOUND</code>).
     </li>
     <li><code>IJavaModelMarker.UNBOUND_VARIABLE</code>, use classpath problem marker ID instead (<code>IJavaModelStatusConstants.CP_VARIABLE_PATH_UNBOUND</code>).
     </li>
    </ul>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29578">29578</a>
Issues with migrating shared data
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32040">32040</a>
Multiple output folders fooling Java builder
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32217">32217</a>
Missing JavaCore in JDT/Core project index
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32338">32338</a>
Auto generated comments of quickfix method generation for unnamed package class is wrong
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32271">32271</a>
Type Hierarchy Progress monitor improvements 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32267">32267</a>
TypeHierarchy. Does not set progress monitor to done when cancelled 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32218">32218</a>
Inexact matches found when should be exact 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31016">31016</a>
builder exception found in log
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32225">32225</a>
incorrect delta after deleting 2 fields 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32219">32219</a>
JavaModel operations fail with ArrayIndexOutOfBoundsException if array empty
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32182">32182</a>
NPE performing search 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27994">27994</a>
Code Assist replace mode inconsistent 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32041">32041</a>
Multiple output folders fooling Java Model 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32196">32196</a>
Patch: correctly detect misisng .rsc file
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32111">32111</a>
ArrayIndexOutOfBoundsException during delete of members
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32100">32100</a>
when superpackage package empty deleting a subpackage deletes superpackage
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31646">31646</a>
No proposal using code assist in field initializer

<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32227">32227</a>
Serialization incompatibility with Sun's 1.4 compiler
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28426">28426</a>
Content Assist displays x(String arg0, String arg1) should be x(String str, String delim)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32164">32164</a>
Serialization methods with private or arbitrary access modifiers should be ignored by "unused private members" compiler check.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32097">32097</a>
Regression - attached source not found when in a subdirecory of archive

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 18th February 2003
<br>Project org.eclipse.jdt.core v_298
<h2>
What's new in this drop</h2>
<ul>
<li>Fix for bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31997">31997</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>
<li>Unused parameter diagnosis will now ignore parameters in an abstract method,
a main method, an implementation of an abstract method or a method overriding a
concrete one. Additional settings got added for enabling the diagnosis of the latter
two scenarii.
<pre>
* COMPILER / Reporting Unused Parameter if Implementing Abstract Method
*    When enabled, the compiler will signal unused parameters in abstract method implementations.
*    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.unusedParameter".
*     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract"
*     - possible values:   { "enabled", "disabled" }
*     - default:           "disabled"
*
* COMPILER / Reporting Unused Parameter if Overriding Concrete Method
*    When enabled, the compiler will signal unused parameters in methods overriding concrete ones.
*    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.unusedParameter".
*     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete"
*     - possible values:   { "enabled", "disabled" }
*     - default:           "disabled"
</pre>
</li>
<li><b>Code completion enhancement:</b>
   <ul>
   <li>Relevance of a proposal is higher if the proposal is a variable name and this name contains a prefix.</li>
   <li>Relevance of a proposal is higher if the proposal is a variable name and this name contains a suffix.</li>
   </ul>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32107">32107</a>
Index signature change isn't honoured any longer
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31997">31997</a>
Refactoring d.n. work for projects with brackets in name. 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31417">31417</a>
Where has the "Root Path" field gone? [doc] 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32000">32000</a>
IJavaModel.contains() returns true for resources copied into bin folder
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31947">31947</a>
NPE on shutdown in BlocksIndexInput.close()
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31985">31985</a>
NPE searching non-qualified and case insensitive type ref 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28637">28637</a>
[Preferences] Import Preferences: Console Message: Content is not allowed in Prolog 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31748">31748</a>
[search] search for reference is broken 2.1 M5 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31990">31990</a>
Working copy operations should not take workspace lock 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31811">31811</a>
VerifyError with huge switch statement
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=5783">5783</a>
Problem counts are not accumulated
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31652">31652</a>
NamingConvention.suggestXXNames: Put the most relevant first
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31628">31628</a>
Redundant import need a warning (matching package declaration)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31867">31867</a>
No unused import diagnosis on duplicate import
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31495">31495</a>
Should writeObject/readObject be a compiler warning?
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31538">31538</a>
serialVersionUID being flagged as an "unused" field
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31757">31757</a>
Folder with invalid pkg name should be non-Java resource 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25204">25204</a>
Eclipse compiler option: Unused parameters (i.e. never read)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27251">27251</a>
Compiler preferences: Unused parameters - ignore main
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31383">31383</a>
Strange rendering of of link resources when link points to Eclipse workspace 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31756">31756</a>
Code assist: fails inside an array which inside a function call 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31248">31248</a>
Java Compiler progress monitor tells about probelms found
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29790">29790</a>
OOM Exception in search cause IDE freeze

<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32083">32083</a>
overridden methods that change visibility cause compiler error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32044">32044</a>
Pre auto build notification fired when closing or opening a file
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31903">31903</a>
Null pointer exception loading from respository
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31968">31968</a>
Notifier loose nested levels
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31942">31942</a>
Bug with Selection Statement switch()
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31916">31916</a>
M5 Crashing
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31923">31923</a>
Source folder specific compiler settings
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31917">31917</a>
Unused private method warning doesn't know about read/writeObject
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=8452">8452</a>
Wrong position in FieldReference
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=12797">12797</a>
Can't add directory pointing to class-files to project classpath
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=11023">11023</a>
Filter code assist choices based on context
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=7293">7293</a>
Scrubbing Output Directory Can Cause Havoc
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=6096">6096</a>
Exception using code assist after package rename
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=5043">5043</a>
Feature Request: source folders in other projects
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=6488">6488</a>
Classpath Variables (allow plugins to reserve some)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31809">31809</a>
Eclipse reports error in task view - but it's no error!
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28319">28319</a>
Unused parameter should be limited to current method/class
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31243">31243</a>
Warn of unused parameters: Should not warn when method overrides
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28139">28139</a>
Highlight unused method parameters that are not inherited
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31380">31380</a>
NPE setting classpath

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 13th February 2003
<br>Project org.eclipse.jdt.core v_297
<h2>
What's new in this drop</h2>
<ul>
<li>To help fixing bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31135 ">31135</a>,
      added new flag <code>F_REORDER</code> on <code>IJavaElementDelta</code>. This flag is 
      positioned if a member in a compilation unit has changed its position relatively to its siblings.
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31476">31476</a>
CU is on build path also it is located in a excluded folder 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31303">31303</a>
copy of read-only package doesn't preserve read-only flag
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24045">24045</a>
Error deleting parent folder of source folder 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31653">31653</a>
typos in javadoc of NamingConventions 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30623">30623</a>
Strange java delta when creating a new class 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31446">31446</a>
Cannot cancel 'Cleaning of output foder'
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30757">30757</a>
Out of memory exception during hierarchy scoped search 
   
<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30485">30485</a>
ArrayOutOfBoundsException during shutdown
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30609">30609</a>
Output folder scrubbing
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31591">31591</a>
abstract method in base class, defined in a subclass results in compile error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31605">31605</a>
Single line comment on the last line of a file produces a syntax error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31626">31626</a>
getJavadoc() on TypeDeclaration returning incorrect comment

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 11th February 2003
<br>Project org.eclipse.jdt.core v_296
<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=31377">31377</a>
NullPointerException on binary import 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31441">31441</a>
Match in jar missing searching for references 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31398">31398</a>
M5 compilation problems with package abstract methods
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31230">31230</a>
Code assist on variable names: uses prefix and suffix together
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31440">31440</a>
Classpath container initializer getDescription should also take a project in argument
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31242">31242</a>
exception names should use Local Var suffix/prefix, not Method Param
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31168">31168</a>
Trying to open Java-source file with Java editor fails with I/O Exception.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31261">31261</a>
Strange behavior when there is more errors than max errors per compilation unit

<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31450">31450</a>
Compiler bug with overriding protected abstract methods, where a parent class has package-private abstract method
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31475">31475</a>
class must implement the inherited abstract method, but cannot override it
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30720">30720</a>
linked resources and exclusion filters: compiler markers not flushed
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31467">31467</a>
spurious "Incompatible conditional operand types" on ?: when assigning to abstract
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30800">30800</a>
Search - doesn't find declaration of field with unicode name 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31225">31225</a>
Source attachment not found
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31148">31148</a>
freezes when editing a java file and adding while(st.hasMoreTokes())
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30731">30731</a>
Class move refactoring changes the unlinked projects in the same workplace

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 6th February 2003
<br>Project org.eclipse.jdt.core v_295 - 2.1 MILESTONE-5 (aka 2.1 RELEASE CANDIDATE 0)
<h2>
What's new in this drop</h2>
<ul>
<li>Added API <code>ClasspathContainerInitializer.getDescription(IPath containerPath)</code> so as to improve readability
of our messages involving classpath containers (e.g. unbound container classpath problems). Default implementation answers
the original container path.
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30946">30946</a>
Deadlock in code parser

<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30999">30999</a>
Hang/Deadlock while inserting brace
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30949">30949</a>
When compiled from eclipse, unhandled exceptions in try - finally block are not detected.

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 5th February 2003
<br>Project org.eclipse.jdt.core v_294
<h2>
What's new in this drop</h2>
<ul>
<li> Classpath problem markers generated for unbound variable or container will have an extra attribute
(respectively IJavaModelMarker.UNBOUND_VARIABLE or IJavaModelMarker.UNBOUND_CONTAINER) which value is
the unbound variable or container names. This allows clients to recognize these problems, and contribute 
suitable recovery actions for these.
</li>
<li> Project cycles can now be built as soon as the compiler severity for circular
dependencies is lowered to a warning (see Preferences&gt;Java&gt;Compiler&gt;Other&gt;Circular dependencies&gt;Warning).
</li>
<li> Surfaced compiler options for reporting usage of char[] in String concatenations (default is still warning).
<pre>
* COMPILER / Reporting Usage of char[] Expressions in String Concatenations
*    When enabled, the compiler will issue an error or a warning whenever a char[] expression
*    is used in String concatenations (e.g. "hello" + new char[]{'w','o','r','l','d'}).
*     - option id:         "org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion"
*     - possible values:   { "error", "warning", "ignore" }
*     - default:           "warning"
</pre>
</li>
<li>Added API <code>IJavaModel.contains()</code> to find out if an <code>IResource</code> is visible in
     the Java model.
</li>
<li> 2.1 API Change in org.eclipse.jdt.core.NamingConventions: deprecated 'suggestSetterName' methods removed.
	<ul>
	<li><code>suggestSetterName(IJavaProject,char[],int,char[][])</code>
	</li>
	<li><code>suggestSetterName(IJavaProject,String,int,String[])</code>
	</li>
	</ul>
</li>
<li>Added API for sorting the members of types in a compilation.
  <ul>
    <li><code>org.eclipse.jdt.core.util.CompilationUnitSorter</code>
    <pre>
public static final String RELATIVE_ORDER = "relativeOrder";
public static void sort(ICompilationUnit compilationUnit,
	int[] positions,
	Comparator comparator,
	int options,
	IProgressMonitor monitor) throws JavaModelException;
    </pre>
    </li>
  </ul>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30947">30947</a>
CodeAssist - top level types are not proposed if type is qualified with package
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30907">30907</a>
Code assist doesn't work in first case statement of a switch statement
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30920">30920</a>
Stack overflow when container resolved to null
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30855">30855</a>
Wron error message when nesting source folder in class folder 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30857">30857</a>
IPackageFragmentRoot: copy removes source folders from classpath 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22756">22756</a>
Reference search does not respect package fragments scope 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30860">30860</a>
CodeAssist - Relevance is not correct for member exception
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30856">30856</a>
1.4 compliant mode should consider abstract method matches
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30825">30825</a>
Missing REORDERED_IN_CLASSPATH notifications 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26909">26909</a>
NPE opening type hierarchy for binary type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29832">29832</a>
Bogus quickfixes after removing/adding core plugins 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30699">30699</a>
External JAR: no refresh in JavaModel if full build occurred before 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30697">30697</a>
Classpath marker update could trigger automatic refresh for external JARs 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30805">30805</a>
Abstract non-visible method diagnosis fooled by intermediate declarations
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=14597">14597</a>
rearrange source code
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30417">30417</a>
ICodeFormatter format method should specify that the positions are sorted from the lowest to the biggest
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30709">30709</a>
Return value of IPackageFragementRoot.getElementName() has changed
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30705">30705</a>
Simple name should consider member types before toplevel types
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30704">30704</a>
01e0f should be accepted as valid floating point literal
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30511">30511</a>
IPackageFragmentRoot:move ignores FORCE flag 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30516">30516</a>
typo in javadoc of IPackageFragmentRoot:isArchive 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30506">30506</a>
IPackageFragmentRoot:delete does not handle external jars 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=20614">20614</a>
Failure compiling a project with cyclic dependencies
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30227">30227</a>
compilerAdapter jar should not be include in the repo
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30274">30274</a>
Need method to figure out if an IResource is visible through the Java Model 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27027">27027</a>
ClassCastException from codeassist
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30503">30503</a>
IPackageFragmentRoot:move, copy should accept null as sibling 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30496">30496</a>
CU/classfile name validation shouldn't scan if suffix isn't the proper one
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30471">30471</a>
AST.parseCompilationUnit(IClassFile, boolean) throws IAE even if class file has source
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30487">30487</a>
NPE during shutdown in path canonicalization
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26912">26912</a>
'null == null' fooling blank final analysis
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30280">30280</a>
NullPointerException at org.eclipse.jdt.internal.compiler.ast.QualifiedAllocationExpression.resolveType(QualifiedAllocationExpression.java:225)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30393">30393</a>
Its back: Core Exception [code 380] The resource tree is locked for modifications 

<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=5347">5347</a>
class files not updated 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=9838">9838</a>
Wrong diagnosis compiling inner classes
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30600">30600</a>
incorrect code assist after 'throw new'
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30799">30799</a>
Core dump with J2SDK 1.4.1_01 in java.util.zip.ZipFile.getNextEntry
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30739">30739</a>
\u4100 is rejected as an identifier character
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30782">30782</a>
Can't rename a package to the same name with different case
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30522">30522</a>
IPackageFragmentRoot: move, copy updateClasspath semantics 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30567">30567</a>
GB18030: Class name, method name, variable name can not contain GB18030 character in some version of Eclipse for Linux.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30629">30629</a>
search: no occurrences to type found if type in default package in nested source folder 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27770">27770</a>
Rebuild all doesn't follow project dependencies
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24832">24832</a>
Recurency between projects
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27750">27750</a>
[startup] starting javacore takes 13% of empty worspace startup
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22710">22710</a>
simple save takes 40 seconds
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30470">30470</a>
IJavaModelStatus.getMessage not the same as getString 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30465">30465</a>
PDE binary project import fills log with core exceptions
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28224">28224</a>
Invalid "Unused Imports" warning when importing inner classes
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27583">27583</a>
reconciling allocates megabytes of memory in seconds of typing

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 28th January 2003
<br>Project org.eclipse.jdt.core v_293
<h2>
What's new in this drop</h2>
<ul>
<li> By default, JDT/Core will consider a default task tag "TODO" (with normal priority). In the past, default was no task reported. 
<li> Added APIs to save/restore type hierarchies. Note that the client still has to register as a <code>ITypeHierarchyChangedListener</code> once
restoration has occurred.
  <ul>
     <li> <code>ITypeHierarchy.store(OutputStream, IProgressMonitor)</code> for saving a type hierarchy.
	 </li>
     <li> <code>IType.load(InputStream, IProgressMonitor)</code> for restoring a previously saved hierarchy.
	 </li>
  </ul>
</li> 
<li> Added APIs to manipulate package fragment roots:
	<ul>
	<li><code>IPackageFragmentRoot.copy(IPath, int, boolean, IClasspathEntry, IProgressMonitor)</code>
	</li>
	<li><code>IPackageFragmentRoot.delete(int, boolean, IProgressMonitor)</code>
	</li>
	<li><code>IPackageFragmentRoot.move(IPath, int, boolean, IClasspathEntry, IProgressMonitor)</code>
	</li>
	</ul>
	Note that these APIs are very close to the corresponding <code>IResource</code> APIs except that
	they filter out nested source folders, and that they update the project's classpaths if specified.
</li>
<li> Extended compiler optional warning for interface methods incompatible with Object
non public methods to scenario where thrown exceptions are not compatible (problem ID:
<code>IProblem.IncompatibleExceptionInThrowsClauseForNonInheritedInterfaceMethod</code>).
This problem is optional, and its severity is also controlled by the <code>JavaCore</code>
preference <code>"org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod"</code>.
</li>
<li> 2.1 API Change in org.eclipse.jdt.core.NamingConventions: a new boolean parameter 'isBoolean' added. The value of this parameter is <code>true</code> if the field's type is boolean.
	<ul>
	<li><code>suggestSetterName(IJavaProject,char[],int,char[][])</code> become <code>suggestSetterName(IJavaProject,char[],int,boolean,char[][])</code>
	</li>
	<li><code>suggestSetterName(IJavaProject,String,int,String[])</code> become <code>suggestSetterName(IJavaProject,String,int,boolean,String[])</code>
	</li>
	</ul>
	Previous APIs got deprecated, and will be removed before 2.1.
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22049">22049</a>
Hierarchy View slow to calculate hierarchy [type hierarchy]
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29411">29411</a>
Projects rebuilt after restart of Eclipse
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30282">30282</a>
TODO task message shouldn't be multiline
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30102">30102</a>
NamingConvention: Tests fail 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30113">30113</a>
Wrong positions in the outliner for a field that follows an initializer 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30224">30224</a>
No JavaElement delta when renaming non-Java project 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30108">30108</a>
not clear what 'modifiers' in NamingConventions means 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30099">30099</a>
NamingConvention.suggestArgumentNames: No guess returned 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27291">27291</a>
[Dialogs] Error dialog looks bad if status message is null 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28666">28666</a>
Unclear error message for invalid output folder 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29366">29366</a>
Search reporting invalid inaccurate match 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29864">29864</a>
Unable to restore working set item - cannot instantiate item: org.eclipse.jdt.ui.PersistableJavaElementFactory 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28044">28044</a>
weird errors not reported anywhere but in text and overview ruler
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30013">30013</a>
Project compiler setting workspace | project do not persist
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29151">29151</a>
NPE in Surround with try/catch block [refactoring]
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29969">29969</a>
CodeAssist: too much proposals just after 'switch'
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29955">29955</a>
Should not report incompatible throws clause for interface if Object non public ref method
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29894">29894</a>
Path matching failure (CharOperation)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29761">29761</a>
Regular expression pattern in exclusion filter is too greedy in M4
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29761">29803</a>
Source path exclusion filter not relative source folder
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23134">23134</a>
Odd behavior from code formatter

<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30357">30357</a>
Incompatibility of serialization with sun jdk
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30370">30370</a>
Warning "import never used" in spite of use by a javadoc @link
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30209">30209</a>
JDT compiler bytecode incompatibility with JDK bytecode  results in serialization error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27497">27497</a>
Compile only on class
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28263">28263</a>
Better specification of source folders
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30232">30232</a>
NullPointerException in compilation unit
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30160">30160</a>
CodeAssist - no completion behind jProject
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29862">29862</a>
GB18030:Could not set a GB18030 character as workbench classpath variable.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29863">29863</a>
GB18030: Could not create a class variable whose name contains a GB18030 character
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27616">27616</a>
[Compiler] stack overflow while editing
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23299">23299</a>
Enhance Code completion
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29239">29239</a>  
Refactoring throws exception if .project or .classpath read-only in 2.1 M4 

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 21st January 2003
<br>Project org.eclipse.jdt.core v_292a
<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=29872">29872</a>
ImportOrganizeTest failing due to file missing from index 
      
<h3>Problem Reports Closed</h3>

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 21st January 2003
<br>Project org.eclipse.jdt.core v_292
<h2>
What's new in this drop</h2>
<ul>
<li> New compiler setting got added to control severity of incompatible interface method with Object non public method.
This used to be reported incorrectly as an error by our compiler (e.g. <code>interface I { int clone(); }</code>), and
is now an optional problem (default severity is WARNING). Corresponding problem ID is: <code>IProblem.IncompatibleReturnTypeForNonInheritedInterfaceMethod</code>.
<pre>
* COMPILER / Reporting Interface Method not Compatible with non-Inherited Methods
*    When enabled, the compiler will issue an error or a warning whenever an interface
*    defines a method incompatible with a non-inherited Object one.
*     - option id:         "org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod"
*     - possible values:   { "error", "warning", "ignore" }
*     - default:           "warning"
</pre>
</li>
<li> New compiler problems got added to report declarations of unused private members (field/method/type). A JavaCore setting
got added to control the severity of these new problems (default severity is IGNORE). Note that currently only a valid local usage 
is considered as a true usage (e.g. if a message send targets this method, but cannot see it, then the target method will still be 
reported as unused). Corresponding problem IDs are: <code>IProblem.UnusedPrivateMethod</code>, <code>IProblem.UnusedPrivateField</code>, 
<code>IProblem.UnusedPrivateType</code> and <code>IProblem.UnusedPrivateConstructor</code>.
<pre>
* COMPILER / Reporting Unused Private Members
*    When enabled, the compiler will issue an error or a warning whenever a private 
*    method or field is declared but never used within the same unit.
*     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedPrivateMember"
*     - possible values:   { "error", "warning", "ignore" }
*     - default:           "ignore"
</pre>
</li>
<li>CodeAssist now answers keyword completions. Note that there was already an API for these: <code>ICompletionRequestor#acceptKeyword(char[] keywordName, int completionStart, int completionEnd, int relevance)</code>
which wasn't invoked until now. There is currently no way to distinguish in between a 'synchronized' keyword used as a modifier or as a statement.
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26363">26363</a>
[ast/dom] type bindings that return null for superclass
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22381">22381</a>
Show unused fields and variables [refactoring] [search]
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=19063">19063</a>
code assist proposals for keywords
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29771">29771</a>
No reference found to IResource.getLocation when no case sensitive
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28236">28236</a>
Search for refs to class in hierarchy matches class outside hierarchy 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28951">28951</a>
Source attachment rootpath field missing in UI 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29536">29536</a>
Check use of IResource.getLocation 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29337">29337</a>
Poor wording in task message "This method overrides deprecated..."
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29601">29601</a>
TypeHierarchy: Avoid to use 'isInterface' / 'isClass' 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29540">29540</a>
Search Engine return extra results 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29524">29524</a>
Search for declaration via patterns adds '"*" 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26260">26260</a>
task markers: limitting the number of problems per CU limits the number of tasks/markers (in general) per CU
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29306">29306</a>
Can't get content of CU not on classpath 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=3331">3331</a>
DCR: Code Formatter should offer cast without space (1GI74GZ)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29690">29690</a>
Locked Resource Tree (JavaModelException) 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29585">29585</a>
Core Exception as resource tree is locked initializing classpath container 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29487">29487</a>
Internal compiler error: final field set in loop (in constructor)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29546">29546</a>
Project rebuild cannot write over .class files
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29636">29636</a>
First anonymous type should be named X$1
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29638">29638</a>
No field initializations on Object
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27413">27413</a>
Should we reject that code?
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29211">29211</a>
Should check the visibility of the array type before accessing its length field
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29213">29213</a>
Should check the visibility of the array type before calling a method
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29621">29621</a>
Wrong Delta When Adding to Filtered Folder 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29637">29637</a>
Default debug attributes don't match with javac
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29538">29538</a>
External jar not indexed
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28489">28489</a>
PackageFragmentRoot.fullExclusionPatternChars() could be optimized for non-source roots 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29298">29298</a>
Simplify AST creation for an IClassFile (minor)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29374">29374</a>
Excluded folder on project not returned by Java Model 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27485">27485</a>
SearchEngine returns wrong java element when searching in an archive that is included by two distinct java projects. 
 
<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=5997">5997</a>
Code assist does not know about synchronized keyword
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=3196">3196</a>
DCR - CodeAssist - code assist doesn't assist for keywords (1G0FUQF)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23300">23300</a>
Context sensitive Code Completion
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29541">29541</a>
Scrubbing wipes out entire build directory
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28393">28393</a>
Duplicate 'missing require project' marker
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25976">25976</a>
Bug in code formatter: can't be called twice in a row...
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25896">25896</a>
weird formatting of import declarations
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26426">26426</a>
Add preference to sort method in the source file.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25875">25875</a>
import splitting behavior
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23992">23992</a>
Adding partial compilation for JAVA
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=19501">19501</a>
Found NPE in log
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=13029">13029</a>
"Build" sometimes builds files that have not changed
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=13008">13008</a>
Move a Java file, errors remain
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=11572">11572</a>
Cannot refresh a jar file
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=8720">8720</a>
include an external directory of classes in Java build path
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=3359">3359</a>
Get rid of source attachment root (1GJON3Q)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28073">28073</a>
[startup] on startup, jCore loads launching plugins which loads debug plugins
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29652">29652</a>
Can't attach source to some ZIP files
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29229">29229</a>
Internal compiler error 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28801">28801</a>
Internal compiler error 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=18239">18239</a>
Startup takes too long with java editor open
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28819">28819</a>
Nullpointer exception when building
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28820">28820</a>
NullPointerException in compiler in M4
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28953">28953</a>
internal compiler error: NullPointerException in file with inner class
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28954">28954</a>
Internal compiler error -- assert statements in inner class
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28980">28980</a>
Null-pointer exception on nested class assert 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29267">29267</a>
NullPointerExc. occured when building project 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29088">29088</a>
Internal compiler error compiling code in M4 edition of eclipse
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29031">29031</a>
Internal compiler error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=5520">5520</a>
Class files which are source not shown
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=3531">3531</a>
NewClass(Interface)Wizard - shows not-visible types (1G4GNH3)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23033">23033</a>
[Tasks] Create seperate setting for stopping build on a circular dependency error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28076">28076</a>
NPE during quick shutdown
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29144">29144</a>
Missing code implementation in the compiler
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29527">29527</a>
Organize imports fails on included code
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29501">29501</a>
Uninitialized variable warning does not analyze the program thoroughly enough
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29394">29394</a>
suboptimal handling closing/opening projects in autobuild
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29009">29009</a>
ClassCircularityError in RequiredPluginsInitializer

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 15th January 2003
<br>Project org.eclipse.jdt.core v_291a
<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=29516">29516</a>
SearchEngine regressions in 20030114 
      
<h3>Problem Reports Closed</h3>

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 14th January 2003
<br>Project org.eclipse.jdt.core v_291
<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=28545">28545</a>
JavaProject.exists() returns true if project doesn't have Java nature 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29404">29404</a>
JavaCore.create(IProject) returns != null for non Java Projects. 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28752">28752</a>
J Search resports non-existent Java element 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22783">22783</a>
Unexpected null in compiler error message
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29365">29365</a>
Syntax error inside method body is fooling NLS string detection
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29277">29277</a>
ToolFactory.createDefaultClassFileReader: Retrieving of classfile location
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29376">29376</a>
Remove 65k limit on static data
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29176">29176</a>  
[DOM/AST] Statement.get/setLeadingComment should be deleted 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29274">29274</a>
Surface non-java projects as model non-java resources 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28531">28531</a>
Classpath Entry: Output folder can not be set to project 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28824">28824</a>
Quick Fix: Type Mismatch -&gt; Cast bug [quick fix]
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28599">28599</a>
validateClasspath rendering of paths 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29079">29079</a>
Buildpath validation: No check that output folder is inside project 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29159">29159</a>
DeltaProcessor walks removed project 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28822">28822</a>
ClassCastException in ProblemBinding 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28596">28596</a>
Default output folder cause of validation error even if not used 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28672">28672</a>
Batch compiler should support argument expansion
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28617">28617</a>
Qualified super reference cannot be surrounded with parentheses.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27298">27298</a>
Must return result error could be more accurate
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28869">28869</a>
Parse error with final local vars without immediate assignment
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28682">28682</a>
org.eclipse.jdt.core.dom.ForStatement's body position is incorrect
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28622">28622</a>
Check deprecation should handle unicodes
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28559">28559</a>
@deprecated has to be at the beginning of the comment line
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=20844">20844</a>
Indexing space usage
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26820">26820</a>
Out of Memory indexing new plugins
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27289">27289</a>
ClassCircularityError forces ClassNotFoundException's
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27401">27401</a>
[startup] Review JavaCore.startup()
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28557">28557</a>
Deprecation is not checked when subclassing a deprecated member type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28615">28615</a>
Cannot optimize out -0.0 in array initializers
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28750">28750</a>
Compiler crashes with M4
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27241">27241</a>
Missing code generation for the qualifier of a static method invocation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=3173">3173</a>
Constant field code generation (1FEWXZW)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28583">28583</a>
Missing one unit in package view 
   
<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=3297">3297</a>
DCR - JM - Packages view empty (1GEWRYI)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28934">28934</a>
Using assert keyword in methods of nested classes causes
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25980">25980</a>
NullPointerException during Refactor/Move operation 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29343">29343</a>
[M4] Scribbling on missing return statement needs to go on a diet
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29197">29197</a>
NullPointerException when compiling Class with an assert in a method of an inner class
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29082">29082</a>
Can't access Inner class static field through an instance
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28675">28675</a>
NPE in indexer
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28908">28908</a>
ClassCastException in JavaProject.computePackageFragmentRoots
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27430">27430</a>
Java model hangs onto many ClassFile objects
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=29030">29030</a>
Compiler Bug -- incorrect visibility of protected constructors
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28830">28830</a>
Flexible projects cannot share output directory

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 17th December 2002 - 2.1 MILESTONE-4
<br>Project org.eclipse.jdt.core v_290
<h2>
What's new in this drop</h2>
<ul>
<li>Added new JavaCore options
	<ul>
	<li>CODEASSIST / Define the Prefixes for Field Name<br>
		When the prefixes is non empty, completion for field name will begin with
		one of the proposed prefixes.<br>
		<ul>
		<li>option id: "org.eclipse.jdt.core.codeComplete.fieldPrefixes"</li>
		<li>possible values: { "&lt;prefix&gt;[,&lt;prefix&gt;]*" } where &lt;prefix&gt; is a String without any wild-card</li>
		<li>default: ""</li>
	 	</ul>
	</li>
	<li>CODEASSIST / Define the Prefixes for Static Field Name<br>
		When the prefixes is non empty, completion for static field name will begin with
		one of the proposed prefixes.<br>
		<ul>
		<li>option id: "org.eclipse.jdt.core.codeComplete.staticFieldPrefixes"</li>
		<li>possible values: { "&lt;prefix&gt;[,&lt;prefix&gt;]*" } where &lt;prefix&gt; is a String without any wild-card</li>
		<li>default: ""</li>
	 	</ul>
	</li>
	<li>CODEASSIST / Define the Prefixes for Local Variable Name<br>
		When the prefixes is non empty, completion for local variable name will begin with
		one of the proposed prefixes.<br>
		<ul>
		<li>option id: "org.eclipse.jdt.core.codeComplete.localPrefixes"</li>
		<li>possible values: { "&lt;prefix&gt;[,&lt;prefix&gt;]*" } where &lt;prefix&gt; is a String without any wild-card</li>
		<li>default: ""</li>
	 	</ul>
	</li>
	<li>CODEASSIST / Define the Prefixes for Argument Name<br>
		When the prefixes is non empty, completion for argument name will begin with
		one of the proposed prefixes.<br>
		<ul>
		<li>option id: "org.eclipse.jdt.core.codeComplete.argumentPrefixes"</li>
		<li>possible values: { "&lt;prefix&gt;[,&lt;prefix&gt;]*" } where &lt;prefix&gt; is a String without any wild-card</li>
		<li>default: ""</li>
	 	</ul>
	</li>
	<li>CODEASSIST / Define the Suffixes for Field Name<br>
		When the suffixes is non empty, completion for field name will end with
		one of the proposed suffixes.<br>
		<ul>
		<li>option id: "org.eclipse.jdt.core.codeComplete.fieldSuffixes"</li>
		<li>possible values: { "&lt;suffix&gt;[,&lt;suffix&gt;]*" } where &lt;suffix&gt; is a String without any wild-card </li>
		<li>default: ""</li>
	 	</ul>
	</li>
	<li>ODEASSIST / Define the Suffixes for Static Field Name<br>
		When the suffixes is non empty, completion for static field name will end with
		one of the proposed suffixes.<br>
		<ul>
		<li>option id: "org.eclipse.jdt.core.codeComplete.staticFieldSuffixes"</li>
		<li>possible values: { "&lt;suffix&gt;[,&lt;suffix&gt;]*" } where &lt;suffix&gt; is a String without any wild-card </li>
		<li>default: ""</li>
	 	</ul>
	</li>
	<li>CODEASSIST / Define the Suffixes for Local Variable Name<br>
		When the suffixes is non empty, completion for local variable name will end with
		one of the proposed suffixes.<br>
		<ul>
		<li>option id: "org.eclipse.jdt.core.codeComplete.localSuffixes"</li>
		<li>possible values: { "&lt;suffix&gt;[,&lt;suffix&gt;]*" } where &lt;suffix&gt; is a String without any wild-card </li>
		<li>default: ""</li>
	 	</ul>
	</li>
	<li>CODEASSIST / Define the Suffixes for Argument Name<br>
		When the suffixes is non empty, completion for argument name will end with
		one of the proposed suffixes.<br>
		<ul>
		<li>option id: "org.eclipse.jdt.core.codeComplete.argumentSuffixes"</li>
		<li>possible values: { "&lt;suffix&gt;[,&lt;suffix&gt;]*" } where &lt;suffix&gt; is a String without any wild-card </li>
		<li>default: ""</li>
	 	</ul>
	</li>
	</ul>
</li>
<li>New API class : org.eclipse.jdt.core.NamingConventions<br>
This class provides methods for computing Java-specific names.
<pre>
package org.eclipse.jdt.core;
public final class NamingConventions {
	public static char[] removePrefixAndSuffixForArgumentName(IJavaProject javaProject, char[] argumentName) {...}
	public static String removePrefixAndSuffixForArgumentName(IJavaProject javaProject, String argumentName) {...}
	public static char[] removePrefixAndSuffixForFieldName(IJavaProject javaProject, char[] fieldName, int modifiers) {...}
	public static String removePrefixAndSuffixForFieldName(IJavaProject javaProject, String fieldName, int modifiers) {...}
	public static char[] removePrefixAndSuffixForLocalVariableName(IJavaProject javaProject, char[] localName) {...}
	public static String removePrefixAndSuffixForLocalVariableName(IJavaProject javaProject, String localName) {...}
	public static char[][] suggestArgumentNames(IJavaProject javaProject, char[] packageName, char[] qualifiedTypeName, int dim, char[][] excludedNames) {...}
	public static String[] suggestArgumentNames(IJavaProject javaProject, String packageName, String qualifiedTypeName, int dim, String[] excludedNames) {...}
	public static char[][] suggestFieldNames(IJavaProject javaProject, char[] packageName, char[] qualifiedTypeName, int dim, int modifiers, char[][] excludedNames) {...}
	public static String[] suggestFieldNames(IJavaProject javaProject, String packageName, String qualifiedTypeName, int dim, int modifiers, String[] excludedNames) {...}
	public static char[][] suggestLocalVariableNames(IJavaProject javaProject, char[] packageName, char[] qualifiedTypeName, int dim, char[][] excludedNames) {...}
	public static String[] suggestLocalVariableNames(IJavaProject javaProject, String packageName, String qualifiedTypeName, int dim, String[] excludedNames) {...}
	public static char[] suggestGetterName(IJavaProject project, char[] fieldName, int modifiers, boolean isBoolean, char[][] excludedNames) {...}
	public static String suggestGetterName(IJavaProject project, String fieldName, int modifiers, boolean isBoolean, String[] excludedNames) {...}
	public static char[] suggestSetterName(IJavaProject project, char[] fieldName, int modifiers, char[][] excludedNames) {...}
	public static String suggestSetterName(IJavaProject project, String fieldName, int modifiers, String[] excludedNames) {...}
}
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28434">28434</a>
Open Type broken when workspace has build path problems 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28326">28326</a>
"Open Type" dialog could not open selected type 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28476">28476</a>
JRE container description wrong
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28447">28447</a>
Unreadable error message from build class path validation 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23210">23210</a>
Member variable name proposal

<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=9511">9511</a>
Exclude files and whole packages from build
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27925">27925</a>
Openable.hasChildren is slow 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28246">28246</a>
Class files written to custom output and default output
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27275">27275</a>
Random craches with corupt jar in library path
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28357">28357</a>
NPE on importing plugins

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 16th December 2002
<br>Project org.eclipse.jdt.core v_289
<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=28316">28316</a>
Missing references to constructor
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28104">28104</a>
33 Parsers and 35 Scanners created when opening a type hiearchy 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28298">28298</a>
SANITY CHECK error when compiling a specific switch statement
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28296">28296</a>
parser gives cast expression an incorrect length
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28000">28000</a>
Too many deltas on startup, when resolving cp variables/containers

<h3>Problem Reports Closed</h3>

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 13th December 2002
<br>Project org.eclipse.jdt.core v_288
<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=28109">28109</a>
Excluding a source file doesn't remove its Java problems
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28115">28115</a>
Ubiquitous resource in the JavaModel 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28064">28064</a>
Stack overflow in java editor
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28150">28150</a>  
ClassCastException in completion
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22139">22139</a>
Array initializer used inline causes syntax error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27941">27941</a>  
ClassCastException in CompletionParser
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27284">27284</a>  
misspelled variable name proposals for array with type name ending in 'y'
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27852">27852</a>  
We should not reject a class named java if it is in the unnamed package

<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28208">28208</a>
IClasspathEntry.getExclusionPattern: String[] would be better
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28114">28114</a>
Missing type if defined in nested source folder
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27371">27371</a>
code assist / auto inserting "()" broken
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28087">28087</a>
on build, findMarkers called 3 times for each project
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27992">27992</a>
Incremental compile time = complete build time
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28095">28095</a>
JDTCompilerAdapter references old Main constructor
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23231">23231</a>  
[resources] Ability to hide resources from the builders
  
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 11th December 2002
<br>Project org.eclipse.jdt.core v_287a
<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=28069">28069</a>
JDTCompilerAdapter and compiler.batch.Main out of sync in I20021210 build

<h3>Problem Reports Closed</h3>

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 10th December 2002 
<br>Project org.eclipse.jdt.core v_287
<h2>
What's new in this drop</h2>
<ul> 
<li>Added API <code>IJavaProject.isOnClasspath(IResource)</code> that returns whether a given resource is on the 
     classpath of the project and whether it is excluded.
</li>
<li>Added mechanism to allow generic container user to request updating definitions held by
container initializers, onto <code>org.eclipse.jdt.core.ClasspathContainerInitializer</code>:

<pre>
/**
 * Returns <code>true</code> if this container initializer can be requested to perform updates 
 * on its own container values. If so, then an update request will be performed using
 * <code>ClasspathContainerInitializer#requestClasspathContainerUpdate</code>/
 * 
 * @param containerPath - the path of the container which requires to be updated
 * @param project - the project for which the container is to be updated
 * @return boolean - returns <code>true</code> if the container can be updated
 * @since 2.1
 */
public boolean canUpdateClasspathContainer(IPath containerPath, IJavaProject project) {
	// By default, classpath container initializers do not accept updating containers
   	return false; 
}</pre>
<pre>
/**
 * Request a registered container definition to be updated according to a container suggestion. The container suggestion 
 * only acts as a place-holder to pass along the information to update the matching container definition(s) held by the 
 * container initializer. In particular, it is not expected to store the container suggestion as is, but rather adjust 
 * the actual container definition based on suggested changes.
 * 
 * IMPORTANT: In reaction to receiving an update request, a container initializer will update the corresponding
 * container definition (after reconciling changes) at its earliest convenience, using 
 * <code>JavaCore#setClasspathContainer(IPath, IJavaProject[], IClasspathContainer[], IProgressMonitor)</code>. 
 * Until it does so, the update will not be reflected in the Java Model.
 * 
 * In order to anticipate whether the container initializer allows to update its containers, the predicate
 * <code>JavaCore#canUpdateClasspathContainer</code> should be used.
 * 
 * @param containerPath - the path of the container which requires to be updated
 * @param project - the project for which the container is to be updated
 * @param containerSuggestion - a suggestion to update the corresponding container definition
 * @throws CoreException when <code>JavaCore#setClasspathContainer</code> would throw any.
 * @see JavaCore#setClasspathContainer(IPath, IJavaProject[], IClasspathContainer[], IProgressMonitor)
 * @see ClasspathContainerInitializer#canUpdateClasspathContainer(IPath, IJavaProject)
 * @since 2.1
 */
public void requestClasspathContainerUpdate(IPath containerPath, IJavaProject project, IClasspathContainer containerSuggestion) throws CoreException {
	// By default, classpath container initializers do not accept updating containers
}</pre>
</li>
<li>Added helper method to <code>org.eclipse.jdt.core.JavaCore</code> so as to retrieve a registered 
classpath container initializer:
<pre>/**
 * Helper method finding the classpath container initializer registered for a given classpath container ID 
 * or <code>null</code> if none was found while iterating over the contributions to extension point to
 * the extension point "org.eclipse.jdt.core.classpathContainerInitializer".
 * 
 * A containerID is the first segment of any container path, used to identify the registered container initializer.
 * 
 * @return ClasspathContainerInitializer - the registered classpath container initializer or <code>null</code> if 
 * none was found.
 * @since 2.1
 */
public static ClasspathContainerInitializer getClasspathContainerInitializer(String containerID)</pre>
</li>
</ul> 
 
<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27890">27890</a>
Batch compiler option -nowarn or -warn:none doesn't remove the warning for conversion from char[] to String
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27670">27670</a>
ClasspathEntry.rootID allocates a lot of throw-away objects
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27595">27595</a>
Add isOnClasspath(IResource) as API 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27652">27652</a>
DCR - Need a way to request container initializers to update their container definitions
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27555">27555</a>
[startup] PackageFragmentRoot - source attached too early (?) 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27861">27861</a>
VerifyError not being caught in jdt core tests
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27914">27914</a>
Infinite loop setting breakpoint
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27853">27853</a>
Incorrect invalid unicode
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27840">27840</a>
Computing non-java resources on a project should not create a NameLookup 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27690">27690</a>
SourceElementParser doesn't parse local declarations even if it is requested
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=5295">5295</a>
Segmented view misses field comment
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27714">27714</a>
JavaElement.newNotPresentException 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27735">27735</a>
CodeAssist - No completion for type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27370">27370</a>
code assist not working with "new .."
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27658">27658</a>
Infinite loop when checking cycle
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27683">27683</a>
Index should be saved right after a project was indexed 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27330">27330</a>
Signeture should reuse Scanner object 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27294">27294</a>
Performance - getTypeSignature should not rescan element names 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26604">26604</a>
Forward references unilaterally dissallowed
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27532">27532</a>
Rebuild sometimes introduces invalid errors
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27597">27597</a>
Ant adapter on a 1.4 JVM sets the target to be 1.4
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27494">27494</a>
Source folder output folder shown in Package explorer 

<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27783">27783</a>
Build output folder should not always be in the project subdirectories
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27600">27600</a>
NPE while searching
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26602">26602</a>
Incremental compile/build produces invalid header classes
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25752">25752</a>
References list displays nulls for package name parts 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26967">26967</a>
Upon exit always receive "JVM Terminated message"
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27748">27748</a>
JUnit import fails
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27660">27660</a>
Stack overflow causes startup crash 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27236">27236</a>
search: references to constructors - a subclass constructor reported 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27603">27603</a>
NPE in AbstractImageBuilder
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27448">27448</a>
using SearchEngine the constructors, inner classes or packages are not found 

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 3rd December 2002 
<br>Project org.eclipse.jdt.core v_286
<h2>
What's new in this drop</h2>
<ul> 
<li><b>Code completion enhancement:</b>
   <ul>
   <li>Relevance of a proposal is higher if the proposal is after an operator and the type of
   proposal is compatible with the operator.
   <br>In the following example <code>var1</code> is more relevant than <code>var2</code>.<pre>
   public class X {
      int var1;
      Object var2;
      void foo() {
         int i = 1 + var&lt;cursor&gt;
      }
   }</pre>
   </li>
   </ul>
</li>
</ul> 
 
<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27487">27487</a>
Builder doesn't handle move to nested source folder
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27499">27499</a>
Bogus ClasspathVariableInitializer is found in JavaModel 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22039">22039</a>
Provide facility to exclude files from compilation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26251">26251</a>
project compiler settings : some are not set
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25538">25538</a>
Conflict of classfolder and outputfolder not reported 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27310">27310</a>
CompilationUnit#lineNumber(..) doc seems flawed
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27235">27235</a>  
Bug with assignement with no effect mask
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25928">25928</a>
Cannot nest entries in Java Build Path - Request for Feature Removal 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26806">26806</a>
Source build path should allow subdirectories of directories already on path
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27322">27322</a>
ClassCastException during code assist
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27247">27247</a>  
Missing generation for the qualifier in 1.4 mode
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22407">22407</a>  
Can't set Java project build output folder to different project
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27250">27250</a>  
Walkback asking for a full rebuild
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27173">27173</a>  
API: add methodInvocation.resolveMethodBinding 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24123">24123</a>
Support for multiple output dirs
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27151">27151</a>
NPE searching in hierarchy 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24308">24308</a>
Performance - Optimization of search in hierarchy 

<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27204">27204</a>
AST.lineNumber(position) is not working, if the class didn't have a new line at the end of file.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27374">27374</a>
project specific JRE settings
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27295">27295</a>
Relevance of member type in type cast should be higher 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27254">27254</a>
Inexact matches found when search references to UnconditionalFlowContext#maxFieldCount 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26938">26938</a>
Build Project-command removes all from build-dir

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 26th November 2002 
<br>Project org.eclipse.jdt.core v_285
<h2>
What's new in this drop</h2>
<ul> 
<li><b>Source attachment enhancements:</b> 
	<ul>
	<li><b>Source folder attachment:</b> The source attachment mechanism got generalized to all binary 
		  package fragment root. In the past, only archives did support to carry a source attachment, in the 
		  form of a source archive. Now, both binary folder or archive can be associated with sources, which 
		  can be either a source archive or a source folder. In particular, mixed modes are supported (binary 
		  archive associated to source folder and reciprocally). For more details, see 
		  <code>IPackageFragmentRoot.attachSource(IPath, IPath, IProgressMonitor)</code> and 
		  <code>JavaCore.newLibraryEntry(...)</code>.
	</li>
	<li><b>Automatic root path detection:</b> If null is specified as the root path (see 
		  <code>JavaCore.newLibraryEntry(...)</code> and <code>IPackageFragmentRoot.attachSource(...)</code>), 
		  then the Java Model will do its best to compute this root path automatically. The underlying algorithm 
		  finds the first .java file, parses it, and extract the package declaration to compute the root path.
	</li>
	<li><b>Root path detection:</b> The new API 
		  <code>IPackageFragmentRoot.computeSourceAttachmentRootPath(IPath sourceAttachmentPath)</code> 
		  allows to detect the root path for a given source attachment and package fragment root.
	</li>
	</ul>
</li>
<li><b>Code completion enhancement:</b>
   <ul>
   <li>Relevance of a proposal is lesser if the proposal is in a variable initializer and the proposal is the variable.
   <br>In the following example <code>var2</code> is less relevant than <code>var1</code>.<pre>
   public class X {
      int var1;
      int var2 = var&lt;cursor&gt;
   }</pre>
   </li>
   <li>Relevance of a proposal is lesser if the proposal is static and the qualified expression is non-static.
   <br>In the following example <code>var2</code> is more relevant than <code>var1</code>.<pre>
   public class X {
      static int var1;
      int var2;
      void foo() {
         this.var&lt;cursor&gt;
      }
   }</pre>
   </li>
   <li>Relevance of a proposal is higher if the completion is not qualified or is a local variable.
   <br>In the following example the field <code>var2</code> and the parameter <code>var1</code> are more relevant
   than field <code>var1</code>.<pre>
   public class X {
      int var1;
      int var2;
      void foo(int var1) {
         var&lt;cursor&gt;
      }
   }</pre>
   </li>
   <li>Relevance of a proposal is higher if the proposal is equals to the current token.
   <br>In the following example the field <code>var</code> is more relevant than field <code>varPlus</code>.<pre>
   public class X {
      int var;
      int varPlus;
      void foo() {
         var&lt;cursor&gt;
      }
   }</pre>
   </li>
   </ul>
</li>
</ul> 

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24916">24916</a>
quick fix: does not handle additional dimentions sometimes [quick fix]
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26903">26903</a>
VerifyError when casting null to an array type 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27002">27002</a>
Scanner  allocates new ArrayList(10) everytime it's created
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26912">26912</a>
'null == null' fooling blank final analysis
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26817">26817</a>
Class File Editor shows words translated which shouldn't be 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26452">26452</a>
Wrong automatically generated import statements 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26881">26881</a>
Yoyo in the debugger again
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26753">26753</a>
Suspicious yoyo behavior when stepping through if condition
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25148">25148</a>
Can't have different case package names
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26883">26883</a>
Should report unitialized blank final field
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=20932">20932</a>
Cannot add a source directory as the source of a JAR file. 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=8719">8719</a>
DCR - Attac h Java Source: allow un-jarred source tree? 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=6912">6912</a>
Attach Source Requires JAR/ZIP 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26255">26255</a>
project compiler settings : cannot go back to worspace settings
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26841">26841</a>
Compiler - Does not detect non-visible member type in import
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26784">26784</a>
problem M3 sourcebuild, linux/gtk - build error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26706">26706</a>
Cannot create project with comma characters in project path 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26195">26195</a>
JDT compiler doesn't report recursive constructor invocation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26747">26747</a>
IllegalArgumentException reading build state
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=3243">3243</a>
SourceAttachment - automatic computation of the package root does not work (1GCMTLP) 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26785">26785</a>
Unreachable empty blocks should be reported in 1.4 compliant mode
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26664">26664</a>
deprecated interfaces are not allways recognized
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26759">26759</a>
Cast Compiler Error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26134">26134</a>
JACKS - VerifyError running invalid code
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26253">26253</a>
task tags: two tags on one line creates one task for first tag
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26677">26677</a>
Code Assist - expected type must be qualified.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23542">23542</a>
CodeAssist proposal should offer non-qualified ones first
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25890">25890</a>
code assist displays static members on non-static expressions
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26025">26025</a>
Search should not use a file based name environment 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26138">26138</a>
JACKS - The null literal should not be considered as a constant expression
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26585">26585</a>
Wrong code generation in conditional expression
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26588">26588</a>
Code Assist - variable must be less relevant in initialization
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26142">26142</a>
JACKS: Must reject invalid character after class definition
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26141">26141</a>
JACKS: Should report unterminated comment
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26129">26129</a>
JACKS: VerifyError, because opcode jsr_w not used
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25888">25888</a>
Open on selection fails on private binary inner class contructor
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23126">23126</a>
allow selecting directories when attaching source to jar's 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22145">22145</a>
Attach source directory in addition to archive file [build path] 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26459">26459</a>  
Unused NonVoidMethodRequestor
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26122">26122</a>  
JACKS: VerifyError when affecting final local in anonymous class header
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26124">26124</a>  
JACKS - Compile error not reported when break; used in a labeled statement
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24934">24934</a>
Move top level doesn't optimize the imports[refactoring] 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25250">25250</a>
Scrapbook shows wrong error message

<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26580">26580</a>
java element deltas not sent out? 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21837">21837</a>
Eclipse hangs trying to set a breakpoint 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25406">25406</a>
Package name change disallowed  because of case insensitivity
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26885">26885</a>
binary representation wrongly flagged as error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26526">26526</a>
Inner class imports flagged as errors
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26652">26652</a>
Encountered  "case statement must be constant" error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23076">23076</a>
compilation does not create class files!!!
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24015">24015</a>
CVS synchronize with outgoing changes only causes Java rebuild
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25478">25478</a>
Unresolvable import statements Problem Marker malfunctioning
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26658">26658</a>
No deprecation warning
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26132">26132</a>
JACKS - Blank final instance must be assigned before the end of constructor
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26340">26340</a>
Using javadoc comments to generate and manage bookmarks.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=9020">9020</a>
More intelligent code assist.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25962">25962</a>
Output classes is scrubbed due to error in compiling a source.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26166">26166</a>
compile single file
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25684">25684</a>
SelectionEngine to be made API?
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26454">26454</a>  
DCR: IScanner.setSourceReader
  
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 14th November 2002 - 2.1 MILESTONE-3
<br>Project org.eclipse.jdt.core v_284
<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=26259">26259</a>  
Errors reported on save which go aways on rebuild

<h3>Problem Reports Closed</h3>

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 13th November 2002
<br>Project org.eclipse.jdt.core v_283
<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=26128">26128</a>  
packages don't appear in package explorer view 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26044">26044</a>
Unexpected full builds
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26098">26098</a>
Wrong line number attribute.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24517">24517</a>
type view does not notice when jar disappears 

<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26063">26063</a>  
MacOS X: Error saving files

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 12th November 2002
<br>Project org.eclipse.jdt.core v_282b
<h2>
What's new in this drop</h2>
<ul>
<li>In case someone deletes the .classpath and no corresponding classpath exists in memory,
      a default .classpath is not automatically created any longer but a marker is created on the
      project preventing this project from being built.
      This covers the following scenarii:
      <ul>
      <li>Someone checks in a .project file with the Java nature but doesn't check in the .classpath file.
            When the project is checked out, a marker is created indicating the .classpath file could not 
            be read.</li>
      <li>Someone shuts down the workbench, deletes the .classpath and restart the workspace.
            When attempting to built the project,  a marker is created indicating the .classpath file could 
            not be read and the project is not built.</li>
       <li>The Java nature is added to a project without a .classpath file. A marker is created indicating 
       		the .classpath file could not be read.
      </ul>
</li>
<li><b>Selectivity API</b> - Source folders can be associated with filters allowing to exclude
specified portions of the resource tree rooted at this source entry's path. Exclusion patterns 
are expressed using the Ant file pattern syntax (i.e. **, *, ? wild-cards; where ** can stand for
one or many folder names).
   <ul>
   <li>Added <code>JavaCore.newSourceEntry(IPath path, <b>IPath[] exclusionPatterns</b>)</code>
   </li>
   <li>Added <code>IClasspathEntry.getExclusionPatterns()</code>
   </li>
   </ul>
   Full implementation will be available by 2.1 milestone-4.
</li>
<li><b>Multiple output folder API</b> - Source folders can be associated with a specific output
location. The project output location is now corresponding to a default output location.
   <ul>
   <li>Added <code>JavaCore.newSourceEntry(IPath path, IPath[] exclusionPatterns, <b>IPath specificOutputLocation</b>)</code>
   </li>
   <li>Added <code>IClasspathEntry.getOutputLocation()</code>
   </li>
   </ul>
   Full implementation will be available by 2.1 milestone-4.
</li>
<li>The Java builder now iterates over the resource tree, allowing to take advantage of forthcoming 
workspace structure enhancements (in particular: linked folders). As a consequence, the Java builder
will only consider the resources officially reflected in the resource tree (as opposed to existing 
underlying files not yet reflected when the resource tree is out of sync).
Note that the build state format has changed to reflect this evolution, as a consequence, if reusing an existing
workspace, the first build action will have to be a rebuild-all projects, since incrementally it will
not be able to re-read old build states associated with prerequisite projects (and an incremental build
cannot tell the build manager a full rebuild is necessary). 
</li>
<li>An option allows to control whether the Java builder should clean the output folder(s). Since
options can be specified on a per project basis, each individual project can be toggled for cleaning
the output folder or not (default is to clean). Also, "scrubbing" output folder got renamed into 
"cleaning" output folder. 
<pre>
* BUILDER / Cleaning Output Folder(s)
*    Indicate whether the JavaBuilder is allowed to clean the output folders
*    when performing full build operations.
*     - option id:       "org.eclipse.jdt.core.builder.cleanOutputFolder"
*     - possible values: { "clean", "ignore" }
*     - default:         "clean"
</pre>
</li>
<li>Integrated patch from Genady Beriozkin for bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25092">25092</a>.
The compiler will now optionally diagnose assignments having no effect (e.g. x = x).
Added the following option to control this behavior.
<pre>
* COMPILER / Reporting Assignment with no effect
*    When enabled, the compiler will issue an error or a warning whenever an assignment
*    has no effect (e.g 'x = x').
*     - option id:         "org.eclipse.jdt.core.compiler.problem.noEffectAssignment"
*     - possible values:   { "error", "warning", "ignore" }
*     - default:           "warning"
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26053">26053</a>
builder out of order in I-20021112
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25859">25859</a>
Error doing Java Search 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25092">25092</a>  
Detect/Warn on possible user typos
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25894">25894</a>  
Memory leak - Global ThisReference is leaking bindings
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25885">25885</a>  
Code Assist - exact expected type should be more relevant than subtype
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25184">25184</a>  
Operations on cu outside classpath should fail 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25876">25876</a>  
Code Assist - void method are proposed in assignment
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23586">23586</a>  
Creating a new project deletes files in the parent folder 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25815">25815</a>
Code Assist does not propose member type.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25820">25820</a>
NPE in Code Assist
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25811">25811</a>
Code Assist for variable name suggestion is not perfect.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24010">24010</a>
IType::resolveType returns null for inner types
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25735">25735</a>
Non-NLS strings are not reported properly when the ending tag is missing
  
<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22509">22509</a>  
Unable to start some Java application
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21864">21864</a>  
Associate package hierarchy with top-level source directory
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=12957">12957</a>  
Copied resources out of synch
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24276">24276</a>  
javadoc - Imports marked as unused when they are really necessary.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=18320">18320</a>  
Compiler Warning/Error/Ignore when Assigning to a Parameter
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25994">25994</a>  
Marker for "static method should be accessed in a static way"
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25995">25995</a>  
Marker for "static method should be accessed in a static way"
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25582">25582</a>  
Cannot specify java source path for resource !
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25665">25665</a>  
AST adds implicit super call (PR 22306 needed on 2.0.2 stream)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25304">25304</a>  
Code assist and parameter assistance.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24783">24783</a>  
method parameter name code completion 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25872">25872</a>  
Eclipse considers the Unicode char '\u000A' an invalid character constant.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25255">25255</a>  
ICompilationUnit::getUnderlyingResource throws an exception 
   
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 5th November 2002
<br>Project org.eclipse.jdt.core v_281
<h2>
What's new in this drop</h2>
<ul>
<li>Code completion enhancement:
   <ul>
   <li>Relevance of a proposal is higher if the proposal is in a variable initializer and its type is compatible with the variable type.
   <br>In the following example <code>var2</code> is more relevant than <code>var1</code>.<pre>
   public class X {
      Object var1;
      int var2;
      void foo() {
         int i = var&lt;cursor&gt;
      }
   }</pre>
   </li>
   <li>Relevance of a proposal is higher if the proposal is on the right hand side of an assignment and its type is compatible with the left hand side type.
   <br>In the following example <code>var2</code> is more relevant than <code>var1</code>.<pre>
   public class X {
      Object var1;
      int var2;
      void foo() {
         int i;
         i = var&lt;cursor&gt;
      }
   }</pre>
   </li>
   </ul>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24626">24626</a>
codeSelect - does not work in catch clause
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25688">25688</a>
Non NLS strings improperly reported when the line separator is \r only
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25687">25687</a>
codeSelect - fails with inner class as method parameter
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25605">25605</a>
[API] someJavaProject.getRequiredProjectNames(); API should specify that the array is returned in ClassPath order 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25358">25358</a>
Creating a new Java class - Browse for parent 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25495">25495</a>
Ant compiler adapter should treat bogus imports as errors
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21957">21957</a>  
'refactor rename' allows subpackage name to start with a space 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25591">25591</a>  
ClassCastException in CompletionEngine
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25539">25539</a>  
Unexpected inaccurate search results 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25578">25578</a>
Abstract method declaration completion should be more relevant
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25221">25221</a>
Code assist after new keyword
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25347">25347</a>
Deprecation-Flag in Ant doesn't work with Eclipse Compiler
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25551">25551</a>
Ant javac adapter always reports build successful even if there are compiler errors
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24939">24939</a>  
Code Assist doesn't find protected constructor for anonymous class
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=3717">3717</a>  
Smoke 114: Progress reporting when switching to different default VM (1GEHXMV) 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24565">24565</a>
CodeAssist proposing twice the same method
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25520">25520</a>
Possible problem in JavaProject#findPackageFragmentRoots(IClasspathEntry)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24518">24518</a>
Public flag not set for interface method 
     
<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=18212">18212</a>  
Java Build Paths no updated correctly when checking out multiple projects 
   
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 29th October 2002
<br>Project org.eclipse.jdt.core v_280
<h2>
What's new in this drop</h2>
<ul>
<li>In 1.4 compliant mode, the compiler will report errors for unterminated line comments (i.e. not closed with a line break). For backward compatibility reason,
the stricter check isn't performed in 1.3 compliant mode. See <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23096">23096</a> for further details.
Also note that from now on, the trailing line break is part of the line comment source range.
</li>
<li>The API setLeadingComment(String) on org.eclipse.jdt.core.dom.Statement class has been updated to reflect the changes made for <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23096">23096</a>.
This API strictly fits to the JLS. It doesn't use the compliance mode settings. So a line comment needs to be closed with a line break in
order to be valid.
See <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25206">25206</a> for further details.</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22358">22358</a>
[api] Would like CharOperation made API
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23207">23207</a>  
Flags.isDeprecated(IMethod.getFlags()) doesn't work 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23984">23984</a>
validateEdit not called when changing .classpath
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25439">25439</a>
toString() on IBinding subclasses
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25347">25347</a>
Deprecation-Flag in Ant doesn't work with Eclipse Compiler
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25396">25396</a>
NPE importing external plug-ins
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25433">25433</a>
#findPackageFragmentRoots(IClasspathEntry)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25377">25377</a>
Error location is not correct for empty array initializer
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25174">25174</a>
Wrong code generation of the eclipse java compiler
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25298">25298</a>
One out of two non-externalized strings reported
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25188">25188</a>
Debugger won't stop on method first statement breakpoint
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25233">25233</a>
NPE in CompletionParser.buildMoreCompletionContext
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25206">25206</a>
DOM/AST: Statement.setLeadingComment specification is inconsistent with the JLS
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25229">25229</a>
Compiler should not reject innerclass scenario
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25183">25183</a>
AST: ITypeBinding of interface returns constructor
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24833">24833</a>
TODO: not detected if there is only a comment in .java file
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24744">24744</a>
TODO: Task not found if comment after last closing brace
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23096">23096</a>
Compiler does not report end of line comment error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24559">24559</a>
TODO: items disappear when there is a syntax error in a method body
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=13907">13907</a>
Scanner does not report whitespace tokens at end of input
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25185">25185</a>
ClassFormatError compiling a method with a compilation problem
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25124">25124</a>
AST: IllegalArgumentException on creation
  
<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23208">23208</a>  
The javadoc shown by Eclipse is different from what javadoc produces
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25464">25464</a>  
NPE during import plugins
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25170">25170</a>  
opening .java files from outside of classpath is much slower then other files 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23307">23307</a>
Refactoring and Search are applied only on open files
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=20985">20985</a>
[GM1] REGRESSION: eclipse wants to import class already imported
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24906">24906</a>
new non-nls strings not noticed on typing
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25378">25378</a>
Switching from jdk1.3.1 to jdk1.4.1 leaves me without CVS support
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22304">22304</a>
JavaModel: inner Node Constructor shows syntetic argument
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25373">25373</a>
options now with 'Map'
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25297">25297</a>
AST: DCR: Allow subclasses of ASTNode
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=20751">20751</a>
[F3] Discrepency between light bulbs and compiler
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25163">25163</a>
AST DCR: Parameter names in IMethodBinding
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25103">25103</a>
Formatter indentation

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 23rd October 2002
<br>Project org.eclipse.jdt.core v_279a
<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=25197">25197</a>  
NPE importing external plugins  

<h3>Problem Reports Closed</h3>

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 22nd October 2002
<br>Project org.eclipse.jdt.core v_279
<h2>
What's new in this drop</h2>
<ul>
<li>By default, the compiler will produce warnings for unused imports and non-static references to static members.
</li>
<li>Code completion enhancement:
   <ul>
   <li>Relevance of a proposal is higher if the proposal is in a return statement and its type is compatible with the return type.
   <br>In the following example <code>var2</code> is more relevant than <code>var1</code>.<pre>
   public class X {
      Object var1;
      int var2;
      int foo() {
         return var&lt;cursor&gt;
      }
   }</pre>
   </li>
   <li>Relevance of a proposal is higher if the proposal is in a cast statement and its type is in the hierachy of the cast type.
   <br>In the following example <code>var2</code> is more relevant than <code>var1</code>.<pre>
   public class X {
      Object var1;
      int var2;
      long foo() {
         return (int)var&lt;cursor&gt;
      }
   }</pre>
   </li>
   <li>Relevance of a proposal is higher if the proposal is an argument of a sent message and its type is compatible with the parameter type.
   <br>In the following example <code>var2</code> is more relevant than <code>var1</code>.<pre>
   public class X {
      Object var1;
      int var2;
      void foo(int i) {
         foo(var&lt;cursor&gt;
      }
   }</pre>
   </li>
   </ul>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25040">25040</a>  
getPackageFragmentRoots(CP entry) implementation doesn't match spec  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25041">25041</a>  
IJavaElement#getUnderlyingResource - should fail if element doesn't exist  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24505">24505</a>  
Refactoring an empty package makes it disappears  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24775">24775</a>  
Wrong delta when replacing binary project with source project  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25018">25018</a>
parseCompilationUnit(..) does not report a compile error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24773">24773</a>
CompilationUnit.getProblems: not all problems?
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24747">24747</a>
incorrect compile error message
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24974">24974</a>
Broken link in JDT Plugin-in Developer's Guide
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24691">24691</a>  
Missing interface makes hierarchy incomplete  

<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24213">24213</a>  
[M1] dependency checking too conservative
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24671">24671</a>  
Attaching source to JAR triggers build
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=25039">25039</a>  
Non-existing package fragment roots should not be openable  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23311">23311</a>  
Need a way to include external JARs in the indexer
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24956">24956</a>  
Compiler misdiagnoses exception sequence
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24019">24019</a>  
Jar Refresh Problem

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 15th October 2002 - 2.1 MILESTONE-2
<br>Project org.eclipse.jdt.core v_278
<h2>
What's new in this drop</h2>
<ul>
<li> Added soft dependency on plug-in "org.eclipse.team.core" to account for fileTypes contribution
</li>
 <li> JavaCore option added for specifying the task priorities (default is <code>""</code> meaning 
 tasks have normal priority).
<pre>
 * COMPILER / Define the Automatic Task Priorities
 *    In parallel with the Automatic Task Tags, this list defines the priorities (high, normal or low)
 *    of the task markers issued by the compiler.
 *    If the default is specified, the priority of each task marker is "NORMAL".
 *     - option id:			"org.eclipse.jdt.core.compiler.taskPriorities"
 *     - possible values:	{ "priority[,priority]*" } where priority is one of "HIGH", "NORMAL" or "LOW"
 *     - default:			""
</pre>	 
 </li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23272">23272</a>  
Plugin dependence problem
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24741">24741</a>  
Search does not find patterned type reference in binary project  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23812">23812</a>  
Configurable (TODO) Markers priority in takslist  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22840">22840</a>  
Refactor-&gt;Move doesn't update Local History  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24685">24685</a>  
Inner package fragments gets deleted - model out of synch  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24498">24498</a>  
Duplicate entries on classpath cause CP marker to no longer refresh  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24630">24630</a>
NPE in MethodBinding
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24622">24622</a>
ast: problems with missing ParenthesizedExpression nodes #2
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24529">24529</a>
compiler must accept empty source files
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24502">24502</a>
AST: No binding for type accesses to a non-visible type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24511">24511</a>
AST: Resolve on non-visible import
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24501">24501</a>
AST: No binding for fields accesses of non-visible fields
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24500">24500</a>
AST: No binding for field instance access in constructor invocation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24499">24499</a>  
AST: No binding for instance access in constructor invocation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=17104">17104</a>  
Compiler does not complain but "Quick Fix" ??? complains  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21893">21893</a>
IType::isMember works the other way round
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22581">22581</a>
Ignore unreachable code for unread variables

<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21175">21175</a>  
Incorrectly identified: Catch block is hidden by another one in the same try statement
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23523">23523</a>  
Ouliner not updated after catch-up from repository  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24230">24230</a>  
search: does not find a references to constructor in anonymous type creations nodes  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24522">24522</a>  
New Class Dialog: No interface method stubs generated for nested class  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24567">24567</a>  
problem with hierarchy in working copy  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21901">21901</a>
JavaCore.setClasspathContainer is not generic enough
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24623">24623</a>
AST: No method body when abstract modifier is existing
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24558">24558</a>
compiler error, method declaration in interface -&gt; NullPointerException
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24621">24621</a>
Cannot specified JRE for each project separely ...
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24600">24600</a>
ECLIPSE_HOME not set
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=14194">14194</a>
Java source files shouldn't show errors when in src dir, but not java resource
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24514">24514</a>
dependency analyzer is broken
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24400">24400</a>
Compiler bug or java 'feature' ?
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24243">24243</a>
Heuristic to differ between internal JAR and external JAR.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23769">23769</a>
java.lang.OutOfMemoryError

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 8th October 2002
<br>Project org.eclipse.jdt.core v_277
<h2>
What's new in this drop</h2>
<ul>
<li>Search for constructor references now finds implicit constructor calls. Indexes in old workspaces are recomputed when restarted which may result in longer startup times. 
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24449">24449</a>
AST: Resolve on field access
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24453">24453</a>
ast: problems with missing ParenthesizedExpression nodes
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23112">23112</a>  
search: need a way to search for references to the implicit non-arg constructor  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24440">24440</a>
NPE when complete qualified allocation expression
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24406">24406</a>
AST: Resolve on method invocation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24376">24376</a>  
Attempt to change resource while tree locked during container initialization
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24346">24346</a>  
Method declaration not found in field initializer  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=13939">13939</a>
DBCS: no error message to DBCS whitespace in java source
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23829">23829</a>  
IType::resolveType incorrectly returns null  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22541">22541</a>  
JDT core test suites should be on dev.eclipse.org  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=2857">2857</a>  
Renaming .java class with errors to .txt leaves errors in Task list (1GK06R3)  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24245">24245</a>  
IJavaSearchScope.enclosingProjectsAndJars doc misleading, hard to use  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24140">24140</a>  
Searching for references to a private field within heirarchy seems very slow  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24268">24268</a>
DOM: NPE in NaiveASTFlattener#visit(SwitchCase node)

<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23644">23644</a>  
hierarchy: getAllSuperTypes does not include all superinterfaces?  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23593">23593</a>  
search: strange method reference match found  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=8489">8489</a>
space instead of tab
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24370">24370</a>  
SerialUID
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24205">24205</a>  
TypeHierarchy omits subtypes  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24375">24375</a>
Casting of primitive final fields to its own type causes VerifyError
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22548">22548</a>
IndexOutOfBoundsException during jdt indexing
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24347">24347</a>
AST: Resolve on type name qualifier
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23211">23211</a>  
Bug with search/reference !  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22894">22894</a>  
Improperly formed ICompilationUnit?  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24324">24324</a>  
AST: IVariableBinding.getModifiers not same as in source
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23930">23930</a>
Eclipse crash when a rebuild project !???
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21905">21905</a>
Class file editor should indicate that .class file is missing debug attributes
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21741">21741</a>
Error while Build and doesn't allow to create ServerProject also
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22376">22376</a>
Parent of JarEntryFile
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24274">24274</a>
ArrayIndexOutOfBoundsException from source mapper  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23677">23677</a>
java.lang.OutOfMemoryError when setting class path
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24233">24233</a>
Impossible to compile projects - followinf of BUG 22509
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24233">24233</a>
Installed JRE detection doesnt work correctly

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 1st October 2002
<br>Project org.eclipse.jdt.core v_276
<h2>
What's new in this drop</h2>
<ul>
<li>Registered classpath variable initializers are now taking precedence on values persisted during previous session. This allows
initializers to rebind their variables when restarting a workspace, and thus fix up their values. </li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23594">23594</a>  
code resolve: incorrectly resolving method invocation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21763">21763</a>  
Problem in Java search [search]  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22846">22846</a>  
Cannot add in a new classpath entry  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=20197">20197</a>  
Classpath Variables pref page does not refresh with latest variables [build path]  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24134">24134</a>
JDTCompilertAdapter doesn't throw BuildException on compile error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24001">24001</a>
Classpath variable/container initializer should activate 

<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23656">23656</a>  
hierarchy: type hierarchy on interfaces does not contain Object  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23890">23890</a>  
Changing Package Declarations triggers full project rebuild
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24172">24172</a>  
Strange behavior with wrong package declaration
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24093">24093</a>
NPE in Java Builder
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22445">22445</a>
Compiler inconsistent with javac when code returns from inside a finally {} block
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24189">24189</a>
need a way to  verify that a string can be a type name
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23925">23925</a>
Class path vars missing
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24210">24210</a>
NPE renaming project
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=24164">24164</a>
Cannot use a specif rt.jar for a specific Java project
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23989">23989</a>
Build Path page reports cycle even if there is none
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22754">22754</a>
JRE-Settings independent for each project

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 26th September 2002
<br>Project org.eclipse.jdt.core v_275
<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=24083">24083</a>
NPE accessing JavaProject preferences

<h3>Problem Reports Closed</h3>

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 24th September 2002
<br>Project org.eclipse.jdt.core v_274
<h2>
What's new in this drop</h2>
<ul>
<li>Added new API findDeclaringNode(String) on CompilationUnit. This new method should be used to retrieve ASTNode
declared in another compilation unit. See javadoc for further details or bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23734">23734</a>.
</li>
<li> New APIs added onto IJavaProject to enable project custom options. Project custom options are persisted into a file ".jprefs" 
located inside the project metadata JDT/Core plugin location. Project can be specified custom options, and inherit global ones from JavaCore.
At this point, it is unclear whether we will attempt to share these custom properties (like .classpath file).
	<ul>
		<li>
<pre>
	/**
	 * Helper method for returning one option value only. Equivalent to <code>(String)this.getOptions(inheritJavaCoreOptions).get(optionName)</code>
	 * Note that it may answer <code>null</code> if this option does not exist, or if there is no custom value for it.
	 * 
	 * For a complete description of the configurable options, see <code>JavaCore#getDefaultOptions</code>.
	 * 
	 * @param optionName the name of an option
	 * @param inheritJavaCoreOptions - boolean indicating whether JavaCore options should be inherited as well
	 * @return the String value of a given option
	 * @see JavaCore#getDefaultOptions
	 * @since 2.1
	 */
	String getOption(String optionName, boolean inheritJavaCoreOptions);
</pre>		
		</li>
		<li>
<pre>
	/**
	 * Returns the table of the current custom options for this project. Projects remember their custom options,
	 * i.e. only the options different from the the JavaCore global options for the workspace.
	 * A boolean argument allows to directly merge the project options with global ones from <code>JavaCore</code>.
	 * 
	 * For a complete description of the configurable options, see <code>JavaCore#getDefaultOptions</code>.
	 * 
	 * 
	 * @param inheritJavaCoreOptions - boolean indicating whether JavaCore options should be inherited as well
	 * @return table of current settings of all options 
	 *   (key type: <code>String</code>; value type: <code>String</code>)
	 * @see JavaCore#getDefaultOptions
	 * @since 2.1
	 */
	Map getOptions(boolean inheritJavaCoreOptions);
</pre>
		</li>		
		<li>
<pre>
	/**
	 * Sets the project custom options. All and only the options explicitly included in the given table 
	 * are remembered; all previous option settings are forgotten, including ones not explicitly
	 * mentioned.
	 * 
	 * For a complete description of the configurable options, see <code>JavaCore#getDefaultOptions</code>.
	 * 
	 * 
	 * @param newOptions the new options (key type: <code>String</code>; value type: <code>String</code>),
	 *   or <code>null</code> to flush all custom options (clients will automatically get the global JavaCore options).
	 * @see JavaCore#getDefaultOptions
	 * @since 2.1
	 */
	void setOptions(Map newOptions);
</pre>
		</li>		
	</ul>
</li>
	<li>Added <code>JavaCore.run(IWorkspaceRunnable, IProgressMonitor)</code> that allows batching
		  of java model operations. Only one Java element changed event is reported at the end of the batch.
		  For example the following code snippet notifies listeners twice:
	<pre>
	ICompilationUnit unit = ...;
	unit.createType("class B {}", null, false, monitor);
	unit.getType("A").createField("int i;", null, false, monitor);
	</pre>
		  To be notified only once, use the following:
	<pre>
	JavaCore.run(
		new IWorkspaceRunnable() {
			public void run(IProgressMonitor monitor) throws CoreException {
				ICompilationUnit unit = ...;
				unit.createType("class B {}", null, false, monitor);
				unit.getType("A").createField("int i;", null, false, monitor);
			}
		},
		monitor);
	</pre>
	</li>
</ul>
<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23977">23977</a>
.classpath corruption
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23734">23734</a>
AST: CompilationUnit.findDeclaringNode only finds bindings from its own ast
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23979">23979</a>
Build Path page reports cycle even if there is none
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=20881">20881</a>
"organize imports" does not find an import statement "add import" does. [code manipulation]
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=7091">7091</a>
turn off the debug info on a project by project basis
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=19663">19663</a>
Java|Compiler|Other|Filtered resources needs to be project/team specific
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=14062">14062</a>
JDK Compliance against a project
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22289">22289</a>
To have file encoding by project
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=7395">7395</a>
Set the compiler options per project instead of per workspace
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23894">23894</a>
Extra (TODO) Markers : There is no todo task when there is no error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23162">23162</a>
DOM: clients should be able to control if bindings are available even if AST is modified
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23901">23901</a>
CCE in DefaultBindingResolver
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23597">23597</a>
cannot resolve a call to a protected superclass method
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23573">23573</a>
AST: clone &amp; source locations

<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22618">22618</a>
incorrect warning about unread vars
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=3239">3239</a>
CodeFormatter: need to be able to set linedelimiter used (1GC0LFK)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22979">22979</a>
using IScanner inside comments
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23550">23550</a>
Micro-java, embedded java
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23833">23833</a>  
Java source attachment does not work
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23402">23402</a>  
Cancel on compile has no effect
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23635">23635</a>  
Compilation Errors Inconsistent
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21520">21520</a>  
'Errors during build: org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding' error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22148">22148</a>  
Qlfd. vs. unqlfd. Name from IField.getTypeSignature  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21475">21475</a>
No source for classes without debug information [general issue]

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 19th September 2002 - 2.1 MILESTONE-1
<br>Project org.eclipse.jdt.core v_273a
<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=23558">23558</a>  
Extremly slow startup  

<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23788">23788</a>  
Java compiler doesn't properly flag invalid protected access (for javac 1.4 compatibility)

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 16th September 2002
<br>Project org.eclipse.jdt.core v_273
<h2>
What's new in this drop</h2>
<ul>
<li>The source lookup for .class files inside jar files has been improved. Before it worked only if the .class files
had a source file attribute. This was too limiting in case of the usage of a library which has not been compiled in
debug mode. Now in case there is no such source file attribute, an heuristic is used to create the proper entry. We
assume that a class named A in a package p has been compiled from a class A.java in a folder p. For .class files
that correspond to member or local classes the source mapping is using the top level class name in which the class is defined.
The only limitiation that still exists is that it is not possible to retrieve the source for secondary types (types
that are defined in a file which doesn't have the same name). See bug <A HREF="http://dev.eclipse.org/bugs/show_bug.cgi?id=21475">21475</a>
for further details.</li>
</ul>
<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21475">21475</a>
Attaching Source-Code to a library which is not compiled with debug info
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23466">23466</a>
Compiler violates JLS 8.3.2
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21022">21022</a>
warning on imports while typing and warning on unused imports is on
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23329">23329</a>  
search: incorrect range for type references in brackets  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23284">23284</a>
AST: SingleVariableDeclaration needs extra dimensions?
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23464">23464</a>
ast: (Super)ConstructorInvocation should be wrapped in ExpressionStatement
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22560">22560</a>
"Add return type" correction could be smarter [quick fix]
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23492">23492</a>
[DOM/AST] lazy init should not count as a modification
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23292">23292</a>  
Must restart Eclipse after debug of source in .zip is updated  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22306">22306</a>
AST: Constructor contains syntetic SuperConstructorCall
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22832">22832</a>
select does not work when caret is at the begining of an identifier
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23242">23242</a>
Bad line number info when multiple statements on same line
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23362">23362</a>
DOM: incorrect length for InfixExpression.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23357">23357</a>  
Build not triggered on build path change

<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21954">21954</a>  
compile / debug VM mismatch
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23558">23558</a>  
Extremly slow startup
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21952">21952</a>  
Circular Dependencies Message - Error vs. Warning Message  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23375">23375</a>  
cycle detection algorithm is O(pow(n - 1, n - 1))
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22900">22900</a>
import of a.b.C fails if package a exists

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 10th September 2002
<br>Project org.eclipse.jdt.core v_272
<h2>
What's new in this drop</h2>
<ul>
  <li>JavaCore option added for the error level (warning or error) of incomplete classpath or projects involved
        in a cycle.
        <pre>
* JAVACORE / Reporting Incomplete Classpath
*    An entry on the classpath doesn't exist or is not visible (e.g. a referenced project is closed).
*     - option id:			"org.eclipse.jdt.core.incompleteClasspath"
*     - possible values:	{ "error", "warning"}
*     - default:			"error"
* 
* JAVACORE / Reporting Classpath Cycle
*    A project is involved in a cycle.
*     - option id:			"org.eclipse.jdt.core.circularClasspath"
*     - possible values:	{ "error", "warning" }
*     - default:			"error"
        </pre>
  </li>
<li>New option -bootclasspath is added for the batch compiler. This option allows you to override the location of bootstrap
class files. If omitted, the batch compiler will retrieve the libraries used by its JVM. So there is no more need to specify the
rt.jar file using the -classpath option. The batch compiler also retrieves the contents of the property "java.class.path" if no 
-classpath option is specified.
</li>
<li> Deprecation warning inside deprecated code are now ignored by default. A new JavaCore option
allows to report them all.
<pre>
*	COMPILER / Reporting Deprecation Inside Deprecated Code
*		When enabled, the compiler will signal use of deprecated API inside deprecated code.
*     The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.deprecation".
*     		- option id:		"org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode"
*     		- possible values:	{ "enabled", "disabled" }
*     		- default:			"disabled"
</pre>
</li>
<li> Compiler can now optionally collect tasks from the source code. Occurrences of
a given task tag are looked for inside any type of comments, and reported as custom task markers
(<code>"org.eclipse.jdt.core.task"</code>).
 <ul>
 <li> New problem ID got created: <code>org.eclipse.jdt.core.compiler.IProblem#Task</code>. Note that
 clients of <code>IProblemRequestor</code> will get detected tasks as warnings with this new ID, they
 can be filtered out if needed.
 </li>
 <li> JavaCore option added for specifying the task tag values (default is <code>""</code> meaning no
 task is detected).
<pre>
* COMPILER / Define the Automatic Task Tags
*    When the tag is non empty, the compiler will issue a task marker whenever it encounters
*    one of the corresponding tag inside any comment in Java source code.
*    Generated task messages will include the tag, and range until the next line separator or comment ending, and will be trimmed.
*     - option id:			"org.eclipse.jdt.core.taskTags"
*     - possible values:	{ "&lt;tag&gt;[,&lt;tag&gt;]*" } where &lt;tag&gt; is a String without any wild-card 
*     - default:			""
</pre>	 
 </li>
 </ul>
</li>
<li> Creating a working copy on a non-existing ICompilationUnit is now allowed. 
       Such a working copy will have its contents initialized to an empty string.
       Commiting this working copy creates the underlying compilation unit.
</li>
</ul> 
<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23257">23257</a>
IInitializer::getNameRange returns incorrect result
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23318">23318</a>  
Resolution of Circular Dep. preference/error message filtering  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23113">23113</a>
Request to enrich messages provided by AST with errors defined in IProblem
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22154">22154</a>
Proposed method for org.eclipse.jdt.core.dom.ITypeBinding
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23181">23181</a>
IScanner returns incorrect whitespaces
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23259">23259</a>
AST: SwitchCase wrong length
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23117">23117</a>
DOM: no error message for method with wrong return type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=20215">20215</a>
Batch compiler ignores the CLASSPATH env variable
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23054">23054</a>
DOM - TypeDeclaration.getJavadoc() can find incorrect javadoc
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22054">22054</a>
Can't extract local variable from super send [refactoring]
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22161">22161</a>
AST: Innerclass name: Positions wrong
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22526">22526</a>
Warning given when implementing deprecated methods
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23050">23050</a>
DOM - IVariableBinding.getModifiers() doesn't give final modifier for local variables
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22939">22939</a>
ast: incorrect range for a name in brackets
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22458">22458</a>  
Refactoring a package does not move the package's directory  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=6976">6976</a>
Auto collect tasks from code
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23052">23052</a>
DOM - CCE calling resolveBinding on an on-demand import from a type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22635">22635</a>
recompile doesn't happen
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23118">23118</a>
AST: BreakStatement &amp; ContinueStatement: wrong length
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23048">23048</a>
DOM - lazy initialization of empty loop bodies causes binding resolution to fail
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22203">22203</a>
More dependencies increase GUI waiting time [build path]
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=11529">11529</a>
ast: missing (?) binding on simpleName in VariableDeclaration 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=8921">8921</a>  
DCR - Need a way to create a working copy ignoring existing files  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22673">22673</a>  
VerifyError in char cast of static final char referenced through instance
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23075">23075</a>  
Wrong compiling of inner classes
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23077">23077</a>  
search: does not find type references in some imports 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22942">22942</a>  
JavaProject.exists returns true when it should not  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22517">22517</a>  
Cannot create type X in project Test if d:\test\X.java exists  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=18684">18684</a>  
Organize Imports doesn't work on external Jars  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22946">22946</a>  
search: NPE  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22637">22637</a>  
AST: Typos in Javadoc Assignment.Operator
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=17210">17210</a>  
No match found when query contains '?'  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21420">21420</a>  
Changing .classpath doesn't update JDT  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21485">21485</a>  
NPE when doing a reference search to a package  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22428">22428</a>
Compiler 1.4 - should report visibility issue for shadowed protected method
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22418">22418</a>
Should not complain about package for empty units
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22102">22102</a>  
Not all implementors found for IPartListener  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=20631">20631</a>  
Declaration of local binary type not found  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=20435">20435</a>  
NPE when searching java method  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22334">22334</a>
Compiler generates corrupt classes
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22361">22361</a>
Error in javadoc for JavaCore.getResolvedClasspathEntry
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21749">21749</a>
Exported libraries and source folders

<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22830">22830</a>
Subtle visibility problem: class declaration resolved improperly
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23264">23264</a>
ast: incorrect node hierarchy
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23116">23116</a>
DCR: ModifierNode
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23055">23055</a>
DOM - SuperMethodInvocation.resolveTypeBinding() returns null 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21843">21843</a>  
Qualifier in "Type Hierarchy" View  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21158">21158</a>  
Deadlock on startup  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22883">22883</a>  
IJavaProject::find(String) returns null for non-primary top-level types  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22123">22123</a>  
Inability to put a classpath var pointing to a dir inside the project which is one dir up from output dir  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=12496">12496</a>  
Creating a type hierarchy should not populate java model cache  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22453">22453</a>
Compiler Problem
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22149">22149</a>
jdk compiles but eclipse does not

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.0 Build - 1st August 2002
<br>Project org.eclipse.jdt.core v_270
<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=22093">22093</a>
VerifyError due to duplicate access method
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21916">21916</a>
VariableDeclarationExpression

<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21911">21911</a>
NPE in the compiler
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=7517">7517</a>
No control of formatting fo do {} while blocks
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22078">22078</a>
Incorrect error message


<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 30th July 2002
<br>Project org.eclipse.jdt.core v_269
<h2>
What's new in this drop</h2>
<ul>
<li>Add a new API getRawTokenSource() on org.eclipse.jdt.core.compiler.IScanner. It should be used if the user doesn't
want the Unicode characters to be processed, otherwise use getCurrentTokenSource().</li>
</ul> 
<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21912">21912</a>
Compiler probleme: continue statement with label identifier
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21358">21358</a>
DOM/AST: setLeadingComment and setJavadocComment doesn't support Unicode
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21828">21828</a>
Possible problem in DoStatement#accept0(...)
  
<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=3458">3458</a>
Resource folders containing source (1G4CKG9)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21627">21627</a>
Compiled class error on iSeries
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21723">21723</a>
Getting java.lang.OutOfMemoryError
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=16176">16176</a>
References to private fields could be optimized
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21109">21109</a>
Have option for compiler warning on use of static field/method through reference
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=3357">3357</a>
DCR - Add compiler option (1GJJQAD)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21879">21879</a>
Search could be optimized based on visibility
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21868">21868</a>
No return statement for code with infinite loop
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=20820">20820</a>
Squiggly line is at a bad place for missing return statement

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.0 Build - 23rd July 2002
<br>Project org.eclipse.jdt.core v_268
<h2>
What's new in this drop</h2>
<ul>
<li>Added optional compiler problem for signalling non-static invocations of static field/methods
(see <code>JavaCore.COMPILER_PB_STATIC_ACCESS_RECEIVER()</code>)
</li>
<li>Compilation problem descriptions are now shortened (qualified type arguments
are dequalified in the problem message, problem arguments are left fully qualified).
</li>
</ul> 
<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=20402">20402</a>
Error Description too long, should not list full class name
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21778">21778</a>
ClassFileReader fails on Gnome Twain class
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21787">21787</a>
Provide compiler warning of using static method via non-static style.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21768">21768</a>
ast: incorrect length of SimpleName in MethodDeclaration
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21757">21757</a>
ast: incorrect range for Name in TypeDeclaration
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21754">21754</a>
typo in IType::getSuperInterfaceNames javadoc
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21672">21672</a>
Wrong location for the last 'return' bytecode command

<h3>Problem Reports Closed</h3>

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 22nd July 2002
<br>Project org.eclipse.jdt.core v_267
<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=21606">21606</a>
ImageBuilder deletes &amp; adds rather than overwriting

<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21282">21282</a>
IType.getFullyQualifiedName() problems
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21182">21182</a>
unimplemented method error after implementing in super
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21682">21682</a>
marking a method deprecated doesn't eleminate deprecated warning
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21556">21556</a>
"Missing code implementation in the compiler"

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.0 Build - 15th July 2002
<br>Project org.eclipse.jdt.core v_266
<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=21580">21580</a>
VerifyError in 1.4 compliant mode
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21557">21557</a>
VM bug prevents valid Java code to be executed on VM &lt; 1.3.1

<h3>Problem Reports Closed</h3>

<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build - 12th July 2002
<br>Project org.eclipse.jdt.core v_265
<h2>
What's new in this drop</h2>
<ul>
<li>Changed ASCII/binary property for entire project.</li>
</ul> 

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21230">21230</a>
Rebuilding project fails with ContextStackOverflow (CompilationResult.quickPrioritize)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21203">21203</a>
Compile time NullPointerException in catch blocks
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21447">21447</a>
Wrong method invoked at runtime
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21482">21482</a>
Error in generated byte code
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21480">21480</a>
Bytecode disassembler doesn't handle #invokespecial correctly
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=20725">20725</a>
JavaBuilder.toString can throw NPE
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=20865">20865</a>
nullPointerException being thrown by Class Type.resolveBinding()
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21116">21116</a>  
Can't compile because eclipse says that the method is not visible

<h3>Problem Reports Closed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21049">21049</a>  
Save (Build / Compile?) performance
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=20961">20961</a>  
Can't get complete classpath for project.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21428">21428</a>  
DOM/AST: AST class unnecessarily plug-in dependent?
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=20059">20059</a>  
project.isOnClassPath(project) result random  

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

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