<!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.7</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.7 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="https://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.7 planning, please refer to <a href="http://www.eclipse.org/jdt/core/r3.7/plan.php">JDT/Core release plan</a>,
	  the next <a href="http://www.eclipse.org/jdt/core/r3.7/plan.php#current-milestone">milestone plan</a>,
	  the overall <a href="http://www.eclipse.org/projects/project-plan.php?planurl=http://www.eclipse.org/eclipse/development/plans/eclipse_project_plan_3_7.xml">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.6 (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_6_maintenance">R3.6.x</a>,
		  <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=R3_5_maintenance">R3.5.x</a>,
		  <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_B83_R37x"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.7.2 - January 18, 2012 - 3.7.2
<br>
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=368435">368435</a>
[compiler] NPE while compile a method with unused local
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=361963">361963</a>
Stack overflow when trying to code complete a generic list

<a name="v_B82_R37x"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.7.2 - January 11, 2012
<br>
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=366131">366131</a>
[1.5][compiler] New generics compile error in Indigo SR1 for code that compiles in earlier Eclipse and javac
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=302850">302850</a>
13 failures in JavaModel tests for the N20100214-2000 Mac OS X - Cocoa test machine

<a name="v_B81_R37x"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.7.2 - December 14, 2011
<br>
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023">367023</a>
Error in JDT Core during AST creation
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=367566">367566</a>
In try-with-resources statement close() method of resource is not called
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=366999">366999</a>
VerifyError: Inconsistent stackmap frames
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=364450">364450</a>
Dubious class path error triggers a full rebuild

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=359177">359177</a>
Test MethodVerifyTest#testBug317719h fails when run with 1.6 JVM

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=361053">361053</a>
java.lang.VerifyError on try-with-resources
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=357110">357110</a>
Problem with inner classes referenced from jars or class folders: &quot;The type ... cannot be resolved&quot;
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=362591">362591</a>
VerifyError: Inconsistent stackmap frames
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=361441">361441</a>
Error in JDT Core during AST creation

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=361938">361938</a>
Formerly working JLS3 parser not working -- Scanner reports com.sun.jdi.InvocationException occurred invoking method.

<a name="v_B77_R37x"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.7.2 - November 2, 2011
<br>Project org.eclipse.jdt.core v_B77_R37x
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_B77_R37x">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>Added a new API OUTPUT_LOCATION_OVERLAPPING_ANOTHER_SOURCE(see bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=287164">287164</a> for details):
<pre>
/**
 * Status constant indicating that the default or specific output folder is overlapping
 * with another source location.
 * @since 3.6.4
 */
public static final int OUTPUT_LOCATION_OVERLAPPING_ANOTHER_SOURCE = 1013;
</pre>
</li>

<li>Added a new option CORE_OUTPUT_LOCATION_OVERLAPPING_ANOTHER_SOURCE to report an output location overlapping another source location(see bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=287164">287164</a> for details):
<pre>
/**
 * Core option ID: Reporting an output location overlapping another source location.
 * Indicate the severity of the problem reported when a source entry's output location overlaps another
 * source entry.
 * 
 * Option id:"org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource"
 * Possible values:{ "error", "warning", "ignore" }
 * Default:"error"
 * 
 * @since 3.6.4
 */
public static final String CORE_OUTPUT_LOCATION_OVERLAPPING_ANOTHER_SOURCE = PLUGIN_ID + ".classpath.outputOverlappingAnotherSource";
</pre>
</li>
</ul>
<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=354766">354766</a>
Javadoc content does not appear in content assist info window for non-static inner class constructors
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=287164">287164</a>
Report build path error if source folder has other source folder as output folder
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=359646">359646</a>
Formatter fails silently if Java source contains 0x8000000000000000L
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=359495">359495</a>
[1.7][compiler] VerifyError in try-finally block with lock encompassing for-each block and unlock in finally clause
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=358827">358827</a>
[1.7] exception analysis for t-w-r spoils null analysis

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=356002">356002</a>
VerifyError &quot;Inconsistent stackmap frames&quot; for switch-string statement with nested for-loop
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=350095">350095</a>
The 2000th (0-based) enum constant is null

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=354536">354536</a>
compiling package-info.java still depends on the order of compilation units
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=348024">348024</a>
Empty AST for class with static inner class in a package with package-info.java
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=353640">353640</a>
AIOOBE in ParameterizedTypeBinding.substitute
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=353535">353535</a>
Eclipse compiler generates wrong bytecode for nested try-with-resources statements
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=354579">354579</a>
Fup of bug 289247: Investigate validity of the fix vis-a-vis JLS.

<a name="v_B74_R37x"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.7.1 - August 10, 2011
<br>Project org.eclipse.jdt.core v_B74_R37x
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_B74_R37x">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>Added a new API in BindingKey to return it's declaring type(see bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=351165">351165</a> for details):
<pre>
/**
 * Returns the binding key of the declaring type of the element represented by this binding key. If the binding key
 * does not represent a member or if the member doesn't have a declaring type, returns <code>null</code>.
 * 
 * <p>
 * Note that only binding keys for references to methods and fields
 * are fully supported. The binding keys for declarations will not have type parameters.
 * 
 * @return the type binding key or <code>null</code>
 * @since 3.7.1
 */
public BindingKey getDeclaringType();
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=317719">317719</a>
Method incorrectly flagged as having same erasure output when return type differs
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=354052">354052</a>
[1.7] NPE in org.eclipse.jdt.internal.compiler.ClassFile.traverse(ClassFile.java:4507)
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=353238">353238</a>
[1.7] update unusedTypeArgs option description for the batch compiler
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=353089">353089</a>
[1.7][compiler] Incorrect name clash error with ecj
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=351165">351165</a>
[1.7] API to get the type arguments of the declaring type for constructor invocations

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

<h3>Problem Reports Fixed</h3>
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=353553">353553</a>
Rename readableNames.properties to avoid translation
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=353085">353085</a>
[1.7] Cannot cast from Object to boolean

<a name="v_B72_R37x"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.7.1 - July 28, 2011
<br>Project org.eclipse.jdt.core v_B72_R37x
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_B72">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>Plugin version has been increment to 3.7.1</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=353251">353251</a>
[1.7] merging Java 7 work to R3_7_maintenance branch

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=351426">351426</a>
[1.7][code assist] CompletionContext.getExpectedTypesKeys() returns wrong type
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=353137">353137</a>
[1.7] Make sure TagBits.AnnotationSafeVarargs and AnnotationPolymorphicSignature are handled everywhere
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=353093">353093</a>
IMethod#getAnnotations() doesn't return @SafeVarargs of java.util.Arrays#asList(T...)
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=352464">352464</a>
[1.7] Incorrect Javadoc shown for reference of invokeExact

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=351498">351498</a>
[model]java.util.ConcurrentModificationException upon startup
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=352699">352699</a>
[1.7][compiler] Improve error range for redundant type parameter warning

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=352665">352665</a>
[1.6][compiler] Internal compiler Error: ArrayIndexOutOfBoundsException when compiling certain classes with outer access error
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=352553">352553</a>
[1.7] 'char a\u200b' is being accepted in 1.6 mode
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=352496">352496</a>
tests using wrong version of JCL
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=300576">300576</a>
NPE Computing type hierarchy when compliance doesn't match libraries
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=352145">352145</a>
[1.7][compiler] VerifyError with aload0 being involved into ConditionalExpression


<a name="v_B68"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.7.1 - July 14, 2011
<br>Project org.eclipse.jdt.core v_B68
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_B68">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>Added a new API in CompletionProposal to tell whether it diamond operator can be used (see bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=351444">351444</a> for details):
<pre>
/** 
 * Returns whether it is safe to use the '<>' (diamond) operator in place of explicitly specifying
 * type arguments for this proposal. 
 * 
 * This is only relevant for source level 1.7 or greater.
 * 
 * @param coreContext the completion context associated with the proposal
 * @since 3.7
 * @return <code>true</code> if it is safe to use the diamond operator for the constructor invocation, 
 * <code>false</code> otherwise. Also returns <code>false</code> for source levels below 1.7
 */
public boolean canUseDiamond(CompletionContext coreContext);
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=351965">351965</a>
[1.7] CCE when using diamond in 1.4
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=351444">351444</a>
[1.7][content assist] Need to know whether I can use diamond
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=352014">352014</a>
\u1369 no longer accepted as a valid java identifier part
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=351653">351653</a>
[1.7][compiler]: VerifyError in try statement with finally and return statements

<a name="v_B67"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.7 - July 13, 2011
<br>Project org.eclipse.jdt.core v_B67
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_B67">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>New Javacore option org.eclipse.jdt.core.JavaCore.COMPILER_PB_REDUNDANT_TYPE_ARGUMENTS added to raise warning or error for redundant
usage of type arguments when diamond operator can be used instead. (see details in bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=340747">340747</a>):
<pre>
	/**
	 * Compiler option ID: Reporting redundant specification of type arguments in class instance creation expressions.
	 * When enabled, the compiler will issue an error or a warning if type arguments are used in a class instance creation,
	 * when the '<>' operator can be used instead.
	 *
	 * This option only has an effect if the compiler compliance is 1.7 or greater.
	 * 
	 * Option id:<code>"org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments"</code>
	 * Possible values:<code>{ "error", "warning", "ignore" }</code>
	 * Default:<code>"ignore"</code>
	 * 
	 * @since 3.7
	 * @category CompilerOptionID
	 */
	public static final String COMPILER_PB_REDUNDANT_TYPE_ARGUMENTS = PLUGIN_ID + ".compiler.problem.redundantSpecificationOfTypeArguments";
	</pre>
</li>
<li>Added a new API in ClassInstanceCreation to tell whether the resolved type is inferred from the assignment context:
<br>(see bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=350897">350897</a> for details):
<pre>
	/**
	 * Returns <code>true</code> if the resolved class type has been inferred
	 * from the assignment context (JLS4 15.12.2.8), <code>false</code> otherwise.
	 *
	 * This information is available only when bindings are requested when the AST is being built.
	 *
	 * @return <code>true</code> if the resolved class type has been inferred
	 * 	from the assignment context (JLS3 15.12.2.8), <code>false</code> otherwise
	 * @since 3.7
	 */
	public boolean isResolvedTypeInferredFromExpectedType();
</pre>
</li>
</ul>
<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=340747">340747</a>
[1.7][compiler] compiler option to warn when diamond can be used, but type args are used instead.
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=350895">350895</a>
[1.7][formatter] New option to wrap before/after '|' in multi-catch
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=350652">350652</a>
[1.7][assist] Completion issues with multicatch (FUP of 343637)
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=347503">347503</a>
[DOM] ASTParser.setEnvironment() ignores includeRunningVMBootclasspath parameter
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=350897">350897</a>
[1.7][api] ClassInstanceCreation#isResolvedTypeInferredFromExpectedType()
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=351170">351170</a>
[1.7] ASTRewrite issues in Try with resources
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=348493">348493</a>
[1.7] Improve error msg for Diamond operator in 1.5 mode

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=350885">350885</a>
[Search] The pull up refactoring throws an NPE when pulling up a member that already exists in the superclass
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=350611">350611</a>
[1.7] Inconsistent error msg and error location for illegal diamond
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=350579">350579</a>
[1.7][compiler] VerifyError running example from bug 338402 comment 5
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=350767">350767</a>
[1.7][assist] CCE while invoking assist on a multi-catch block

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=349312">349312</a>
[1.7][compiler] improved problem messages
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=350003">350003</a>
[1.7] [compiler] AnnotationPolymorphicSignature tag is not being set to invokeExact while compiling MethodHandle source file
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=350496">350496</a>
[1.7] @PolymorphicSignature IMethods are missing the annotation
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=349314">349314</a>
[1.7][formatter] Line wrapping for multi-catch arguments
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=350039">350039</a>
[1.7] ASTParser#createASTs(..) doesn't resolve IMethodBinding for @PolymorphicSignature method reference
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=349396">349396</a>
[1.7][formatter] Line wrapping and indentation options for try with resources
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=350361">350361</a>
[1.7] Unhandled exception type Exception

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=349488">349488</a>
[1.7] IMethodBinding#getMethodDeclaration() should return the declaration of @PolymorphicSignature methods
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=349487">349487</a>
[1.7] IMethodBinding#getJavaElement() returns inexistent element for @PolymorphicSignature methods
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=349862">349862</a>
[1.7] NPE when trying to use UnionType as TryStatement resource
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=349864">349864</a>
[1.7][compiler] Error message considers AutoCloseable as class

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=348956">348956</a>
[1.7] ITypeBinding#isAssignmentCompatible(ITypeBinding) returns different result
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=349312">349312</a>
[1.7][compiler] improved problem messages
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=349008">349008</a>
[1.7] Ugly formatting for try with resources
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=349072">349072</a>
[1.7] &quot;Cannot infer elided type(s)&quot; sounds too elite
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=348705">348705</a>
[1.7][compiler] Improve error message for unhandled IOException generated due to compiler-generated close()

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=348050">348050</a>
[1.7] Error in JDT Core during AST creation
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=348406">348406</a>
[1.7] Incorrect error msg on try with resources in 1.5 mode 
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=348492">348492</a>
[1.7] Improve error msg on strings in switch in 1.5 mode
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=348491">348491</a>
[1.7] Rename IProblem.IllegalBinaryLiteral to BinaryLiteralNotBelow17 and IProblem.IllegalUsageOfUnderscore to UnderscoreInLiteralsNotBelow17
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=348369">348369</a>
[1.7] Missing error &quot;No exception of type Exception[] can be thrown&quot;
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=348379">348379</a>
[1.7][compiler] Null pointer access warning for strings in switch
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=346415">346415</a>
[1.7][assist] No proposal inside catch statement from 3rd catch block onwards
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=346454">346454</a>
[1.7][content assist]Getting NegativeArraySizeException while trying content assist after diamond
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=347600">347600</a>
[1.7][compiler] Suspect bounds check failure after inference.
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=347746">347746</a>
[1.7][compiler] Bounds check failure during method inference
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=283353">283353</a>
[1.5][compiler] Eclipse compiler shows error on javac-valid construct: Bound mismatch
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=347145">347145</a>
[1.7][compiler] Bounds check issue with raw types in method inference
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=347426">347426</a>
[1.7][compiler] ecj behavior differs from javac
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=344522">344522</a>
[1.7] Incorrect source range for ParameterizedType in case of Diamond
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=341795">341795</a>
[1.7][compiler] Cannot assign a generic method with multiple bounds return value to any variable
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=242159">242159</a>
[1.7][compiler] type inference with unbounded wildcard in result type
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=343693">343693</a>
[1.7] Adjust subclasses of AllocationExpression for &lt;&gt; support
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=343637">343637</a>
[1.7] Already used exception offered again in a Mulicatch block
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=345968">345968</a>
[1.7][compiler] NPE while using diamond for inner class allocation
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=334313">334313</a>
[1.5][compiler] Bug in the way eclipse handles overriding of generic abstract method by a non-abstract method

<a name="v_B61"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.7 - June 7, 2011
<br>Project org.eclipse.jdt.core v_B61
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_B61">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>Update batch compiler version to refer to 3.7.0 and not 3.7.0 RC2</li>
</ul>
<h3>Problem Reports Fixed</h3>

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=346002">346002</a>
Import of User Library with invalid path hoses User Library Dialog -- can not fix
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=340181">340181</a>
Formatter from the command line breaks
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=346029">346029</a>
[1.7][compiler] Eclipse compiles code rejected by JDK7
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=345628">345628</a>
[1.7] Rename disjunctive type to union type
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=345559">345559</a>
[1.7][compiler] Type inference for generic allocation can be avoided for invalid constructor
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=342819">342819</a>
Code rejected by javac with name clash error compiles under eclipse.
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=334306">334306</a>
[1.7][compiler] name clash reported in javac 1.7 and not in javac 1.6
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=345579">345579</a>
[1.7][compiler] Weird error message in rethrow site

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=345569">345569</a>
FUP of bug 345334: CodeSnippetTest has lot of failures
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=345522">345522</a>
[1.7][compiler] Compilers fails to compute precisely rethrown types

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=345334">345334</a>
CodeSnippet's run method is missing @Override annotation
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=344824">344824</a>
[1.7][compiler] Incorrect error range for unreachable catch block error in multi-catch
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=340486">340486</a>
[1.7][compiler] Missing error in multi catch scenario
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=345359">345359</a>
[1.7][compiler] AIOOB on diamond construct with argument error
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=345239">345239</a>
[1.7][compiler] Compiler should issue better diagnostics for use of &lt;&gt; with anonymous classes

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=336451">336451</a>
&quot;Content Assist&quot; does not complete normally on certain types
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=324987">324987</a>
[formatter] API compatibility problem with Annotation Newline options
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=344655">344655</a>
[1.7][compiler] Prohibit use of &lt;&gt; with explicit type arguments to generic constructor

<a name="v_B56"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.7RC1 - May 6, 2011
<br>Project org.eclipse.jdt.core v_B56
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_B56">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>Reverting fix for bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=336648">336648</a></li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=328575">328575</a>
Inheritance of annotation fails with generic classes

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=90486">90486</a>
Give more info when a dependency cycle is detected
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=343865">343865</a>
[assist] CompletionContext token start and end incorrectly returning 0

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=264301">264301</a>
AssertionFailedException resolving JavaProject classpath

<a name="v_B53"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.7M7 - April 27, 2011 - 3.7.0 M7
<br>Project org.eclipse.jdt.core v_B53
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_B53">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>Reverting fix for bug 292087: anonymous class in array member initializer confuses content assist</li>
</ul>

<h3>Problem Reports Fixed</h3>

<a name="v_B52"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.7M7 - April 27, 2011
<br>Project org.eclipse.jdt.core v_B52
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_B52">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>Update copyrights</li>
</ul>
<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=343785">343785</a>
[1.7] Incorrect line numbers in stack trace with try with resources

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=339226">339226</a>
Document assumptions about DefaultBindingResolver.newAstToOldAst
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=343713">343713</a>
[compiler] bogus line number in constructor of inner class in 1.5 compliance
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=343687">343687</a>
[1.7] IAE in NumberLiteral#setToken(String) for binary tokens and tokens with underscore
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=339478">339478</a>
[1.7][compiler] support for diamond case

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=343607">343607</a>
[APT] Improve output for javax.annotation.processing.Messager problems
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=343476">343476</a>
[1.7][assist] propose String variables and fields inside catch expression
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=292087">292087</a>
anonymous class in array member initializer confuses content assist
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=343475">343475</a>
[1.7] Compiler warning for invalid type inside switch needs to be improved
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=343342">343342</a>
[assist] Non constant variables, strings and methods are proposed inside case statements

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=328281">328281</a>
visibility leaks not detected when analyzing unused field in private class
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=335986">335986</a>
No expected event fired when removing a JAR file from a classpath container
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=342671">342671</a>
ClassCastException: org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding cannot be cast to org.eclipse.jdt.internal.compiler.lookup.ArrayBinding

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=337415">337415</a>
External folders project is not created
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=342455">342455</a>
AST swallows stars ('*') at end of {@code} and {@literal} Javadoc fragments
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=342757">342757</a>
ArrayIndexOutOfBoundsException in MethodInfoWithParameterAnnotations.getParameterAnnotations when generating method info for an inner class constructor with annotated parameter
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=340691">340691</a>
Syntax error leads to ClassCastException in ASTConverter
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=342671">342671</a>
ClassCastException: org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding cannot be cast to org.eclipse.jdt.internal.compiler.lookup.ArrayBinding

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=342300">342300</a>
[null]Spurious &quot;null pointer access&quot; warning on unboxing
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=342416">342416</a>
[1.7] Signature#createIntersectionTypeSignature(..) should take array of signatures
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=340059">340059</a>
[1.7] IAE when dealing with Signature of disjunctive type
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=341759">341759</a>
NPE in ITypeBinding#getName() for intersection type
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=341499">341499</a>
[compiler][null] allocate extra bits in all methods of UnconditionalFlowInfo
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=342054">342054</a>
ILocalVariable#isParameter() returns true for exception of catch clause

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=341475">341475</a>
Eclipse doesn't show a &quot;never read locally&quot; warning if a private field serialVersionUID exists but the class does not implement Serializable
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=334493">334493</a>
[1.7][compiler] Difference in behavior with Javac7

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=338789">338789</a>
[1.7][assist] No proposal inside a multi catch statement after '|'
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=341333">341333</a>
[1.7][compiler] DisjunctiveTypeReference#resolveType(..) does not set the value for DisjunctiveTypeReference$resolvedType
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=340634">340634</a>
[1.7][compiler][multicatch] Compiler accepts type variables as catch parameter type
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=200827">200827</a>
[spec] IElementChangedListener should mention where to register
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=340626">340626</a>
[1.7][compiler] Inconsistent source pinpointing in multi-catch blocks
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=340513">340513</a>
[1.7][compiler] Unicode 6.0 characters work at compiler compliance level 1.5 and 1.6
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=340445">340445</a>
[1.7] ASTRewriteAnalyzer and ASTRewriteFlattener need updates

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=339447">339447</a>
synchronized access modifier retained on clone() bridge
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=340372">340372</a>
[1.7] NaiveASTFlattener needs to support the new AST nodes
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=340365">340365</a>
[1.7] Problems in new APIs (TryStatementWithResources, DisjunctiveType)
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=340375">340375</a>
[1.7] Merge TryStatementWithResources into TryStatement
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=339891">339891</a>
NPE when searching for method (with '*' wildcard character)
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=340022">340022</a>
[1.7][compiler] Support for precise rethrow
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=340029">340029</a>
[1.5][compiler] Enum constructor that throws Exception reports a confusing error message

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=339337">339337</a>
isLocal() in IType returns true for anonymous types
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=339837">339837</a>
[1.7][compiler] Multicatch syntax not rejected at 1.6-
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=337962">337962</a>
COMPILER_PB_UNAVOIDABLE_GENERIC_TYPE_PROBLEMS misses reference to field from supertype
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=338011">338011</a>
COMPILER_PB_UNAVOIDABLE_GENERIC_TYPE_PROBLEMS wrongly suppresses constructor parameter type
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=337751">337751</a>
COMPILER_PB_UNAVOIDABLE_GENERIC_TYPE_PROBLEMS misses references in conditional expression
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=339870">339870</a>
[1.7] Bad list of subclasses in Statement AST node
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=339913">339913</a>
[compiler] Misleading error message for annotations inside a method body
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=339864">339864</a>
[1.7] Add recovery in ASTConverter for all new constructs in JLS3 mode
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=338402">338402</a>
[1.7][compiler][enh] Open issues in try with resources implementation

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=339250">339250</a>
[null] Incorrect redundant null check warning on a String

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=339139">339139</a>
[compiler] HEAD contents of org.eclipse.wst.jsdt.core doesn't compile anymore
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=338649">338649</a>
[perfs] Regression on FullSourceWorkspaceModelTests#testInitJDTPlugin
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=339128">339128</a>
[Doc] Sort statements and expressions inside DOM documentation for both abstract classes org.eclipse.jdt.core.dom.Expressionn and org.eclipse.jdt.core.dom.Statement

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=326950">326950</a>
[compiler][null]Do not optimize code generation based on static analysis (dead code)
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=324178">324178</a>
[null] ConditionalExpression.nullStatus(..) doesn't take into account the analysis of condition itself
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=338006">338006</a>
IJavaProject#getPackageFragmentRoots() should return roots in order
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=338234">338234</a>
[compiler] Missing warning for uninitialized variable in dead code
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=336428">336428</a>
[compiler][null] bogus warning &quot;redundant null check&quot; in condition of do {} while() loop

<a name="v_B39"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.7M6 - March 1, 2011
<br>Project org.eclipse.jdt.core v_B39
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_B39">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>Added new constant on org.eclipse.jdt.core.IJavaProject to provide the value of the classpath file path. See details in bug
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=241598">241598</a>.
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=338118">338118</a>
[compiler] CastExpression type should be changed to be a type reference and not an expression
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=171019">171019</a>
[javadoc][select] F3 on {@inheritDoc} tag should navigate to target javadoc
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=222188">222188</a>
[javadoc] Incorrect usage of inner type not reported
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=338303">338303</a>
[compiler][null] Warning about Redundant assignment conflicts with definite assignment analysis
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=337868">337868</a>
[compiler][model] incomplete support for package-info.java when using SearchableEnvironment
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=337964">337964</a>
[DOM] code that would definitely cause NPE if executed
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=241598">241598</a>
[API] Constant needed for .classpath
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=337795">337795</a>
[1.7][compiler] Missing unchecked warning at varargs method/ctor declaration site
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=337802">337802</a>
[1.7][compiler] Usage of 0x0ffffffff is being reported as out of range.

<a name="v_B38"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.7M6 - February 22, 2011
<br>Project org.eclipse.jdt.core v_B38
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_B38">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>Added a new API to ease the retrieval of method parameter's annotations (see bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=334783">334783</a> for details):
<pre>
/**
 * Returns the parameters of this method.
 * An empty array is returned, if the method has no parameters.
 * For binary types, associated source is used to retrieve the name range,
 * source range and the flags.
 * These local variables can be used to retrieve the parameter annotations.
 * 
 * @return the parameters of this method
 * @throws JavaModelException if this element does not exist or if an
 *      exception occurs while accessing its corresponding resource.
 * @since 3.7
 */
ILocalVariable[] getParameters() throws JavaModelException;
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=337799">337799</a>
[1.7][compiler][varargs] Eclipse fails to report error on incorrect SafeVarargs usage
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=337738">337738</a>
[1.7][content assist]Test CompletionParserTest#testEA_1 fails
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=334783">334783</a>
[API] Add new API to ease the retrieval of the parameter annotations for an IMethod
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=336046">336046</a>
Source attachment not recovered when importing Projects
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=336782">336782</a>
[1.7][recovery]Extra error tokens with invalid unary operator
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=313870">313870</a>
Wrong warnings on Java.Compiler.Errors/Warnings &quot;Redundant null check&quot;
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=337275">337275</a>
Incorrect/outdated javadoc for org.eclipse.jdt.core.dom.Expression
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=337093">337093</a>
[compiler][generics] Javac-warning on vararg missing in Eclipse
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=336934">336934</a>
[compiler] NPE in Scope.getTypeOrPackage

<a name="v_B37"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.7M6 - February 15, 2011
<br>Project org.eclipse.jdt.core v_B37
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_B37">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>Adding a new token "javadoc" for @suppressWarnings to remove all warnings related to javadoc.</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=335751">335751</a>
[1.7][compiler] Cycle inheritance in type arguments is not detected
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=335309">335309</a>
[formatter] FUP of bug 332843: add regression test
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=334622">334622</a>
Eclipse compiler allows access to private fields for typed variables
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=274737">274737</a>
Relative Classpath entries should not be resolved relative to the workspace
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=179566">179566</a>
[compiler] Support of @SuppressWarnings for JavaDoc Warnings
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=336821">336821</a>
Javadoc reference to constructor does not work without parameter list
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=331138">331138</a>
ASTRewrite#replace(..) does not consider the TargetSourceRangeComputer

<a name="v_B36"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.7M6 - February 11, 2011
<br>Project org.eclipse.jdt.core v_B36
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_B36">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>All JDT/Core projects (tests included) have been set to force strict compatibility between the JRE used for the project
and the BREE defined for the project.</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=336544">336544</a>
[regression][compiler] Source flagged as dead code incorrectly.
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=189459">189459</a>
[1.6][compiler] Doc comment support should not be systematically activated while processing annotations
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=332838">332838</a>
Bogus potential null pointer access warning (regression; works with 3.6)
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=334377">334377</a>
[1.5][compiler] Invalid 'type mismatch' error in conditional expression (if-else construct behaves correct)
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=336322">336322</a>
[1.7][search]CCE while searching for a type reference in multiple catch parameters
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=335780">335780</a>
Compiler says a method can be potentially static but this method contains 'this'
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=310747">310747</a>
[content assist] Irrelevant proposals while completing inside array initializer.
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=335845">335845</a>
[compiler] compiler wrongly suggests to add a static qualifier to a method
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=335602">335602</a>
[search] Java indexing thread can index data outside of workspace

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=324189">324189</a>
 [search] Method declaration search returns false results (suffix match on type name)
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=327143">327143</a>
IndexManager should not accept new jobs if the processing thread is null

<a name="v_B34"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.7M5 - January 24, 2011
<br>Project org.eclipse.jdt.core v_B34
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_B34">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>New code formatter option to preserve existing white space between code and line comments.
<br>See details in bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=282988">282988</a>:
<pre>
	/**
	 * FORMATTER / Option to control whether the white space between code and line comments should be preserved or replaced with a single space
	 *     - option id:         "org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments"
	 *     - possible values:   { TRUE, FALSE }
	 *     - default:           FALSE
	 *
	 * @see #TRUE
	 * @see #FALSE
	 * @since 3.7
	 */
	public final static String FORMATTER_COMMENT_PRESERVE_WHITE_SPACE_BETWEEN_CODE_AND_LINE_COMMENT = "org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments";
</pre>
</li>
</ul>
<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=335093">335093</a>
[compiler][null] minimal hook for future null annotation support
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=334119">334119</a>
AIOOBE in BindingKeyParser.parseInnerType (was: Copy Qualified Name throws ArrayIndexOutOfBoundsException)
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=282988">282988</a>
[formatter] Option to align single-line comments in a column
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=334652">334652</a>
Javadoc content not found for non-static inner class constructors
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=136091">136091</a>
Cannot access Javadoc location over http
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=333089">333089</a>
[compiler][null]AIOOBE while assigning variable a potentially null value in try/finally

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=325418">325418</a>
[search] Search for method declarations returns spurious potential matches for anonymous classes
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=332744">332744</a>
Generated model code doesn't compile with J2SE-1.4 execution environment
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=334315">334315</a>
[compiler] Problem types with missing superclass or superinterfaces should use Object for missing types
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=333956">333956</a>
CompilerOptions#warningOptionNames(): OPTION_ReportRawTypeReference missing

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=327654">327654</a>
FUP of bug 317264: Refactoring is not possible if the commons-lang.jar is in the path
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=333710">333710</a>
[DOM] wrong JavaElement for recovered ITypeBinding
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=333669">333669</a>
[DOM] Incorrect signature for type arguments in test case from bug 333360
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=333360">333360</a>
[DOM] eclipse fails to create array binding in this situation
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=332423">332423</a>
[1.5][compiler] ClassCastException when compiling against scala-libary.jar
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=332268">332268</a>
[assist] Allow proposals for static fields in initializers of fields being declared textually in advance
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=331334">331334</a>
[1.5][compiler] &quot;The code for the static initializer is exceeding the 65535 bytes limit&quot; in enum
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=333487">333487</a>
[formatter] Incorrectly ordered method arguments in Scribe
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=332843">332843</a>
[formatter] format save action fails with SIOOBE

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=317039">317039</a>
[formatter] Code Formatter fails on inner class source indentation
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=330313">330313</a>
[formatter] 'Never join already wrapped lines' formatter option does correctly indent
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=329227">329227</a>
Usage of broken quicksort algorithm in jdt.internal.compiler.util.Util
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=332359">332359</a>
org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding should return number of fields directly
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=332818">332818</a>
[formatter] Java formatter, Blank Lines tab, only 1st line indented when multiple lines is set
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=332877">332877</a>
[formatter] line comment wrongly put on a new line

<a name="v_B30"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.7M5 - December 21, 2010
<br>Project org.eclipse.jdt.core v_B30
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_B30">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>New Javacore option org.eclipse.jdt.core.JavaCore.COMPILER_PB_MISSING_STATIC_ON_METHOD added to raise warning or error for a method
    which qualifies to be declared as <code>static</code>, but not been declared as one.(see details in bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=322581">318682</a>):
<pre>
	/**
	 * Compiler option ID: Reporting a method that qualifies as static, but not declared static.
	 * When enabled, the compiler will issue an error or a warning if a method has
	 * not been declared as <code>static</code>, even though it qualifies as one.
	 * 
	 * Option id:<code>"org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic"</code>
	 * Possible values:<code>{ "error", "warning", "ignore" }</code>
	 * Default:<code>"ignore"</code>
	 * 
	 * @since 3.7
	 * @category CompilerOptionID
	 */
	public static final String COMPILER_PB_MISSING_STATIC_ON_METHOD = PLUGIN_ID + ".compiler.problem.reportMethodCanBeStatic";
	</pre>
</li>
<li>New Javacore option org.eclipse.jdt.core.JavaCore.COMPILER_PB_POTENTIALLY_MISSING_STATIC_ON_METHOD added to raise warning or error for a method
    which may qualify to be declared as <code>static</code> when another method doesn't override it,
    but not been declared as one.(see details in bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=322581">318682</a>):
<pre>
	/**
	 * Compiler option ID: Reporting a method that may qualify as static, but not declared static.
	 * When enabled, the compiler will issue an error or a warning if a method has
	 * not been declared as <code>static</code>, even though it may qualify as one,
	 * when another method doesn't override it.
	 * 
	 * Option id:<code>"org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic"</code>
	 * Possible values:<code>{ "error", "warning", "ignore" }</code>
	 * Default:<code>"ignore"</code>
	 * 
	 * @since 3.7
	 * @category CompilerOptionID
	 */
	public static final String COMPILER_PB_POTENTIALLY_MISSING_STATIC_ON_METHOD = PLUGIN_ID + ".compiler.problem.reportMethodCanBePotentiallyStatic";
</pre>
</li>
<li>New Javacore option org.eclipse.jdt.core.JavaCore.COMPILER_PB_UNAVOIDABLE_GENERIC_TYPE_PROBLEMS added to give the user control over whether forced and unavoidable generic type problems should be reported by the compiler or not (see details in <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=322817">bug 322817</a>):
<pre>
	/**
	 * Compiler option ID: Reporting of Unavoidable Generic Type Problems.
	 * When enabled, the compiler will issue an error or warning even when it detects a generic type problem
	 * that could not have been avoided by the programmer. As an example, a type may be forced to use raw types
	 * in its method signatures and return types because the methods it overrides from a super type are declared to
	 * use raw types in the first place.
	 *
	 * Option id:<code>"org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems"</code>
	 * Possible values:<code>{ "enabled", "disabled" }</code>
	 * Default:<code>"enabled"</code>
	 *
	 * @since 3.7
	 * @category CompilerOptionID
	 */
	public static final String COMPILER_PB_UNAVOIDABLE_GENERIC_TYPE_PROBLEMS = PLUGIN_ID + ".compiler.problem.unavoidableGenericTypeProblems";
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=327471">327471</a>
java.io.EOFException at java.io.DataInputStream.readInt(Unknown Source)
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=332619">332619</a>
Small error in IType#codeComplete Javadoc example
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=318682">318682</a>
Enhancement request: Warning if no fields are used and the method is still not static
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=322817">322817</a>
Compiler option to ignore unavoidable type safety problems due to raw APIs
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=332451">332451</a>
Javadoc cleanup in SearchEngine#createJavaSearchScope(IJavaElement[], int)
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=332637">332637</a>
Dead Code detection removing code that isn't dead

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=331736">331736</a>
[dom] tests should check for malformed nodes - may catch a parser bug

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=331872">331872</a>
[compiler] NPE in Scope.createArrayType when attempting qualified access from type parameter
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=331770">331770</a>
org.eclipse.jdt.core.tests.model.JavaSearchBugsTests.testBug323514a() is failing in  N20101202-2000
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=331632">331632</a>
FUP of 323514: Add performance tracking test for scenario

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=324367">324367</a>
IJavaProject.findPackageFragmentRoots(IClasspathEntry cpe) returns empty list
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=327899">327899</a>
include the Ant compiler adapter in ecj JAR
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=331446">331446</a>
[1.4/1.5] Unexpected ambiguous error for 1.4 project
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=323514">323514</a>
[indexing] The Java Indexer is taking longer to run in eclipse 3.6 when opening projects
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=329671">329671</a>
Regression: arg0,1,2... parameter names are cached
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=305172">305172</a>
[common navigator] Project Explorer not fully updating with jar classpath container changes.

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=331271">331271</a>
[assist] Reconsider assumption to filter not yet declared fields from being proposed
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=329663">329663</a>
[type hierarchy] Interfaces duplicated in type hierarchy on two packages from multiple projects
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=328362">328362</a>
[formatter] Format regions does not format as expected
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=331120">331120</a>
Improvements to Signature API
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=299384">299384</a>
codeSelect does not find declaration of constructor with generic parameter type when referenced from 1.4 code
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=329822">329822</a>
[1.7][compiler] Stackoverflow  error if compiled in 1.7 compliance mode
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=330869">330869</a>
Bogus error reported for Incompatible operand types Class&lt;capture#2-of ? extends T&gt; and Class&lt;Bug.Bar&gt;
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=330845">330845</a>
[Model] Possible bug in Member class

<a name="v_B25"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.7M4 - November 23, 2010
<br>Project org.eclipse.jdt.core v_B25
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_B25">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li> Added a new API in org.eclipse.jdt.core.compiler.CharOperation to find if a given character array starts with a given prefix, at the given index. (see details in bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=329288">329288</a>):
<pre>
    /**
     * Answers true if the given name, starting from the given index, starts with the given prefix,
     * false otherwise. isCaseSensitive is used to find out whether or not the comparison should be
     * case sensitive.
     * 
     * 
     * For example:
     * 
     * 1.   prefix = { 'a' , 'B' }
     *      name = { 'c', 'd', 'a' , 'b', 'b', 'a', 'b', 'a' }
     *      startIndex = 2
     *      isCaseSensitive = false
     *      result => true
     *
     * 2.   prefix = { 'a' , 'B' }
     *      name = { 'c', 'd', 'a' , 'b', 'b', 'a', 'b', 'a' }
     *      startIndex = 2
     *      isCaseSensitive = true
     *      result => false
     * 
     *
     * @param prefix the given prefix
     * @param name the given name
     * @param isCaseSensitive to find out whether or not the comparison should be case sensitive
     * @param startIndex index from which the prefix should be searched in the name
     * @return true if the given name starts with the given prefix, false otherwise
     * @throws NullPointerException if the given name is null or if the given prefix is null
     * @since 3.7
     */
     public static final boolean prefixEquals(char[] prefix,	char[] name, boolean isCaseSensitive, int startIndex)
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=325481">325481</a>
[assist] fields declared after a particular field are proposed in its initialization
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=329727">329727</a>
Invalid check in the isConstructor() method of the IMethod implementation.
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=329288">329288</a>
Fetching parameter names literally hangs on a class with a lot of methods
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=330435">330435</a>
[1.4][1.5][compiler] Wrong handling of parameterized methods in 1.4 mode with generified JDK
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=330445">330445</a>
[1.4][1.5][compiler] Properties doesn't match Map&lt;String, String&gt; in 1.4 compliance mode
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=330347">330347</a>
[1.4][1.5][compiler] The performance test FullSourceWorkspaceBuildTests#testFullBuildDefault() fails
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=329156">329156</a>
[compiler][APT] Source generated in last round not compiled

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=329998">329998</a>
[content assist] override method proposal in anonymous class inserts bad stub
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=330081">330081</a>
[compiler] ArrayIndexOutOfBoundsException when Switched from C/C++ Perspective to Java Perspective
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=328519">328519</a>
[compiler] local variable cannot be optimized out despite warning &quot;not used&quot;
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=329709">329709</a>
[formatter] Formatter fails to format enum with extra semicolon and body

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=329593">329593</a>
[1.4/1.5] [compiler] incorrect error about incompatible operand
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=329588">329588</a>
[1.4/1.5][compiler] Class cast issue with java.lang.Class and the 1.4/1.5 mixed mode
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=329584">329584</a>
[1.4/1.5][compiler] Compiler is confused about name clashes in 1.4 project
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=328674">328674</a>
[assist] local being declared proposed inside its initialization
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=329344">329344</a>
[compiler] Batch compiler should not removed some duplicated entries on the classpath
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=186565">186565</a>
[1.5][compiler] 1.4/1.5 .class file interaction
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=328689">328689</a>
[1.4][compiler] &quot;Incompatible conditional operand types Class and Class&quot;
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=328775">328775</a>
[compiler] Compiler fails to warn about invalid cast when using J2SE 1.4 compiler settings
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=328827">328827</a>
Compiler fails to recognize a Map when using J2SE 1.4 compiler settings
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=324850">324850</a>
Compile error claims method is missing but is inherited
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=328969">328969</a>
[DOM] NPE retrieving a java element for an annotation binding

<a name="v_B22"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.7M3 - October 28, 2010 - 3.7.0 M3
<br>Project org.eclipse.jdt.core v_B22
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_B22">cvs</a>).
<h2>What's new in this drop</h2>
This build input simply reverts the change made for bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=324850">324850</a>.

<h3>Problem Reports Fixed</h3>

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=328786">328786</a>
[search] NPE in field match locator
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=328744">328744</a>
Removed warnings related to fix for 185682
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=229042">229042</a>
[buildpath] could create build path error in case of invalid external JAR format

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

<h3>Problem Reports Fixed</h3>
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=282152">282152</a>
[1.5][compiler] Generics code rejected by Eclipse but accepted by javac
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=328240">328240</a>
org.eclipse.text.edits.MalformedTreeException: Overlapping text edits

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=185682">185682</a>
Increment/decrement operators mark local variables as read
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=328400">328400</a>
TextEdit computed incorrectly for inserting annotation before package declaration
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=303511">303511</a>
Allow to specify encoding for source attachments
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=326354">326354</a>
[3.6][compiler][regression] Compiler in 3.6 and 3.6.1 generates bad code
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=328361">328361</a>
[1.4][compiler] variable initialized within an assert expression are no longer reported as potential non initialized
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=328247">328247</a>
Disassemble fails to disassemble synthetic constructor with varargs arguments
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=328115">328115</a>
[DOM] All ASTNode APIs should specify types of property descriptors

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=327429">327429</a>
Use Charset.name() instead of Charset.toString() to get the encoding
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=327817">327817</a>
ecjsrc.zip should be ecjsrc.jar

<a name="v_B17"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.7M3 - October 12, 2010
<br>Project org.eclipse.jdt.core v_B17
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_B17">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>New Javacore option org.eclipse.jdt.core.JavaCore.COMPILER_PB_MISSING_JAVADOC_TAGS_METHOD_TYPE_PARAMETERS added to enable or disable the missing Javadoc tag warning or error for a method
    paramater without a corresponding <code>@param</code> tag. (see details in bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=322581">322581</a>):
<pre>
    /**
     * Compiler option ID: Reporting Missing Javadoc Tags for Method Type Parameters.
     * Specify whether a missing <code>@param</code> for a type parameter in a method declaration should be reported.
     * When enabled, the compiler will issue a missing Javadoc tag error or warning for a type parameter without a 
     * corresponding <code>@param</code> tag.
     *	
     * This option only has an effect if the compiler compliance is 1.5 or greater.
     * 
     * Option id:<code>"org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters"</code>
     * Possible values:<code>{ "enabled", "disabled" }</code>
     * Default:<code>"disabled"</code>
     * 
     * @since 3.7
     * @category CompilerOptionID
     */
     public static final String COMPILER_PB_MISSING_JAVADOC_TAGS_METHOD_TYPE_PARAMETERS = PLUGIN_ID + ".compiler.problem.missingJavadocTagsMethodTypeParameters";
</pre>
</li>
<li>Added new API on org.eclipse.jdt.core.dom.rewrite.ASTRewrite to store properties (See bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=325131">325131</a>).
<pre>
	/**
	 * Returns the value of the named property of this rewrite, or null if none.
	 *
	 * @param propertyName the property name
	 * @return the property value, or <code>null</code> if none
	 * @see #setProperty(String,Object)
	 * @throws IllegalArgumentException if the given property name is null
	 * @since 3.7
	 */
	public final Object getProperty(String propertyName);
</pre>
<pre>
	/**
	 * Sets the named property of this rewrite to the given value,
	 * or to null to clear it.
	 * 
	 * Clients should employ property names that are sufficiently unique
	 * to avoid inadvertent conflicts with other clients that might also be
	 * setting properties on the same rewrite.
	 * 
	 * 
	 * Note that modifying a property is not considered a modification to the
	 * AST itself. This is to allow clients to decorate existing rewrites with
	 * their own properties without jeopardizing certain things (like the
	 * validity of bindings), which rely on the underlying tree remaining static.
	 * 
	 *
	 * @param propertyName the property name
	 * @param data the new property value, or null if none
	 * @see #getProperty(String)
	 * @throws IllegalArgumentException if the given property name is null
	 * @since 3.7
	 */
	public final void setProperty(String propertyName, Object data);
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=324367">324367</a>
IJavaProject.findPackageFragmentRoots(IClasspathEntry cpe) returns empty list
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=311022">311022</a>
NPE in InternalExtendedCompletionContext.getVisibleElement
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=325131">325131</a>
ASTRewrite should offer get/setProperty() like ASTNode
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=322789">322789</a>
package-info.java Won't Build On First Compile Pass
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=322581">322581</a>
[5.0] Add Javadoc compiler option to (not) report missing tags for method type parameters

<a name="v_B16"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.7M3 - October 5, 2010 - 3.7.0 M3
<br>Project org.eclipse.jdt.core v_B16
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_B16">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>New Javacore option org.eclipse.jdt.core.JavaCore.COMPILER_PB_INCLUDE_ASSERTS_IN_NULL_ANALYSIS added to give the user flexibility to see null related warning arising because of assert statements (see details in <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=325342">bug 325342</a>):
<pre>
    /**
     * Compiler option ID: Raise null related errors or warnings arising because of assert statements.
     * When enabled, the compiler will flag all null related errors or warnings that have been enabled by the user,
     * irrespective of whether a variable occurred in an assert statement.
     * When disabled, the compiler will not flag null related errors or warnings on variables that got marked as maybe or definitely
     * <code>null</code> in an assert statement upstream.
     *
     * Option id:<code>"org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts"</code>
     * Possible values:<code>{ "enabled", "disabled" }</code>
     * Default:<code>"disabled"</code>
     *
     * @since 3.7
     * @category CompilerOptionID
     */
     public static final String COMPILER_PB_INCLUDE_ASSERTS_IN_NULL_ANALYSIS = PLUGIN_ID + ".compiler.problem.includeNullInfoFromAsserts";
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=323012">323012</a>
[jsr14][compiler] Class literal value is not cached when target is jsr14
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=325342">325342</a>
Add new option for null analysis based on assert result.

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=312603">312603</a>
[content assist] field being declared is proposed as a method argument inside initialization
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=325342">325342</a>
Add new option for null analysis based on assert result.
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=325481">325481</a>
[assist] fields declared after a particular field are proposed in its initialization
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=325633">325633</a>
1.4 project confused when referencing a return type of generic array from 1.5 project

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=325567">325567</a>
A blocking &quot;java.lang.IllegalArgumentException: info cannot be null&quot; exception

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=325755">325755</a>
[compiler] wrong initialization state after conditional expression

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=325229">325229</a>
[compiler] eclipse compiler differs from javac when assert is present  (FUP of bug 319510)
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=325270">325270</a>
[content assist] Parameter names are not displayed for static inner class of an external jar
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=325321">325321</a>
[compiler] Synthetic constructors for non-static inner classes can exceed 255 parameters -&gt; ClassFormatError

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=324840">324840</a>
[compiler] Improving debug strings for Break statement, IntLiteral and CaseStatement
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=324848">324848</a>
[1.6][compiler] NullPointerException when trying to synchronize on non-existing outer class instance

<a name="v_B11"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.7M2 - September 9, 2010 - 3.7.0 M2
<br>Project org.eclipse.jdt.core v_B11
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_B11">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>Adding missing API methods on org.eclipse.jdt.core.ILocalVariable (see details in <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48420">bug 48420</a>):
<pre>
    /**
     * Returns true if this local variable is a method parameter, false otherwise.
     * 
     * @return true if this local variable is a method parameter, false otherwise
     * @since 3.7
     */
    boolean isParameter();

    /**
     * Returns the modifier flags for this local variable. The flags can be examined using class.
     * 
     * Note that only flags as indicated in the source are returned.
     *
     * @return the modifier flags for this local variable
     * @see Flags
     * @since 3.7
     */
    int getFlags();

    /**
     * Returns the declaring member of this local variable.
     *
     * This is a handle-only method.
     *
     * @return the declaring member of this local variable
     * @since 3.7
     */
    IMember getDeclaringMember();

    /**
     * Returns the Java type root in which this local variable is declared.
     *
     * This is a handle-only method.
     *
     * @return the Java type root in which this local variable is declared
     * @since 3.7
     */
    ITypeRoot getTypeRoot();
</pre>
</li>
<li>Adding missing API method on org.eclipse.jdt.core.ITypeParameter (see details in <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=48420">bug 48420</a>):
<pre>
    /**
     * Returns the Java type root in which this type parameter is declared.
     *
     * This is a handle-only method.
     *
     * @return the Java type root in which this type parameter is declared
     * @since 3.7
     */
    ITypeRoot getTypeRoot();
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=324762">324762</a>
Compiler thinks there is deadcode and removes it!
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=292478">292478</a>
Report potentially null across variable assignment
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=324748">324748</a>
JDT core tests have restrictive range on com.ibm.icu
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=323633">323633</a>
[1.5][compiler] Reconciler issues mixing 1.4 projects with &amp; 1.5 project with generics.
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=317046">317046</a>
Exception during debugging when hover mouse over a field
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=48420">48420</a>
[API] ILocalVariable and ITypeParameter should provide more methods
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=321414">321414</a>
Synthetic constructors can exceed 255 parameters -&gt; ClassFormatError

<a name="v_B10"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.7M2 - September 7, 2010
<br>Project org.eclipse.jdt.core v_B10
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_B10">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>Code formatter: 4 new options were added to better handle the addition of
new lines after annotations.
<pre>
 * FORMATTER_INSERT_NEW_LINE_AFTER_ANNOTATION_ON_FIELD
 * FORMATTER / Option to insert a new line after an annotation on a field declaration
 *     - option id:         "org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field"
 *     - possible values:   { INSERT, DO_NOT_INSERT }
 *     - default:           INSERT
 * 
 * FORMATTER_INSERT_NEW_LINE_AFTER_ANNOTATION_ON_METHOD
 * FORMATTER / Option to insert a new line after an annotation on a method declaration
 *     - option id:         "org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method"
 *     - possible values:   { INSERT, DO_NOT_INSERT }
 *     - default:           INSERT
 *
 * FORMATTER_INSERT_NEW_LINE_AFTER_ANNOTATION_ON_PACKAGE
 * FORMATTER / Option to insert a new line after an annotation on a package declaration
 *     - option id:         "org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package"
 *     - possible values:   { INSERT, DO_NOT_INSERT }
 *     - default:           INSERT
 *
 * FORMATTER_INSERT_NEW_LINE_AFTER_ANNOTATION_ON_TYPE
 * FORMATTER / Option to insert a new line after an annotation on a type declaration
 *     - option id:         "org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type"
 *     - possible values:   { INSERT, DO_NOT_INSERT }
 *     - default:           INSERT
</pre>
The addition of new lines after annotations has been discussed in <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=308000">bug 308000</a><br>
Also note that previously available code formatter constant FORMATTER_INSERT_NEW_LINE_AFTER_ANNOTATION_ON_MEMBER has been deprecated.<br>
All new options must be enabled to activate old strategy.
</li>
<li>
The previously added new APIs:
<blockquote>
<code>org.eclipse.jdt.core.IImportDeclaration#getNameRange()</code>,<br>
<code>org.eclipse.jdt.core.IPackageDeclaration#getNameRange()</code>
</blockquote>
have been moved to the org.eclipse.jdt.core.ISourceReference interface. See bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=321764">321764</a> for details:
<pre>
/**
 * Returns the name range associated with this element.
 * 
 * If the element is an IMember, it returns
 * the source range of this member's simple name,
 * or null if this member does not have a name
 * (for example, an initializer), or if this member does not have
 * associated source code (for example, a binary type).
 * 
 * If this element is an IImportDeclaration, the source range
 * of this import declaration's name, or null if this import
 * declaration does not have associated source code (for example, a binary type).
 * The source range for the name includes the trailing '*' if the call to
 * IImportDeclaration#isOnDemand() returns true.
 *
 * If this element is an IPackageDeclaration, the source range of
 * this package declaration's name, or null if this package 
 * declaration does not have associated source code (for example, a binary type).
 *
 * If this element is an IAnnotation, the source range of
 * this annotation's name, or null if this annotation does not have
 * associated source code (for example, in a binary type).
 * 
 * If this element is an ITypeParameter, the source range of this 
 * type parameter's name, or null if this type parameter does not have
 * associated source code (for example, in a binary type).
 * 
 * If this element is an ITypeRoot or IImportContainer, it
 * returns null.
 *
 * @return the name range associated with this element, or null if
 * not available
 *
 * @since 3.7
 */
ISourceRange getNameRange() throws JavaModelException;
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=322979">322979</a>
[search] use of IJavaSearchConstants.IMPLEMENTORS yields surprising results
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=316937">316937</a>
JavaElement.getElementInfo(..) throws JavaModelException when trying to get info for an inner class in an external jar
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=322531">322531</a>
[1.5][Generics] eclipse compiles code rejected by javac with incomparable types error.
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=308000">308000</a>
[formatter] Formatter is missing options regarding Annotation Newlines
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=321276">321276</a>
JDT core apis dont recognize InnerClass constructor inside .class files
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=252556">252556</a>
[formatter] Spaces removed before formatted region of a compilation unit.
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=323785">323785</a>
[builder] NPE when adding 'package-info.java' to default package
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=321358">321358</a>
NPE refreshing external folders
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=322596">322596</a>
[DOM] ASTNode APIs should specify types of property descriptors
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=324109">324109</a>
[search] Java search shows incorrect results as accurate matches
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=324154">324154</a>
NPE in FlowContext while building
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=133125">133125</a>
[compiler][null] need to report the null status of expressions and analyze them simultaneously
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=321695">321695</a>
Test added for bug 319425 doesn't detect the bug
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=258905">258905</a>
making java.lang.AssertionError accessible thru resolveWellKnownType method
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=321764">321764</a>
Add getNameRange() to ISourceReference

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=311578">311578</a>
[formatter] Enable/disable tag detection should include comment start/end tokens
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=320618">320618</a>
inconsistent initialization of classpath container backed by external class folder
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=323693">323693</a>
[1.5][compiler] Compiler fails to diagnose name clash
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=323558">323558</a>
Tests test0307a and test0307e under BatchCompilerTest failing
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=308402">308402</a>
[index] PatternSearchJob ignores participant index entries
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=317264">317264</a>
[search] Refactoring is impossible with commons.lang added to project

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=321926">321926</a>
Erroneously deems null check conditional branch to be dead code, and produces incorrect bytecode
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=320170">320170</a>
[compiler] [null] Whitebox issues in null analysis
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=305259">305259</a>
Strange error when referencing code produced with jsr14 target
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=321115">321115</a>
Compiler is not case sensitive with package names
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=310427">310427</a>
[content assist] FUP of 236306: Variable proposed before definition.
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=320911">320911</a>
Not all redundant superinterface problems reported

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=319201">319201</a>
[null] no warning when unboxing SingleNameReference causes NPE
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=322154">322154</a>
Compiler bug that does not occur in Galileo 3.5.2
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=320754">320754</a>
[formatter] formatter:off/on tags does not work correctly
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=322001">322001</a>
[1.5][compiler] Name Clash error occurs

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=320167">320167</a>
Auto-Activation works only once
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=320809">320809</a>
ArrayIndexOutOfBoundsException in IndexManager.writeSavedIndexNamesFile - concurrency issue?
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=321085">321085</a>
Enhanced for loops need to implement type safety checks on array initializers
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=319626">319626</a>
Preferences-&gt;Java Compiler-&gt; Errors/Warnings -&gt; Undocumented Empty Block

<a name="v_B05"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.7M1 - July 30, 2010 - 3.7.0 M1
<br>Project org.eclipse.jdt.core v_B05
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_B05">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>
New API added to be able to retrieve the name range for <code>org.eclipse.jdt.core.IImportDeclaration</code>:
<pre>
/**
 * Returns the source range of this import declaration's name,
 * or null if this import declaration does not have
 * associated source code (for example, a binary type).
 * 
 * The source range for the name includes the trailing '*' if the call to
 * isOnDemand() returns true.
 * 
 *
 * @exception JavaModelException if this element does not exist or if an
 *      exception occurs while accessing its corresponding resource.
 * @return the source range of this import declaration's name,
 * or null if this import declaration does not have
 * associated source code (for example, a binary type)
 * @since 3.7
 */
ISourceRange getNameRange() throws JavaModelException;
</pre>
</li>
<li>
New API added to be able to retrieve the name range for <code>org.eclipse.jdt.core.IPackageDeclaration</code>:
<pre>
/**
 * Returns the source range of this package declaration's name,
 * or null if this package declaration does not have
 * associated source code (for example, a binary type).
 *
 * @exception JavaModelException if this element does not exist or if an
 *      exception occurs while accessing its corresponding resource.
 * @return the source range of this package declaration's name,
 * or null if this package declaration does not have
 * associated source code (for example, a binary type)
 * @since 3.7
 */
ISourceRange getNameRange() throws JavaModelException;
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=306524">306524</a>
ASTRewriteAnalyzer uses wrong starting offset in case of comments before a node
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=150980">150980</a>
[API] Selecting import declaration with space in outline highlights wrong range
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=320841">320841</a>
TypeConverters don't set enclosingType
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=320802">320802</a>
ASTParser.createASTs(..) fails silently on multiple missing parameter types.

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=319425">319425</a>
[compiler] JDT outputs corrupt .class file for problem type
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=319885">319885</a>
Spurious 'cycle detected'/'hierarchy inconsistent' errors if a type that WOULD be cyclic is static-imported
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=312076">312076</a>
[1.5][compiler] Eclipse compiler behaves differently from javac
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=320414">320414</a>
Compiler produces incorrect bytecode for null pointer check
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=223225">223225</a>
[DOM] IMemberValuePairBinding does not desugar single values into one-element arrays
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=319603">319603</a>
[1.5][compiler] eclipse fails with 2 generics methods with the same name while javac succeeds
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=318020">318020</a>
[compiler] wrong initialization flow info with if (true) throw... pattern in else block

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=320340">320340</a>
Test failures in debug mode
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=307523">307523</a>
Differences between patch of bug 210422 and sources
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=319900">319900</a>
StringLiteral#setLiteralValue needlessly escapes apostrophes (')
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=310264">310264</a>
Wrong warning: The assignment to variable has no effect

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=314556">314556</a>
[1.5][compiler] compiler fails to report attempt to assign weaker access privileges
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=316956">316956</a>
[compiler] Private superclass and enclosing scope field names incorrectly reported as conflicting
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=151500">151500</a>
[assist] Method parameter names are not displayed for inner classes
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=304006">304006</a>
[code assist] Autocast after instanceof feature doesnt work in some cases.
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=210419">210419</a>
[compiler] Invalid field initializer not flagged as error
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=212713">212713</a>
Bad error message for static block inside an interface

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=313153">313153</a>
Too many blocked &quot;Refreshing external folders&quot; jobs (FUP of bug 302295)
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=316654">316654</a>
ITypeHierarchyChangedListener receive spurious callbacks
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=317858">317858</a>
Eclipse isn't accessing the correct field/class - causes compile error
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=318171">318171</a>
fieldHiding-Warning does not appear if classes are in different packages

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

<h3>Problem Reports Fixed</h3>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=317841">317841</a>
[incremental build] unnecessary 'structural changes' due to annotation parameters
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=317468">317468</a>
Adding elements to an enum body with trailing comma generates bad code
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=313668">313668</a>
[search] Call hierarchy doesn't show all calls of the method in workspace
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=317972">317972</a>
Fix for wrong usages of affect* and effect*
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=313651">313651</a>
[formatter] format comments (differs between paste and save action)
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=316889">316889</a>
Internal compiler error: java.lang.NullPointerException with a specific use of recursive generics
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=315978">315978</a>
Big regression, eclipse compiles my workspace in 3 mins instead of few seconds
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=315577">315577</a>
[formatter] No line break after &lt;br&gt; if followed by {@link when formatting java source file
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=306464">306464</a>
NPE in ProblemReporter.missingTypeInMethod(ProblemReporter.java:5113)
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=317212">317212</a>
[compiler] Illegal permission to invoke the constructor of a member class of an inaccessible type.
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=195346">195346</a>
[assist] Array type should be filtered while completing in case of a switch
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=315732">315732</a>
[formatter] NullPointerException (always) on inserting a custom template proposal into java code when &quot;Use code formatter&quot; is on
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=316456">316456</a>
[1.5][compiler] Annotation values can access private class members
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=312989">312989</a>
Accepts illegal method-local classes if hidden by generics parameters
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=310423">310423</a>
[content assist] After 'implements' annotation types should not be proposed
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=314830">314830</a>
[compiler] Switching on a null expression doesn't always throw NullPointerException
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=313825">313825</a>
Erroneous local variable's problems reported at surrounding ParenthesizedExpression
<br><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=314898">314898</a>
Typo in org.eclipse.jdt.core.dom.NameEnviromentWithProgress


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

