Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 250953 Details for
Bug 458208
[formatter] Follow-up bug for comments
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
patch - version 1
458208-v1.patch (text/plain), 22.49 KB, created by
Mateusz Matela
on 2015-02-19 15:56:11 EST
(
hide
)
Description:
patch - version 1
Filename:
MIME Type:
Creator:
Mateusz Matela
Created:
2015-02-19 15:56:11 EST
Size:
22.49 KB
patch
obsolete
>diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/RunFormatterTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/RunFormatterTests.java >index ce0c8c7..b2995a3 100644 >--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/RunFormatterTests.java >+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/RunFormatterTests.java >@@ -1,5 +1,5 @@ > /******************************************************************************* >- * Copyright (c) 2005, 2014 IBM Corporation and others. >+ * Copyright (c) 2005, 2015 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 >@@ -9,6 +9,7 @@ > * IBM Corporation - initial API and implementation > * Jesper S Moller - Contribution for bug 402173 > * Contribution for bug 402892 >+ * Mateusz Matela <mateusz.matela@gmail.com> - [formatter] follow up bug for comments - https://bugs.eclipse.org/458208 > *******************************************************************************/ > package org.eclipse.jdt.core.tests; > >@@ -36,6 +37,7 @@ > TEST_SUITES.add(FormatterCommentsClearBlankLinesTests.class); > TEST_SUITES.add(FormatterJavadocDontIndentTagsTests.class); > TEST_SUITES.add(FormatterJavadocDontIndentTagsDescriptionTests.class); >+ TEST_SUITES.add(FormatterOldBugsGistTests.class); > } > > public static Class[] getTestClasses() { >diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterBugsTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterBugsTests.java >index 2ae7192..3089f96 100644 >--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterBugsTests.java >+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterBugsTests.java >@@ -10,6 +10,7 @@ > * Ray V. (voidstar@gmail.com) - Contribution for bug 282988 > * Robin Stocker - Bug 49619 - [formatting] comment formatter leaves whitespace in comments > * Mateusz Matela <mateusz.matela@gmail.com> - [formatter] Formatter does not format Java code correctly, especially when max line width is set - https://bugs.eclipse.org/303519 >+ * Mateusz Matela <mateusz.matela@gmail.com> - [formatter] follow up bug for comments - https://bugs.eclipse.org/458208 > *******************************************************************************/ > package org.eclipse.jdt.core.tests.formatter; > >@@ -1904,7 +1905,8 @@ > "@MessageDriven(mappedName = \"filiality/SchedulerMQService\",\n" + > " activationConfig = {\n" + > " @ActivationConfigProperty(propertyName = \"cronTrigger\",\n" + >- " propertyValue = \"0/10 * * * * ?\") })\n" + >+ " propertyValue = \"0/10 * * * * ?\")\n" + >+ " })\n" + > "@RunAs(\"admin\")\n" + > "@ResourceAdapter(\"quartz-ra.rar\")\n" + > "@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)\n" + >@@ -8039,9 +8041,11 @@ > "public class X07 {\n" + > "\n" + > " static final long[] jjtoToken = {\n" + >- " 0x7fbfecffL, };\n" + >+ " 0x7fbfecffL,\n" + >+ " };\n" + > " static final long[] jjtoSkip = {\n" + >- " 0x400000L, };\n" + >+ " 0x400000L,\n" + >+ " };\n" + > "\n" + > "}\n" > ); >@@ -8070,10 +8074,12 @@ > "\n" + > " static final long[] jjtoToken =\n" + > " {\n" + >- " 0x7fbfecffL, };\n" + >+ " 0x7fbfecffL,\n" + >+ " };\n" + > " static final long[] jjtoSkip =\n" + > " {\n" + >- " 0x400000L, };\n" + >+ " 0x400000L,\n" + >+ " };\n" + > "\n" + > "}\n" > ); >@@ -8122,7 +8128,8 @@ > "public class X09 {\n" + > " public Class[] getAdapterList() {\n" + > " return new Class[] {\n" + >- " IWorkbenchAdapter.class };\n" + >+ " IWorkbenchAdapter.class\n" + >+ " };\n" + > " }\n" + > "}\n" > ); >@@ -9303,7 +9310,8 @@ > " * \"GeneralPage.DoubleClick\", resName, 1,\n" + > " * new String[][] {\n" + > " * { \"Open Browser\", \"open\" },\n" + >- " * { \"Expand Tree\", \"expand\" } },\n" + >+ " * { \"Expand Tree\", \"expand\" }\n" + >+ " * },\n" + > " * parent);\n" + > " * </pre>\n" + > " */\n" + >@@ -9335,7 +9343,8 @@ > " /* INACTIVE */ { \"INACTIVE\", \"PARTLY_ACTIVE\", \"PARTLY_ACTIVE\" },\n" + > " /* PARTLY_ACTIVE */ { \"PARTLY_ACTIVE\", \"PARTLY_ACTIVE\",\n" + > " \"PARTLY_ACTIVE\" },\n" + >- " /* ACTIVE */ { \"PARTLY_ACTIVE\", \"PARTLY_ACTIVE\", \"ACTIVE\" } };\n" + >+ " /* ACTIVE */ { \"PARTLY_ACTIVE\", \"PARTLY_ACTIVE\", \"ACTIVE\" }\n" + >+ " };\n" + > "}\n" > ); > } >@@ -9506,7 +9515,8 @@ > " user,\n" + > " revision,\n" + > " String.valueOf(delta),\n" + >- " line });\n" + >+ " line\n" + >+ " });\n" + > " }\n" + > "}\n" > ); >@@ -9609,7 +9619,8 @@ > " IWorkbenchThemeConstants.INACTIVE_TAB_TEXT_COLOR),\n" + > " new Color[] {\n" + > " colorRegistry.get(\n" + >- " IWorkbenchThemeConstants.INACTIVE_TAB_BG_START) },\n" + >+ " IWorkbenchThemeConstants.INACTIVE_TAB_BG_START)\n" + >+ " },\n" + > " new int[0],\n" + > " true);\n" + > " }\n" + >@@ -9778,7 +9789,8 @@ > " public char[][] getCompoundName() {\n" + > " return EvaluationConstants.ROOT_COMPOUND_NAME;\n" + > " }\n" + >- " } },\n" + >+ " }\n" + >+ " },\n" + > " null);\n" + > " }\n" + > " }\n" + >@@ -9983,7 +9995,8 @@ > " return info.getLocal()\n" + > " .getType() == IResource.FILE;\n" + > " }\n" + >- " } }),\n" + >+ " }\n" + >+ " }),\n" + > " // Conflicting changes of files will fail if the local is not\n" + > " // managed\n" + > " // or is an addition\n" + >@@ -10010,7 +10023,8 @@ > " }\n" + > " return false;\n" + > " }\n" + >- " } }),\n" + >+ " }\n" + >+ " }),\n" + > " // Conflicting changes involving a deletion on one side will\n" + > " // aways fail\n" + > " new AndSyncInfoFilter(new FastSyncInfoFilter[] {\n" + >@@ -10029,7 +10043,8 @@ > " && !base.equals(remote));\n" + > " }\n" + > " }\n" + >- " } }),\n" + >+ " }\n" + >+ " }),\n" + > " // Conflicts where the file type is binary will work but are not\n" + > " // merged\n" + > " // so they should be skipped\n" + >@@ -10058,9 +10073,11 @@ > " }\n" + > " return false;\n" + > " }\n" + >- " } }),\n" + >+ " }\n" + >+ " }),\n" + > " // Outgoing changes may not fail but they are skipped as well\n" + >- " new SyncInfoDirectionFilter(SyncInfo.OUTGOING) });\n" + >+ " new SyncInfoDirectionFilter(SyncInfo.OUTGOING)\n" + >+ " });\n" + > " }\n" + > "}\n" > ); >@@ -10111,7 +10128,8 @@ > " { 104, 20 },\n" + > " { 108, 21 },\n" + > " { 12, 1856 },\n" + >- " { 13, 1920 } }, };\n" + >+ " { 13, 1920 } },\n" + >+ " };\n" + > "}\n" > ); > } >@@ -10252,7 +10270,8 @@ > " UNKNOWN,\n" + > " UNKNOWN,\n" + > " UNKNOWN,\n" + >- " UNKNOWN } };\n" + >+ " UNKNOWN }\n" + >+ " };\n" + > "\n" + > "}\n" > ); >@@ -10298,7 +10317,8 @@ > " \"READ_POTENTIAL\",\n" + > " \"UNKNOWN\",\n" + > " \"UNKNOWN\",\n" + >- " \"UNKNOWN\" }, };\n" + >+ " \"UNKNOWN\" },\n" + >+ " };\n" + > "\n" + > "}\n" > ); >@@ -10346,7 +10366,8 @@ > " \"READ_POTENTIAL\",\n" + > " \"UNKNOWN\",\n" + > " \"UNKNOWN\",\n" + >- " \"UNKNOWN\" }, };\n" + >+ " \"UNKNOWN\" },\n" + >+ " };\n" + > "\n" + > "}\n" > ); >@@ -10387,7 +10408,8 @@ > " \"1234567890123456789012345678901234567890\" },\n" + > " /* Comment 3 */ {\n" + > " \"ABCDEFGHIJKLMNOPQRSTUVWXYZ______________\",\n" + >- " \"ABCDEFGHIJKLMNOPQRSTUVWXYZ______________\" }, };\n" + >+ " \"ABCDEFGHIJKLMNOPQRSTUVWXYZ______________\" },\n" + >+ " };\n" + > "\n" + > "}\n" > ); >@@ -10639,4 +10661,31 @@ > > // K_COMPILATION_UNIT is tested by FormatterRegressionTests#test512() and #test643() > } >+/** >+ * @bug 458208: [formatter] follow up bug for comments >+ * @test test a space is not added after a lambda expression in parenthesis >+ * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=458208" >+ */ >+public void testBug458208() throws Exception { >+ String source = >+ "package p;\n" + >+ "import java.util.function.IntConsumer;\n" + >+ "class TestInlineLambda1 {\n" + >+ " {\n" + >+ " IntConsumer op = (x -> {} );\n" + >+ " }\n" + >+ "}\n"; >+ formatSource(source, >+ "package p;\n" + >+ "\n" + >+ "import java.util.function.IntConsumer;\n" + >+ "\n" + >+ "class TestInlineLambda1 {\n" + >+ " {\n" + >+ " IntConsumer op = (x -> {\n" + >+ " });\n" + >+ " }\n" + >+ "}\n" >+ ); >+} > } >diff --git a/org.eclipse.jdt.core/eclipse.jdt.ui.patch.txt b/org.eclipse.jdt.core/eclipse.jdt.ui.patch.txt >deleted file mode 100644 >index 676563d..0000000 >--- a/org.eclipse.jdt.core/eclipse.jdt.ui.patch.txt >+++ /dev/null >@@ -1,114 +0,0 @@ >-### Eclipse Workspace Patch 1.0 >-#P org.eclipse.jdt.ui >-diff --git ui/org/eclipse/jdt/internal/ui/preferences/formatter/IndentationTabPage.java ui/org/eclipse/jdt/internal/ui/preferences/formatter/IndentationTabPage.java >-index bbcb3bb..949bf62 100644 >---- ui/org/eclipse/jdt/internal/ui/preferences/formatter/IndentationTabPage.java >-+++ ui/org/eclipse/jdt/internal/ui/preferences/formatter/IndentationTabPage.java >-@@ -19,8 +19,6 @@ >- import org.eclipse.swt.widgets.Composite; >- import org.eclipse.swt.widgets.Group; >- >--import org.eclipse.core.runtime.Assert; >-- >- import org.eclipse.jdt.core.JavaCore; >- import org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants; >- >-@@ -60,7 +58,6 @@ >- "}";//$NON-NLS-1$ >- >- private CompilationUnitPreview fPreview; >-- private String fOldTabChar= null; >- >- public IndentationTabPage(ModifyDialog modifyDialog, Map<String, String> workingValues) { >- super(modifyDialog, workingValues); >-@@ -79,21 +76,17 @@ >- }; >- final ComboPreference tabPolicy= createComboPref(generalGroup, numColumns, FormatterMessages.IndentationTabPage_general_group_option_tab_policy, DefaultCodeFormatterConstants.FORMATTER_TAB_CHAR, tabPolicyValues, tabPolicyLabels); >- final CheckboxPreference onlyForLeading= createCheckboxPref(generalGroup, numColumns, FormatterMessages.IndentationTabPage_use_tabs_only_for_leading_indentations, DefaultCodeFormatterConstants.FORMATTER_USE_TABS_ONLY_FOR_LEADING_INDENTATIONS, FALSE_TRUE); >-- final NumberPreference indentSize= createNumberPref(generalGroup, numColumns, FormatterMessages.IndentationTabPage_general_group_option_indent_size, DefaultCodeFormatterConstants.FORMATTER_TAB_SIZE, 0, 32); >-+ final NumberPreference indentSize= createNumberPref(generalGroup, numColumns, FormatterMessages.IndentationTabPage_general_group_option_indent_size, DefaultCodeFormatterConstants.FORMATTER_INDENTATION_SIZE, 0, 32); >- final NumberPreference tabSize= createNumberPref(generalGroup, numColumns, FormatterMessages.IndentationTabPage_general_group_option_tab_size, DefaultCodeFormatterConstants.FORMATTER_TAB_SIZE, 0, 32); >- >-- String tabchar= fWorkingValues.get(DefaultCodeFormatterConstants.FORMATTER_TAB_CHAR); >-- updateTabPreferences(tabchar, tabSize, indentSize, onlyForLeading); >-- tabPolicy.addObserver(new Observer() { >-+ updateTabPreferences(indentSize, onlyForLeading); >-+ Observer tabObserver = new Observer() { >- public void update(Observable o, Object arg) { >-- updateTabPreferences((String) arg, tabSize, indentSize, onlyForLeading); >-+ updateTabPreferences(indentSize, onlyForLeading); >- } >-- }); >-- tabSize.addObserver(new Observer() { >-- public void update(Observable o, Object arg) { >-- indentSize.updateWidget(); >-- } >-- }); >-+ }; >-+ tabPolicy.addObserver(tabObserver); >-+ tabSize.addObserver(tabObserver); >- >- final Group typeMemberGroup= createGroup(numColumns, composite, FormatterMessages.IndentationTabPage_field_alignment_group_title); >- createCheckboxPref(typeMemberGroup, numColumns, FormatterMessages.IndentationTabPage_field_alignment_group_align_fields_in_columns, DefaultCodeFormatterConstants.FORMATTER_ALIGN_TYPE_MEMBERS_ON_COLUMNS, FALSE_TRUE); >-@@ -141,50 +134,17 @@ >- fPreview.update(); >- } >- >-- private void updateTabPreferences(String tabPolicy, NumberPreference tabPreference, NumberPreference indentPreference, CheckboxPreference onlyForLeading) { >-- /* >-- * If the tab-char is SPACE (or TAB), INDENTATION_SIZE >-- * preference is not used by the core formatter. We piggy back the >-- * visual tab length setting in that preference in that case. If the >-- * user selects MIXED, we use the previous TAB_SIZE preference as the >-- * new INDENTATION_SIZE (as this is what it really is) and set the >-- * visual tab size to the value piggy backed in the INDENTATION_SIZE >-- * preference. See also CodeFormatterUtil. >-- */ >-- if (DefaultCodeFormatterConstants.MIXED.equals(tabPolicy)) { >-- if (JavaCore.SPACE.equals(fOldTabChar) || JavaCore.TAB.equals(fOldTabChar)) >-- swapTabValues(); >-- tabPreference.setEnabled(true); >-- tabPreference.setKey(DefaultCodeFormatterConstants.FORMATTER_TAB_SIZE); >-- indentPreference.setEnabled(true); >-- indentPreference.setKey(DefaultCodeFormatterConstants.FORMATTER_INDENTATION_SIZE); >-- onlyForLeading.setEnabled(true); >-- } else if (JavaCore.SPACE.equals(tabPolicy)) { >-- if (DefaultCodeFormatterConstants.MIXED.equals(fOldTabChar)) >-- swapTabValues(); >-- tabPreference.setEnabled(true); >-- tabPreference.setKey(DefaultCodeFormatterConstants.FORMATTER_INDENTATION_SIZE); >-- indentPreference.setEnabled(true); >-- indentPreference.setKey(DefaultCodeFormatterConstants.FORMATTER_TAB_SIZE); >-- onlyForLeading.setEnabled(false); >-- } else if (JavaCore.TAB.equals(tabPolicy)) { >-- if (DefaultCodeFormatterConstants.MIXED.equals(fOldTabChar)) >-- swapTabValues(); >-- tabPreference.setEnabled(true); >-- tabPreference.setKey(DefaultCodeFormatterConstants.FORMATTER_TAB_SIZE); >-- indentPreference.setEnabled(false); >-- indentPreference.setKey(DefaultCodeFormatterConstants.FORMATTER_TAB_SIZE); >-- onlyForLeading.setEnabled(true); >-- } else { >-- Assert.isTrue(false); >-- } >-- fOldTabChar= tabPolicy; >-- } >-+ private void updateTabPreferences(NumberPreference indentPreference, CheckboxPreference onlyForLeading) { >-+ String tabPolicy = fWorkingValues.get(DefaultCodeFormatterConstants.FORMATTER_TAB_CHAR); >-+ onlyForLeading.setEnabled(!JavaCore.SPACE.equals(tabPolicy)); >- >-- private void swapTabValues() { >-- String tabSize= fWorkingValues.get(DefaultCodeFormatterConstants.FORMATTER_TAB_SIZE); >-- String indentSize= fWorkingValues.get(DefaultCodeFormatterConstants.FORMATTER_INDENTATION_SIZE); >-- fWorkingValues.put(DefaultCodeFormatterConstants.FORMATTER_TAB_SIZE, indentSize); >-- fWorkingValues.put(DefaultCodeFormatterConstants.FORMATTER_INDENTATION_SIZE, tabSize); >-+ if (JavaCore.TAB.equals(tabPolicy)) { >-+ // indentation size preference must be disabled and show the same value as tab size >-+ String tabSize= fWorkingValues.get(DefaultCodeFormatterConstants.FORMATTER_TAB_SIZE); >-+ fWorkingValues.put(DefaultCodeFormatterConstants.FORMATTER_INDENTATION_SIZE, tabSize); >-+ indentPreference.setEnabled(false); >-+ } else { >-+ indentPreference.setEnabled(true); >-+ } >- } >- } >\ No newline at end of file >diff --git a/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/SpacePreparator.java b/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/SpacePreparator.java >index 5381272..5bc91b5 100644 >--- a/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/SpacePreparator.java >+++ b/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/SpacePreparator.java >@@ -7,10 +7,42 @@ > * > * Contributors: > * Mateusz Matela <mateusz.matela@gmail.com> - [formatter] Formatter does not format Java code correctly, especially when max line width is set - https://bugs.eclipse.org/303519 >+ * Mateusz Matela <mateusz.matela@gmail.com> - [formatter] follow up bug for comments - https://bugs.eclipse.org/458208 > *******************************************************************************/ > package org.eclipse.jdt.internal.formatter; > >-import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.*; >+import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameAND; >+import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameARROW; >+import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameAT; >+import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameCOLON; >+import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameCOMMA; >+import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameELLIPSIS; >+import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameEQUAL; >+import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameGREATER; >+import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameIdentifier; >+import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameLBRACE; >+import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameLBRACKET; >+import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameLESS; >+import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameLPAREN; >+import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameMINUS; >+import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameMINUS_MINUS; >+import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameOR; >+import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNamePLUS; >+import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNamePLUS_PLUS; >+import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameQUESTION; >+import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameRBRACE; >+import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameRBRACKET; >+import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameRIGHT_SHIFT; >+import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameRPAREN; >+import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameSEMICOLON; >+import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameUNSIGNED_RIGHT_SHIFT; >+import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNamecase; >+import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNamedefault; >+import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameinstanceof; >+import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNamereturn; >+import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNamethrow; >+import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNamethrows; >+import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNamewhile; > > import java.util.List; > >@@ -490,9 +522,11 @@ > handleToken(node, TokenNameLBRACE, this.options.insert_space_before_opening_brace_in_block, false); > if (this.options.insert_space_after_closing_brace_in_block) { > int closeBraceIndex = this.tm.lastIndexIn(node, TokenNameRBRACE); >- if (closeBraceIndex + 1 < this.tm.size() >- && this.tm.get(closeBraceIndex + 1).tokenType != TokenNameSEMICOLON) >- this.tm.get(closeBraceIndex).spaceAfter(); >+ if (closeBraceIndex + 1 < this.tm.size()) { >+ int nextToken = this.tm.get(closeBraceIndex + 1).tokenType; >+ if (nextToken != TokenNameSEMICOLON && nextToken != TokenNameRPAREN) >+ this.tm.get(closeBraceIndex).spaceAfter(); >+ } > } > return true; > } >diff --git a/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/linewrap/WrapPreparator.java b/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/linewrap/WrapPreparator.java >index a49ce78..3731667 100644 >--- a/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/linewrap/WrapPreparator.java >+++ b/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/linewrap/WrapPreparator.java >@@ -7,6 +7,7 @@ > * > * Contributors: > * Mateusz Matela <mateusz.matela@gmail.com> - [formatter] Formatter does not format Java code correctly, especially when max line width is set - https://bugs.eclipse.org/303519 >+ * Mateusz Matela <mateusz.matela@gmail.com> - [formatter] follow up bug for comments - https://bugs.eclipse.org/458208 > *******************************************************************************/ > package org.eclipse.jdt.internal.formatter.linewrap; > >@@ -20,6 +21,7 @@ > import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameLPAREN; > import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameOR; > import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameQUESTION; >+import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameRBRACE; > import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameRPAREN; > import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameStringLiteral; > import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameextends; >@@ -398,6 +400,17 @@ > this.wrapGroupEnd = this.tm.lastIndexIn(node, -1); > handleWrap(this.options.alignment_for_expressions_in_array_initializer, node); > } >+ if (!this.options.join_wrapped_lines >+ && !this.options.insert_new_line_before_closing_brace_in_array_initializer) { >+ // if there is a line break before the closing brace, formatter should treat it as a valid wrap to preserve >+ int closingBraceIndex = this.tm.lastIndexIn(node, TokenNameRBRACE); >+ Token closingBrace = this.tm.get(closingBraceIndex); >+ if (this.tm.countLineBreaksBetween(this.tm.get(closingBraceIndex - 1), closingBrace) == 1) { >+ int openingBraceIndex = this.tm.firstIndexIn(node, TokenNameLBRACE); >+ closingBrace.setWrapPolicy( >+ new WrapPolicy(0, openingBraceIndex, this.currentDepth, 1, true, false, -1, false)); >+ } >+ } > return true; > } >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 458208
:
250909
|
250953
|
251319
|
251749
|
251859
|
252854