<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
   <meta name="Author" content="IBM">
   <title>JDT/Core Release Notes 3.5</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.5 stream</b></font>
    </td>
  </tr>
  <tr><td align="left" width="72%" class="title2"><font size="-2">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://www.eclipse.org/jdt/core/index.php"><b>org.eclipse.jdt.core</b></a>,
	  describing <a href="http://bugs.eclipse.org/bugs" target=new>bug</a> resolution and substantial changes in the <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core"><b>HEAD</b></a> branch.
	  For more information on 3.5 planning, please refer to <a href="http://www.eclipse.org/jdt/core/r3.5/index.php#release-plan">JDT/Core release plan</a>,
	  the next <a href="http://www.eclipse.org/jdt/core/r3.5/index.php#milestone-plan">milestone plan</a>,
	  the overall <a href="http://www.eclipse.org/eclipse/development/eclipse_project_plan_3_5.html">official plan</a>,
	  or the <a href="http://www.eclipse.org/eclipse/platform-releng/buildSchedule.html">build schedule</a>.
	  This present document covers all changes since Release 3.4 (also see a summary of <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.jdt.core/notes/API_changes.html">API changes</a>).
	  <br>Maintenance of previous releases of JDT/Core is performed in parallel branches:
		  <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=R3_4_maintenance">R3.4.x</a>,
		  <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=R3_3_maintenance">R3.3.x</a>,
		  <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=R3_2_maintenance">R3.2.x</a>,
		  <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=R3_1_maintenance">R3.1.x</a>,
		  <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=R3_0_maintenance">R3.0.x</a>,
		  <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=R2_1_maintenance">R2.1.x</a>,
		  <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=R2_0_1">R2.0.x</a>,
		  <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=ECLIPSE_1_0">R1.0.x</a>.
	  </font>
	</td>
  </tr>
</table>
<a name="v_972_R35x"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5.1 - September 2, 2009 - 3.5.1
<br>Project org.eclipse.jdt.core v_972_R35x
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_972_R35x">cvs</a>).
<h2>What's new in this drop</h2>
Some copyrights date have been fixed.

<h3>Problem Reports Fixed</h3>

<a name="v_971_R35x"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5.1 - August 25, 2009
<br>Project org.eclipse.jdt.core v_971_R35x
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_971_R35x">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=286391">286391</a>
[compiler] jsr14 target behavior changed between ECJ 3.4.2 and ECJ 3.5

<a name="v_970_R35x"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5.1 - August 24, 2009
<br>Project org.eclipse.jdt.core v_970_R35x
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_970_R35x">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=285799">285799</a>
HashtableOfObject rehashes and grows buffer on removeKey()

<a name="v_969_R35x"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5.1 - August 21, 2009
<br>Project org.eclipse.jdt.core v_969_R35x
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_969_R35x">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=285466">285466</a>
[3.5 regression] fails to build IcedTea, works with 3.4.x
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=282891">282891</a>
[compiler] &quot;Comparing identical expressions&quot; warning sometimes invalid
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=286956">286956</a>
NPE when asking to externalize constant
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=281609">281609</a>
[javadoc] &quot;Javadoc: Invalid reference&quot; warning for @link to Java package

<a name="v_968_R35x"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5.1 - August 19, 2009
<br>Project org.eclipse.jdt.core v_968_R35x
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_968_R35x">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=286840">286840</a>
ClasspathJar getPath() should return a unique path
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=286682">286682</a>
SwitchStatement traverses this.expression with incorrect scope
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=254738">254738</a>
NPE in HierarchyResolver.setFocusType
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=284785">284785</a>
[1.5][compiler] Eclipse compiler shows error on javac-valid construct: varargs plus overload
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=285701">285701</a>
[1.5][compiler] Internal Compiler Error - ArrayIndexOutOfBoundsException

<a name="v_967_R35x"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5.1 - August 12, 2009
<br>Project org.eclipse.jdt.core v_967_R35x
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_967_R35x">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=284948">284948</a>
[1.6][compiler] Java annotations are broken in editor when used on interface methods

<a name="v_966_R35x"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5.1 - July 29, 2009
<br>Project org.eclipse.jdt.core v_966_R35x
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_966_R35x">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=284482">284482</a>
[compiler] Collision cases not detected
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=284431">284431</a>
Different inherited thrown exception clauses are not properly handled

<a name="v_965_R35x"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5.1 - July 22, 2009
<br>Project org.eclipse.jdt.core v_965_R35x
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_965_R35x">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=283467">283467</a>
[formatter] wrong indentation with 'Never join lines' selected
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=277450">277450</a>
[1.5][compiler] Problems with += and Autoboxing/Unboxing
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=260968">260968</a>
Deadlock in UserLibraryManager
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=276373">276373</a>
Incorrect resource comparison with IJavaProject.isOnClasspath(IResource)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=280497">280497</a>
Incorrect null result for IJavaProject.getClasspathEntryFor(IPath)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=281871">281871</a>
[content assist] The extension took too long to return from the 'computeCompletionProposals()' operation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=281598">281598</a>
[assist] Problems during content assist - if project has empty zip file in classpath

<a name="v_964_R35x"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5.1 - July 8, 2009
<br>Project org.eclipse.jdt.core v_964_R35x
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_964_R35x">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=281533">281533</a>
[formatter] ArithmeticException: / by zero at Scribe.printLineComment(Scribe.java:2161)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=279836">279836</a>
[1.5][compiler] Eclipse compiler shows error on javac-valid construct: raw types on overridden methods
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=278745">278745</a>
Methods overloaded with unavailable types worked in 3.4 but give "indirectly referenced.." error in 3.5
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=278305">278305</a>
[1.5][compiler] JDT accepts supertype parameterized with wildcard
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=277965">277965</a>
[compiler] NPE in canBeSeenBy due to illegal protected toplevel class
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=280888">280888</a>
change a java file in one plug-in will compile all related plugin projects
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=281317">281317</a>
[search] An internal error occurred during: &quot;Java Search&quot;.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=273385">273385</a>
[model] NPE while closing project
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=275330">275330</a>
NPE from org.eclipse.jdt.internal.core.ClasspathChange.requestIndexing
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=280079">280079</a>
NPE while parsing K_CLASS_BODY_DECLARATIONS
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=280063">280063</a>
org.eclipse.jdt.internal.compiler.parser.Parser.parseClassBodyDeclarations(char[], int, int, CompilationUnitDeclaration) should return consistent results
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=267046">267046</a>
SourceMapper infinite loop on primitive type in generic
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=279183">279183</a>
[1.6][compiler] Inconsistent stackmap frames generated by JDT cause VerifyError
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=277204">277204</a>
IAE in SharedASTProvider for generic local class.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=276938">276938</a>
Remove unreachable removes reachable logic in case statement.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=274898">274898</a>
[recovery] IllegalArgumentException in ASTNode#setSourceRange()
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=280616">280616</a>
[formatter] Valid 1.5 code is not formatted inside &lt;pre&gt; tag
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=280255">280255</a>
[formatter] Format edited lines adds two new lines on each save
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=280061">280061</a>
[formatter] AIOOBE while formatting javadoc comment
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=196308">196308</a>
[formatter] Don't escape entity when formatting in &lt;pre&gt; tags within javadoc comments
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=273619">273619</a>
[formatter] Formatting repeats *} in javadoc

<a name="v_963"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5.0 - May 27, 2009 - 3.5.0
<br>Project org.eclipse.jdt.core v_963
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_963">cvs</a>).
<h2>What's new in this drop</h2>
Reverting change for bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=236818">236818</a>.

<h3>Problem Reports Fixed</h3>

<a name="v_962"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5RC3 - May 26, 2009
<br>Project org.eclipse.jdt.core v_962
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_962">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=234194">234194</a>
Run copyright tool
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=277669">277669</a>
IBinding.getJavaElement() returns 'null' where it should not

<a name="v_961"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5RC2 - May 21, 2009 - 3.5 RC2
<br>Project org.eclipse.jdt.core v_961
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_961">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=277372">277372</a>
[1.5][compiler] Signature attribute should not be generated with target jsr14

<a name="v_960"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5RC2 - May 20, 2009
<br>Project org.eclipse.jdt.core v_960
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_960">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=273991">273991</a>
[assist] Wrong relevance for some proposals which are not compatible with the expected type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=276890">276890</a>
[content assist] proposes nothing for generic type with non-trivial constructor

<a name="v_959"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5RC1 - May 14, 2009 - 3.5 RC1
<br>Project org.eclipse.jdt.core v_959
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_959">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=275471">275471</a>
Eclipse Compiler needs a compile dependency to a plug-in, but javac does not need that dependency
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=170197">170197</a>
[model] JavaCore.newLibraryEntry(.., IClasspathAttribute[], ..) should check for null

<a name="v_958"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5RC1 - May 12, 2009
<br>Project org.eclipse.jdt.core v_958
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_958">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=275381">275381</a>
[1.5][compiler] Missing innerClass attribute for inner types used as type arguments
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=255752">255752</a>
[javadoc][assist] Inappropriate completion proposals for javadoc at compilation unit level
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=275467">275467</a>
Batch compiler writes log using default encoding instead of UTF-8

<a name="v_957"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5RC1 - May 7, 2009
<br>Project org.eclipse.jdt.core v_957
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_957">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=273157">273157</a>
[performance] ManifestAnalyzer is causing a 2x performance drop in the updating of classpath of JavaProjects in comparison with 3.4
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=268879">268879</a>
External folders project not cleaned up
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=275215">275215</a>
org.eclipse.jdt.internal.core.util.KeyToSignature#consumeType() uses a method not available in J2SE-1.4 EE
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=275244">275244</a>
org.eclipse.jdt.internal.compiler.util.Util.getZipEntryByteContent(ZipEntry, ZipFile) should use BufferedInputStream
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=132679">132679</a>
[assist] Completion fails within non-static anonymous inner class

<a name="v_956"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5RC1 - May 6, 2009
<br>Project org.eclipse.jdt.core v_956
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_956">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=274114">274114</a>
org.eclipse.jdt.internal.compiler.tool.Options must be updated with latest compiler options
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=185422">185422</a>
[1.5][compiler] Incorrectly allows generic use of private inner classes
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=274917">274917</a>
Incorrect &quot;empty block&quot; warning underlining on annotations
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=274557">274557</a>
CompletionContext problem with annotation value element
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=274332">274332</a>
jdt.core.model tests take 2 hours to finish on the mac

<a name="v_955"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M7 - April 29, 2009 - 3.5 MILESTONE 7
<br>Project org.eclipse.jdt.core v_955
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_955">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=274397">274397</a>
tag projects changed since I20090421-0930 build

<a name="v_954"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M7 - April 28, 2009
<br>Project org.eclipse.jdt.core v_954
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_954">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=269934">269934</a>
[apt] APT-generated classes that contain annotations causes NPE
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=259950">259950</a>
Update copyright for 2009

<a name="v_953"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M7 - April 27, 2009
<br>Project org.eclipse.jdt.core v_953
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_953">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=272204">272204</a>
null should never be part of a type hierarchy
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=260031">260031</a>
Wrong type for class constants in stackmap frames
 
<a name="v_952"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M7 - April 27, 2009
<br>Project org.eclipse.jdt.core v_952
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_952">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=273862">273862</a>
[1.7][compiler] Return type should be used to decide method duplicates
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=84720">84720</a>
[1.5][assist] proposal ranking by return value should consider auto(un)boxing
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=272711">272711</a>
Exceptions in ASTRewrite

<a name="v_951"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M7 - April 24, 2009
<br>Project org.eclipse.jdt.core v_951
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_951">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=273308">273308</a>
[perfs] Save very slow because DeltaProcessor#resourceChanged(..) resolves classpath
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=154823">154823</a>
[getter setter] Getters Setters generation doesn't follow naming convention
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=263786">263786</a>
NamingConventions#suggestVariableNames(..) should not modify all caps parts
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=263769">263769</a>
Javadoc glitches in JavaCore#setComplianceOptions(String, Map)

<a name="v_950"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M7 - April 21, 2009
<br>Project org.eclipse.jdt.core v_950
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_950">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=266771">266771</a>
NameLookup.findPackageFragment returns very incorrect package fragments
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=271102">271102</a>
Java model corrupt after switching target platform
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=270784">270784</a>
[perfs] Big regression on FullSourceWorkspaceModelTests#testCloseProjects() test
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=272450">272450</a>
DBCS3.5: Classpath resolution fails to honor the 'Class-Path' header of JAR manifest file in DBCS
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=272706">272706</a>
[Model] Generics lost on IField when coming from .class files
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=246832">246832</a>
[1.5][assist] Camel case completion not working with statically imported methods
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=267833">267833</a>
[javadoc] Custom tags should not be allowed for inline tags
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=271680">271680</a>
[compiler] Stack overflow pasting in Java editor
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=251827">251827</a>
[search] Search for type reference with wildcards finds references in package
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=271284">271284</a>
[search] AIOOBE in StringOperation.getCamelCaseMatchingRegions
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=272148">272148</a>
[assist] Constructors with an array as parameter type are not proposed

<a name="v_949"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M7 - April 14, 2009
<br>Project org.eclipse.jdt.core v_949
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_949">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=271561">271561</a>
JavaModelException when accessing an array of nested annotations

<a name="v_948"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M7 - April 7, 2009
<br>Project org.eclipse.jdt.core v_948
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_948">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=271303">271303</a>
[1.5][compiler] Override and package visibility issue
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=270367">270367</a>
[DOM] NullPointerException in ParenthesizedExpression.resolveTypeBinding()
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=253008">253008</a>
[assist] Boolean expressions should be proposed with higher relevence in if(), while() etc
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=270983">270983</a>
[formatter] Enum with field declarations but no constants confuses formatter
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=159851">159851</a>
[1.5] [compiler] Eclipse compiler fails to report type parameter bounds errors when generic instance is a type argument
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=270446">270446</a>
&quot;Compute launch button tooltip&quot; error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=270148">270148</a>
ASTParser cannot parse K_CLASS_BODY_DECLARATIONS with syntax errors

<a name="v_947"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M7 - March 31, 2009
<br>Project org.eclipse.jdt.core v_947
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_947">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=270409">270409</a>
[perfs] No JDT/Core tests results in last baseline run
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=267670">267670</a>
Private enum constant incorrectly marked as never read locally
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=269493">269493</a>
[assist] Keywords are not proposed in a for statement without block
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=270194">270194</a>
[1.5][compiler] Java error in 3.5M6 that was not present in 3.4
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=270257">270257</a>
[perfs] Small regression on 'JDT/Core plugin initialization' test
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=270113">270113</a>
[code assist] Missing ANONYMOUS_CLASS_CONSTRUCTOR_INVOCATION proposal
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=269985">269985</a>
Full Build triggered when using class folder on classpath and custom builder
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=207935">207935</a>
[1.5][compiler] inconsistency with javac 1.5&1.6 involving parameterized invocation of non-generic method
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=269964">269964</a>
[perfs] Regression on 'Search all type names' test

<a name="v_946"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M7 - March 24, 2009
<br>Project org.eclipse.jdt.core v_946
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_946">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=247037">247037</a>
[javadoc] compiler should issue warning for {@inheritDoc} at illegal location
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=244406">244406</a>
[buildpath] Internal jars refered with OS path are shown as non-Java resources
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=269476">269476</a>
testInitJDTPlugin() seems to leak several DeltaProcessor and JavaModelManager
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=269336">269336</a>
[prefs] JavaProject preferences listeners are not removed
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=203060">203060</a>
[codeassist] assert keyword should not be proposed when compliance level is set to 1.3
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=251539">251539</a>
[1.6][compiler] java.lang.IllegalArgumentException: info cannot be null (StackMapFrame.java)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=268837">268837</a>
[1.6][compiler] Incorrectly report ambiguity of methods with generics
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=265104">265104</a>
Reconciler cannot handle annotation with reference to missing type

<a name="v_945"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M7 - March 17, 2009
<br>Project org.eclipse.jdt.core v_945
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_945">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=267789">267789</a>
eclipse-Automated-Tests-3.4.zip produces compile errors (build path?) with IBM JDK
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=268802">268802</a>
Useless call to getSource() in SourceTypeConverter

<a name="v_944"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M6 - March 10, 2009 - 3.5 MILESTONE 6
<br>Project org.eclipse.jdt.core v_944
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_944">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=267941">267941</a>
[perfs] Possible regression on 'Code assist in expression' test
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=267773">267773</a>
[open type] Use of ? results in error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=267658">267658</a>
[formatter] Javadoc comments may be still formatted as block comments

<a name="v_943"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M6 - March 9, 2009
<br>Project org.eclipse.jdt.core v_943
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_943">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=124646">124646</a>
Connecting type parameter fails for local types

<a name="v_942"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M6 - March 7, 2009
<br>Project org.eclipse.jdt.core v_942
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_942">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>Added the following APIs to allow clients to provide the source of a compilation unit or a package that is neither on the 
       classpath nor in a working copy.
       <ul>
       <li><code>org.eclipse.jdt.core.WorkingCopyOwner.findSource(String, String)</code></li>
       <li><code>org.eclipse.jdt.core.WorkingCopyOwner.isPackage(String[])</code></li>
       </ul>
       See <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=257528">bug 257528</a> for details.
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=267088">267088</a>
[1.5][compiler] Misleading error message in case of inherited methods
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=260840">260840</a>
NamingConventions creates wrong plural for name ending in &lt;vowel&gt;y
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=243406">243406</a>
[code assist] Content assist gives &quot;assertion failed&quot; for import Foo|.Bar
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=237241">237241</a>
Content assist does not scale with javadoc on type with many members
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=265962">265962</a>
[compiler] Internal compiler error on while with return clause
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=236520">236520</a>
[search] AIOOBE in PatternLocator.updateMatch
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=265103">265103</a>
Manifest Class-Path is not read correctly with ECJ
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=99399">99399</a>
[1.5][assist] Code assist propose final classes in methods type parameter extends clause
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=257528">257528</a>
An API to incrementaly generate compilation units for binding resolution environment
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=266582">266582</a>
[1.5][compiler] AbortCompilation while decoding the type variable of an anonymous type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=266837">266837</a>
[model] SourceField.getConstant does not supply a value if type is fully qualified

<a name="v_941"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M6 - March 3, 2009
<br>Project org.eclipse.jdt.core v_941
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_941">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=252442">252442</a>
[Search] NPE after move followed by undo
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=261722">261722</a>
[search] NPE after removing a project
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=266421">266421</a>
[1.5][compiler] code compiles correctly in 3.4.1 but gives compilation errors in 3.5M5
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=260011">260011</a>
[formatter] Formatting of html in javadoc comments doesn't work with style attributes
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=217108">217108</a>
[formatter] deletes blank lines between comments
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=198963">198963</a>
[formatter] 3.3 Code Formatter repeatedly indents block comment
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=265571">265571</a>
Abstract method that is not directly used is flagged as unused

<a name="v_940"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M6 - February 24, 2009
<br>Project org.eclipse.jdt.core v_940
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_940">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>Fixed odd API in <code>ReferenceMatch</code><br>
(see more details in bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=248878">248878</a>).
</li>
</ul>


<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=265820">265820</a>
Unused methods inside org.eclipse.jdt.internal.core.dom.rewrite.ImportRewriteAnalyzer
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=233356">233356</a>
[search] NPE in org.eclipse.jdt.internal.compiler.util.SimpleLookupTable.get()
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=265630">265630</a>
[search][perfs] Regression in testSearchPackageDeclarationsWorkspace
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=248878">248878</a>
[search] Odd API in ReferenceMatch
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=206930">206930</a>
[1.5][compiler] Mismatch between javac and Eclipse compiler
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=265142">265142</a>
Compiler fails to warn on unused constructors of private classes
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=264950">264950</a>
[scanner] IScanner does not return whitespace token
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=264843">264843</a>
[1.5][compiler] Eclipse compiler fails to reject invalid code with primitives autoboxed to generics
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=265065">265065</a>
[search] java.lang.ClassCastException while running &quot;Refactor...Extract Class&quot;

<a name="v_939"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M6 - February 17, 2009
<br>Project org.eclipse.jdt.core v_939
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_939">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>Added a new API method on <code>SearchPattern</code> to provide matching
regions between a pattern and a name when they are compared using a given match rule<br>
(see more details in bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=218605">218605</a>).
<pre>
/**
 * Answers all the regions in a given name matching a given pattern using
 * a specified match rule.
 * 
 * Each of these regions is made of its starting index and its length in the given
 * name. They are all concatenated in a single array of <code>int</code>
 * which therefore always has an even length.
 * 
 * All returned regions are disjointed from each other. That means that the end
 * of a region is always different than the start of the following one.
 * For example, if two regions are returned:
 * <code>{ start1, length1, start2, length2 }</code>
 * then <code>start1+length1</code> will always be smaller than
 * <code>start2</code>.
 * 
 * The possible comparison rules between the name and the pattern are:
 *     . {@link #R_EXACT_MATCH exact matching}
 *     . {@link #R_PREFIX_MATCH prefix matching}
 *     . {@link #R_PATTERN_MATCH pattern matching}
 *     . {@link #R_CAMELCASE_MATCH camel case matching}
 *     . {@link #R_CAMELCASE_SAME_PART_COUNT_MATCH camel case matching with same parts count}
 *
 * Each of these rules may be combined with the
 * {@link #R_CASE_SENSITIVE case sensitive flag} if the match comparison
 * should respect the case.
 *
 * Examples:
 *    .   pattern = "NPE"
 *        name = NullPointerException / NoPermissionException
 *        matchRule = {@link #R_CAMELCASE_MATCH}
 *        result:  { 0, 1, 4, 1, 11, 1 } / { 0, 1, 2, 1, 12, 1 } 
 *     .  pattern = "NuPoEx"
 *        name = NullPointerException
 *        matchRule = {@link #R_CAMELCASE_MATCH}
 *        result:  { 0, 2, 4, 2, 11, 2 }
 *     .  pattern = "IPL3"
 *        name = "IPerspectiveListener3"
 *        matchRule = {@link #R_CAMELCASE_MATCH}
 *        result:  { 0, 2, 12, 1, 20, 1 }
 *     .  pattern = "HashME"
 *        name = "HashMapEntry"
 *        matchRule = {@link #R_CAMELCASE_MATCH}
 *        result:  { 0, 5, 7, 1 }
 *     .  pattern = "N???Po*Ex?eption"
 *        name = NullPointerException
 *        matchRule = {@link #R_PATTERN_MATCH} | {@link #R_CASE_SENSITIVE}
 *        result:  { 0, 1, 4, 2, 11, 2, 14, 6 }
 *     .  pattern = "Ha*M*ent*"
 *        name = "HashMapEntry"
 *        matchRule = {@link #R_PATTERN_MATCH}
 *        result:  { 0, 2, 4, 1, 7, 3 }
 * 
 * @see #camelCaseMatch(String, String, boolean) for more details on the
 * 	camel case behavior
 * @see CharOperation#match(char[], char[], boolean) for more details on the
 * 	pattern match behavior
 *
 * @param pattern the given pattern. If <code>null</code>,
 *     then an empty region (<code>new int[0]</code>) will be returned
 *     showing that the name matches the pattern but no common
 *     character has been found.
 * @param name the given name
 * @param matchRule the rule to apply for the comparison.
 *     The following values are accepted:
 *         . {@link #R_EXACT_MATCH}
 *         . {@link #R_PREFIX_MATCH}
 *         . {@link #R_PATTERN_MATCH}
 *         . {@link #R_CAMELCASE_MATCH}
 *         . {@link #R_CAMELCASE_SAME_PART_COUNT_MATCH}
 * 
 *     Each of these valid values may be also combined with
 *     the {@link #R_CASE_SENSITIVE} flag.
 * 
 *     Some examples:
 *         . {@link #R_EXACT_MATCH} | {@link #R_CASE_SENSITIVE}:
 *           if an exact case sensitive match is expected,
 *         . {@link #R_PREFIX_MATCH}:
 *           if a case insensitive prefix match is expected,
 *         . {@link #R_CAMELCASE_MATCH}:
 *           if a case insensitive camel case match is expected,
 *         . {@link #R_CAMELCASE_SAME_PART_COUNT_MATCH}
 *            | {@link #R_CASE_SENSITIVE}:
 *           if a case sensitive camel case with same parts count match
 *           is expected,
 *         . etc.
 * 
 * @return an array of <code>int</code> having two slots per returned
 *     regions (the first one is the region starting index and the second one
 *     is the region length or <code>null</code> if the given name does not
 *     match the given pattern).
 *
 *     The returned regions may be empty (<code>new int[0]</code>) if the
 *     pattern is <code>null</code> (whatever the match rule is). The returned
 *     regions will also be empty if the pattern is only made of <code>'?'</code>
 *     and/or <code>'*'</code> character(s) (e.g. <code>'*'</code>,
 *     <code>'?*'</code>, <code>'???'</code>, etc.) when using a pattern
 *     match rule.
 * 
 * @since 3.5
 */
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=264991">264991</a>
Wrong 'unused' problem reported
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=237742">237742</a>
[javadoc] Javadoc tag name validation is incorrect
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=264843">264843</a>
[1.5][compiler] Eclipse compiler fails to reject invalid code with primitives autoboxed to generics
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=264881">264881</a>
[1.5][compiler]Incorrect unchecked conversion warnings for return types
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=201912">201912</a>
[compiler] Unused public members of private classes not flagged
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=264817">264817</a>
[search] &lt;char&gt; + * returns 'null' from SearchPattern.getMatchingRegions(String, String, int)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=264816">264816</a>
[search] AIOOBE in StringOperation.getPatternMatchingRegions(..) with pattern &quot;?*&quot;
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=250454">250454</a>
[search] Cannot find method references between projects
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=218605">218605</a>
[search] SearchPattern: provide way to get the matching regions
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=263558">263558</a>
Can't compile package-info.java from FindBugs with 3.5 Eclipse
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=264443">264443</a>
[parser] ASTParser.createASTs and IVariableBinding

<a name="v_938"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M6 - February 10, 2009
<br>Project org.eclipse.jdt.core v_938
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_938">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=261594">261594</a>
Adjust code to new PRE_REFRESH semantics
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=263877">263877</a>
[1.5][compiler] forward reference error flagged within enum
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=263633">263633</a>
[1.5][compiler] Invalid type mismatch for after generic method inference
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=262932">262932</a>
[assist] Constructor completion makes array allocation difficult
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=263653">263653</a>
patch for jdt.core.model.tests to accommodate icu 4.0.1
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=246627">246627</a>
[ast rewrite] Wrong indentation for statement inserted before SwitchCase

<a name="v_937"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M6 - February 3, 2009
<br>Project org.eclipse.jdt.core v_937
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_937">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=202393">202393</a>
[compiler] Incomplete code coverage or useless statement within ThrowStatement#resolve
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=263215">263215</a>
[1.5][compiler]  I20090129-1200 generates suddenly an generics compile error that 3.5M4  didnt do
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=261510">261510</a>
[compiler] Deadlock in static initializer of JDT classes
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=262517">262517</a>
[ast rewrite] Whitespace settings in formatter ignored when adding annotation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=260848">260848</a>
[perfs] Regression on JDT/Core plugin initialization performance test
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=257716">257716</a>
[compiler] Erroneous blank field may not have been initialized
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=262408">262408</a>
remove deprecated NamingConventions.VK_CONSTANT_FIELD
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=262717">262717</a>
Wrong line numbers in classfile
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=262568">262568</a>
improve Javadoc for ICompilationUnit.applyTextEdit(TextEdit, IProgressMonitor)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=262389">262389</a>
Internal code must not use ICompilationUnit.applyTextEdit

<a name="v_936"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M5 - January 27, 2009 - 3.5 MILESTONE 5
<br>Project org.eclipse.jdt.core v_936
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_936">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=262304">262304</a>
[1.5][compiler] Enum constant in annotation value: javac vs Eclipse differ

<a name="v_935"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M5 - January 25, 2009
<br>Project org.eclipse.jdt.core v_935
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_935">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>Added APIs to take into account the generic type and the rank of a wildcard type binding:
       <code>ITypeBinding#getGenericTypeOfWildcardType()</code>, <code>ITypeBinding#getRank()</code>, and
       <code>BindingKey#createWildcardTypeBindingKey(String genericTypeKey, char boundKind, String boundTypeKey, int rank)</code>.</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=262208">262208</a>
[1.5][compiler]Incorrect @Override and name clash errors 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=262209">262209</a>
[1.5][compiler]Incorrect ambiguous method calls 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=234609">234609</a>
[dom] BindingKey#toSignature() fails with key from createWilcardTypeBindingKey(..)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=261973">261973</a>
[assist] Constructor completion should be improved (bug 6930)

<a name="v_934"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M5 - January 20, 2009
<br>Project org.eclipse.jdt.core v_934
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_934">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>Added new API to propose constructor completion<br>
When "new ArrayLis" is completed now constructors are proposed instead of type references.
This new completion kind is <code>CONSTRUCTOR_INVOCATION</code> and this proposal has always a 
<code>TYPE_REF</code> required proposal to describe the type of the constructor.
The <code>CONSTRUCTOR_INVOCATION</code> has "()" as completion string and <code>TYPE_REF</code> has
"java.util.ArrayList" as completion string.<br>
There is also a similar new API to complete anonymous type constructor: <code>ANONYMOUS_CLASS_CONSTRUCTOR_INVOCATION</code><br>


<pre>

	/**
	 * Completion is a reference to a constructor.
	 * This kind of completion might occur in a context like
	 * &lt;code&gt;"new Lis"&lt;/code&gt; and complete it to
	 * &lt;code&gt;"new List();"&lt;/code&gt; if List is a class that is not abstract.
	 * &lt;p&gt;
	 * The following additional context information is available
	 * for this kind of completion proposal at little extra cost:
	 * &lt;ul&gt;
	 * &lt;li&gt;{@link #getDeclarationSignature()} -
	 * the type signature of the type that declares the constructor that is referenced
	 * &lt;/li&gt;
	 * &lt;li&gt;{@link #getFlags()} -
	 * the modifiers flags of the constructor that is referenced
	 * &lt;/li&gt;
	 * &lt;li&gt;{@link #getName()} -
	 * the simple name of the constructor that is referenced
	 * &lt;/li&gt;
	 * &lt;li&gt;{@link #getSignature()} -
	 * the method signature of the constructor that is referenced
	 * &lt;/li&gt;
	 * &lt;/ul&gt;
	 * &lt;/p&gt;
	 * &lt;p&gt;
	 * This kind of proposal could require a long computation, so they are computed only if completion operation is called with a {@link IProgressMonitor}
	 * (eg. {@link ICodeAssist#codeComplete(int, CompletionRequestor, IProgressMonitor)}).&lt;br&gt;
	 * This kind of proposal is always is only proposals with a {@link #TYPE_REF} required proposal, so this kind of required proposal must be allowed:
	 * &lt;code&gt;requestor.setAllowsRequiredProposals(CONSTRUCTOR_INVOCATION, TYPE_REF, true)&lt;/code&gt;.
	 * &lt;/p&gt;
	 *
	 * @see #getKind()
	 * @see CompletionRequestor#setAllowsRequiredProposals(int, int, boolean)
	 * 
	 * @since 3.5
	 */
	public static final int CONSTRUCTOR_INVOCATION = 26;
	
	/**
	 * Completion is a reference of a constructor of an anonymous class.
	 * This kind of completion might occur in a context like
	 * &lt;code&gt;"new Lis^;"&lt;/code&gt; and complete it to
	 * &lt;code&gt;"new List() {}"&lt;/code&gt; if List is an interface or abstract class.
	 * &lt;p&gt;
	 * The following additional context information is available
	 * for this kind of completion proposal at little extra cost:
	 * &lt;ul&gt;
	 * &lt;li&gt;{@link #getDeclarationSignature()} -
	 * the type signature of the type being implemented or subclassed
	 * &lt;/li&gt;
	 * &lt;li&gt;{@link #getDeclarationKey()} -
	 * the type unique key of the type being implemented or subclassed
	 * &lt;/li&gt;
	 * &lt;li&gt;{@link #getSignature()} -
	 * the method signature of the constructor that is referenced
	 * &lt;/li&gt;
	 * &lt;li&gt;{@link #getKey()} -
	 * the method unique key of the constructor that is referenced
	 * if the declaring type is not an interface
	 * &lt;/li&gt;
	 * &lt;li&gt;{@link #getFlags()} -
	 * the modifiers flags of the constructor that is referenced
	 * &lt;/li&gt;
	 * &lt;/ul&gt;
	 * &lt;/p&gt;
	 * &lt;p&gt;
	 * This kind of proposal could require a long computation, so they are computed only if completion operation is called with a {@link IProgressMonitor}
	 * (eg. {@link ICodeAssist#codeComplete(int, CompletionRequestor, IProgressMonitor)})&lt;br&gt;
	 * This kind of proposal is always is only proposals with a {@link #TYPE_REF} required proposal, so this kind of required proposal must be allowed:
	 * &lt;code&gt;requestor.setAllowsRequiredProposals(CONSTRUCTOR_INVOCATION, TYPE_REF, true)&lt;/code&gt;.
	 * &lt;/p&gt;
	 *
	 * @see #getKind()
	 * @see CompletionRequestor#setAllowsRequiredProposals(int, int, boolean)
	 * 
	 * @since 3.5
	 */
	public static final int ANONYMOUS_CLASS_CONSTRUCTOR_INVOCATION = 27;
</pre>
These new proposals can require a long computation so they are proposed only if code assist was called with a progress monitor.
To avoid that the code assist operation takes too much time a <code>IProgressMonitor</code> which automatically cancel the code
assist operation when a specified amount of time is reached could be used.

<pre>
new IProgressMonitor() {
    private final static int TIMEOUT = 500; //ms
    private long endTime;
    public void beginTask(String name, int totalWork) {
        fEndTime= System.currentTimeMillis() + TIMEOUT;
    }
    public boolean isCanceled() {
        return endTime &lt;= System.currentTimeMillis();
    }
    ...
 };
</pre>
</li>
<li>Fix for <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=6930">bug 6930</a> required the index version to be incremented. 
    Indexes will be automatically regenerated upon subsequent search queries (accounting for indexing notification in search progress 
    dialogs) and the size of the new indexes will be bigger.
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=260717">260717</a>
[assist] Constructors should be proposed even when the declaring type is not imported
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=6930">6930</a>
[assist] Constructor completion
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=220311">220311</a>
[1.5][compiler] package-info.java does not recognise duplicate annotations as a problem
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=259685">259685</a>
Bogus build error &quot;Cannot nest&quot; xyz &quot;inside library&quot;
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=260798">260798</a>
[formatter] Strange behavior of never join lines

<a name="v_933"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M5 - January 13, 2009
<br>Project org.eclipse.jdt.core v_933
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_933">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>Improved generic method inference to better match JLS 15.12.2.6. The compiler now infers better in presence of unchecked conversion in argument types (raw types). </li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=214948">214948</a>
Incorrect deprecation warning on annotation instances
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=260276">260276</a>
[formatter] Inconsistent formatting of one-line block comment
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=239607">239607</a>
[formatter] Incorrect removal of asterisk (*) within a block comment when formatting
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=254998">254998</a>
[formatter] wrong type comment format during code generation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=258798">258798</a>
[1.5][compiler] Return type should be erased after unchecked conversion during inference
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=258906">258906</a>
[jsr269] Package annotations not visible to Java 6 APT processors
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=259633">259633</a>
[1.5][compiler] Bound of type parameter of class in method not checked
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=149768">149768</a>
Annotations should be a compilation dependency
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=260257">260257</a>
Reduce space taken by SourceRefElementInfos
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=259607">259607</a>
Deadlock opening launch configuration dialog

<a name="v_932"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M5 - January 6, 2009
<br>Project org.eclipse.jdt.core v_932
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_932">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=258145">258145</a>
Fup of bug 252555, JME is thrown when package-info.java exists twice in the same project
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=259129">259129</a>
[compiler] Fup of bug 258950, wrong line number attribute for cascading method invocations

<a name="v_931"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M5 - December 16, 2008
<br>Project org.eclipse.jdt.core v_931
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_931">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=171136">171136</a>
[buildpath] Illegal type of archive for required library is an incorrect message.

<a name="v_930"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M4 - December 10, 2008 - 3.5 MILESTONE 4
<br>Project org.eclipse.jdt.core v_930
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_930">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=255008">255008</a>
[compiler] Assert statement discrepancy with javac caused by an uninitialized variable
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=258039">258039</a>
[1.5][compiler] Misleading error message for &quot;instanceof List&lt;Object&gt;&quot;

<a name="v_929"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M4 - December 8, 2008
<br>Project org.eclipse.jdt.core v_929
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_929">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>Added property to adjust the size of the openable cache: "org.eclipse.jdt.core.javamodelcache.ratio". For example, starting Eclipse as follows will increase the
     size of the openable cache by 50%: 
     <pre>eclipse.exe -vmArgs -Dorg.eclipse.jdt.core.javamodelcache.ratio=1.5</pre>
</li>
<li>
As users may want to have different behavior in comments, the new formatter
preference to preserve line breaks is now controlled by two different options:
<ul>
<li>for the already wrapped code lines:<br>
<code>DefaultCodeFormatterConstants.FORMATTER_JOIN_WRAPPED_LINES</code>
<pre>
/**
 * FORMATTER / Option to specify whether the formatter can join wrapped lines or not
 * 
 * 		For example, the wrapped lines of method foo return statement in following test case:
 * 			class X {
 * 			String foo() {
 * 			return "select x "
 * 			       + "from y "
 * 			       + "where z=a";
 * 			}
 * 			}
 *
 * 		will be preserved by the formatter when the new preference is used
 * 		even if the maximum line width would give it enough space to join the lines.
 * 		Hence produces the following output:
 * 			class X {
 * 			    String foo() {
 * 			        return "select x "
 * 			                + "from y "
 * 			                + "where z=a";
 * 			    }
 * 			}
 *
 *     - option id:         "org.eclipse.jdt.core.formatter.join_wrapped_lines"
 *     - possible values:   { TRUE, FALSE }
 *     - default:           TRUE
 * 
 * @since 3.5
 */
</pre>
</li>
<li>for the lines in comments:<br>
<code>DefaultCodeFormatterConstants.FORMATTER_JOIN_LINES_IN_COMMENTS</code>
<pre>
/**
 * FORMATTER / Option to specify whether the formatter can join text lines in comments or not
 * 
 * 		For example, the following comment:
 * 			/**
 * 			 * The foo method.
 * 			 * foo is a substitute for bar.
 * 			 */
 * 			public class X {
 * 			}
 * 
 * 		will be unchanged by the formatter when this new preference is used,
 * 		even if the maximum line width would give it enough space to join the lines.
 *
 *     - option id:         "org.eclipse.jdt.core.formatter.join_lines_in_comments"
 *     - possible values:   { TRUE, FALSE }
 *     - default:           TRUE
 *
 * @since 3.5
 */
</pre>
</li>
</ul>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=257907">257907</a>
[Formatter] FORMATTER_PRESERVE_EXISTING_LINE_BREAKS needs clarification
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=257906">257906</a>
[Formatter] should have separate 'preserve existing line breaks' for code and comment formatting
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=232816">232816</a>
[buildpath] Misleading problem text for missing jar in user library
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=257849">257849</a>
[1.5][compiler] Internal compiler error using generics w/ abstract classes &amp; interfaces
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=257869">257869</a>
Adjust Java model cache size using a property

<a name="v_928"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M4 - December 7, 2008
<br>Project org.eclipse.jdt.core v_928
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_928">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>
Added a new formatter preference to preserve existing breaks in already wrapped and comments lines.<br>
<p>
For example, the wrapped lines of method foo return statement in following test case:
</p>
<pre>
class X {
String foo() {
return "select x "
       + "from y "
       + "where z=a";
}
}
</pre>
will be preserved by the formatter when the new preference is used, hence produces
now the following output:
<pre>
class X {
    String foo() {
        return "select x "
                + "from y "
                + "where z=a";
    }
}
</pre>
Similarly, following comment:
<pre>
/**
 * The foo method.
 * foo is a substitute for bar.
 */
public class X {
}
</pre>
is now unchanged by the formatter when this new preference is used...<br>
<p>
This diagnosis is controlled by the option:<br>
<code>DefaultCodeFormatterConstants.FORMATTER_PRESERVE_EXISTING_LINE_BREAKS</code>:</p>
<pre>
/**
 * FORMATTER / Option to specify whether the formatter should preserve existing line breaks or not
 *     - option id:         "org.eclipse.jdt.core.formatter.preserve_existing_line_breaks"
 *     - possible values:   { TRUE, FALSE }
 *     - default:           FALSE
 * @since 3.5
 */
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=257434">257434</a>
[1.5][compiler] Should detect type mismatch after capture
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=257384">257384</a>
AIOOBE during problem reporting
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=239130">239130</a>
[formatter] Comment formatter does not keep blank lines after @see references
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=198074">198074</a>
[formatter] the code formatter doesn't respect my new lines
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=256799">256799</a>
[formatter] Formatter wrongly adds space to //$FALL-THROUGH$ is

<a name="v_927"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M4 - December 2, 2008
<br>Project org.eclipse.jdt.core v_927
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_927">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>
Improved dead code detection by having it (optionally) tolerate trivial IF statement,
such as <code>if (DEBUG) ...</code>. This extra option is defined by
<code>JavaCore.COMPILER_PB_DEAD_CODE_IN_TRIVIAL_IF_STATEMENT</code>.
<pre>
* Compiler option ID: Reporting Dead Code Inside Trivial If Statement.
* When enabled, the compiler will signal presence of dead code inside trivial IF statement, e.g. if (DEBUG)...
* The severity of the problem is controlled with option {@link #COMPILER_PB_DEAD_CODE}.
* 
* Option id:"org.eclipse.jdt.core.compiler.problem.deadCodeInTrivialIfStatement"
* Possible values:{ "enabled", "disabled" }
* Default:"warning"
</pre>
</li>
<li>Dead code detection warning also got enabled by default.
<pre>
* Compiler option ID: Reporting Dead Code.
* When enabled, the compiler will issue an error or a warning if some non fatal dead code is detected. For instance, if (false) foo();
* is not reported as truly unreachable code by the Java Language Specification. If this diagnostic is enabled, then the invocation of foo() is
* going to be signaled as being dead code.
* Option id:"org.eclipse.jdt.core.compiler.problem.deadCode"
* Possible values:{ "error", "warning", "ignore" }
* Default:"warning"
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=256329">256329</a>
Impossible NPE in JavaModelManager.getOptions
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=256882">256882</a>
[compiler] Enable DeadCode detection by default
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=255970">255970</a>
test tear down failed causing cascade of failures
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=207093">207093</a>
Perf: adding a new top-level package is slow if many source files exist
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=252948">252948</a>
Unncessary compilation when adding packages with an existing path segment at the beginning
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=256735">256735</a>
Marker property value is too long for internal compiler error (java.lang.StackOverflowError)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=227986">227986</a>
Avoid duplicated strings in Java model
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=256463">256463</a>
[compiler] Support common debug pattern in unreachable code detection
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=256679">256679</a>
[perfs] SearchAllTypeNames performance tests are slower on eplnx2
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=228845">228845</a>
[hierarchy] Type hierarchy should include subtypes in primary working copies
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=252571">252571</a>
[buildpath] External folder appears empty after workspace move
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=256404">256404</a>
Wrong handle identifier for external library folder

<a name="v_926"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M4 - November 25, 2008
<br>Project org.eclipse.jdt.core v_926
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_926">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>
Added a new compiler warning to signal presence of dead code,  e.g. <code>if (false) deadCode(); </code>.
This diagnosis is controlled by option: 
<code>JavaCore.COMPILER_PB_DEAD_CODE</code> and produces a problem marker which ID is <code>IProblem.DeadCode</code> problem ID.
<pre>
* Compiler option ID: Reporting Dead Code.
* When enabled, the compiler will issue an error or a warning if some non fatal dead code is detected. For instance, if (false) foo();
* is not reported as truly unreachable code by the Java Language Specification. If this diagnostic is enabled, then the invocation of foo() is
* going to be signaled as being dead code.
* Option id:"org.eclipse.jdt.core.compiler.problem.deadCode"
* 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=251504">251504</a>
[index] Wrong indexes may be used while performing a search request
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48399">48399</a>
[compiler] Enhance unreachable code detection
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=254825">254825</a>
[javadoc] compile error when referencing outer param from inner class javadoc
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=252555">252555</a>
[javadoc] NPE on duplicate package-info
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=251690">251690</a>
[compiler] NPE if type collides with a package
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=249134">249134</a>
[compiler] error message (implement abstract method) not as intended
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=154162">154162</a>
[1.5][compiler] Uninformative error message for qualified enum constants in switch statement
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=255974">255974</a>
Abusive usage of InvalidInputException in the compiler
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=251693">251693</a>
NamingConventions.suggestXXXNames should call suggestVariableNames()
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=255345">255345</a>
Problems in new NamingConventions APIs
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=255452">255452</a>
[1.5][compiler] Eclipse allows forward reference in enum constructor

<a name="v_925"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M4 - November 18, 2008
<br>Project org.eclipse.jdt.core v_925
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_925">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=255501">255501</a>
EncodingTests failing when run by itself
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=255035">255035</a>
[compiler] Internal compile error gets reported (NPE)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=250297">250297</a>
[compiler] NPE in org.eclipse.jdt.internal.compiler.problem.ProblemReporter.missingTypeInMethod(ProblemReporter.java:4925)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=232558">232558</a>
[compiler] += is not allowed between Object and String

<a name="v_924"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M4 - November 10, 2008
<br>Project org.eclipse.jdt.core v_924
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_924">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=252868">252868</a>
[batch][compiler] ConcurrentModificationException in org.eclipse.jdt.internal.compiler.batch.ClasspathJar.fetchLinkedJars
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=236242">236242</a>
[compiler][1.7] compiler difference to javac 7 involving parameterized uses of raw methods
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=211256">211256</a>
[ast rewrite] whitespace missing between return and expression
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=253891">253891</a>
Incorrect tag closure in JavaModel javadoc
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=252120">252120</a>
[1.5][compiler] raw type diagnostic not coherent with javac one

<a name="v_923"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M4 - November 4, 2008
<br>Project org.eclipse.jdt.core v_923
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_923">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=250211">250211</a>
[search] Organize Imports Hangs
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=241821">241821</a>
[compiler] Multiple interfaces and incompatible return types
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=251279">251279</a>
[1.5][compiler] Covariant generics interfaces causes compile error

<a name="v_922"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M3 - October 29, 2008 - 3.5 MILESTONE 3
<br>Project org.eclipse.jdt.core v_922
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_922">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=252481">252481</a>
[code assist] NPE in findAllTypes

<a name="v_921"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M3 - October 28, 2008
<br>Project org.eclipse.jdt.core v_921
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_921">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=252264">252264</a>
Invalid classpath header messages should be logged in verbose mode only
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=252392">252392</a>
Missing jars referenced in the Class-Path: clause of a MANIFEST.MF file should not be reported as errors
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=247845">247845</a>
[misc] Errors in log from fetching Javadoc when working disconnected

<a name="v_920"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M3 - October 25, 2008
<br>Project org.eclipse.jdt.core v_920
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_920">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>NamingConventions has now a more flexible API to suggest variable name: <code>NamingConventions.suggestVariableNames()</code>.<br>
The same method can be used to suggest local, instance field, static field and constant field name.
This method use a new specific heuristic to generate constant name with upper case and underscore (e.g. <code>CONSTANT_FIELD_NAME</code>).
<pre>
public static String[] suggestVariableNames(
			int variableKind,
			int baseNameKind,
			String baseName,
			IJavaProject javaProject,
			int dim,
			String[] excluded,
			boolean evaluateDefault)
</pre>
</li>
<li>NamingConventions has now an API to compute the name used to generate a variable name: <code>NamingConventions.getBaseName()</code>.<br>
<pre>
public static String getBaseName(
			int variableKind,
			String variableName,
			IJavaProject javaProject)
</pre>
</li>
<li>New options are added to specify the prefixes and suffixes of a constant field: <code>JavaCore.CODEASSIST_STATIC_FIELD_PREFIXES</code> and <code>JavaCore.CODEASSIST_STATIC_FIELD_SUFFIXES</code>.
</li></ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=250975">250975</a>
[1.5][compiler] Stack overflow on static import.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=249785">249785</a>
[javadoc][assist] Javadoc content assist after &quot;@see #&quot; does not work with deprecated member before
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=249692">249692</a>
The ImportRewriteAnalyzer does not honor a formatter setting
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=251814">251814</a>
[1.5][compiler] Dup Enum#valueOf(...) should keep the synthetic one
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=248309">248309</a>
[model] IAnnotatable#getAnnotations() does not work for standard annotations on binary members
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=251518">251518</a>
Tons of invalid API tooling errors when checking out jdt.core
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=251356">251356</a>
Fix for bug 146768 breaks JDT Refactoring and its test
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=249027">249027</a>
NPE in Engine if type collides with a package
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=85946">85946</a>
NamingConventions.suggestFieldNames(..) does not consider 'final' modifier for constants
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=38111">38111</a>
[DCR] Make NamingConventions more flexible

<a name="v_919"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M3 - October 21, 2008
<br>Project org.eclipse.jdt.core v_919
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_919">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>The compiler is now better resilient with duplicate field/method definitions and will avoid secondary errors 
detected when subsenquently using the offending field/method.
</li></ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=251523">251523</a>
[1.5][compiler] Should still flag Enum#valueOf override
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=246276">246276</a>
NPE during code completion
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=249844">249844</a>
IBinding#getJavaElement() always returns null for IAnnotationBindings declared in annotation or enum types
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=146768">146768</a>
[compiler] Should be more resilient with duplicate fields/methods
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=251091">251091</a>
Covariant return types not honored for combined extension and implementation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=251079">251079</a>
Got error dialog after switching default JRE

<a name="v_918"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M3 - October 16, 2008
<br>Project org.eclipse.jdt.core v_918
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_918">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>New API for the ASTVisitor class: <code>org.eclipse.jdt.core.dom.ASTVisitor.preVisit2(ASTNode)</code>.<br>
New API type: <code>org.eclipse.jdt.core.dom.NodeFinder</code>.<br>
All details are available in bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=53024">53024</a>.<br>
These new APIs are still under discussion and are released for JDT/UI adoption.</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=250946">250946</a>
Bogus jar file is added to the project build path
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=250022">250022</a>
Java Model Exception: Java Model Status when getting code assist in debug detail formatter dialog
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=53024">53024</a>
[DOM] Move NodeFinder to a non-internal package
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=250753">250753</a>
[formatter] Insert space between empty braces in array initializers ignored without &quot;Keep empty array initializer on one line&quot;
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=248319">248319</a>
[compiler][1.5] Valid Java source produces class file that doesn't verify (VerifyError, javac compiles correctly)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=249567">249567</a>
Incorrect behavior of Util.getUnresolvedJavaElement(...) method

<a name="v_917"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M3 - October 14, 2008
<br>Project org.eclipse.jdt.core v_917
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_917">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>Duplicate classpath entries are no longer reported if they are duplicate because of the classpath resolution
      (e.g. if two classpath containers add the same entry to the resolved classpath).
       Duplicate classpath entries at the raw classpath level are still reported.
       See <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=175226">bug 175226</a> for details.
</li>
<li>
Added a new compiler warning to report a missing hashCode() method when overriding the equals() method from Object. 
This diagnosis is controlled by option: 
<code>JavaCore.COMPILER_PB_MISSING_HASHCODE_METHOD</code> and produces a problem marker which ID is
<code>IProblem.MissingHashCodeMethod</code> problem ID.
<pre>
  Compiler option ID: Reporting Missing HashCode Method.
  When enabled, the compiler will issue an error or a warning if a type
  overrides Object.equals(Object) but does not override hashCode().
  Option id: "org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod"
  Possible values: { "error", "warning", "ignore" }
  Default: "ignore"
</pre>
</li>
<li>The "Class-Path:" clause of a jar manifest is now honored in the Java model. Jars referenced by "Class-Path:" are now automatically
      added to the build path. See <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=198572">bug 198572</a> for details.</li>
<li>Code Select search types outside the current project scope if no types are found in this scope</li>
<li>Code Assist operation can be called with a progress monitor:
<pre>
public interface ICodeAssist {
	/**
	 * Performs code completion at the given offset position in this compilation unit,
	 * reporting results to the given completion requestor. The &lt;code&gt;offset&lt;/code&gt;
	 * is the 0-based index of the character, after which code assist is desired.
	 * An &lt;code&gt;offset&lt;/code&gt; of -1 indicates to code assist at the beginning of this
	 * compilation unit.
	 * It considers types in the working copies with the given owner first. In other words,
	 * the owner's working copies will take precedence over their original compilation units
	 * in the workspace.
	 * &lt;p&gt;
	 * Note that if a working copy is empty, it will be as if the original compilation
	 * unit had been deleted.
	 * &lt;/p&gt;
	 *
	 * @param offset the given offset position
	 * @param requestor the given completion requestor
	 * @param owner the owner of working copies that take precedence over their original compilation units
	 * @exception JavaModelException if code assist could not be performed. Reasons include:&lt;ul&gt;
	 *  &lt;li&gt;This Java element does not exist (ELEMENT_DOES_NOT_EXIST)&lt;/li&gt;
	 *  &lt;li&gt; The position specified is &lt; -1 or is greater than this compilation unit's
	 *      source length (INDEX_OUT_OF_BOUNDS)
	 * &lt;/ul&gt;
	 *
	 * @exception IllegalArgumentException if &lt;code&gt;requestor&lt;/code&gt; is &lt;code&gt;null&lt;/code&gt;
	 * @since 3.0
	 * @deprecated Use {@link #codeComplete(int, CompletionRequestor, WorkingCopyOwner)} instead.
	 */
	void codeComplete(int offset, ICompletionRequestor requestor, WorkingCopyOwner owner)
		throws JavaModelException;

	/**
	 * Performs code completion at the given offset position in this compilation unit,
	 * reporting results to the given completion requestor. The &lt;code&gt;offset&lt;/code&gt;
	 * is the 0-based index of the character, after which code assist is desired.
	 * An &lt;code&gt;offset&lt;/code&gt; of -1 indicates to code assist at the beginning of this
	 * compilation unit.
	 * &lt;p&gt;
	 *
	 * @param offset the given offset position
	 * @param requestor the given completion requestor
	 * @exception JavaModelException if code assist could not be performed. Reasons include:&lt;ul&gt;
	 *  &lt;li&gt;This Java element does not exist (ELEMENT_DOES_NOT_EXIST)&lt;/li&gt;
	 *  &lt;li&gt; The position specified is &lt; -1 or is greater than this compilation unit's
	 *      source length (INDEX_OUT_OF_BOUNDS)
	 * &lt;/ul&gt;
	 *
	 * @exception IllegalArgumentException if &lt;code&gt;requestor&lt;/code&gt; is &lt;code&gt;null&lt;/code&gt;
	 * @since 3.0
 	 */
	void codeComplete(int offset, CompletionRequestor requestor)
		throws JavaModelException;
}

public interface IType {
	/**
	 * Do code completion inside a code snippet in the context of the current type.
	 *
	 * If the type can access to his source code and the insertion position is valid,
	 * then completion is performed against source. Otherwise the completion is performed
	 * against type structure and given locals variables.
	 *
	 * @param snippet the code snippet
	 * @param insertion the position with in source where the snippet
	 * is inserted. This position must not be in comments.
	 * A possible value is -1, if the position is not known.
	 * @param position the position within snippet where the user
	 * is performing code assist.
	 * @param localVariableTypeNames an array (possibly empty) of fully qualified
	 * type names of local variables visible at the current scope
	 * @param localVariableNames an array (possibly empty) of local variable names
	 * that are visible at the current scope
	 * @param localVariableModifiers an array (possible empty) of modifiers for
	 * local variables
	 * @param isStatic whether the current scope is in a static context
	 * @param requestor the completion requestor
	 * @param monitor the progress monitor used to report progress
	 * @exception JavaModelException if this element does not exist or if an
	 *		exception occurs while accessing its corresponding resource.
	 * @since 3.5
	 */
	void codeComplete(
		char[] snippet,
		int insertion,
		int position,
		char[][] localVariableTypeNames,
		char[][] localVariableNames,
		int[] localVariableModifiers,
		boolean isStatic,
		CompletionRequestor requestor,
		IProgressMonitor monitor)
		throws JavaModelException;

	/**
	 * Do code completion inside a code snippet in the context of the current type.
	 * It considers types in the working copies with the given owner first. In other words,
	 * the owner's working copies will take precedence over their original compilation units
	 * in the workspace.
	 * &lt;p&gt;
	 * Note that if a working copy is empty, it will be as if the original compilation
	 * unit had been deleted.
	 * &lt;/p&gt;&lt;p&gt;
	 * If the type can access to his source code and the insertion position is valid,
	 * then completion is performed against source. Otherwise the completion is performed
	 * against type structure and given locals variables.
	 * &lt;/p&gt;
	 *
	 * @param snippet the code snippet
	 * @param insertion the position with in source where the snippet
	 * is inserted. This position must not be in comments.
	 * A possible value is -1, if the position is not known.
	 * @param position the position with in snippet where the user
	 * is performing code assist.
	 * @param localVariableTypeNames an array (possibly empty) of fully qualified
	 * type names of local variables visible at the current scope
	 * @param localVariableNames an array (possibly empty) of local variable names
	 * that are visible at the current scope
	 * @param localVariableModifiers an array (possible empty) of modifiers for
	 * local variables
	 * @param isStatic whether the current scope is in a static context
	 * @param requestor the completion requestor
	 * @param owner the owner of working copies that take precedence over their original compilation units
	 * @param monitor the progress monitor used to report progress
	 * @exception JavaModelException if this element does not exist or if an
	 *		exception occurs while accessing its corresponding resource.
	 * @since 3.5
	 */
	void codeComplete(
		char[] snippet,
		int insertion,
		int position,
		char[][] localVariableTypeNames,
		char[][] localVariableNames,
		int[] localVariableModifiers,
		boolean isStatic,
		CompletionRequestor requestor,
		WorkingCopyOwner owner,
		IProgressMonitor monitor)
		throws JavaModelException;
}

public interface IEvaluationContext {
	/**
	 * Performs a code completion at the given position in the given code snippet,
	 * reporting results to the given completion requestor.
	 * &lt;p&gt;
	 * Note that code completion does not involve evaluation.
	 * &lt;p&gt;
	 *
	 * @param codeSnippet the code snippet to complete in
	 * @param position the character position in the code snippet to complete at,
	 *   or -1 indicating the beginning of the snippet
	 * @param requestor the code completion requestor capable of accepting all
	 *    possible types of completions
	 * @param monitor the progress monitor used to report progress
	 * @exception JavaModelException if code completion could not be performed. Reasons include:
	 *  &lt;ul&gt;
	 *	  &lt;li&gt;The position specified is less than -1 or is greater than the snippet's
	 *	    length (INDEX_OUT_OF_BOUNDS)&lt;/li&gt;
	 *  &lt;/ul&gt;
	 * @since 3.5
	 */
	public void codeComplete(
		String codeSnippet,
		int position,
		CompletionRequestor requestor,
		IProgressMonitor monitor)
		throws JavaModelException;

	/**
	 * Performs a code completion at the given position in the given code snippet,
	 * reporting results to the given completion requestor.
	 * It considers types in the working copies with the given owner first. In other words,
	 * the owner's working copies will take precedence over their original compilation units
	 * in the workspace.
	 * &lt;p&gt;
	 * Note that if a working copy is empty, it will be as if the original compilation
	 * unit had been deleted.
	 * &lt;/p&gt;
	 * &lt;p&gt;
	 * Note that code completion does not involve evaluation.
	 * &lt;p&gt;
	 *
	 * @param codeSnippet the code snippet to complete in
	 * @param position the character position in the code snippet to complete at,
	 *   or -1 indicating the beginning of the snippet
	 * @param requestor the code completion requestor capable of accepting all
	 *    possible types of completions
	 * @param owner the owner of working copies that take precedence over their original compilation units
	 * @param monitor the progress monitor used to report progress
	 * @exception JavaModelException if code completion could not be performed. Reasons include:
	 *  &lt;ul&gt;
	 *	  &lt;li&gt;The position specified is less than -1 or is greater than the snippet's
	 *	    length (INDEX_OUT_OF_BOUNDS)&lt;/li&gt;
	 *  &lt;/ul&gt;
	 * @since 3.5
	 */
	public void codeComplete(
		String codeSnippet,
		int position,
		CompletionRequestor requestor,
		WorkingCopyOwner owner,
		IProgressMonitor monitor)
		throws JavaModelException;
}
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=250685">250685</a>
[assist] Code assist can bot be canceled when search indexes are not ready
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=250083">250083</a>
[model] Search indexes are not correctly updated
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=175226">175226</a>
[buildpath] Build path contains duplicate entry
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=38751">38751</a>
Optionally show compiler warning when equals() is overriden but hashCode() is not
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=249930">249930</a>
Deadlock with JavaModelManager$PerProjectInfo
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=250398">250398</a>
[assist] Faults in javadoc of IType#codeComplete
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=247941">247941</a>
[assist] Add progress monitor to code completion
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=243820">243820</a>
[1.5][compiler] Method has same erasure as an interface method but is not considered to implement it
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=232880">232880</a>
[select] Navigate to classes in workspace even if not on classpath
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=198572">198572</a>
eclipse does not respect class-path manifest of external jars

<a name="v_916"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M3 - October 7, 2008
<br>Project org.eclipse.jdt.core v_916
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_916">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>
The new compiler warning (added during 3.5M1) to signal absence of <code>synchronized</code> modifier 
when overriding a synchronized method got disabled by default.
<pre>
  Compiler option ID: Reporting Missing Synchronized Modifier On Inherited Method.
  When enabled, the compiler will issue an error or a warning if a method
  overrides a synchronized method without having a synchronized modifier.
  Option id: "org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod"
  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=249140">249140</a>
[1.5][compiler] asymmetric errors with covariant inherited methods
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=244762">244762</a>
[1.5][compiler] Internal compiler error java.lang.NullPointerException after importing file
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=227527">227527</a>
[1.5][compiler] Useless error message for local enum
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=227530">227530</a>
[1.5][compiler] Incomplete error message for annotation inside a member type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=247981">247981</a>
save on a single file (any type - java source, text file  
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=249584">249584</a>
CompilerParticipant constants should be marked as such
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=161977">161977</a>
[compiler] Identical branches in org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding#syntheticMethods
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=249535">249535</a>
[compiler] Consider disabling the syncOverride warning/error by default
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=247666">247666</a>
[1.5][compiler] AIOOBE inside missing type reporting
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=249321">249321</a>
IPackagerFragmentRoot#getRawClasspathEntry() returns resolved &quot;..&quot; path
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=249107">249107</a>
[compiler] IllegalAccessError in presence of synthetic field access
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=247953">247953</a>
[1.5][compiler] IllegalAccessError: tried to access class p.IA from class X

<a name="v_915"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M3 - September 30, 2008
<br>Project org.eclipse.jdt.core v_915
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_915">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>Added support for ".." in classpath for library, variable and container entries.
		See <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=57732">bug 57732</a> for details.</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=248680">248680</a>
Error when create a new element (class, interface,...)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=57732">57732</a>
[buildpath] relative build classpath leading outside of eclipse workspace
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=247612">247612</a>
[compiler] Compiler could avoid allocating field bindings for receiver type change
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=247757">247757</a>
[model] Move a class to root package, lose block comment at the top
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=241400">241400</a>
[LinkedResources] Random errors when changing project settings
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=248313">248313</a>
[DOM] Javadoc bug in StringLiteral#setLiteralValue(String)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=248308">248308</a>
Typo in Javadoc of IBinding#getAnnotations()
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=248243">248243</a>
Add apt.pluggable.core as x-friend for jdt.core

<a name="v_914"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M3 - September 23, 2008
<br>Project org.eclipse.jdt.core v_914
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_914">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=247835">247835</a>
SearchPattern extends non-API type InternalSearchPattern
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=245858">245858</a>
CompletionProposal extends non-API type InternalCompletionProposal
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=247688">247688</a>
SearchDocument extends non-API type InternalSearchDocument
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=245860">245860</a>
BuildContext extends non-API type CompilationParticipantResult
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=247292">247292</a>
[compiler] Compiler should avoid allocating method bindings for receiver type change
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=245835">245835</a>
CompletionContext extends non-API type InternalCompletionContext
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=247618">247618</a>
*ReferenceMatch extends non-API type InternalReferenceMatch
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=247307">247307</a>
[1.5][compiler] Array clone return type should be governed by source level instead of compliance
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=128563">128563</a>
[compiler] Inner class compiles but IllegalAccessError if splitted with two output folders

<a name="v_913"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M2 - September 13, 2008 - 3.5 MILESTONE 2
<br>Project org.eclipse.jdt.core v_913
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_913">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=246955">246955</a>
Add API compatibility filter for ITypeRoot
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=211054">211054</a>
[javadoc] @see package reference should raise a warning except for the package declaration
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=243692">243692</a>
[buildpath] Cannot set Attached Source from Class File Editor
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=207765">207765</a>
[javadoc] Javadoc warning on @see reference could be improved
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=247118">247118</a>
Endless loop in Signature.encodeQualifiedName
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=244164">244164</a>
[1.5][compiler] Missing implementation error when referencing a generic field with error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=233187">233187</a>
[javadoc] partially qualified inner types  should be warned
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=170637">170637</a>
[javadoc] incorrect warning about missing parameter javadoc when using many links
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=142990">142990</a>
[model] Rename operation should not use workspace root rule
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=246712">246712</a>
[javadoc] Unexpected warning about missing parameter doc in case of @inheritDoc
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=246682">246682</a>
Inconsistent parser/scanner encoding for commentStart position

<a name="v_912"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M2 - September 9, 2008
<br>Project org.eclipse.jdt.core v_912
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_912">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>Introduced a marker comment (<code>$FALL-THROUGH$</code>) for silencing compiler diagnosis for switch case 
falling through next case. This allows to document intended fall through situations in the code.
Note: The marker comment can also be a block comment, i.e. <code>/* $FALL-THROUGH$ */</code>.
<br>e.g. 
<pre>
    switch(val) {
        case 0 :
            doit(0);
            // $FALL-THROUGH$ - also fall into next case
       case 1:
            doit(1);
            break;
    }
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=245257">245257</a>
[compiler] Allow to suppress fall-through warning
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=240034">240034</a>
[buildpath] Eclipse ignores .classpath file if it is encoded in UTF8 with BOM
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=245963">245963</a>
deprecate unused JavaCore.COMPILER_PB_BOOLEAN_METHOD_THROWING_EXCEPTION
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=237772">237772</a>
[implementation] Deadlock in JDT causing UI freeze
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=114116">114116</a>
[assist] name suggestion for collections
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=246066">246066</a>
[batch] Redundant superinterface warning cannot be activated
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=245973">245973</a>
[compiler] Problem irritant cannot exceed 64bit limit
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=244849">244849</a>
[implementation] Memory leak in DeltaProcessingState#externalTimeStamps ?
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=207657">207657</a>
[search] Exception when refactoring member type to top-level.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=243023">243023</a>
[content assist] RuntimeException thrown by JavaTypeCompletionProposalComputer

<a name="v_911"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M2 - September 2, 2008
<br>Project org.eclipse.jdt.core v_911
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_911">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>
Added a new compiler warning to signal absence of <code>synchronized</code> modifier when overriding a synchronized method. 
This diagnosis is controlled by option: 
<code>JavaCore.COMPILER_PB_MISSING_SYNCHRONIZED_ON_INHERITED_METHOD</code> and produces a problem marker which ID is
<code>IProblem.MissingSynchronizedModifierInInheritedMethod</code> problem ID;
it may be suppressed using <code>@SuppressWarnings("super")</code>.
<pre>
  Compiler option ID: Reporting Missing Synchronized Modifier On Inherited Method.
  When enabled, the compiler will issue an error or a warning if a method
  overrides a synchronized method without having a synchronized modifier.
  Option id: "org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod"
  Possible values: { "error", "warning", "ignore" }
  Default: "warning"
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=222900">222900</a>
[Javadoc] Missing description is warned if valid description is on a new line
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=186858">186858</a>
Intermittent failure of org.eclipse.jdt.core.tests.model.ExclusionPatternsTests#testCreateExcludedPackage2
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=237453">237453</a>
[formatter] Save actions fails to remove excess new lines when set to &quot;format edited lines&quot;
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=245830">245830</a>
ClasspathEntry illegally instantiates AssertionFailedException
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=242029">242029</a>
Multiple source attachment paths don't work when source attachment path points to a folder
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=234583">234583</a>
[formatter] Code formatter should adapt edits instead of regions
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=245576">245576</a>
No error message for updating read-only .classpath file
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=245563">245563</a>
npe in reconciler
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=245518">245518</a>
ICompilationUnit.createType failing with unexpected exception
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=245435">245435</a>
[1.5][compiler] &quot;Value for annotation attribute must be a constant expression&quot; error on valid constant expression
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=245348">245348</a>
[DOM] Annotations are recognized by ASTParser even in COMPILER_SOURCE is set &lt; 1.5
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=241751">241751</a>
Using a ClasspathContainerInitializer requires the use of workspace lock
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=242448">242448</a>
[1.5][compiler] Sun's javac compiles the following but jdt does not
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=239066">239066</a>
[compiler] Overriding a Synchronized Method with a Non-synchronized Method

<a name="v_910"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M2 - August 26, 2008
<br>Project org.eclipse.jdt.core v_910
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_910">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=239096">239096</a>
Implementation oddness in TypeHierarchy#getAllSuper*(IType)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=244549">244549</a>
JavaCore.create(String handleIdentifier) fails for local variable with parameterized type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=241687">241687</a>
[formatter] problem formatting block comments
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=240686">240686</a>
[formatter] Formatter do unexpected things
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=242933">242933</a>
[1.5] NullPointerException for @Range(min=1, max=9999999999999999)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=241345">241345</a>
[formatter] Didn't Format HTML tags is unavailable
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=242646">242646</a>
deadlock on org.eclipse.jdt.internal.core.ExternalFoldersManager

<a name="v_909"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M2 - August 19, 2008
<br>Project org.eclipse.jdt.core v_909
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_909">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=244477">244477</a>
[formatter] Formatter fails on special Java array construct

<a name="v_908"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M2 - August 11, 2008
<br>Project org.eclipse.jdt.core v_908
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_908">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=239833">239833</a>
[compiler] Odd compiler error message "Illegal modifier for the method ..."
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=243715">243715</a>
[DOM] Parser.createASTs() throws exception on 'illogical' JavaDoc
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=243653">243653</a>
ASTRewrite is incorrectly documented

<a name="v_907"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M1 - August 6, 2008 - 3.5 MILESTONE 1
<br>Project org.eclipse.jdt.core v_907
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_907">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=242961">242961</a> [DOM] ITypeBinding.getDeclaredFields returns empty results if any field has undefined type

<a name="v_906"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M1 - July 31, 2008
<br>Project org.eclipse.jdt.core v_906
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_906">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=242292">242292</a>
call to createAST(..) throws IllegalStateException when parser source is not char[]
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=218500">218500</a>
[dom] bug in ITypeBinding.getQualifiedName for member of local type

<a name="v_905"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M1 - July 28, 2008
<br>Project org.eclipse.jdt.core v_905
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_905">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=236096">236096</a>
Incorrectly allow raw return type in overridden method
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=238014">238014</a>
[1.5][compiler] Missing "name clash" error?
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=238817">238817</a>
[1.5][compiler] Unexpected nameclash reported
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=237418">237418</a>
deadlock between auto-build/refresh right after startup
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=241841">241841</a>
[compiler] Compilation error 'incompatible types' should use full qualified class names
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=239439">239439</a>
[1.5][compiler] Behavior change for binding for parameterized type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=106821">106821</a>
[assist] Code assist: Deprecated elements not marked
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=209639">209639</a>
codeSelect does not resolve correct key for implicit method type arguments
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=239117">239117</a>
AST overlapping source ranges in recovered AST
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=230830">230830</a>
[select] Search doesn't find annotated local variable declaration with error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=229092">229092</a>
[batch compiler] error reporting is non-deterministic

<a name="v_904"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M1 - July 21, 2008
<br>Project org.eclipse.jdt.core v_904
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_904">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=169682">169682</a>
In class that compiles and runs when ctrl+space is pressed I get &quot;No completions available&quot;
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=240815">240815</a>
[DOM] CCE in AST#resolveWellKnownType(..)  for java.lang.Boolean without rt.jar
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=235727">235727</a>
misspelling in syntax error message
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=236193">236193</a>
DiagnoseParser has unreachable code

<a name="v_903"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M1 - July 15, 2008
<br>Project org.eclipse.jdt.core v_903
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_903">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=237469">237469</a>
[assist] AbortCompilation in log during normal editing
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=240214">240214</a>
[compiler] final bit should be cleared from class file access flag for anonymous class
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=240349">240349</a>
Improve disassembler output
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=240206">240206</a>
ITypeRoot should have @noimplement tag
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=237937">237937</a>
[javadoc] Wrong &quot;Javadoc: Malformed link reference&quot; if href label contains //
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=237931">237931</a>
[1.6][compiler] wrong signature of String[][] in class file
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=101610">101610</a>
Code assist not offered without transitive dependency
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=239229">239229</a>
[compiler] Regression bug against Eclipse 3.3: cannot resolve correct import

<a name="v_902"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M1 - July 8, 2008
<br>Project org.eclipse.jdt.core v_902
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_902">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=236336">236336</a>
[1.6][compiler] Stack map generation error with 10,000-line method in Java
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=239941">239941</a>
[formatter] Unclosed html tags make the formatter to produce incorrect outputs
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=239719">239719</a>
[formatter] Code formatter destroys pre formatted javadoc comments
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=238923">238923</a>
[1.6][compiler] Internal compiler error caused by a for loop in an initializer block
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=239758">239758</a>
[1.5][compiler] Generic interface inheritance and overriding error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=239305">239305</a>
[compiler] VerifyError caused by casting long to long to int
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=239198">239198</a>
[compiler] NegativeArraySizeException thrown for triple quotes
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=238920">238920</a>
[formatter] Code Formatter removes javadoc status if @category present
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=238853">238853</a>
[formatter] Code Formatter does not properly format valid xhtml (&lt;br /&gt; &amp; &lt;p /&gt;) in javadoc.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=160217">160217</a>
[ast rewrite] ASTRewrite#getListRewrite does not fullfill spec
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=232565">232565</a>
[1.5][compiler] wrong autoboxing code generation leads to VerifyError at runtime

<a name="v_901"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M1 - July 1, 2008
<br>Project org.eclipse.jdt.core v_901
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_901">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=232478">232478</a>
[buildpath] Classpath failed to bind to installed JRE
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=238210">238210</a>
[formatter] CodeFormatter wraps line comments without whitespaces
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=238484">238484</a>
[1.5][compiler] Eclipse generates bad code (major regression)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=235370">235370</a>
Add performance test for bug 234718
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=135906">135906</a>
CompilationUnitStructureRequestor.resolveDuplicates has bad performance
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=169678">169678</a>
[hierarchy] Type Hierarchy on static nested class includes unrelated types
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=95480">95480</a>
[model] Missing INVALID_SIBLING exception when creating a type in an enum type that contains constants
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=235369">235369</a>
DeltaProcessor.resetProjectCaches() should clear the list of projects to reset
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=190840">190840</a>
SourceMapper#computeAllRootPaths(IType) factorisation suggestion
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=148664">148664</a>
[spec] IJavaModel#getJavaProject(String) throws IAE for invalid name
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=231130">231130</a>
[spec] IClassFile.getPath() not specified for external class folders
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=209425">209425</a>
[spec] Ambiguous JavaDoc in ASTParser#setUnitName regarding source folders
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=235272">235272</a>
javadoc of JavaCore#COMPILER_PB_MISSING_JAVADOC_TAG_DESCRIPTION needs improvement
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=235778">235778</a>
Potential race condition computing resolved classpath
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=154865">154865</a>
[hierarchy] Focus on Package only shows classes with missing superclasses
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=236445">236445</a>
NPE in content assist
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=237123">237123</a>
[search] And/OrPatterns miss to override one overload
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=226357">226357</a>
[dom] NPE in MethodBinding.getParameterAnnotations() if some, but not all parameters are annotated
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=120082">120082</a>
Signature is missing capture
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=235882">235882</a>
[compiler] constructor-scoped inner classes unable to recognize final member variable initialization
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=238090">238090</a>
[formatter] New lines wrongly added while formatting too long @see references
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=237942">237942</a>
[formatter] String references are put on next line when over the max line length
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=233259">233259</a>
[formatter] html tag should not be split by formatter


<a name="v_900"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.5M1 - June 24, 2008
<br>Project org.eclipse.jdt.core v_900
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_900">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>Incremented JDT/Core plug-in id to "3.5.0", since added new API/feature.
</li>
<li>Added a new compiler warning to detect comparisons between identical expressions. This diagnosis is controlled by option: 
<code>JavaCore.COMPILER_PB_COMPARING_IDENTICAL</code> and produces a problem marker which ID is
<code>IProblem.ComparingIdentical</code> problem ID.
<pre>
Compiler option ID: Reporting Comparison of Identical Expressions.
When enabled, the compiler will issue an error or a warning if a comparison
is involving identical operands (e.g <code>'x == x'</code>).
  - Option id:"org.eclipse.jdt.core.compiler.problem.comparingIdentical"
  - Possible values: { "error", "warning", "ignore" }
  - Default: "warning"
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=234172">234172</a>
[1.5][select] no hover in qualified name with generics
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=233568">233568</a>
Type in Server Runtime is not resolved in editor
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=217287">217287</a>
[dom]IVariableBinding#getJavaElement() return null for variable inside an initializer
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=235921">235921</a>
[1.5][compiler] Incorrect generic signature attribute created for inner anonymous type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=234619">234619</a>
[1.5][compiler] Object#getClass() has wrong expression type binding with JRE from 1.6
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=115814">115814</a>
[compiler] warning on comparing same to same
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=235004">235004</a>
[compiler] Misleading compiler warning
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=232944">232944</a>
IMember#getJavadocRange() should end with &quot;*/&quot;
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=222665">222665</a>
Error opening workbench
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=216772">216772</a>
IJavaModel#refreshExternalArchives fails to refresh ExternalJavaProject jar cache
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=205917">205917</a>
JavaCore#create(String, WorkingCopyOwner) should deal with null owner
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=237051">237051</a>
[formatter] Formatter insert blank lines after javadoc if javadoc contains Commons Attributes @@ annotations
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=236230">236230</a>
[formatter] SIOOBE while formatting a compilation unit.


<hr>
<p>For earlier build notes, also see <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.jdt.core/notes/R34_buildnotes_jdt-core.html">build notes up to Release 3.4</a>.</p>
<br>
  <p>
    <a href="http://validator.w3.org/check?uri=referer"><img
        src="http://www.w3.org/Icons/valid-html401"
        alt="Valid HTML 4.01 Transitional" height="31" width="88"></a>
  </p>
</body>
</html>

