### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core Index: model/org/eclipse/jdt/core/CorrectionEngine.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/core/CorrectionEngine.java,v retrieving revision 1.58 diff -u -r1.58 CorrectionEngine.java --- model/org/eclipse/jdt/core/CorrectionEngine.java 27 Aug 2009 15:27:02 -0000 1.58 +++ model/org/eclipse/jdt/core/CorrectionEngine.java 8 Apr 2010 02:30:14 -0000 @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2009 IBM Corporation and others. + * Copyright (c) 2000, 2010 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -235,7 +235,20 @@ private void correct(char[] argument) { try { String source = this.compilationUnit.getSource(); - Scanner scanner = new Scanner(); + Map currentProjectOptions = this.compilationUnit.getJavaProject().getOptions(true); + long sourceLevel = CompilerOptions.versionToJdkLevel(currentProjectOptions.get(JavaCore.COMPILER_SOURCE)); + long complianceLevel = CompilerOptions.versionToJdkLevel(currentProjectOptions.get(JavaCore.COMPILER_COMPLIANCE)); + + Scanner scanner = + new Scanner( + false /*comment*/, + false /*whitespace*/, + false /*nls*/, + sourceLevel, + complianceLevel, + null/*taskTag*/, + null/*taskPriorities*/, + true /*taskCaseSensitive*/); scanner.setSource(source.toCharArray()); scanner.resetTo(this.correctionStart, this.correctionEnd); #P org.eclipse.jdt.core.tests.model Index: src/org/eclipse/jdt/core/tests/model/CodeCorrectionTests.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CodeCorrectionTests.java,v retrieving revision 1.25 diff -u -r1.25 CodeCorrectionTests.java --- src/org/eclipse/jdt/core/tests/model/CodeCorrectionTests.java 27 Jun 2008 16:02:40 -0000 1.25 +++ src/org/eclipse/jdt/core/tests/model/CodeCorrectionTests.java 8 Apr 2010 02:30:16 -0000 @@ -10,14 +10,25 @@ *******************************************************************************/ package org.eclipse.jdt.core.tests.model; -import junit.framework.*; +import junit.framework.Test; -import org.eclipse.core.resources.*; -import org.eclipse.core.runtime.*; -import org.eclipse.jdt.core.*; +import org.eclipse.core.resources.IMarker; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IncrementalProjectBuilder; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.jdt.core.CorrectionEngine; +import org.eclipse.jdt.core.ICompilationUnit; +import org.eclipse.jdt.core.IJavaElement; +import org.eclipse.jdt.core.IJavaModelMarker; +import org.eclipse.jdt.core.IJavaProject; +import org.eclipse.jdt.core.JavaCore; +import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jdt.core.compiler.IProblem; -import org.eclipse.jdt.core.search.*; - +import org.eclipse.jdt.core.search.IJavaSearchConstants; +import org.eclipse.jdt.core.search.IJavaSearchScope; +import org.eclipse.jdt.core.search.SearchEngine; +import org.eclipse.jdt.core.search.SearchPattern; +import org.eclipse.jdt.core.search.TypeNameRequestor; public class CodeCorrectionTests extends AbstractJavaModelTests { public static boolean DEBUG = false; @@ -54,7 +65,7 @@ public void setUpSuite() throws Exception { super.setUpSuite(); - IJavaProject project = setUpJavaProject("CodeCorrection"); + IJavaProject project = setUpJavaProject("CodeCorrection", "1.5"); // dummy query for waiting until the indexes are ready SearchEngine engine = new SearchEngine(); @@ -659,6 +670,32 @@ ""+end, requestor.getEnds()); } +public void testCorrectLocalVariable2() throws JavaModelException { + CorrectionEngine engine = new CorrectionEngine(JavaCore.getOptions()); + CodeCorrectionTestsRequestor requestor = new CodeCorrectionTestsRequestor(); + ICompilationUnit cu= getCompilationUnit("CodeCorrection", "src", "", "CorrectLocalVariable2.java"); + IMarker[] markers = getMarkers(cu); + assertTrue("should have one problem",markers.length == 1); + engine.computeCorrections(markers[0], null, 0, requestor); + + String src = cu.getSource(); + String error = "ba\\ud842\\udf9fr"; + int start = src.lastIndexOf(error); + int end = start + error.length(); + + assertEquals( + "should have one suggestion", + "ba\ud842\udf9fr0", + requestor.getSuggestions()); + assertEquals( + "a start of a suggestion is not correct", + ""+start, + requestor.getStarts()); + assertEquals( + "a end of a suggestion is not correct", + ""+end, + requestor.getEnds()); +} public void testCorrectArgument1() throws JavaModelException { CorrectionEngine engine = new CorrectionEngine(JavaCore.getOptions()); CodeCorrectionTestsRequestor requestor = new CodeCorrectionTestsRequestor(); Index: workspace/CodeCorrection/src/CorrectLocalVariable2.java =================================================================== RCS file: workspace/CodeCorrection/src/CorrectLocalVariable2.java diff -N workspace/CodeCorrection/src/CorrectLocalVariable2.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ workspace/CodeCorrection/src/CorrectLocalVariable2.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,6 @@ +public class CorrectLocalVariable2 { + void foo(){ + int ba\ud842\udf9fr0; + ba\ud842\udf9fr = 5; + } +} \ No newline at end of file