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 78775 Details for
Bug 203579
[dom] Length of VariableDeclarationFragment is not the same inside a 'for' initialisation
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
Proposed fix
patch_203579.txt (text/plain), 4.22 KB, created by
Olivier Thomann
on 2007-09-19 13:26:17 EDT
(
hide
)
Description:
Proposed fix
Filename:
MIME Type:
Creator:
Olivier Thomann
Created:
2007-09-19 13:26:17 EDT
Size:
4.22 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.jdt.core >Index: dom/org/eclipse/jdt/core/dom/ASTConverter.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ASTConverter.java,v >retrieving revision 1.254 >diff -u -r1.254 ASTConverter.java >--- dom/org/eclipse/jdt/core/dom/ASTConverter.java 14 Sep 2007 19:37:26 -0000 1.254 >+++ dom/org/eclipse/jdt/core/dom/ASTConverter.java 19 Sep 2007 17:24:18 -0000 >@@ -2974,13 +2974,13 @@ > name.internalSetIdentifier(new String(fieldDeclaration.name)); > name.setSourceRange(fieldDeclaration.sourceStart, fieldDeclaration.sourceEnd - fieldDeclaration.sourceStart + 1); > variableDeclarationFragment.setName(name); >- int start = fieldDeclaration.sourceEnd; >+ int start = fieldDeclaration.sourceEnd + 1; // need the exclusive range for retrieveEndOfPotentialExtendedDimensions > if (fieldDeclaration.initialization != null) { > final Expression expression = convert(fieldDeclaration.initialization); > variableDeclarationFragment.setInitializer(expression); > start = expression.getStartPosition() + expression.getLength(); > } >- int end = retrievePositionBeforeNextCommaOrSemiColon(start, fieldDeclaration.declarationSourceEnd); >+ int end = retrieveEndOfPotentialExtendedDimensions(start, fieldDeclaration.sourceEnd, fieldDeclaration.declarationSourceEnd); > if (end == -1) { > variableDeclarationFragment.setSourceRange(fieldDeclaration.sourceStart, fieldDeclaration.declarationSourceEnd - fieldDeclaration.sourceStart + 1); > variableDeclarationFragment.setFlags(variableDeclarationFragment.getFlags() | ASTNode.MALFORMED); >@@ -3002,7 +3002,7 @@ > name.internalSetIdentifier(new String(localDeclaration.name)); > name.setSourceRange(localDeclaration.sourceStart, localDeclaration.sourceEnd - localDeclaration.sourceStart + 1); > variableDeclarationFragment.setName(name); >- int start = localDeclaration.sourceEnd; >+ int start = localDeclaration.sourceEnd + 1; // need the exclusive range for retrieveEndOfPotentialExtendedDimensions > org.eclipse.jdt.internal.compiler.ast.Expression initialization = localDeclaration.initialization; > boolean hasInitialization = initialization != null; > if (hasInitialization) { >@@ -3010,7 +3010,7 @@ > variableDeclarationFragment.setInitializer(expression); > start = expression.getStartPosition() + expression.getLength(); > } >- int end = retrievePositionBeforeNextCommaOrSemiColon(start, localDeclaration.declarationSourceEnd); >+ int end = retrieveEndOfPotentialExtendedDimensions(start, localDeclaration.sourceEnd, localDeclaration.declarationSourceEnd); > if (end == -1) { > if (hasInitialization) { > // the initiazation sourceEnd is modified during convert(initialization) >@@ -4155,26 +4155,33 @@ > > /** > * This method is used to retrieve position before the next comma or semi-colon. >+ * @param initializerEnd the given initializer end exclusive > * @return int the position found. > */ >- protected int retrievePositionBeforeNextCommaOrSemiColon(int start, int end) { >- this.scanner.resetTo(start, end); >+ protected int retrieveEndOfPotentialExtendedDimensions(int initializerEnd, int nameEnd, int end) { >+ this.scanner.resetTo(initializerEnd, end); > try { > int token; > int balance = 0; >+ int pos = initializerEnd > nameEnd ? initializerEnd - 1 : nameEnd; > while ((token = this.scanner.getNextToken()) != TerminalTokens.TokenNameEOF) { > switch(token) { > case TerminalTokens.TokenNameLBRACE : >+ case TerminalTokens.TokenNameLBRACKET : > balance++; > break; >+ case TerminalTokens.TokenNameRBRACKET : > case TerminalTokens.TokenNameRBRACE : > balance --; >+ pos = this.scanner.currentPosition - 1; > break; > case TerminalTokens.TokenNameCOMMA : >- if (balance == 0) return this.scanner.startPosition - 1; >+ if (balance == 0) return pos; >+ // case where a missing closing brace doesn't close an array initializer >+ pos = this.scanner.currentPosition - 1; > break; > case TerminalTokens.TokenNameSEMICOLON : >- return this.scanner.startPosition - 1; >+ return pos; > } > } > } catch(InvalidInputException e) {
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 203579
:
78775
|
78776
|
78882