<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
   <meta name="Author" content="IBM">
   <title>JDT/Core Release Notes</title>
   <link rel="stylesheet" href="../jdt_core_style.css" charset="iso-8859-1" type="text/css">
</head>

<body text="#000000" bgcolor="#FFFFFF">
<table border=0 cellspacing=5 cellpadding=2 width="100%" >
  <tr> 
    <td align="left" width="72%" class="title1">
      <font size="+3"><b>jdt core - build notes 3.0 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.1 (also see a summary of <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.jdt.core/notes/API_changes.html">API changes</a>).
	  Older changes which occurred up to Release 2.1 can be found in 
	  <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.jdt.core/notes/R21_buildnotes_jdt-core.html">build notes R2.1</a>.
	  </font>
	</td>
  </tr>
</table>

<a name="v_449"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0RC4 Build - 24th June 2004 - 3.0 RELEASE CANDIDATE 4
<br>Project org.eclipse.jdt.core v_449
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_449">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Fixed schema copyrights.</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44068">44068</a>
[DOC] Need more project configuration tutorials

<a name="v_448"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0RC4 Build - 24th June 2004
<br>Project org.eclipse.jdt.core v_448
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_448">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Fixed mixed line delimiters.</li>
</ul>

<h3>Problem Reports Fixed</h3>

<a name="v_447"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0RC4 Build - 23rd June 2004
<br>Project org.eclipse.jdt.core v_447
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_447">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Copyright update to 2004.</li>
</ul>

<h3>Problem Reports Fixed</h3>

<a name="v_446"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0RC4 Build - 22nd June 2004
<br>Project org.eclipse.jdt.core v_446
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_446">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=67769">67769</a>
Internal StackOverflowError occurred during project build

<a name="v_445"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0RC3 Build - 18th June 2004 - 3.0 RELEASE CANDIDATE 3
<br>Project org.eclipse.jdt.core v_445
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_445">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=66898">66898</a>
refactor-rename: encoding is not preserved

<a name="v_444"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0RC3 Build - 18th June 2004
<br>Project org.eclipse.jdt.core v_444
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_444">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=67297">67297</a>
Renaming included package folder throws JME 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=67786">67786</a>
OutOfMemoryError searching for reference to Object 

<a name="v_443"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0RC3 Build - 18th June 2004
<br>Project org.eclipse.jdt.core v_443
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_443">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=67717">67717</a>
NPE disassembling .class file

<a name="v_442"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0RC3 Build - 17th June 2004
<br>Project org.eclipse.jdt.core v_442
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_442">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=67600">67600</a>
String Index out of bounds when searching for all types 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=67599">67599</a>
NPE when cancelling search 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=66271">66271</a>
No need to resolve type names when selecting declaration

<a name="v_441"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0RC3 Build - 16th June 2004
<br>Project org.eclipse.jdt.core v_441
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_441">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=67324">67324</a>
Package Explorer doesn't update included package after moving contents of source folder 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=41434">41434</a>
[msic] Slow Down using classes with many methods
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=64646">64646</a>
[Navigator] Navigator popup causes Eclipse to hang. 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=65186">65186</a>
Can't attach source from project directory [build path] 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=65831">65831</a>
search for all types slow/memory intensive [search] 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=66675">66675</a>
Extra period in the doc in 200406110010

<a name="v_440"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0RC2 Build - 10th June 2004 - 3.0 RELEASE CANDIDATE 2
<br>Project org.eclipse.jdt.core v_440
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_440">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=66551">66551</a>
Error in org.eclipse.swt project on class PrinterData
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=66573">66573</a>
Shouldn't bind to local constructs

<a name="v_439"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0RC2 Build - 10th June 2004
<br>Project org.eclipse.jdt.core v_439
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_439">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=66216">66216</a>
Sort Members is broken.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=66437">66437</a>
Canceling search leads to broken workspace 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=65266">65266</a>
JarPackageFragmentInfo has unnecessary field 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=66098">66098</a>
MatchLocatorParser does not need advanced syntax diagnosis

<a name="v_438"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0RC2 Build - 9th June 2004
<br>Project org.eclipse.jdt.core v_438
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_438">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=66026">66026</a>
Large amount of garbage created by DefaultCommentMapper
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=64646">64646</a>
[Navigator] Navigator popup causes Eclipse to hang. 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=65288">65288</a>
Javadoc: tag gets mangled when javadoc closing on same line without whitespace
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=65253">65253</a>
[Javadoc] @@tag is wrongly parsed as @tag
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=65180">65180</a>
Spurious "Javadoc: xxx cannot be resolved or is not a field" error with inner classes
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=65174">65174</a>
Spurious "Javadoc: Missing reference" error

<a name="v_437"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0RC2 Build - 8th June 2004
<br>Project org.eclipse.jdt.core v_437
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_437">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=66142">66142</a>
SearchParticipant#scheduleDocumentIndexing() fails silently if index doesn't exist 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=65795">65795</a>
source inclusion mechanism breaks type lookups 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=66099">66099</a>
Persisted container/variable values are leaked throughout a session
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=65250">65250</a>
Problem selection does not choose first n errors
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=65259">65259</a>
CodeSelect should only find one match for dup methods
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=65737">65737</a>
Strange completion by code assist 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=65871">65871</a>
Missing SUPER_INTERFACE_TYPES_PROPERTY in EnumDeclaration 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=53072">53072</a>
[DOC] Search for fully qualified constructor name reports nothing 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=65116">65116</a>
IProjectDescription.getBuildSpec copies commands 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=65234">65234</a>
Inclusion filter not working 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=64657">64657</a>
better documentation for IType#resolveType behavior 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=65693">65693</a>
Package Explorer shows .class files instead of .java 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=64750">64750</a>
NPE in Java AST Creation - editing some random file 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=65562">65562</a>
Java AST creation failure
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=65531">65531</a>
out of the box formatter settings need to be improved
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=65677">65677</a>
Creating hierarchy failed. See log for details. 0 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=65090">65090</a>
ASTParser with kind == K_STATEMENTS doesn't work unless source range specified
	  	
<a name="v_436"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0RC1 Build - 28th May 2004 - 3.0 RELEASE CANDIDATE 1
<br>Project org.eclipse.jdt.core v_436
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_436">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=63534">63534</a>
ConcurrentModificationException after "catching up" 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=62131">62131</a>
CodeStream should do bounds checks
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=64470">64470</a>
&lt;packages prefixes=..../&gt; should be removed
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=64299">64299</a>
NullPointerException when OverrideIndicatorLabelDecorator is decorating
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=63550">63550</a>
NPE "Java AST Creation"
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=64421">64421</a>
ArrayIndexOutOfBoundsException in PackageReferenceLocator.matchReportReference()
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=62453">62453</a>
Large File: Java builder not reacting on cancel
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=64377">64377</a>
CRASH: An internal error occurred during: "Java AST creation"
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=64378">64378</a>
Wording of error message
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=64332">64332</a>
Javadoc errors in non-API doc comments
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=64329">64329</a>
Missing Javadoc tags declaration in API methods
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=64170">64170</a>
Classpath reentrance protection is not thread-safe 

<a name="v_435"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0RC1 Build - 27th May 2004
<br>Project org.eclipse.jdt.core v_435
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_435">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>API polish on search matches (org.eclipse.jdt.core.search.SearchMatch hierarchy):
<ul>
<li>added setters for all match properties (not just length &amp; offset)</li>
<li>add insideDocComment argument to PackageReferenceMatch constructor (for 
being consistent with other reference matches)</li>
</ul>
See bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=62697">62697</a> for more details.
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=62854">62854</a>
refactoring does not trigger reconcile 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=62697">62697</a>
Need to know if a package reference match is in Javadoc or in Code
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=63756">63756</a>
multiple builds early
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=63077">63077</a>
IllegalArgumentException in Openable.codeSelect 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=62861">62861</a>
ArrayIndexOutOfBoundsException in SearchableEnvironment 


<a name="v_434"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0RC1 Build - 26th May 2004
<br>Project org.eclipse.jdt.core v_434
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_434">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=56870">56870</a>
copied file not shown in package explorer / java browser [ccp] 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=63748">63748</a>
Type Hierarchy: null pointer when pressing F4 on ListCellRenderer 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=38839">38839</a>
org.eclipse.jdt.internal.compiler.parser.Scanner throws thousands of Exceptions
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=62869">62869</a>
[navigation] 'Go to Next Annotation' doesn't find next error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=63871">63871</a>
Using M9, -warn: option crashes the batch compiler
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=63434">63434</a>
NPE during checkout/build 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=62737">62737</a>
Code formatter doesn't work on some files
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=62639">62639</a>
[1.5] Cheetah and extending Vector
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=62769">62769</a>
Javadoc errors in 200405180816
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=62952">62952</a>
Ant adapter behavior is a little strange
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=62704">62704</a>
Using 05180816, //toto is a task if //toto is a task tag.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51660">51660</a>
[DOM/AST] AST.parse* should handle all legal doc tags
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51606">51606</a>
Javadoc - {@inheritDoc} should be inefficient when not in first text element
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=62713">62713</a>
should not be able to nest output folders [build path]
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=63245">63245</a>
findPackageFragment won't return default package 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=62698">62698</a>
NPE while searching for declaration of binary package 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=61017">61017</a>
Refactoring - test case that results in uncompilable source 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=63044">63044</a>
Reference to a constructor inside a javadoc should point to a type binding and not a constructor binding
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=62812">62812</a>
Some malformed javadoc tags are not reported as malformed
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=62810">62810</a>
Deadlock when closing editors and save 


<a name="v_433"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M9 Build - 21st May 2004 - 3.0 MILESTONE-9 / 3.0 RELEASE CANDIDATE 0
<br>Project org.eclipse.jdt.core v_433
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_433">cvs</a>).
<h2>
What's new in this drop</h2>
<ul><li>Put back test org.eclipse.jdt.core.tests.model.JavaElementDeltaTests.testBuildProjectUsedAsLib()
after bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=62927">62927</a> was fixed.</li>
</ul>

<a name="v_432"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M9 Build - 20th May 2004
<br>Project org.eclipse.jdt.core v_432
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_432">cvs</a>).
<h2>
What's new in this drop</h2>
<ul><li>Excluded test org.eclipse.jdt.core.tests.model.JavaElementDeltaTests.testBuildProjectUsedAsLib()</li>
</ul>

<a name="v_431"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M9 Build - 20th May 2004
<br>Project org.eclipse.jdt.core v_431
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_431">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=62881">62881</a>
JDT/Core could be contributing a content type for JAR manifests
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=58580">58580</a>
VariableBinding.getVariableId() returns wrong IDs for nested types

<a name="v_430"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M9 Build - 18th May 2004
<br>Project org.eclipse.jdt.core v_430
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_430">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=62608">62608</a>
Include pattern ending with slash should include all subtree 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=59933">59933</a>
applying exclusion filter to opened java file makes it appear twice [build path]


<a name="v_429"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M9 Build - 18th May 2004
<br>Project org.eclipse.jdt.core v_429
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_429">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39499">39499</a>
keyword completion does not work in anonymous inner classes 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=59282">59282</a>
Unable to include an external folder with class files to project classpath 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=52422">52422</a>
F3 can't find method def'n inside inner (anonymous) class
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=62463">62463</a>
Wrong length for ExpressionStatement after conversion
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=61831">61831</a>
Full build happens on every start of Eclipse 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=62201">62201</a>
NPE in MethodScope
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=61872">61872</a>
library looses content when setting source attachment
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=54962">54962</a>
plain reference to package not found in (@see) javadoc
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=54424">54424</a>
AST has structural problems with incomplete javadoc tags
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51951">51951</a>
codeComplete finds no completion in method of local class inside static method 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50686">50686</a>
NPE in MethodScope.createMethod 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=61952">61952</a>
Bad deprecation -- IJavaSearchConstants#CASE_SENSITIVE 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=62068">62068</a>
Index manager should use client's index location 

<a name="v_428"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M9 Build - 13th May 2004
<br>Project org.eclipse.jdt.core v_428
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_428">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li> Due to an implementation cleanup, the optional diagnosis for unnecessary empty statement or empty control-flow
statement, will be reverted to ignore by default. If you did set it differently in the past, you will have to manually
set it back. We now conform to the spec for this option (until JDT/UI converted, the old option ID was 
incorrectly used: "org.eclipse.jdt.core.compiler.problem.superfluousSemicolon"):
<pre>
* COMPILER / Reporting Empty Statements and Unnecessary Semicolons
*    When enabled, the compiler will issue an error or a warning if an empty statement or a
*    unnecessary semicolon is encountered.
*     - option id:         "org.eclipse.jdt.core.compiler.problem.emptyStatement"
*     - possible values:   { "error", "warning", "ignore" }
*     - default:           "ignore"
</pre>	 
</li>
<li>Improved error location when type indirectly referenced from required .class files.</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=61959">61959</a>
dangerous practice of catching Throwable
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=61882">61882</a>
Inconsistency between build errors and reconcile errors
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35356">35356</a>
Convert local variable to field refactoring proposes weird name 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=53555">53555</a>
SourceType#get*QualifiedName() methods return unusable/invalid names for local types 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48752">48752</a>
Completion: relevance could be improved for non static field
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=61877">61877</a>
ClassCastException in DefaultBindingResolver
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=59769">59769</a>
Javadoc of SearchMatch#getElement(): is *enclosing* element 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=58440">58440</a>
type hierarchy incomplete when implementing fully qualified interface 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=61719">61719</a>
Incorrect fine grain delta after method copy-rename 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=61075">61075</a>
[Compiler] implementation uses numerous ArrayIndexOutOfBoundsException
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=19898">19898</a>
StackOverflowError in BinaryExpression
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=61706">61706</a>
Improve error message when unbound reference from binaries

<a name="v_427"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M9 Build - 11th May 2004
<br>Project org.eclipse.jdt.core v_427
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_427">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>A system job now reports progress when the indexer is running.</li>
<li>The org.eclipse.jdt.core.jdom package has been deprecated. The JDOM was made obsolete by 
      the addition in 2.0 of the more powerful, fine-grained DOM/AST API found in the 
      org.eclipse.jdt.core.dom package.</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=60689">60689</a>
AST on reconcile: AST without Javadoc comments created
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=60365">60365</a>
hierarchy view shows some interfaces as classes [type hierarchy] 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=53290">53290</a>
[Javadoc] Compiler should complain when tag name is not correct
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=53279">53279</a>
[Javadoc] Compiler should complain when inline tag is not terminated
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51600">51600</a>
Javadoc: tags with errors are not stored in DOM AST Javadoc hierarchy
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=59751">59751</a>
No Feedback/information from indexing 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=42402">42402</a>
OuterClass.this does not appear in code assist of the InnerClass
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=61390">61390</a>
Indexing thread grabbing resource lock 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=61408">61408</a>
Incorrect parsing
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=58859">58859</a>
[encoding] Editor does not detect BOM on .txt files
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=61148">61148</a>
deprecate JDOM API 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=61270">61270</a>
Wrong delta when copying a package that overrides another package 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=61181">61181</a>
Task tag starting with double-/ (//) causes compile error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=61040">61040</a>
Should add protect for reentrance to #getResolvedClasspath 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=61214">61214</a>
The classpath computation inside the Java builder should get rid of duplicates entries
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=60867">60867</a>
LocalVariableReferenceMatch should offer isReadAccess(), etc. 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=59638">59638</a>
ConcurrentModificationException in JavaModelManager.saving 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=61052">61052</a>
Flatten cp container initialization 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=60848">60848</a>
[reconciling] Unclosed Comment in Java Texteditor
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=60822">60822</a>
Reacting to Project &gt; Clean... 
	  	
<a name="v_426"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M9 Build - 4th May 2004
<br>Project org.eclipse.jdt.core v_426
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_426">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Added new flag IJavaElementDelta.F_PRIMARY_RESOURCE that is set when the resource of a primary working copy 
     changes (or when it is added or removed).</li>
<li>Removed dependency on org.eclipse.runtime.compatibility.</li>
<li>Tuned the diagnosis for unnecessary else statements to tolerate else-if constructs.</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=60687">60687</a>
NPE in JavaCore.getEncoding
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=60581">60581</a>
"Java AST creation" error.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48502">48502</a>
Exception during "Java AST creation"
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=59750">59750</a>
DCR: Code Assist: Hook to add getter and setters
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47227">47227</a>
Syntax error diagnosis shouldn't expose internal goal tokens
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=60595">60595</a>
AST: AST from reconcile does not have 'ORIGINAL' bit set
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=59500">59500</a>
Java Model Notification needs notification that a java class was physically saved 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=60459">60459</a>
AST: 'malformed' flag overwrites other flags
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=60367">60367</a>
dynamic project references not maintained
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=60257">60257</a>
SearchPattern API: R_CASE_SENSITIVE vs. boolean isCaseSensitive 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=58565">58565</a>
code formatter doesn't format blocks with a return statement correctly
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=58724">58724</a>
Java code formatter should add space between imports and class definition
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=60418">60418</a>
remove warnings from core runtime deprecations 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=57749">57749</a>
Search in working copies doesn't find all matches 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=60235">60235</a>
WorkingCopyOwner needs clarification on


<a name="v_425"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M9 Build - 28th April 2004
<br>Project org.eclipse.jdt.core v_425
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_425">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Added API to register/deregister a pre-processing resource change listener:
<pre>
/**
 * Adds the given listener for POST_CHANGE resource change events to the Java core. 
 * The listener is guarantied to be notified of the POST_CHANGE resource change event before
 * the Java core starts processing the resource change event itself.
 * 
 * Has no effect if an identical listener is already registered.
 * 
 * @param listener the listener
 * @see #removePreResourceChangeListener(IResourceChangeListener)
 * @since 3.0
 */
public static void addPreProcessingResourceChangedListener(IResourceChangeListener listener);
	
/**
 * Removes the given pre-processing resource changed listener.
 *
 * Has no affect if an identical listener is not registered.
 *
 * @param listener the listener
 * @since 3.0
 */
public static void removePreProcessingResourceChangedListener(IResourceChangeListener listener);
</pre>
</li>
<li>When diagnostic for unnecessary semicolon is enabled, the compiler will also flag empty
control-flow statement: e.g. if (bool);.  Note that the naming of the option is going soon
to be revised to better reflect this evolution.
Empty control-flow statement problem ID is: <tt>IProblem.EmptyControlFlowStatement</tt>.
</li>
<li>Added compiler style option to report situation where a statement is unnecessarily nested
in else clause, e.g.: 
<pre>
 if (bool) 
   return;
 else
   System.out.println();   // no need to be inside else
</pre>    
Associated problem ID is: <tt>IProblem.UnnecessaryElse</tt>.
<pre>
* COMPILER / Reporting Unnecessary Else
*    When enabled, the compiler will issue an error or a warning when a statement is unnecessarily
*    nested within an else clause (in situation where then clause is not completing normally).
*     - option id:         "org.eclipse.jdt.core.compiler.problem.unnecessaryElse"
*     - possible values:   { "error", "warning", "ignore" }
*     - default:           "ignore"
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=42493">42493</a>
Error message when evaluating: Expressionopt?
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=32061">32061</a>
No code assist in instance variable inner class
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49904">49904</a>
[DCR] Quick Assist : unneeded else
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=60081">60081</a>
[Compiler] java.lang.VerifyError: Illegal target of jump or branch
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=52805">52805</a>
[DCR] Compiler should warn when using if (test);
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=58652">58652</a>
ImageBuilderInternalException during auto build
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=60108">60108</a>
SearchMatch should implement toString() 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=60078">60078</a>
NPE in ASTConverter

<a name="v_424"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M9 Build - 27th April 2004
<br>Project org.eclipse.jdt.core v_424
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_424">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=54108">54108</a>
Weird piece of source code in SourceTypeConverter.java
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51500">51500</a>
[DOM AST] Quick fix "Add unimplemented methods" fails on static variable initialized using anonymous constructor
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=59843">59843</a>
Eclipse 3.0M8 generates ambiguous keys from ITypeBindings for nested classes with the same name
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=59937">59937</a>
Should not process saved state delta during startup 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=58069">58069</a>
Compilation ERROR: Missing code implementation in the compiler
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51911">51911</a>
@see method w/out ()
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49025">49025</a>
Util.bind(String, String[]) can be optimized a little bit
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=59743">59743</a>
[Compiler] Incorrect diagnosis of ambiguous method when inheriting
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=57871">57871</a>
Override Indicator: blocks editor from opening when error occurs in java compiler
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=59421">59421</a>
Bad error message from Eclipse Java Compiler when file is missing
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=58946">58946</a>
Standalone compiler help text is incorrect on Unix
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=59084">59084</a>
[content type] ensure content types/file associations are contributed by the right plugins
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=59716">59716</a>
Using 200404201300, one more blank line is inserted in front of import declarations when no package is defined
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=59575">59575</a>
invalid formatting
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51213">51213</a>
Unable to resolve conflict between type and package name in binaries

<a name="v_423"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M9 Build - 22nd April 2004
<br>Project org.eclipse.jdt.core v_423
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_423">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=59363">59363</a>
Should surface cancellation exceptions 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51075">51075</a>
Compiler warning "is hiding a field" given for static inner class
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=38658">38658</a>
Search for existing type fails
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=59291">59291</a>
Deadlock between AllTypes cache and setClasspathContainer


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

/**
 * Name of the User Library Container id.
 */
public static final String USER_LIBRARY_CONTAINER_ID= "org.eclipse.jdt.USER_LIBRARY"; //$NON-NLS-1$

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

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

<a name="v_421"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M9 Build - 13th April 2004
<br>Project org.eclipse.jdt.core v_421
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_421">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=57829">57829</a>
Should optimize assert true case
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=57294">57294</a>
Ignore serialVersionUID hiding another field
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=41395">41395</a>
StackOverflowError when pasting code 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=57414">57414</a>
Summary: GB18030: Can not open Java Search dialog. 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=57886">57886</a>
Concurrency issue while initializing containers and variables 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=57858">57858</a>
[Compiler] Marking a field deprecated still report deprecated usage #46973
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=57743">57743</a>
[Compiler] invalid byte code produced when catching Throwable
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=57235">57235</a>
DCR: AST Name.getQualifiedName()

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

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

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

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=56316">56316</a>
JavaProject exists should not populate 
	  	
<a name="v_418"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M8 Build - 25th March 2004 - 3.0 MILESTONE-8
<br>Project org.eclipse.jdt.core v_418
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_418">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

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

<h3>Problem Reports Fixed</h3>

<a name="v_416"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M8 Build - 23rd March 2004
<br>Project org.eclipse.jdt.core v_416
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_416">cvs</a>).
<h2>
What's new in this drop</h2>
<ul> 
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=55504">55504</a>
@&lt;tasktag&gt; should not be reported

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

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

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

<a name="v_414"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M8 Build - 22nd March 2004
<br>Project org.eclipse.jdt.core v_414
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_414">cvs</a>).
<h2>
What's new in this drop</h2>
<ul> 
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46668">46668</a>
Changes to class path containers should not change .project 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=55421">55421</a>
Cannot save a .java file in a non-java project anymore 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=55223">55223</a>
Bug in comment mapper: Same comment mapped to 2 statements
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=54044">54044</a>
Ant log does not use system newline character
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=55372">55372</a>
Should not assume that Preferences.defaultPropertyNames() returns default-default properties 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=55221">55221</a>
Bug in comment mapper: Grabs next node's Javadoc
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=55102">55102</a>
NPE when using ICU.reconcile(GET_AST_TRUE, ...) 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49986">49986</a>
setRawClasspath(...) should fire a F_CLASSPATH_CHANGED delta 

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

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


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

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

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

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

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

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

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

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

<a name="v_408"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M7 Build - 12th February 2004 - 3.0 MILESTONE-7
<br>Project org.eclipse.jdt.core v_408
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_408">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51603">51603</a>
[preferences] Code formatter line wrapping preference inconsistent preview behaviour
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51476">51476</a>
Javadoc: String or URL @see references are not stored in DOM AST Javadoc structure
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51478">51478</a>
Javadoc: @deprecated/@inheritDoc tags are not stored in DOM AST Javadoc structure
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51508">51508</a>
Javadoc: Package references DOM AST nodes binding is null
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51626">51626</a>
Javadoc - DOM/AST is not correct after a @see tag
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51650">51650</a>
Incorrected deprecation check
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51770">51770</a>
Javadoc AST Node: wrong binding on qualified name part


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

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


<a name="v_406"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M7 Build - 10th February 2004
<br>Project org.eclipse.jdt.core v_406
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_406">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51035">51035</a>
[Formatter] endline comment in case of simple if-then statement


<a name="v_405"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M7 Build - 9th February 2004
<br>Project org.eclipse.jdt.core v_405
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_405">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51363">51363</a>
Wrong comment positions inside the Scanner.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51201">51201</a>
Code formatter missing 'between empty brackets' option in Whitespace Array allocation configuration
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50695">50695</a>
Javadoc: package reference in @see tags is wrongly warned
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49994">49994</a>
Strange matches with start=0, end=1 in type reference search
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51300">51300</a>
VerifyError when using a array reference assigned to null
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51128">51128</a>
[Code Formatter] Indent statements within blocks and methods
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51241">51241</a>
IllegalArgumentException while creating a DOM/AST
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51249">51249</a>
Performance problems in PackageFragment.getPath 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50276">50276</a>
Function call line wrapping fails on chained calls
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51190">51190</a>
comment after else block goes to next line
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51226">51226</a>
Javadoc inside DOM AST does not support starting characters in unicode
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=51104">51104</a>
Comments are not recorded when inside a method body
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50858">50858</a>
Javadoc IProblem constant not defined
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50898">50898</a>
Javadoc AST: Missing binding for reference to non-visible type

<a name="v_404"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M7 Build - 3rd February 2004
<br>Project org.eclipse.jdt.core v_404
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_404">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50938">50938</a>
Javadoc AST: Still invalid range for embedded tag

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

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

<a name="v_402"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M7 Build - 30th January 2004
<br>Project org.eclipse.jdt.core v_402
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_402">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50883">50883</a>
Javadoc AST node: Range problem with embedded tags
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50884">50884</a>
Compiler crashes without a trace in the log leaving workspace in unhappy state
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50831">50831</a>
DCR Javadoc AST: Offer well known tag names as constants 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50880">50880</a>
JavadocAST Nodes: Wrong ranges on link
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50877">50877</a>
Javadoc AST Nodes: Wrong ranges
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47396">47396</a>
JAVA AST Creation failure
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50844">50844</a>
AbortCompilation thrown from Name#resolveBinding() 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50746">50746</a>
Searching for variable references can cause an internal error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50838">50838</a>
Javadoc bindings: No bindings in constructor ref parameter
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50840">50840</a>
Javadoc AST: wrong start position on MemberRef

<a name="v_401"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M7 Build - 29th January 2004
<br>Project org.eclipse.jdt.core v_401
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_401">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46126">46126</a>
[DCR] IBinding should have a method to check @since javadoc tag
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50785">50785</a>
Javadoc bindings: No bindings member refs
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50784">50784</a>
Javadoc bindings: No binding in {@link } and link disturbs other bindings
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50781">50781</a>
Javadoc bindings: No bindings for qualified names
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50736">50736</a>
Out of bounds exception while formatting

<a name="v_400"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M7 Build - 28th January 2004
<br>Project org.eclipse.jdt.core v_400
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_400">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50694">50694</a>
Javadoc: Cannot find DOM AST bindings for types in @see tags
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50692">50692</a>
Javadoc: Cannot find DOM AST bindings for inline link tags references
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50719">50719</a>
wrong formatting for java coding conventions

<a name="v_399"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M7 Build - 27th January 2004
<br>Project org.eclipse.jdt.core v_399
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_399">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Improve DOM/AST support for doc comments.
<br>Following changes have been made to the DOM/AST API:
<ul>
<li>added Javadoc.tags() to represent structure of the doc comments</li>
<li>deprecated Javadoc.get/setComment</li>
<li>added 5 new node types that occur only within doc comments: TagElement, TextElement, MemberRef, MethodRef, MethodRefParameter</li>
<li>tag elements like MemberRef, MethodRef, and Name can carry binding information (must be requested like elsewhere)</li>
<li>added ASTVisitor(boolean) for controlling whether Javadoc.tags() are visited by default</li>
<li>added ASTMatcher(boolean) for controlling whether Javadoc.tags() are compared vs. only Javadoc.getComment()</li>
<li>AST.parse*(...) now returns structured doc comments (for compatibility, Javadoc.getComment() is also set as before)</li>
</ul>
See bugs <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50683">50683</a>.
</li>
<li>
Improve DOM/AST support for locating all comments.
<br>Following changes have been made to the DOM/AST API:
<ul>
<li>added CompilationUnit.getCommentTable() to record locations of all comments found in the source</li>
<li>added 2 new node types, LineComment and BlockComment, to represent end-of-line and traditional comments respectively</li>
<li>these new nodes are placeholders for comments</li>
<li>these new node types only occur in the comment table (since they can occur anywhere (lexically), there is no way to properly parent them in the regular AST nodes that reflects their position)</li>
<li>AST.parse*(...) now returns sets the comment table on the compilation unit to include all comments (including attached and free-floating doc comments)</li>
</ul>
See bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50697">50697</a>.
</li>
<li> Added option to control whether diagnosis for unused thrown exceptions should be enabled when overriding another
method. By default, it is disabled.
<pre>
* COMPILER / Reporting Unused Declared Thrown Exception in Overridind Method
*    When disabled, the compiler will not include overriding methods in its diagnosis for unused declared
*    thrown exceptions.
*    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException".
*     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding"
*     - possible values:   { "enabled", "disabled" }
*     - default:           "disabled"
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50644">50644</a>
Deprecation check doesn't check that the @deprecated is at the beginning of the line
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=27134">27134</a>
Add a ASTNode for non-Javadoc comments
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50683">50683</a>
Improve DOM/AST support for doc comments
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50697">50697</a>
Improve DOM/AST support for locating all comments
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50667">50667</a>
Deadlock on Refactor -&gt; Extract method
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47430">47430</a>
the immutable bit is copied from the original resource to the ouput directory
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50601">50601</a>
Blank lines before package declaration is one fewer than specified
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48292">48292</a>
[DCR] Need AST.parsePartialClassFile(....)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50320">50320</a>
Java model operations should use IResourceRuleFactory 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50207">50207</a>
Compile errors fixed by 'refresh' do not reset problem list or package explorer error states 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49691">49691</a>
JavaProject looses property listeners on preferences
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50265">50265</a>
Emulate old formatter with the new formatter
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=50225">50225</a>
Calling the default formatter with an empty string returns an invalid Edit 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44876">44876</a>
"Unnecessary declaration of thrown exception" problems


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

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

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

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

<a name="v_396"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M6 Build - 18th December 2003 - 3.0 MILESTONE-6
<br>Project org.eclipse.jdt.core v_396
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_396">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=49081">49081</a>
JDT is no more using the tab character by default for indentation 

<a name="v_395"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M6 Build - 17th December 2003
<br>Project org.eclipse.jdt.core v_395
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_395">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48706">48706</a>
NPE in move refactoring 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48965">48965</a>
Javadoc problem preference settings: Use 'include' instead of 'ignore'

<a name="v_394"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M6 Build - 16th December 2003
<br>Project org.eclipse.jdt.core v_394
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_394">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47209">47209</a>
Javadoc: Type references are not found in @see tag inside a method reference

<a name="v_393"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M6 Build - 16th December 2003
<br>Project org.eclipse.jdt.core v_393
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_393">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48818">48818</a>
NPE in delta processor 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48711">48711</a>
javadoc-warning if derived exception in @throws clause
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46040">46040</a>
NPE in Eclipse console 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48725">48725</a>
Cannot search for local vars in jars. 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48749">48749</a>
[Compiler] deprecation check in initializer fooled by trailing deprecated field decl


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

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

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

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

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

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

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

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

<a name="v_388"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M6 Build - 25th November 2003
<br>Project org.eclipse.jdt.core v_388
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_388">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47082">47082</a>
[Compiler] Problem with final variable initialization
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47180">47180</a>
Merge different type declarations into one class


<a name="v_387"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M5 Build - 21st November 2003 - 3.0 MILESTONE-5
<br>Project org.eclipse.jdt.core v_387
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_387">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44397">44397</a>
Search doesn't find references to local types
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46571">46571</a>
Searching for all occurrences for method declarated in local types doesn't wor
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46943">46943</a>
refactoring: encapsulate field of local type: references from enclosing type are not replaced by setter 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47180">47180</a>
NPE in Delta Processor 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46788">46788</a>
Export scripts: shouldn't use variable name version
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47160">47160</a>
ArrayIndexOutOfBoundsException from CodeSnippetParser
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47177">47177</a>
ClassCastException during hover
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=47079">47079</a>
[Builder] suspicious side-effects during incremental compile

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

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

<a name="v_385"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M5 Build - 19th November 2003
<br>Project org.eclipse.jdt.core v_385
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_385">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46964">46964</a>
Can not set Javadoc compiler setting
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46901">46901</a>
Strange compile error in javadoc

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

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

<h3>Problem Reports Fixed</h3>

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

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

<a name="v_382"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M5 Build - 10th November 2003
<br>Project org.eclipse.jdt.core v_382
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_382">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46276">46276</a>
Search for package declarations incorrectly finds matches in clone project
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46099">46099</a>
Batch compiler doesn't print stats if errors and not proceeding on errors
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40950">40950</a>
[infrastructure] NPE from indexer
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46150">46150</a>
formatter failed to format
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46013">46013</a>
IBinding.getKey() for local shouldn't return null 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46033">46033</a>
New formatter not formatting nested constructor/methods properly
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=46093">46093</a>
[Builder] Unoptimal pre-check for not writing class files
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45847">45847</a>
[Builder] Reading build state is slow
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45982">45982</a>
Array out of bounds error while editing Java file
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=41611">41611</a>
CreateCompilationUnitOperation.executeOperation() should probably force creation more agressively 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=45113">45113</a>
No hierarchy refresh when on region 


<a name="v_381"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M5 Build - 4th November 2003
<br>Project org.eclipse.jdt.core v_381
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_381">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

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

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

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

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

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

<a name="v_378"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M5 Build - 15th October 2003
<br>Project org.eclipse.jdt.core v_378
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_378">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li> Removed dependency on Xerces.
</li>
<li> Remove deprecated previously added API <code>IJavaProject#forceClasspathReload(IProgressMonitor)</code>
(see comment of <a href="#v_368">v_368</a> drop below).
</li>
<li>Added optional compiler problem to signal problems with javadoc annotation.
<pre>
	 * COMPILER / Reporting Invalid Javadoc Annotation
	 *    When enabled, the compiler will issue an error or a warning when a javadoc annotation is inconsistent,
	 *    misses a tag entry or contains invalid references.
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.invalidAnnotation"
	 *     - possible values:   { "error", "warning", "ignore" }
	 *     - default:           "ignore"
	 * COMPILER / Reporting Missing Javadoc Annotation
	 *    When enabled, the compiler will signal cases where public class, interface, method, constructor or field
	 *    (considered as part of the API) has no javadoc annotation.
	 *    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.invalidAnnotation".
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.missingAnnotation"
	 *     - possible values:   { "enabled", "disabled" }
	 *     - default:           "disabled"
	 * 
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44715">44715</a>
NullPointerException compiling Java file
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44697">44697</a>
Bug when i search reference of 'String' in 3.0M4
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=38091">38091</a>
DCR - Generate warnings for JavaDoc missing entries
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44637">44637</a>
NPE in Initializer.getPrimaryElement() 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=42762">42762</a>
Compiler tests should run both in 1.3 and 1.4 mode 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44580">44580</a>
No outline when unit name is not valid
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44651">44651</a>
Wrong formatting of multiple local variables declarations
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44643">44643</a>
Remove dependancy to xerces
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44662">44662</a>
Should not validate unit/classfile handles upon creation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44400">44400</a>
Unnecessary cast not being picked up
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44143">44143</a>
[JSR202] Remove usage of jsr bytecodes in 1.5 mode

<a name="v_377"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M4 Build - 9th October 2003 - 3.0 MILESTONE-4
<br>Project org.eclipse.jdt.core v_377
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_377">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44576">44576</a>
Code formatter option "Insert a new line before an opening brace" has no effect for single else
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44570">44570</a>
Code formatter option "Insert a new line inside an empty block" has no effect
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44503">44503</a>
Unoptimal formatting for long constructor argument
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44546">44546</a>
New formatter unable to format
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44506">44506</a>
Type hierarchy is missing anonymous type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44481">44481</a>
"Insert new line between else and if" is not working as expected
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44480">44480</a>
Formatting the formatted string should not produce edits
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44444">44444</a>
jdt.core in trouble when project has no JRE
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=44437">44437</a>
Typo in plugin.properties

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

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

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

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

<a name="v_373"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M4 Build - 30th September 2003
<br>Project org.eclipse.jdt.core v_373
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_373">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43728">43728</a>
Optimize CompilerOptions(Map....)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43842">43842</a>
JDTCompilerAdapter doesn't find bootclasspath 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40782">40782</a>
Primary working copies: unnecessary deltas on save 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43300">43300</a>
SearchEngine(IWorkingCopy[] workingCopies) not backward compatible 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43670">43670</a>
No classpath refresh when replacing binary project with source form
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43600">43600</a>
NPE from JDTCompilerAdapter
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43636">43636</a>
Compiler complain that class cannot be resolved when it should be only not visible
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43208">43208</a>
ICompilation.move not supported when in workingCopyMode 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40793">40793</a>
Primary working copies: Type search does not find type in modified CU 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43587">43587</a>
Searching for references to default constructors reports questionable results
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36143">36143</a>
Type hierarchy doesn't include anonymous subclasses 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=8613">8613</a>
Outline should show anonymous inner classes 


<a name="v_372"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M4 Build - 24th September 2003
<br>Project org.eclipse.jdt.core v_372
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_372">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=42692">42692</a>
JavaCC files cause VerifyError when compiled with Eclipse
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43437">43437</a>
Scanner does not like string literals
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43485">43485</a>
NPE in SearchEngine
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=37659">37659</a>
[plan item] Improve shared working copies 


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

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


<a name="v_370"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M4 Build - 16th September 2003
<br>Project org.eclipse.jdt.core v_370 
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_370">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43026">43026</a>
Running jdt/core tests on Linux is failing
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43045">43045</a>
Copy/move of package fragments with read-only subpackages fails on Linux
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43116">43116</a>
NPE copy and pasting a method
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43089">43089</a>
Search engine doesn't report all matches
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=43080">43080</a>
NPE when searching in CU with incomplete method declaration 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=42856">42856</a>
CodeAssist - Does not work after an inner type reference
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=42839">42839</a>
Incorrect position in org.eclipse.jdt.core.dom.ArrayType

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

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

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

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

<a name="v_367"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M3 Build - 22nd August 2003 - 3.0 MILESTONE-3
<br>Project org.eclipse.jdt.core v_367
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_367">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

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

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

<a name="v_365a"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M3 Build - 24th July 2003
<br>Project org.eclipse.jdt.core v_365a 
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_365a">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40752">40752</a>
internal compiler error: java.lang.ClassCastException: org.eclipse.jdt.internal.compiler.lookup.ArrayBinding
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40594">40594</a>
wrong location set for org.apache.ant when building jdt component with baseLocation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40715">40715</a>
getWorkingCopy(...) should always return a new working copy for primary cus 

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

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

<a name="v_364b"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M2 Build - 18th July 2003 - 3.0 MILESTONE-2
<br>Project org.eclipse.jdt.core v_364b 
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_364b">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>
<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40495">40495</a>
VerifyError with return statements containing a cast expression

<a name="v_364a"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M2 Build - 17th July 2003
<br>Project org.eclipse.jdt.core v_364a 
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_364a">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>
<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40423">40423</a>
NPE Saving a file
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40288">40288</a>
NPE while building

<a name="v_364"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M2 Build - 16th July 2003
<br>Project org.eclipse.jdt.core v_364 
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_364">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>
<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=40210">40210</a>
ICompilationUnit#isWorkingCopy() misbehaving for discarded working copies

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

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

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

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

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

<a name="v_360"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M2 Build - 1st July 2003 
<br>Project org.eclipse.jdt.core v_360
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_360">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li> Plugin version ID got incremented to 3.0.0. 
</li>
<li> Removed tolerance for relative source attachments in <code>JavaCore.newLibraryEntry(...)</code>. Only
allowing relative empty pathes so as to permit using classpath variables to denote the absence of a source attachment.
<li>To finish closing the gap between compilation units and working copies 
(see <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36888">bug 36888</a>), new APIs were added to generalize
the usage of a working copy owner (entire JavaModel is now aware of owned working copies). These new APIs are copies of existing APIs augmented with
a <code>WorkingCopyOwner</code> parameter, that defines the working copies to consider in the operation. 
When specifying an owner parameter, all working copies belonging to this owner will implicitly take precedence over primary ones
(without requiring the owner to remember all its working copies, as in 2.1 era). Note that when no owned working copy is found, a primary
unit will be considered instead, and since primary units have a built-in working copy (see <code>ICompilationUnit.becomeWorkingCopy(...)</code>),
the primary unit may already be in working copy mode (very likely since an editor got opened on it). This means that an owner will already 
transparently see unsaved editor contents for all units for which it has no better working copy to contribute.
The following new APIs were added:
	<ul>
	<li><code>AST.parseCompilationUnit(char[] source, String unitName, IJavaProject project, WorkingCopyOwner owner)</code></li>
	<li><code>AST.parseCompilationUnit(IClassFile classFile, boolean resolveBindings, WorkingCopyOwner owner)</code></li>
	<li><code>AST.parseCompilationUnit(ICompilationUnit unit, boolean resolveBindings, WorkingCopyOwner owner)</code></li>
	<li><code>IEvaluationContext.codeComplete(String codeSnippet, int position, ICompletionRequestor requestor, WorkingCopyOwner owner)</code></li>
	<li><code>IEvaluationContext.codeSelect(String codeSnippet, int offset, int length, WorkingCopyOwner owner)</code></li>
	<li><code>IDOMCompilationUnit.getCompilationUnit(IPackageFragment parent, WorkingCopyOwner owner)</code></li>
	<li><code>ICodeAssist.codeComplete(int offset, ICompletionRequestor requestor, WorkingCopyOwner owner)</code></li>
	<li><code>ICodeAssist.codeSelect(int offset, int length, WorkingCopyOwner owner)</code></li>
	<li><code>ICompilationUnit.reconcile(boolean forceProblemDetection, WorkingCopyOwner owner, IProgressMonitor monitor)</code></li>
	<li><code>IJavaProject.findElement(IPath path, WorkingCopyOwner owner)</code></li>
	<li><code>IJavaProject.findType(String packageName, String typeQualifiedName, WorkingCopyOwner owner)</code></li>
	<li><code>IJavaProject.findType(String fullyQualifiedName, WorkingCopyOwner owner)</code></li>
	<li><code>IJavaProject.newTypeHierarchy(IRegion region, WorkingCopyOwner owner, IProgressMonitor monitor)</code></li>
	<li><code>IJavaProject.newTypeHierarchy(IType type, IRegion region, WorkingCopyOwner owner, IProgressMonitor monitor)</code></li>
	<li><code>IPackageFragment.getCompilationUnit(String name, WorkingCopyOwner owner)</code></li>
	<li><code>IPackageFragment.getCompilationUnits(WorkingCopyOwner owner)</code></li>
	<li><code>IType.codeComplete(char[] snippet, int insertion, int position, char[][] localVariableTypeNames, char[][] localVariableNames, int[] localVariableModifiers, boolean isStatic, ICompletionRequestor requestor, WorkingCopyOwner owner)</code></li>
	<li><code>IType.newSupertypeHierarchy(WorkingCopyOwner owner, IProgressMonitor monitor)</code></li>
	<li><code>IType.newTypeHierarchy(IJavaProject project, WorkingCopyOwner owner, IProgressMonitor monitor)</code></li>
	<li><code>IType.newTypeHierarchy(WorkingCopyOwner owner, IProgressMonitor monitor)</code></li>
	<li><code>IType.resolveType(String typeName, WorkingCopyOwner owner)</code></li>
	<li><code>JavaCore.create(IFile file, WorkingCopyOwner owner)</code></li>
	<li><code>JavaCore.create(IResource resource, WorkingCopyOwner owner)</code></li>
	<li><code>JavaCore.create(String handleIdentifier, WorkingCopyOwner owner)</code></li>
	<li><code>JavaCore.createCompilationUnitFrom(IFile file, WorkingCopyOwner owner)</code></li>
	<li><code>JavaCore.getWorkingCopies(WorkingCopyOwner owner)</code></li>
	<li><code>SearchEngine.SearchEngine(WorkingCopyOwner workingCopyOwner)</code></li>
	<li><code>SearchEngine.createHierarchyScope(IType type, WorkingCopyOwner owner)</code></li>
	</ul>
</li>
<li> Added optional problem to signal superfluous semicolons (matching problem ID is <code>IProblem.SuperfluousSemicolon</code>).
<pre>
* COMPILER / Reporting Superfluous Semicolon
*    When enabled, the compiler will issue an error or a warning if a superfluous semicolon is met.
*     - option id:         "org.eclipse.jdt.core.compiler.problem.superfluousSemicolon"
*     - possible values:   { "error", "warning", "ignore" }
*     - default:           "ignore"</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=26281">26281</a>
error hover text indicates wrong problem
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23166">23166</a>
Syntax error message from Java compiler is confusing. 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33213">33213</a>
Same error reported more than once? 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36214">36214</a>
TODOs reported twice when located at the end of the method declaration 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36232">36232</a>
binding do not fully consider working copies 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36888">36888</a>
Close the gap between original and working copies 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39311">39311</a>
Outliner did not refresh after method rename (refactor) 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39259">39259</a>
While statement has wrong source position
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39007">39007</a>
Infinite loop trying to index a non-existing external jar
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=39172">39172</a>
Incorrect error reported if extra semi-colon exists on a return statement


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

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


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

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


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

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

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

</li>
</ul>

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

<a name="v_357"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M1 Build - 5th June 2003 - 3.0 MILESTONE-1
<br>Project org.eclipse.jdt.core v_357
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_357">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=37274">37274</a>
Deadlock on plugin import


<a name="v_356"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M1 Build - 4th June 2003
<br>Project org.eclipse.jdt.core v_356
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_356">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=38362">38362</a>
Inconsistent output when using comparrisson operators


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

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


<a name="v_354"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M1 Build - 26th May 2003
<br>Project org.eclipse.jdt.core v_354
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_354">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Added <code>JavaCore</code> optional problem to detect incompatible required binaries, so as to flag situations where
some prerequisite binaries are required a JRE level higher than the project target platform; i.e. compiling against 1.4 libraries 
when deploying for 1.1 platform is likely unwanted.
<pre>
* JAVACORE / Reporting Incompatible JDK Level for Required Binaries
*    Indicate the severity of the problem reported when a project prerequisites another project 
*    or library with an incompatible target JDK level (e.g. project targeting 1.1 vm, but compiled against 1.4 libraries).
*     - option id:         "org.eclipse.jdt.core.incompatibleJDKLevel"
*     - possible values:   { "error", "warning", "ignore" }
*     - default:           "ignore"
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=37750">37750</a>
incorrect handle identifier for IImportContainer
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36674">36674</a>
compiler can generate Java 1.4-only bytecode regardless of compatibility settings
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=37962">37962</a>
Unexpected transient problem during reconcile 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=37166">37166</a>
NPE in SearchEngine when matching type against ProblemReferenceBinding 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=37438">37438</a>
searchenging NPE in searchDeclarationsOfReferencedTypes 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=37779">37779</a>
ExceptionInInitializerError when using JDTCompilerAdapter
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36307">36307</a>
JDK1.4.2: Wrong declaring class for clone method on array class


<a name="v_353"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M1 Build - 19th May 2003
<br>Project org.eclipse.jdt.core v_353
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_353">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=37621">37621</a>
java compiler creates class with internal inconsistency
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=37646">37646</a>
Help for JDTCompilerAdapter is dated
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36894">36894</a>
JobManager could wait when idle
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=37541">37541</a>
Unoptimal deprecation diagnosis
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=37565">37565</a>
JACKS: Class literal should not cause class initialization
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=37503">37503</a>
Compiler does not take care of exclusion filter


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

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

<a name="v_351"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M1 Build - 29th April 2003
<br>Project org.eclipse.jdt.core v_351
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_351">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=37040">37040</a>
VerifyError "Illegal target of jump or branch"
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36490">36490</a>
Java compiler misses dependency on 'static final' class variables
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36814">36814</a>
NaiveASTFlattener does not serialize try-finally statements correctly
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36772">36772</a>
AST: CompilationUnit.findDeclaringNode: Spec/Impl not same
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36711">36711</a>
Resource duplication message should list location of duplicate
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36718">36718</a>
Compiler should not generate references to classes not on the classpath

<a name="v_350"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 3.0M1 Build - 22nd April 2003
<br>Project org.eclipse.jdt.core v_350
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_350">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
<li>Added new compiler optional problem to signal cases where a boolean variable is assigned
in a condition expression. It is likely an accidental situation, where a comparison was actually meant.
<pre>
* COMPILER / Reporting Possible Accidental Boolean Assignment
*    When enabled, the compiler will issue an error or a warning if a boolean assignment is acting as the condition
*    of a control statement  (where it probably was meant to be a boolean comparison).
*     - option id:         "org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment"
*     - possible values:   { "error", "warning", "ignore" }
*     - default:           "warning"
</pre>
</li>
<li>Added new compiler settings to control the diagnosis of variable hiding other ones.
<pre>
* COMPILER / Reporting Local Variable Declaration Hiding another Variable
*    When enabled, the compiler will issue an error or a warning whenever a local variable
*    declaration is hiding some field or local variable (either locally, inherited or defined in enclosing type).
*     - option id:         "org.eclipse.jdt.core.compiler.problem.localVariableHiding"
*     - possible values:   { "error", "warning", "ignore" }
*     - default:           "warning"
*
* COMPILER / Reporting Field Declaration Hiding another Variable
*    When enabled, the compiler will issue an error or a warning whenever a field
*    declaration is hiding some field or local variable (either locally, inherited or defined in enclosing type).
*     - option id:         "org.eclipse.jdt.core.compiler.problem.fieldHiding"
*     - possible values:   { "error", "warning", "ignore" }
*     - default:           "warning"
*
* COMPILER / Reporting Special Parameter Hiding another Field
*    When enabled, the compiler will signal cases where a constructor or setter method parameter declaration 
*    is hiding some field (either locally, inherited or defined in enclosing type).
*    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.localVariableHiding".
*     - option id:         "org.eclipse.jdt.core.compiler.problem.specialParameterHidingField"
*     - possible values:   { "enabled", "disabled" }
*     - default:           "disabled"
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36510">36510</a>
Automatically attach source for source files located in a class folder 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36499">36499</a>
exists() returns true for a source file inside a classfolder 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36438">36438</a>
null == null causes java.lang.VerifyError
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35755">35755</a>
Search in hierarchy misses dependent projects 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36465">36465</a>
Unable to create multiple source folders when not using bin for output
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36339">36339</a>
Try codegen issues slightly incorrect ANY exception handler
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35965">35965</a>
Source not found in source attachment 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36447">36447</a>
Unoptimal wide conditional branch bytecode sequence
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=19286">19286</a>
Suspicious synchronized operations 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36213">36213</a>
ArrayIndex out of bounds
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36244">36244</a>
JDK1.4.2: Add -cp as a batch option 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35528">35528</a>
When I check out a project from CVS, Updating takes a very long time
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36058">36058</a>
Unknown NPE in log
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21661">21661</a>
Compile dependency problems
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=28937">28937</a>
Compiler Problem Marker: Accidental Boolean Assignment
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33831">33831</a>
ast API: add FieldAccess.resolveFieldBinding
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35649">35649</a>
The SourceMapper instances could share the fileNamefilter 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=34896">34896</a>
compiler setting "unused private fields"
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=33751">33751</a>
The numbering of anonymous could be optimized
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35849">35849</a>
Incremental compilation ignores linked folders
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35926">35926</a>
Batch compiler compile should return false when the command line is incorrect
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35421">35421</a>
[nls] Inconsistencies between properties files and nls strings
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=34173">34173</a>
Create a compiler warning when an instance variable is "re-declared" as a local variable.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21140">21140</a>
Warning/error on shadowing definition of data member?
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35490">35490</a>
Search doesn't work for reference of 'cursorLocation'
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35338">35338</a>
Cannot save file, "Save failed:null" error message received
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35438">35438</a>
CastExpression resolution departs from JLS section 6.5.1
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=36165">36165</a>
[DOM/AST] Incorrect grammar rule in TypeDeclaration


<a name="v_312"></a>
<p><hr><h1>
Eclipse Platform Build Notes&nbsp;<br>
Java development tools core</h1>
Eclipse SDK 2.1 Build (before 3.0/2.1.1 branching) - 31st March 2003
<br>Project org.eclipse.jdt.core v_312
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_312">cvs</a>).
<h2>
What's new in this drop</h2>
<ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35831">35831</a>
NPE navigating references using links

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

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