<!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.3</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.3 stream</b></font>
    </td>
  </tr>
  <tr><td align="left" width="72%" class="title2"><font size="-2">java development tooling core</font></td></tr>
  <tr><td>&nbsp;</td></tr>
  <tr>
  	<td class="title3">
	  <font size="-1">
	  Here are the build notes for the Eclipse JDT/Core plug-in project 
	  <a href="http://www.eclipse.org/jdt/core/index.php"><b>org.eclipse.jdt.core</b></a>, 
	  describing <a href="http://bugs.eclipse.org/bugs" target=new>bug</a> resolution and substantial changes in the <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core"><b>HEAD</b></a> branch. 
	  For more information on 3.3 planning, please refer to <a href="http://www.eclipse.org/jdt/core/r3.3/index.php#release-plan">JDT/Core release plan</a>, 
	  the next <a href="http://www.eclipse.org/jdt/core/r3.3/index.php#milestone-plan">milestone plan</a>, 
	  the overall <a href="http://www.eclipse.org/eclipse/development/eclipse_project_plan_3_2.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.0 (also see a summary of <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.jdt.core/notes/API_changes.html">API changes</a>).
	  Older changes which occurred up to Release 3.0 can be found in 
	  <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.jdt.core/notes/R21_buildnotes_jdt-core.html">build notes R2.1</a>.
	  -->
	  This present document covers all changes since Release 3.2 (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_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_709"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.3M2 - 15th August 2006
<br>Project org.eclipse.jdt.core v_709
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_709">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>Add new DOM API method to resolve array bindings using an existing type binding. See bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=148224">148224</a>.<br>
<pre>	/**
	 * Answer an array type binding with the given type binding and the given
	 * dimension.
	 * 
	 * If the given type binding is an array binding, then the resulting dimension is the given dimension
	 * plus the dimension of the array binding. Otherwise the resulting dimension is the given
	 * dimension.
	 * 
	 * @param binding the given type binding
	 * @param dimensions the given dimension
	 * @return an array type binding
	 * @throws IllegalArgumentException:
	 *   if the given type binding represents the void type
	 *   if the resulting dimensions is lower than one or greater than 255
	 *
	 */
	public ITypeBinding resolveArrayType(ITypeBinding binding, int dimensions)
</pre>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=148224">148224</a>
AST API request: have binding for int, need int[], int[][] ....
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=153303">153303</a>
IBinding.getAnnotations() returns array with null element
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=148661">148661</a>
[formatter] leverage CombinedBinaryExpression in BinaryExpressionFragmentBuilder#visit(BinaryExpression, BlockScope)

<a name="v_708"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.3M1 - 6th August 2006 - 3.3 MILESTONE 1
<br>Project org.eclipse.jdt.core v_708
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_708">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>New fix for <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=95152">bug 95152</a> required the index version to be incremented. 
     Indexes will be automatically regenerated upon subsequent search queries (accounting for indexing notification in search progress dialogs).
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=95152">95152</a>
[search] F3 can't find synthetic constructor
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=152725">152725</a>
[1.6][formatter] Code formatter does not format 1.5 code when source level is 1.6

<a name="v_707"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.3M1 - 3rd August 2006
<br>Project org.eclipse.jdt.core v_707
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_707">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>
SearchPattern API method <code>createPattern(IJavaElement, int, int)</code> behavior has been modified for generic searches.<br>
It now returns erasure matches instead of exact ones  (see bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=124489">124489</a> for detailed discussion on this topic).
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=116459">116459</a>
[1.5][search] Generic type reference should return exact match on parameterized type with its own variables
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=124489">124489</a>
[1.5][search] &quot;Find unused dependencies&quot; misses references to generic types

<a name="v_706"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.3M1 - 1st August 2006
<br>Project org.eclipse.jdt.core v_706
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_706">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=133024">133024</a>
[ast rewrite] ASTRewrite does not honor forced line splits

<a name="v_705"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.3M1 - 25th July 2006
<br>Project org.eclipse.jdt.core v_705
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_705">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=151118">151118</a>
verifier errors occur when running osgi tests

<a name="v_704"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.3M1 - 18th July 2006
<br>Project org.eclipse.jdt.core v_704
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_704">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>Wildcard captures are now indicating some ID to better address ambiguities in error messages 
<br>e.g. now telling: <code>capture#2-of ? extends Number</code> is not compatible with <code>capture#1-of ? extends Number</code>
<br>as opposed to: <code>capture-of ? extends Number</code> is not compatible with <code>capture-of ? extends Number</code>
(also see bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=149573">149573</a>).
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=129317">129317</a>
Outline view inconsistent with code
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=102875">102875</a>
code assist should propose types even if there's no initial character(s)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=129584">129584</a>
Java model gives different results
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=150758">150758</a>
[1.5][compiler] NullPointerException in internal compiler
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=150074">150074</a>
[compiler] init part of for each loop with empty body is not executed
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=149028">149028</a>
Limiting number of characters to read with the file size is invalid.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=149893">149893</a>
[1.5] Compilation error: The method is ambiguous for the type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=149376">149376</a>
Internal compiler error on "import static"
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=149573">149573</a>
[1.5][compiler] Improve readable name of wildcard captures
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=128073">128073</a>
Content Assist should give static fields and methods declared in target type higher relevance
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=149043">149043</a>
Unresolvable classpath container leads to lots of scheduled jobs

<a name="v_703"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.3M1 - 4th July 2006
<br>Project org.eclipse.jdt.core v_703
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_703">cvs</a>).
<h2>What's new in this drop</h2>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=149013">149013</a>
[javadoc] In latest 3.3 build, there is a javadoc error in org.eclipse.core.resources
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=119857">119857</a>
[javadoc] Some inner class references should be flagged as unresolved
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=103304">103304</a>
[Javadoc] Wrong reference proposal for inner classes.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=148797">148797</a>
Syntax error in java class results in AST=null-error on "organize imports"
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=148742">148742</a>
[5.0][content assist] Annotation content assist not working in all cases for parameters
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=117302">117302</a>
Clean build of large project gives unresolved type errors
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=147875">147875</a>
[1.5][compiler] NPE when initializing annotations of a binary field
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=146012">146012</a>
No F_CONTENT flag on delta when reverting to old annotations
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=148970">148970</a>
Exceptions opening external Java file
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=148949">148949</a>
JarEntryFile now returning 'null'
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=120865">120865</a>
ICompilationUnit.findPrimaryType(..) should not throw internal AFE
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=148370">148370</a>
[formatter] new Class&lt;?&gt;[] {} kills formatter
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=148010">148010</a>
Code select doesn't find binary parameterized method

<a name="v_702"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.3M1 - 27th June 2006
<br>Project org.eclipse.jdt.core v_702
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_702">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>Add new Search API method to support patterns for package/enclosing type name while searching all types names
(see bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=92264">92264</a>).<br>
<pre>
/**
 * Searches for all top-level types and member types in the given scope.
 * The search can be selecting specific types (given a package name using specific match mode
 * and/or a type name using another specific match mode). 
 * 
 * @param packageName the full name of the package of the searched types, or a prefix for this
 *                    package, or a wild-carded string for this package.
 * @param typeName the dot-separated qualified name of the searched type (the qualification include
 *                 the enclosing types if the searched type is a member type), or a prefix
 *                 for this type, or a wild-carded string for this type.
 * @param packageMatchRule one of
 *        . {@link SearchPattern#R_EXACT_MATCH} if the package name and type name are the full names
 *            of the searched types.
 *        . {@link SearchPattern#R_PREFIX_MATCH} if the package name and type name are prefixes of the names
 *            of the searched types.
 *        . {@link SearchPattern#R_PATTERN_MATCH} if the package name and type name contain wild-cards.
 *        . {@link SearchPattern#R_CAMELCASE_MATCH} if type name are camel case of the names of the searched types.
 *    combined with {@link SearchPattern#R_CASE_SENSITIVE},
 *       e.g. {@link SearchPattern#R_EXACT_MATCH} | {@link SearchPattern#R_CASE_SENSITIVE} if an exact and case sensitive match is requested, 
 *       or {@link SearchPattern#R_PREFIX_MATCH} if a prefix non case sensitive match is requested.
 * @param typeMatchRule one of
 *        . {@link SearchPattern#R_EXACT_MATCH} if the package name and type name are the full names
 *            of the searched types.
 *        . {@link SearchPattern#R_PREFIX_MATCH} if the package name and type name are prefixes of the names
 *            of the searched types.
 *        . {@link SearchPattern#R_PATTERN_MATCH} if the package name and type name contain wild-cards.
 *        . {@link SearchPattern#R_CAMELCASE_MATCH} if type name are camel case of the names of the searched types.
 *     combined with {@link SearchPattern#R_CASE_SENSITIVE},
 *       e.g. {@link SearchPattern#R_EXACT_MATCH} | {@link SearchPattern#R_CASE_SENSITIVE} if an exact and case sensitive match is requested, 
 *       or {@link SearchPattern#R_PREFIX_MATCH} if a prefix non case sensitive match is requested.
 * @param searchFor determines the nature of the searched elements
 *     . {@link IJavaSearchConstants#CLASS}: only look for classes
 *     . {@link IJavaSearchConstants#INTERFACE}: only look for interfaces
 *     . {@link IJavaSearchConstants#ENUM}: only look for enumeration
 *     . {@link IJavaSearchConstants#ANNOTATION_TYPE}: only look for annotation type
 *     . {@link IJavaSearchConstants#CLASS_AND_ENUM}: only look for classes and enumerations
 *     . {@link IJavaSearchConstants#CLASS_AND_INTERFACE}: only look for classes and interfaces
 *     . {@link IJavaSearchConstants#TYPE}: look for all types (ie. classes, interfaces, enum and annotation types)
 * @param scope the scope to search in
 * @param nameRequestor the requestor that collects the results of the search
 * @param waitingPolicy one of
 *        . {@link IJavaSearchConstants#FORCE_IMMEDIATE_SEARCH} if the search should start immediately
 *        . {@link IJavaSearchConstants#CANCEL_IF_NOT_READY_TO_SEARCH} if the search should be cancelled if the
 *            underlying indexer has not finished indexing the workspace
 *        . {@link IJavaSearchConstants#WAIT_UNTIL_READY_TO_SEARCH} if the search should wait for the
 *            underlying indexer to finish indexing the workspace
 * @param progressMonitor the progress monitor to report progress to, or null if no progress
 *                        monitor is provided
 * @exception JavaModelException if the search failed. Reasons include:
 *        . the classpath is incorrectly set
 * @since 3.3
 */
public void searchAllTypeNames(
	final char[] packageName, 
	final int packageMatchRule, 
	final char[] typeName,
	final int typeMatchRule, 
	int searchFor, 
	IJavaSearchScope scope, 
	final TypeNameRequestor nameRequestor,
	int waitingPolicy,
	IProgressMonitor progressMonitor)  throws JavaModelException
</pre>
Note that already existing <code>searchAllTypeNames(char [], char[], int, int, IJavaSearchScope, TypeNameRequestor, int, IProgressMonitor)</code> API method documentation has been updated to reflected the fact
that package name is an exact name and does not accept wildcards.
</li>
<li>Incremented plug-in version ID to &quot;3.3.0&quot; due to newly added API method (see details above).</li>
<li>Huge String concatenations - thousands of terms and beyond - are now 
    handled smoothly by the compiler even when they are not solely comprised of 
    literals and other constants (cf. bug 
    <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=102728">102728</a>).
    </li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=148278">148278</a>
Default-package classes missing in Package Explorer
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=148352">148352</a>
NLS warning shows up on incomplete code
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=102728">102728</a>
[compiler] Reduce the stack depth demands of extended string concatenation ASTs
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=142530">142530</a>
[hierarchical packages] '.' in folder names confuses package explorer
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=148523">148523</a>
[batch] Batch compiler output contains extra linebreak before line position
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=147485">147485</a>
Anonymous type missing from java model
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=111086">111086</a>
[1.5][compiler] Compiler accepts call to parameterized method with invalid arguments
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=148215">148215</a>
[search] Exception while searching for declarations of referenced types in binary java elements packaged in a jar
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=146331">146331</a>
Java Editor won't save file
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=145367">145367</a>
Failing to open a binary member leaves cache inconsistent
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=96237">96237</a>
[javadoc] Inner types must be qualified
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=92264">92264</a>
[search] all types names should support patterns for package/enclosing type name
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=102720">102720</a>
org.eclipse.jdt.core.Signature spec incomplete
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=148015">148015</a>
NPE in log from ClasspathChange
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=143212">143212</a>
IAE in log
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=145544">145544</a>
Comment indentation wrong when using sun conventions
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=146214">146214</a>
Refactor XmlWritter and Main.Logger
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=147877">147877</a>
source end of array access isn't correct
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=145007">145007</a>
[1.5][javadoc] Generics + Inner Class -&gt; Javadoc &quot;missing @throws&quot; warning
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=147690">147690</a>
[1.5][compiler] Incompatible serialversionuid when using covariant in Java 1.5
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=147747">147747</a>
max stack for clinit of enum overestimated
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=142059">142059</a>
[efs] renaming package fails to update references
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=143013">143013</a>
SWTException: Failed to execute runnable (...AbortCompilation)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=147024">147024</a>
[compiler] Compiler bug when accessing static final attribute in a non-static way
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=143684">143684</a>
Creating of static imports is unavailable..

<a name="v_701"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.3M1 - 20th June 2006
<br>Project org.eclipse.jdt.core v_701
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_701">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>Fix for <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=120667">bug 120667</a> required the index version to be incremented. 
     Indexes will be automatically regenerated upon subsequent search queries (accounting for indexing notification in search progress dialogs).
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=147736">147736</a>
ClassCastException in TypeHierarchy
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=91709">91709</a>
[1.5][model] Quick Fix Error but no Problem Reported
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=147381">147381</a>
[1.5][compiler] Generics discrepancy between Eclipse compiler and Sun compiler.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=139555">139555</a>
[hierarchy] Opening a class from Type hierarchy will give the wrong one if source and compiled are in defined in project
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=144573">144573</a>
compilationParticipant extension point schema incomplete
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=145835">145835</a>
getJavaClassLibs needs to account for IBM J2SE 1.5
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=145333">145333</a>
[hierarchy] Resolving too much
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=122444">122444</a>
[hierarchy] Type hierarchy of inner member type misses anonymous subtypes
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=114894">114894</a>
[compiler] Compiler generate dead bytecode
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=147096">147096</a>
ecj.jar manifest should not use x-friends, but use x-internal=true instead
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=146015">146015</a>
Some JDT/Core tests results are still VM dependent
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=120667">120667</a>
[hierarchy] Type hierarchy for enum type does not include anonymous subtypes
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=146324">146324</a>
Batch builds produce "The type X is already defined" errors
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=146615">146615</a>
[hierarchy] TypeHierarchyTests is tests order dependent
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=142207">142207</a>
[batch][options] Source/target level names 5 and 5.0 missing from batch 
compiler help message
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=76734">76734</a>
[classpath] Attemp to lock workspace during container initialization

<a name="v_700"></a>
<p><hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.3M1 - 13th June 2006
<br>Project org.eclipse.jdt.core v_700
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_700">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>Progressive help message for the batch compiler.<br>
	The new <tt>-help:warn</tt> option displays details about the various 
    parameters applicable to the <tt>-warn</tt> option; these details are no
    more part of the general help message, which is thus more compact
    (cf. bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=144248">144248</a>).
    </li>
<li>Compiler is now better resilient to duplicate local variables, thus allowing further
operation to still be carried out accurately (codeselect, completion, search, DOM AST ops)
(cf. bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=144858">144858</a>).</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=146215">146215</a>
JDT Core tests should not be dependent on HashMap implementation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=144858">144858</a>
[compiler] Should be more resilient with duplicate locals
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=145746">145746</a>
[1.5][compiler] Enum synthetic methods should be improved
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=145732">145732</a>
[1.5][compiler] Inconsistent behavior in ECJ code for enum types
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=145516">145516</a>
Bad performance when compiling a java file with non java content
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=142897">142897</a>
[1.5][compiler] Compiler cannot resolve type of inner class of a bounded generic type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=144976">144976</a>
[hierarchy] NPE in ReferenceBinding
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=145500">145500</a>
[hierarchy] Superclass could be more resilient
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=144866">144866</a>
[assist][javadoc] Wrong completion inside @value tag
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=144414">144414</a>
JDT Compiler fails while standard javac compiler can proceed
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=142772">142772</a>
[1.5][compiler] Compilation succeeds with static imports that fail with javac
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=143259">143259</a>
[1.5][compiler] NullPointerException in ReferenceBinding.binarySearch , Eclipse 3.2RC4
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=144426">144426</a>
[compiler] Compiler incorrectly reports "assignment to variable has no effect" when it is a duplicate
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=144248">144248</a>
[batch] Progressive help text
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=141512">141512</a>
[batch] re-format the help message so as to fit into 80 columns
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=141522">141522</a>
[compiler][batch] ClassFile#buildAllDirectoriesInto should protect itself 
against concurrent directory creation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=141330">141330</a>
[1.5][compiler] Suspicious error message for type mismatch
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=141252">141252</a>
[1.6]][compiler] ClassFormatError: Illegal class name "" in class file
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=141810">141810</a>
[1.5][compiler] Enum switch tables incorrectly generated by the compiler
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=141327">141327</a>
StackFrame and VerificationTypeInfo must call super.clone() in their clone() method
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=140476">140476</a>
JDOM: IDOMType.setSuperInterfaces(new String [0]) fails to remove existing implements clause
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=132430">132430</a>
[1.5][javadoc] Unwanted missing tag warning for overridden method with parameter containing type variable
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=130752">130752</a>
[comments] first BlockComment parsed as LineComment
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=140156">140156</a>
[1.5][search] Invalid method handle with parameterized parameters when no source is attached
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=123679">123679</a>
[search] missing icon or bad hit in search results
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=141550">141550</a>
Enable now passing tests

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