<!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.4</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.4 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.4 planning, please refer to <a href="http://www.eclipse.org/jdt/core/r3.4/index.php#release-plan">JDT/Core release plan</a>,
	  the next <a href="http://www.eclipse.org/jdt/core/r3.4/index.php#milestone-plan">milestone plan</a>,
	  the overall <a href="http://www.eclipse.org/eclipse/development/eclipse_project_plan_3_4.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.3 (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_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_812"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.4M2 - September 15, 2007 - 3.4 MILESTONE 2 
<br>Project org.eclipse.jdt.core v_812
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_812">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>Added new API <code>org.eclipse.jdt.core.JavaCore#VERSION_CLDC_1_1</code> in order to support the cldc1.1 target inside the IDE.
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=203454">203454</a>
NPE in compiler when processing annotations
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=203342">203342</a>
AST of a NumberLiteral has wrong source code range
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=203089">203089</a>
getDefaultOptions misses option
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=159214">159214</a>
[1.5] [compiler] Eclipse compiler wildcard bug
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=202404">202404</a>
[1.5][compiler] Incorrect handling of type variable bounds issued by capture conversion
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=203318">203318</a>
[1.5][compiler] Improper capture of wildcard with lesser bound than parameter
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=202936">202936</a>
[compiler] Compiler error for Java switch expression provides inaccurate list of allowed data types
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=203061">203061</a>
[compiler] Uninitialized member variables used in nonstatic initializers of peer members don't trigger compilation error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=203058">203058</a>
Building workspace hangs in endless loop
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=202830">202830</a>
[compiler][1.5] eclipse fails to compile subclass when superclass has two generic methods of the same name
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=203020">203020</a>
formatter may change code semantics on unary operators
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=201182">201182</a>
[compiler][null] Null pointer access compiler warning fails when &quot;throw null&quot;


<a name="v_811"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.4M2 - September 11, 2007
<br>Project org.eclipse.jdt.core v_811
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_811">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>Added an option that allows @throws javadoc entries to defuse the unused
    declared thrown exception check. 
<pre>
COMPILER / Consider Reference in Doc Comment for Unused Declared Thrown Exception Check
   When enabled, the compiler will consider doc comment references to exceptions 
   (i.e. @throws clauses) for the unused declared thrown exception check. Thus, 
   documented exceptions will be considered as mandated as per doc contract.
   The severity of the unused declared thrown exception problem is controlled 
   with option "org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException".
   Note: this option has no effect until the doc comment support is enabled 
   according to the option "org.eclipse.jdt.core.compiler.doc.comment.support".
    - option id:         "org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocReference"
    - possible values:   { "enabled", "disabled" }
    - default:           "enabled"
</pre>
See bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=73244">73244</a>
for details.
</li>
</ul>
<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=73244">73244</a>
[options] Improve &quot;Unnecessary declaration of thrown checked exceptions&quot;
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=89301">89301</a>
Any user operation that would trigger an autobuild should cancel a running autobuild
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=184298">184298</a>
[compiler][null] Spurious &quot;Variable can only be null&quot; warning in case of an infinite loop
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=201929">201929</a>
Member of local type should not have a fully qualified name
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=202134">202134</a>
[1.6][compiler] org.eclipse.jdt.tests.compiler.regression.ConformTest#test003 never ends in .16 mode


<a name="v_810"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.4M2 - September 4, 2007
<br>Project org.eclipse.jdt.core v_810
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_810">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=202076">202076</a>
NPE in DeltaProcessor
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=182359">182359</a>
[compiler] optimize line number generation using the new getLineNumber method
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=185350">185350</a>
[1.6][compiler] Code generation seems to be much slower than in 1.5 mode
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=196253">196253</a>
[1.5][compiler] Failure to compile generics with wildcard and inner classes
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=189158">189158</a>
[1.5][compiler] Malformed generic signature for nested classes (. vs $)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=201062">201062</a>
Missing library in project classpath even library exists

<a name="v_809"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.4M2 - August 28, 2007
<br>Project org.eclipse.jdt.core v_809
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_809">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>Prefix matching can be disabled while using Camel Case API methods. (see 
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=124624">bug 124624</a>).<br>
Following API methods have been added on <code>org.eclipse.jdt.core.compiler.CharOperation</code>:
<pre>
/**
 * Answers true if the pattern matches the given name using CamelCase rules, or
 * false otherwise. char[] CamelCase matching does NOT accept explicit wild-cards
 * '*' and '?' and is inherently case sensitive.
 *
 * CamelCase denotes the convention of writing compound names without spaces,
 * and capitalizing every term. This function recognizes both upper and lower
 * CamelCase, depending whether the leading character is capitalized or not.
 * The leading part of an upper CamelCase pattern is assumed to contain a
 * sequence of capitals which are appearing in the matching name; e.g. 'NPE' will
 * match 'NullPointerException', but not 'NewPerfData'. A lower CamelCase pattern
 * uses a lowercase first character. In Java, type names follow the upper
 * CamelCase convention, whereas method or field names follow the lower
 * CamelCase convention.
 *
 * The pattern may contain lowercase characters, which will be match in a case
 * sensitive way. These characters must appear in sequence in the name.
 * For instance, 'NPExcep' will match 'NullPointerException', but not
 * 'NullPointerExCEPTION' or 'NuPoEx' will match 'NullPointerException', but not
 * 'NoPointerException'.
 *
 * Digit characters are treated in a special way. They can be used in the pattern
 * but are not always considered as leading character. For instance, both
 * 'UTF16DSS' and 'UTFDSS' patterns will match 'UTF16DocumentScannerSupport'.
 *
 * CamelCase may or may not match prefixes depending on the given parameter.
 * When the prefix match parameter is <code>true</code>, the given pattern can
 * match only a prefix of the given name. For instance, 'HM' , 'HaMa' and  'HMap'
 * patterns will all match 'HashMap', 'HatMapper' <b>and</b> 'HashMapEntry'.
 * Reversely, if the prefix match parameter is <code>false</code>, then pattern
 * and name must have <b>exactly</b> the same number of parts, and their last
 * parts must be identical if they contain lowercase characters.
 * For instance, 'HMap' and 'HaMap' patterns will match 'HashMap' but neither
 * 'HashMapEntry' nor 'HatMapper'. Note that when the last part does not contain
 * lowercase characters, then the name may end with lowercase characters.
 * So, 'HM' pattern will match both 'HashMap' <b>and</b> 'HatMapper' but will not
 * match 'HashMapEntry'.
 *
 * Examples:
 *  1.	pattern = { 'N', 'P', 'E' }
 *  	name = { 'N', 'u','l', 'l', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'x', 'c', 'e', 'p', 't', 'i', 'o', 'n' }
 *  	result => true
 *  2.	pattern = { 'N', 'P', 'E' }
 *  	name = { 'N', 'o', 'P', 'e', 'r', 'm', 'i', 's', 's', 'i', 'o', 'n', 'E', 'x', 'c', 'e', 'p', 't', 'i', 'o', 'n' }
 *  	result => true
 *  3.	pattern = { 'N', 'u', 'P', 'o', 'E', 'x' }
 *  	name = { 'N', 'u','l', 'l', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'x', 'c', 'e', 'p', 't', 'i', 'o', 'n' }
 *  	result => true
 *  4.	pattern = { 'N', 'u', 'P', 'o', 'E', 'x' }
 *  	name = { 'N', 'o', 'P', 'e', 'r', 'm', 'i', 's', 's', 'i', 'o', 'n', 'E', 'x', 'c', 'e', 'p', 't', 'i', 'o', 'n' }
 *  	result => false
 *  5.	pattern = { 'n', p', 'e' }
 *  	name = { 'N', 'u','l', 'l', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'x', 'c', 'e', 'p', 't', 'i', 'o', 'n' }
 *  	result => false
 *  6.	pattern = { 'I', 'P', 'L', '3' }
 *  	name = { 'I', 'P', 'e', 'r', 's', 'p', 'e', 'c', 't', 'i', 'v', 'e', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', '3' }
 *  	result => true
 *  7.	pattern = { 'H', M' }
 *  	name = { 'H', 'a', 's', 'h', 'M', 'a', 'p', 'E', 'n', 't', 'r', 'y' }
 *  	result => (prefixMatch == true)
 *  8.	pattern = { 'H', M', 'a', 'p' }
 *  	name = { 'H', 'a', 't', 'M', 'a', 'p', 'p', 'e', 'r' }
 *  	result => (prefixMatch == true)
 * 
 * @param pattern the given pattern
 * @param name the given name
 * @param prefixMatch flag telling whether the pattern can match name prefix or not.
 * 		. For example, when it's <code>true</code>:
 * 			- 'HM' type string pattern will match  'HashMap' and 'HtmlMapper' types,
 * 			  but not 'HashMapEntry'
 * 			- 'HMap' type string pattern will match  'HashMap' type but not 'HtmlMapper'.
 * 		. and, when it's <code>false</code>:
 * 			- 'HM' type string pattern will match both   'HashMap' and 'HtmlMapper'
 * 			  and 'HashMapEntry'
 * 			- 'HMap' type string pattern will match both 'HashMap' and 'HtmlMapper'
 * 			  types.
 *
 * @return true if the pattern matches the given name, false otherwise
 * @since 3.4
 */
public static final boolean camelCaseMatch(char[] pattern, char[] name, boolean prefixMatch) {
...
}

/**
 * Answers true if a sub-pattern matches the sub-part of the given name using 
 * CamelCase rules, or false otherwise.  char[] CamelCase matching does NOT
 * accept explicit wild-cards '*' and '?' and is inherently case sensitive. 
 * Can match only subset of name/pattern, considering end positions as
 * non-inclusive. The sub-pattern is defined by the patternStart and patternEnd
 * positions.
 *
 * CamelCase denotes the convention of writing compound names without spaces,
 * and capitalizing every term. This function recognizes both upper and lower
 * CamelCase, depending whether the leading character is capitalized or not.
 * The leading part of an upper CamelCase pattern is assumed to contain
 * a sequence of capitals which are appearing in the matching name; e.g. 'NPE' will
 * match 'NullPointerException', but not 'NewPerfData'. A lower CamelCase pattern
 * uses a lowercase first character. In Java, type names follow the upper
 * CamelCase convention, whereas method or field names follow the lower
 * CamelCase convention.
 *
 * The pattern may contain lowercase characters, which will be match in a case
 * sensitive way. These characters must appear in sequence in the name.
 * For instance, 'NPExcep' will match 'NullPointerException', but not
 * 'NullPointerExCEPTION' or 'NuPoEx' will match 'NullPointerException', but not
 * 'NoPointerException'.
 *
 * Digit characters are treated in a special way. They can be used in the pattern
 * but are not always considered as leading character. For instance, both
 * 'UTF16DSS' and 'UTFDSS' patterns will match 'UTF16DocumentScannerSupport'.
 *
 * CamelCase may or may not match prefixes depending on the given parameter.
 * When the prefix match parameter is <code>true</code>, the given pattern can
 * match only a prefix of the given name. For instance, 'HM' , 'HaMa' and  'HMap'
 * patterns will all match 'HashMap', 'HatMapper' <b>and</b> 'HashMapEntry'.
 * Reversely, if the prefix match parameter is <code>false</code>, then pattern
 * and name must have <b>exactly</b> the same number of parts, and their last
 * parts must be identical if they contain lowercase characters.
 * For instance, 'HMap' and 'HaMap' patterns will match 'HashMap' but neither
 * 'HashMapEntry' nor 'HatMapper'. Note that when the last part does not contain
 * lowercase characters, then the name may end with lowercase characters.
 * So, 'HM' pattern will match both 'HashMap' <b>and</b> 'HatMapper' but will not
 * match 'HashMapEntry'.
 *
 * Examples:
 *  1.	pattern = { 'N', 'P', 'E' }
 *  	patternStart = 0
 *  	patternEnd = 3
 *  	name = { 'N', 'u','l', 'l', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'x', 'c', 'e', 'p', 't', 'i', 'o', 'n' }
 *  	nameStart = 0
 *  	nameEnd = 20
 *  	result => true
 *  2.	pattern = { 'N', 'P', 'E' }
 *  	patternStart = 0
 *  	patternEnd = 3
 *  	name = { 'N', 'o', 'P', 'e', 'r', 'm', 'i', 's', 's', 'i', 'o', 'n', 'E', 'x', 'c', 'e', 'p', 't', 'i', 'o', 'n' }
 *  	nameStart = 0
 *  	nameEnd = 21
 *  	result => true
 *  3.	pattern = { 'N', 'u', 'P', 'o', 'E', 'x' }
 *  	patternStart = 0
 *  	patternEnd = 6
 *  	name = { 'N', 'u','l', 'l', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'x', 'c', 'e', 'p', 't', 'i', 'o', 'n' }
 *  	nameStart = 0
 *  	nameEnd = 20
 *  	result => true
 *  4.	pattern = { 'N', 'u', 'P', 'o', 'E', 'x' }
 *  	patternStart = 0
 *  	patternEnd = 6
 *  	name = { 'N', 'o', 'P', 'e', 'r', 'm', 'i', 's', 's', 'i', 'o', 'n', 'E', 'x', 'c', 'e', 'p', 't', 'i', 'o', 'n' }
 *  	nameStart = 0
 *  	nameEnd = 21
 *  	result => false
 *  5.	pattern = { 'n', p', 'e' }
 *  	patternStart = 0
 *  	patternEnd = 3
 *  	name = { 'N', 'u','l', 'l', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'x', 'c', 'e', 'p', 't', 'i', 'o', 'n' }
 *  	nameStart = 20
 *  	nameEnd = 9
 *  	result => false
 *  6.	pattern = { 'I', 'P', 'L', '3' }
 *  	patternStart = 0
 *  	patternEnd = 4
 *  	name = { 'I', 'P', 'e', 'r', 's', 'p', 'e', 'c', 't', 'i', 'v', 'e', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', '3' }
 *  	nameStart = 0
 *  	nameEnd = 21
 *  	result => true
 *  7.	pattern = { 'H', M' }
 *  	patternStart = 0
 *  	patternEnd = 2
 *  	name = { 'H', 'a', 's', 'h', 'M', 'a', 'p', 'E', 'n', 't', 'r', 'y' }
 *  	nameStart = 0
 *  	nameEnd = 12
 *  	result => (prefixMatch == true)
 *  8.	pattern = { 'H', M', 'a', 'p' }
 *  	patternStart = 0
 *  	patternEnd = 4
 *  	name = { 'H', 'a', 't', 'M', 'a', 'p', 'p', 'e', 'r' }
 *  	nameStart = 0
 *  	nameEnd = 9
 *  	result => (prefixMatch == true)
 * 
 * @param pattern the given pattern
 * @param patternStart the start index of the pattern, inclusive
 * @param patternEnd the end index of the pattern, exclusive
 * @param name the given name
 * @param nameStart the start index of the name, inclusive
 * @param nameEnd the end index of the name, exclusive
 * @param prefixMatch flag telling whether the pattern can match name prefix or not.
 * 		. For example, when it's <code>true</code>:
 * 			- 'HM' type string pattern will match  'HashMap' and 'HtmlMapper' types,
 * 			  but not 'HashMapEntry'
 * 			- 'HMap' type string pattern will match  'HashMap' type but not 'HtmlMapper'.
 * 		. and, when it's <code>false</code>:
 * 			- 'HM' type string pattern will match both   'HashMap' and 'HtmlMapper'
 * 			  and 'HashMapEntry'
 * 			- 'HMap' type string pattern will match both 'HashMap' and 'HtmlMapper'
 * 			  types.
 *
 * @return true if a sub-pattern matches the sub-part of the given name, false otherwise
 * @since 3.4
 */
public static final boolean camelCaseMatch(char[] pattern, int patternStart, int patternEnd, char[] name, int nameStart, int nameEnd, boolean prefixMatch) {
...
}
</pre>
Note that same methods have been added on <code>SearchPattern</code> but with
<code>String</code> parameters instead of <code>char[]</code> ones (javadoc comments
are identical):
<pre>
public static final boolean camelCaseMatch(String pattern, String name, boolean prefixMatch) {
...
}
public static final boolean camelCaseMatch(String pattern, int patternStart, int patternEnd, String name, int nameStart, int nameEnd, boolean prefixMatch) {
...
}
</pre>
Note also that methods <code>camelCaseMatch(String, int, int, String, int, int)</code>
of <code>CharOperation</code> and <code>SearchPattern</code> classes have been
deprecated to avoid too many 'camelCaseMatch*' methods on these classes.
</li>
<li>Search Engine has been modified to better handle additional <code>SearchPattern</code>
constants while using Camel Case one (see <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=200400">bug 200400</a>).<br>
Existing <code>SearchPattern#R_CAMELCASE_MATCH</code> constant has been deprecated and<br>
is <b>now replaced by <code>SearchPattern#R_CAMEL_CASE_MATCH</code></b>:<pre>
	/**
	 * Match rule: The search pattern contains a Camel Case expression with
	 * a strict number of parts and preventing automatic prefix matching for the last
	 * part (if it consists of multiple letters).
	 * 
	 * Examples:
	 * 	. 'HM' type string pattern will match 'HashMap' and 'HtmlMapper' types,
	 * 		but not 'HashMapEntry'
	 * 	. 'HMap' type string pattern will match 'HashMap' type but not 'HtmlMapper'.
	 *
	 * This Camel Case match rule does not allow prefix match but accept insensitive
	 * case. For instance, 'HashMap' or 'HASHMAP' patterns using this Camel Case
	 * rule will match both 'HashMap' but not 'HashMapEntry'.
	 *
	 * This rule still can be combined to prefix match to accept prefix matches
	 * ('HashMap' pattern matching 'HashMapEntry' name). It can also be combined
	 * to case sensitive match to reject case insensitive matches ('HAMA' pattern
	 * will not match 'HashMap' name).
	 *
	 * If {@link #R_PATTERN_MATCH} rule is also combined, then the real used
	 * match rule will depend on whether string pattern contains specific pattern
	 * characters (e.g. '*' or '?') or not. If it does, then only Pattern match rule will
	 * be used, otherwise only Camel Case match will be used.
	 * For example, with 'NPE' string pattern, search will only use
	 * Camel Case match rule, but with 'N*P*E*' string pattern, it will 
	 * use only Pattern match rule.
	 *
	 * @see CharOperation#camelCaseMatch(char[], char[], boolean) for a detailed
	 * explanation of Camel Case matching.
	 *
	 * @since 3.4
	 */
	public static final int R_CAMEL_CASE_MATCH = 0x0100;
</pre>
This change was necessary has the obsolete <code>R_CAMELCASE_MATCH</code> could
not support correctly additional constants as <code>R_PREFIX_MATCH</code> or 
<code>R_CASE_SENSITIVE</code>.<br>
However, this deprecated constant is still accepted for backward compatibility
but user is advised to replace it with <code>R_CAMEL_CASE_MATCH | R_PREFIX_MATCH</code>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=201066">201066</a>
[prefs] Preferences listeners are not removed while shutting down JavaModelManager
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=152841">152841</a>
[model] IJavaProject.findType(name, monitor) doesn't find secondary type
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=108456">108456</a>
IPackageFragmentRoot#getPackageFragment() should not accept invalid package names
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=201104">201104</a>
JavaElement of a recovered type binding should not return a compilation unit with no parent
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=190622">190622</a>
type binding marked as recovered but all is compiling
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=201064">201064</a>
[search] SearchEngine.searchAllTypeNames(..) does not find CamelCase match
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=183117">183117</a>
User Library Lost
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=200400">200400</a>
[search] Camel Case match prefix insensitive although spec says prefix sensitive
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=124624">124624</a>
[search] Camelcase matching routines should support end character
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=191739">191739</a>
"Duplicate nested type" bogus error on static class of abstract class or interface
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=200931">200931</a>
GENERATED_BY references still exist in some javadoc comments
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=200547">200547</a>
[1.5][compiler] Invalid ambiguous error when calling an overriden generic method with MULTIPLE bounds
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=198120">198120</a>
[1.5][compiler] Cannot directly invoke the abstract method huch(I1) for the type I1
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=196254">196254</a>
Overrides wrong for wildcard parameterized methods
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=193265">193265</a>
[1.5][compiler] Incorrect ambiguous method error involving abstract classes and enums
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=198253">198253</a>
unversioned downloads of ecj.jar and ecjsrc.zip


<a name="v_808"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.4M2 - August 21, 2007
<br>Project org.eclipse.jdt.core v_808
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_808">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=186781">bug 186781</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>
<li>API method <code>JavaProject.setOption(String, String)</code> behavior has been slightly changed consequent upon following bugs fixing:
<ul>
<li><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=152562">bug 152562</a>: 
<code>null</code> is now accepted for the option value and remove the corresponding preference from the project,</li>
<li><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=152578">bug 152578</a>: 
the preference is not removed from project when the value is equals to the workspace preference value.</li>
</ul>
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=183923">183923</a>
[prefs] NPE in JavaProject#setOptions
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=152578">152578</a>
[prefs] IJavaProject.setOption(Object,Object) wrongly removes key when value is equals to JavaCore one
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=152562">152562</a>
[prefs] IJavaProject.setOption(..., null) does not work
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=200449">200449</a>
[model] Classpath variable deprecation message is not flushed from cache when variable is removed
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=186113">186113</a>
[model] classpath variable deprecation messages not initialized when called
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=109695">109695</a>
[search] Numbers should be treated as upper-case letters in CamelCase matching
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=186781">186781</a>
StackOverflowError while computing launch button tooltip

<a name="v_807"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.4M2 - August 15, 2007
<br>Project org.eclipse.jdt.core v_807
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_807">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=200064">bug 200064</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=200064">200064</a>
[search] ResourceException while searching for method reference
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=198051">198051</a>
[1.5][compiler] Improper Polymorphic Exception Handling 
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=194399">194399</a>
IJavaProject.findType(String, String, WorkingCopyOwner) doesn't return the same element with different VMs.

<a name="v_806"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.4M2 - August 14, 2007
<br>Project org.eclipse.jdt.core v_806
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_806">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=138184">bug 138184</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=169970">169970</a>
[model] code assist favorites must honour build path of project in context
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=135493">135493</a>
[search] Clarify TypeNameRequestor#acceptType(...)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=138184">138184</a>
[search] Type Dialog (Could not uniquely map the name to a type)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=199004">199004</a>
[search] Java Search in 'JRE libraries' finds matches in Application Libraries

<a name="v_805"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.4M1 - August 2, 2007 - 3.4 MILESTONE 1
<br>Project org.eclipse.jdt.core v_805
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_805">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=198483">198483</a>
BuilderTests: need expectingUniqueCompiledClasses method

<a name="v_804"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.4M1 - August 1, 2007
<br>Project org.eclipse.jdt.core v_804
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_804">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>All tests projects and org.eclipse.jdt.compiler.tool project's versions have been incremented.</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=198362">198362</a>
Formatter stops working when source code contains following line

<a name="v_803"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.4M1 - July 30, 2007
<br>Project org.eclipse.jdt.core v_803
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_803">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=109636">109636</a>
Comment formatter doesn't support &quot;&amp;#42;/&quot;
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=197169">197169</a>
Formatter expands &amp;#64; in annotation in javadoc, creating invalid tag
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=198153">198153</a>
[formatter] adds extra space before expanded numerical entity
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=197400">197400</a>
NPE for completion engine in class static block
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=53727">53727</a>
[Tasks]  longest tags should match

<a name="v_802"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.4M1 - July 23, 2007
<br>Project org.eclipse.jdt.core v_802
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_802">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=166093">166093</a>
[search] NPE searching for references to private static method in class file
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=196514">196514</a>
Bunch of exception during code typing in JDT editor
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=186333">186333</a>
[search] Should better locate fields and methods matches on binary super types with unresolved references
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=167357">167357</a>
non-empty init block in local member type has no children
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=186114">186114</a>
IMethodBinding.overrides(..) should consider static

<a name="v_801"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.4M1 - July 17, 2007
<br>Project org.eclipse.jdt.core v_801
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_801">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>Incremented JDT/Core plug-in id to "3.4.0" as fix for 186822 adds new constants in <code>org.eclipse.jdt.core.compiler.IProblem</code>.
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=196339">196339</a>
[search] SearchEngine not returning correct result
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=196354">196354</a>
ClassCastException in package binding
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=196249">196249</a>
problem in parsing
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=195802">195802</a>
Name clash compile error generated if superclass is abstract
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=195468">195468</a>
[1.5][compiler] Eclipse compiler differs from javac with generics (name clash)
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=196653">196653</a>
[compiler] More resilience with unbound caught exceptions
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=192387">192387</a>
Wrong warning location for a non static reference to an enum value.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=195228">195228</a>
[search] Invalid path in open type dialog
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=186822">186822</a>
[1.5][compiler] Add more resilience on annotation and enum type declaration with type parameters
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=97998">97998</a>
[builder] improve the error handling in case the build encounters a locked file within the the output folder
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=188876">188876</a>
[assist] Proposals inside an import statement shouldn't be fully qualified

<a name="v_800"></a>
<hr><h1>
Eclipse Platform Build Notes<br>
Java Development Tooling Core</h1>
Eclipse SDK 3.4M1 - July 9, 2007
<br>Project org.eclipse.jdt.core v_800
(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_800">cvs</a>).
<h2>What's new in this drop</h2>
<ul>
<li>Incremented JDT/Core plug-in id to "3.3.100". Will go to "3.4.0" as soon as an API/feature gets added.
</li>
</ul>

<h3>Problem Reports Fixed</h3>
<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=190960">190960</a>
[batch][compiler] help message for annotations processing should be improved
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=103654">103654</a>
BindingKey.getTypeArguments bug with qualified types
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=191125">191125</a>
[1.5] [assist] NPE in CompletionEngine.proposeType()
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=195489">195489</a>
[search] Javadoc reference not found while using SearchEngine.searchDeclarationsOfReferencedTypes
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=195317">195317</a>
[compiler] java.lang.ClassFormatError: Invalid pc in LineNumberTable
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=195509">195509</a>
Need to improve classpath resolution for Apache Harmony in org/eclipse/jdt/core/tests/util/Util.java
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=195526">195526</a>
org.eclipse.jdt.core.tests.compiler.regression.GenericTypeTest.test0744 depends on non-specified package-private class HashMap.Entry implementation
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=191082">191082</a>
AnnotationMirror.getPosition() returns wrong value
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=189799">189799</a>
[jsr269] Make getDocComment() behave more like javac
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=192774">192774</a>
Annotation AST nodes should have unique IAnnotationBindings
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=171703">171703</a>
Eclipse cannot find source for *.class files
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=193979">193979</a>
AST parser generates wrong AST
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=95288">95288</a>
[model] CreatePackageFragmentOperation runs with wrong ISchedulingRule
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=142044">142044</a>
[search] &quot;And&quot; Pattern fails with NullPointerException
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=111882">111882</a>
[assist] Invalid relevance while completing in case of a switch
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=195263">195263</a>
Update exportplugins.xml to 3.3.100 and 3.4
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=181488">181488</a>
[index] Lots of unbuffered sequential reads in DiskIndex
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=18311">18311</a>
api: ISourceReference::getSource can return undocumented result
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=129560">129560</a>
[spec] Questionable javadoc for IJavaElement#isStructureKnown()
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=178226">178226</a>
Clarify spec for IJarEntryResource
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=163229">163229</a>
[model] IAccessRule does not say it cannot be implemented by clients
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=149590">149590</a>
[model] bindings for duplicate local variables share same key
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=195091">195091</a>
Index is rebuilt on each startup
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=170889">170889</a>
[5.0][content assist] strange label for 'class' proposal
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=190965">190965</a>
[compiler] useless assignment to local variable parameters in Scope line 431
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=153125">153125</a>
[getter setter] Getters/setters for variables starting with non-Latin letter are generated incorrectly
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=186760">186760</a>
Two cases of switch in DeltaProcessor#fire could be merged
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=170954">170954</a>
void should not be proposed inside method
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=120766">120766</a>
problems when using classes of the same name
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=137452">137452</a>
Autocomplete adds &quot;Void&quot; instead of doing nothing
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=194420">194420</a>
Misleading error message when build fails due to out of sync workspace
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=132139">132139</a>
[assist] Duplicate names while completing in local variable declaration
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=99631">99631</a>
[assist][5.0] Unnecessary proposals on annotation completion
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=171037">171037</a>
[codeassist] if 1.4 or higher code assist after 'import' should not suggest types from default package
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=139446">139446</a>
[build path] bug in the Edit Library dialog box, when changing the default JRE, and switching from alternate JRE to workspace default
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=192497">192497</a>
Cannot always find method definition, depending on cursor position
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=151967">151967</a>
[1.5][assist] Code completion with enumerations implementing an interface
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=150632">150632</a>
[assist] Content Assist and Parameter Hints sometimes don't work for constructor call
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=194435">194435</a>
JDT Core manifest contains invalid prereqed version
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=185318">185318</a>
[assist] No proposals when completing inside a method import
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=102031">102031</a>
Content assist proposes same type twice after &quot;call(new |&quot;
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=157069">157069</a>
[assist] Content Assist introduces compile error
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=119434">119434</a>
[code select] Code select returns doubled java element
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=194034">194034</a>
[1.5][Compiler] Inconsistency with javac: subclass does not properly inherit generic method
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=185037">185037</a>
Optimization opportunity in MethodVerifier
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=191928">191928</a>
Use Util.log instead of printStackTrace at AbstractImageBuilder#612
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=194185">194185</a>
[search] for package declarations finds also subpackages
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=191908">191908</a>
[1.5][compiler] Missing strike through for deprecated declaration fragment
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=192285">192285</a>
[formatter] Java source formatter not working if class has annotation on single line multiple fields declaration.

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

