<!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_B14"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.7M3 - %date% - 3.7.0 M3
<br>Project org.eclipse.jdt.core v_B14
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_B14">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
<br><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_B13"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java development tools core</h1>
Eclipse SDK 3.7M2 - September 15, 2010 - 3.7.0 M2
<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>

