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 119428 Details for
Bug 256799
[formatter] Formatter wrongly adds space to //$FALL-THROUGH$ is
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
Proposed patch
v02.txt (text/plain), 11.46 KB, created by
Frederic Fusier
on 2008-12-03 15:48:54 EST
(
hide
)
Description:
Proposed patch
Filename:
MIME Type:
Creator:
Frederic Fusier
Created:
2008-12-03 15:48:54 EST
Size:
11.46 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.jdt.core >Index: formatter/org/eclipse/jdt/internal/formatter/Scribe.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/Scribe.java,v >retrieving revision 1.153 >diff -u -r1.153 Scribe.java >--- formatter/org/eclipse/jdt/internal/formatter/Scribe.java 9 Sep 2008 15:39:07 -0000 1.153 >+++ formatter/org/eclipse/jdt/internal/formatter/Scribe.java 3 Dec 2008 20:42:49 -0000 >@@ -21,6 +21,7 @@ > import org.eclipse.jdt.internal.compiler.ASTVisitor; > import org.eclipse.jdt.internal.compiler.ast.Annotation; > import org.eclipse.jdt.internal.compiler.lookup.BlockScope; >+import org.eclipse.jdt.internal.compiler.parser.Parser; > import org.eclipse.jdt.internal.compiler.parser.Scanner; > import org.eclipse.jdt.internal.compiler.parser.ScannerHelper; > import org.eclipse.jdt.internal.compiler.parser.TerminalTokens; >@@ -2145,6 +2146,36 @@ > continue; > case TerminalTokens.TokenNameEOF: > continue; >+ case TerminalTokens.TokenNameIdentifier: >+ if (previousToken == -1 || previousToken == SKIP_FIRST_WHITESPACE_TOKEN) { >+ char[] identifier = this.scanner.getCurrentTokenSource(); >+ int startPosition = this.scanner.getCurrentTokenStartPosition(); >+ int restartPosition = this.scanner.currentPosition; >+ if (CharOperation.equals(identifier, Parser.FALL_THROUGH_TAG, 0, 5/*length of string "$FALL"*/) && this.scanner.currentCharacter == '-') { >+ try { >+ this.scanner.getNextToken(); // consume the '-' >+ token = this.scanner.getNextToken(); // consume the "THROUGH" >+ if (token == TerminalTokens.TokenNameIdentifier) { >+ identifier = this.scanner.getCurrentTokenSource(); >+ if (CharOperation.endsWith(Parser.FALL_THROUGH_TAG, identifier)) { >+ // the comment starts with a fall through >+ if (previousToken == SKIP_FIRST_WHITESPACE_TOKEN) { >+ addReplaceEdit(spaceStartPosition, startPosition-1, " "); //$NON-NLS-1$ >+ } >+ this.scanner.startPosition = startPosition; >+ previousToken = token; >+ break; >+ } >+ } >+ } catch (InvalidInputException iie) { >+ // skip >+ } >+ } >+ // this was not a valid fall-through tag, hence continue to process the comment normally >+ this.scanner.startPosition = startPosition; >+ this.scanner.currentPosition = restartPosition; >+ } >+ break; > } > int tokenStart = this.scanner.getCurrentTokenStartPosition(); > int tokenLength = (this.scanner.atEnd() ? this.scanner.eofPosition : this.scanner.currentPosition) - tokenStart; >Index: compiler/org/eclipse/jdt/internal/compiler/parser/Parser.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Parser.java,v >retrieving revision 1.395 >diff -u -r1.395 Parser.java >--- compiler/org/eclipse/jdt/internal/compiler/parser/Parser.java 1 Dec 2008 14:02:34 -0000 1.395 >+++ compiler/org/eclipse/jdt/internal/compiler/parser/Parser.java 3 Dec 2008 20:42:46 -0000 >@@ -48,7 +48,7 @@ > > protected static final int THIS_CALL = ExplicitConstructorCall.This; > protected static final int SUPER_CALL = ExplicitConstructorCall.Super; >- protected static final char[] FALL_THROUGH_TAG = "$FALL-THROUGH$".toCharArray(); //$NON-NLS-1$ >+ public static final char[] FALL_THROUGH_TAG = "$FALL-THROUGH$".toCharArray(); //$NON-NLS-1$ > > public static char asb[] = null; > public static char asr[] = null; >#P org.eclipse.jdt.core.tests.model >Index: src/org/eclipse/jdt/core/tests/formatter/FormatterCommentsBugsTest.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterCommentsBugsTest.java,v >retrieving revision 1.29 >diff -u -r1.29 FormatterCommentsBugsTest.java >--- src/org/eclipse/jdt/core/tests/formatter/FormatterCommentsBugsTest.java 25 Sep 2008 11:23:14 -0000 1.29 >+++ src/org/eclipse/jdt/core/tests/formatter/FormatterCommentsBugsTest.java 3 Dec 2008 20:43:01 -0000 >@@ -2535,4 +2535,262 @@ > "}\n" > ); > } >+ >+/** >+ * @bug 256799: [formatter] Formatter wrongly adds space to //$FALL-THROUGH$ >+ * @test Ensure that the comment formatter preserve $FALL-THROUGH$ tag leading spaces >+ * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=256799" >+ */ >+public void testBug256799_Line01() throws JavaModelException { >+ String source = >+ "public class X01 {\n" + >+ " int foo(int value) {\n" + >+ " int test = 0;\n" + >+ " switch (value) {\n" + >+ " case 1:\n" + >+ " test = value;\n" + >+ " //$FALL-THROUGH$\n" + >+ " case 2:\n" + >+ " test = value;\n" + >+ " // $FALL-THROUGH$\n" + >+ " case 3:\n" + >+ " test = value;\n" + >+ " // $FALL-THROUGH$\n" + >+ " case 4:\n" + >+ " test = value;\n" + >+ " // $FALL-THROUGH$ \n" + >+ " default:\n" + >+ " test = -1;\n" + >+ " break;\n" + >+ " }\n" + >+ " return test;\n" + >+ " }\n" + >+ "}\n"; >+ formatSource(source, >+ "public class X01 {\n" + >+ " int foo(int value) {\n" + >+ " int test = 0;\n" + >+ " switch (value) {\n" + >+ " case 1:\n" + >+ " test = value;\n" + >+ " //$FALL-THROUGH$\n" + >+ " case 2:\n" + >+ " test = value;\n" + >+ " // $FALL-THROUGH$\n" + >+ " case 3:\n" + >+ " test = value;\n" + >+ " // $FALL-THROUGH$\n" + >+ " case 4:\n" + >+ " test = value;\n" + >+ " // $FALL-THROUGH$\n" + >+ " default:\n" + >+ " test = -1;\n" + >+ " break;\n" + >+ " }\n" + >+ " return test;\n" + >+ " }\n" + >+ "}\n" >+ ); >+} >+public void testBug256799_Line02() throws JavaModelException { >+ String source = >+ "public class X01 {\n" + >+ " int foo(int value) {\n" + >+ " int test = 0;\n" + >+ " switch (value) {\n" + >+ " case 1:\n" + >+ " test = value;\n" + >+ " //$FALL-THROUGH$ with text after \n" + >+ " case 2:\n" + >+ " test = value;\n" + >+ " // $FALL-THROUGH$ with text after \n" + >+ " case 3:\n" + >+ " test = value;\n" + >+ " // $FALL-THROUGH$ with text after \n" + >+ " case 4:\n" + >+ " test = value;\n" + >+ " // $FALL-THROUGH$ with text after \n" + >+ " default:\n" + >+ " test = -1;\n" + >+ " break;\n" + >+ " }\n" + >+ " return test;\n" + >+ " }\n" + >+ "}\n"; >+ formatSource(source, >+ "public class X01 {\n" + >+ " int foo(int value) {\n" + >+ " int test = 0;\n" + >+ " switch (value) {\n" + >+ " case 1:\n" + >+ " test = value;\n" + >+ " //$FALL-THROUGH$ with text after\n" + >+ " case 2:\n" + >+ " test = value;\n" + >+ " // $FALL-THROUGH$ with text after\n" + >+ " case 3:\n" + >+ " test = value;\n" + >+ " // $FALL-THROUGH$ with text after\n" + >+ " case 4:\n" + >+ " test = value;\n" + >+ " // $FALL-THROUGH$ with text after\n" + >+ " default:\n" + >+ " test = -1;\n" + >+ " break;\n" + >+ " }\n" + >+ " return test;\n" + >+ " }\n" + >+ "}\n" >+ ); >+} >+public void testBug256799_Block01() throws JavaModelException { >+ String source = >+ "public class X01 {\n" + >+ " int foo(int value) {\n" + >+ " int test = 0;\n" + >+ " switch (value) {\n" + >+ " case 1:\n" + >+ " test = value;\n" + >+ " /*$FALL-THROUGH$*/\n" + >+ " case 2:\n" + >+ " test = value;\n" + >+ " /* $FALL-THROUGH$*/\n" + >+ " case 3:\n" + >+ " test = value;\n" + >+ " /*$FALL-THROUGH$ */\n" + >+ " case 4:\n" + >+ " test = value;\n" + >+ " /* $FALL-THROUGH$ */\n" + >+ " case 5:\n" + >+ " test = value;\n" + >+ " /* $FALL-THROUGH$*/\n" + >+ " case 6:\n" + >+ " test = value;\n" + >+ " /* $FALL-THROUGH$ */\n" + >+ " case 7:\n" + >+ " test = value;\n" + >+ " /*$FALL-THROUGH$ */\n" + >+ " case 8:\n" + >+ " test = value;\n" + >+ " /* $FALL-THROUGH$ */\n" + >+ " default:\n" + >+ " test = -1;\n" + >+ " break;\n" + >+ " }\n" + >+ " return test;\n" + >+ " }\n" + >+ "}\n"; >+ formatSource(source, >+ "public class X01 {\n" + >+ " int foo(int value) {\n" + >+ " int test = 0;\n" + >+ " switch (value) {\n" + >+ " case 1:\n" + >+ " test = value;\n" + >+ " /* $FALL-THROUGH$ */\n" + >+ " case 2:\n" + >+ " test = value;\n" + >+ " /* $FALL-THROUGH$ */\n" + >+ " case 3:\n" + >+ " test = value;\n" + >+ " /* $FALL-THROUGH$ */\n" + >+ " case 4:\n" + >+ " test = value;\n" + >+ " /* $FALL-THROUGH$ */\n" + >+ " case 5:\n" + >+ " test = value;\n" + >+ " /* $FALL-THROUGH$ */\n" + >+ " case 6:\n" + >+ " test = value;\n" + >+ " /* $FALL-THROUGH$ */\n" + >+ " case 7:\n" + >+ " test = value;\n" + >+ " /* $FALL-THROUGH$ */\n" + >+ " case 8:\n" + >+ " test = value;\n" + >+ " /* $FALL-THROUGH$ */\n" + >+ " default:\n" + >+ " test = -1;\n" + >+ " break;\n" + >+ " }\n" + >+ " return test;\n" + >+ " }\n" + >+ "}\n" >+ ); >+} >+public void testBug256799_Block02() throws JavaModelException { >+ String source = >+ "public class X01 {\n" + >+ " int foo(int value) {\n" + >+ " int test = 0;\n" + >+ " switch (value) {\n" + >+ " case 1:\n" + >+ " test = value;\n" + >+ " /*$FALL-THROUGH$with text after*/\n" + >+ " case 2:\n" + >+ " test = value;\n" + >+ " /* $FALL-THROUGH$with text after*/\n" + >+ " case 3:\n" + >+ " test = value;\n" + >+ " /*$FALL-THROUGH$ with text after */\n" + >+ " case 4:\n" + >+ " test = value;\n" + >+ " /* $FALL-THROUGH$ with text after */\n" + >+ " case 5:\n" + >+ " test = value;\n" + >+ " /* $FALL-THROUGH$ with text after*/\n" + >+ " case 6:\n" + >+ " test = value;\n" + >+ " /* $FALL-THROUGH$ with text after */\n" + >+ " case 7:\n" + >+ " test = value;\n" + >+ " /*$FALL-THROUGH$ with text after */\n" + >+ " case 8:\n" + >+ " test = value;\n" + >+ " /* $FALL-THROUGH$ with text after */\n" + >+ " default:\n" + >+ " test = -1;\n" + >+ " break;\n" + >+ " }\n" + >+ " return test;\n" + >+ " }\n" + >+ "}\n"; >+ formatSource(source, >+ "public class X01 {\n" + >+ " int foo(int value) {\n" + >+ " int test = 0;\n" + >+ " switch (value) {\n" + >+ " case 1:\n" + >+ " test = value;\n" + >+ " /* $FALL-THROUGH$with text after */\n" + >+ " case 2:\n" + >+ " test = value;\n" + >+ " /* $FALL-THROUGH$with text after */\n" + >+ " case 3:\n" + >+ " test = value;\n" + >+ " /* $FALL-THROUGH$ with text after */\n" + >+ " case 4:\n" + >+ " test = value;\n" + >+ " /* $FALL-THROUGH$ with text after */\n" + >+ " case 5:\n" + >+ " test = value;\n" + >+ " /* $FALL-THROUGH$ with text after */\n" + >+ " case 6:\n" + >+ " test = value;\n" + >+ " /* $FALL-THROUGH$ with text after */\n" + >+ " case 7:\n" + >+ " test = value;\n" + >+ " /* $FALL-THROUGH$ with text after */\n" + >+ " case 8:\n" + >+ " test = value;\n" + >+ " /* $FALL-THROUGH$ with text after */\n" + >+ " default:\n" + >+ " test = -1;\n" + >+ " break;\n" + >+ " }\n" + >+ " return test;\n" + >+ " }\n" + >+ "}\n" >+ ); >+} > }
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 256799
: 119428