Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 280616
Collapse All | Expand All

(-)formatter/org/eclipse/jdt/internal/formatter/Scribe.java (-1 / +9 lines)
Lines 14-25 Link Here
14
import java.io.StringReader;
14
import java.io.StringReader;
15
import java.util.Arrays;
15
import java.util.Arrays;
16
import java.util.Comparator;
16
import java.util.Comparator;
17
import java.util.Map;
17
18
19
import org.eclipse.jdt.core.JavaCore;
18
import org.eclipse.jdt.core.compiler.CharOperation;
20
import org.eclipse.jdt.core.compiler.CharOperation;
19
import org.eclipse.jdt.core.compiler.InvalidInputException;
21
import org.eclipse.jdt.core.compiler.InvalidInputException;
20
import org.eclipse.jdt.core.formatter.CodeFormatter;
22
import org.eclipse.jdt.core.formatter.CodeFormatter;
21
import org.eclipse.jdt.internal.compiler.ASTVisitor;
23
import org.eclipse.jdt.internal.compiler.ASTVisitor;
22
import org.eclipse.jdt.internal.compiler.ast.Annotation;
24
import org.eclipse.jdt.internal.compiler.ast.Annotation;
25
import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
26
import org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
23
import org.eclipse.jdt.internal.compiler.lookup.BlockScope;
27
import org.eclipse.jdt.internal.compiler.lookup.BlockScope;
24
import org.eclipse.jdt.internal.compiler.parser.Parser;
28
import org.eclipse.jdt.internal.compiler.parser.Parser;
25
import org.eclipse.jdt.internal.compiler.parser.Scanner;
29
import org.eclipse.jdt.internal.compiler.parser.Scanner;
Lines 1858-1864 Link Here
1858
		// 3 - format snippet (@see JavaDocRegion#formatCodeSnippet)
1862
		// 3 - format snippet (@see JavaDocRegion#formatCodeSnippet)
1859
		// include comments in case of line comments are present in the snippet
1863
		// include comments in case of line comments are present in the snippet
1860
		String formattedSnippet = convertedSnippet;
1864
		String formattedSnippet = convertedSnippet;
1861
		TextEdit edit= CommentFormatterUtil.format2(CodeFormatter.K_UNKNOWN | CodeFormatter.F_INCLUDE_COMMENTS, convertedSnippet, 0, this.lineSeparator, this.formatter.preferences.getMap());
1865
		Map options = this.formatter.preferences.getMap();
1866
		if (this.scanner.sourceLevel > ClassFileConstants.JDK1_3) {
1867
			options.put(JavaCore.COMPILER_SOURCE, CompilerOptions.versionFromJdkLevel(this.scanner.sourceLevel));
1868
		}
1869
		TextEdit edit= CommentFormatterUtil.format2(CodeFormatter.K_UNKNOWN | CodeFormatter.F_INCLUDE_COMMENTS, convertedSnippet, 0, this.lineSeparator, options);
1862
		if (edit == null) {
1870
		if (edit == null) {
1863
			// 3.a - not a valid code to format, keep initial buffer
1871
			// 3.a - not a valid code to format, keep initial buffer
1864
			formattedSnippet = inputBuffer.toString();
1872
			formattedSnippet = inputBuffer.toString();
(-)src/org/eclipse/jdt/core/tests/formatter/FormatterCommentsBugsTest.java (+51 lines)
Lines 4653-4656 Link Here
4653
	);
4653
	);
4654
}
4654
}
4655
4655
4656
/**
4657
 * @bug 280616: [formatter] Valid 1.5 code is not formatted inside <pre> tag
4658
 * @test Ensure that 1.5 snippet is formatted when source level is 1.5
4659
 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=280616"
4660
 */
4661
public void testBug280616() throws JavaModelException {
4662
	String source = 
4663
		"public interface X {\n" + 
4664
		"/**\n" + 
4665
		" * <pre>\n" + 
4666
		" *   void solve(Executor e,\n" + 
4667
		" *              Collection&lt;Callable&lt;Result&gt;&gt; solvers)\n" + 
4668
		" *     throws InterruptedException, ExecutionException {\n" + 
4669
		" *       CompletionService&lt;Result&gt; ecs\n" + 
4670
		" *           = new ExecutorCompletionService&lt;Result&gt;(e);\n" + 
4671
		" *       for (Callable&lt;Result&gt; s : solvers)\n" + 
4672
		" *           ecs.submit(s);\n" + 
4673
		" *       int n = solvers.size();\n" + 
4674
		" *       for (int i = 0; i &lt; n; ++i) {\n" + 
4675
		" *           Result r = ecs.take().get();\n" + 
4676
		" *           if (r != null)\n" + 
4677
		" *               use(r);\n" + 
4678
		" *       }\n" + 
4679
		" *   }\n" + 
4680
		" * </pre>\n" + 
4681
		" */\n" + 
4682
		" void foo();\n" + 
4683
		"}\n";
4684
	formatSource(source,
4685
		"public interface X {\n" + 
4686
		"	/**\n" + 
4687
		"	 * <pre>\n" + 
4688
		"	 * void solve(Executor e, Collection&lt;Callable&lt;Result&gt;&gt; solvers)\n" + 
4689
		"	 * 		throws InterruptedException, ExecutionException {\n" + 
4690
		"	 * 	CompletionService&lt;Result&gt; ecs = new ExecutorCompletionService&lt;Result&gt;(e);\n" + 
4691
		"	 * 	for (Callable&lt;Result&gt; s : solvers)\n" + 
4692
		"	 * 		ecs.submit(s);\n" + 
4693
		"	 * 	int n = solvers.size();\n" + 
4694
		"	 * 	for (int i = 0; i &lt; n; ++i) {\n" + 
4695
		"	 * 		Result r = ecs.take().get();\n" + 
4696
		"	 * 		if (r != null)\n" + 
4697
		"	 * 			use(r);\n" + 
4698
		"	 * 	}\n" + 
4699
		"	 * }\n" + 
4700
		"	 * </pre>\n" + 
4701
		"	 */\n" + 
4702
		"	void foo();\n" + 
4703
		"}\n"
4704
	);
4705
}
4706
4656
}
4707
}

Return to bug 280616