<!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/index.php#release-plan">JDT/Core release plan</a>,
	  the next <a href="http://www.eclipse.org/jdt/core/r3.7/index.php#milestone-plan">milestone plan</a>,
	  the overall <a href="http://www.eclipse.org/eclipse/development/eclipse_project_plan_3_6.html">official plan</a>,
	  or the <a href="http://www.eclipse.org/eclipse/platform-releng/buildSchedule.html">build schedule</a>.
	  This present document covers all changes since Release 3.5 (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_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_B14a"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.7M3 - September 21, 2010 - 3.7.0 M3
<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>

