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 229031 Details for
Bug 404343
Rewrite should insert space at the beginning when new extended operand is inserted at '0' index
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]
Proposed fix
Fix-for-bug-404343.patch (text/plain), 5.13 KB, created by
Jay Arthanareeswaran
on 2013-03-26 05:59:13 EDT
(
hide
)
Description:
Proposed fix
Filename:
MIME Type:
Creator:
Jay Arthanareeswaran
Created:
2013-03-26 05:59:13 EDT
Size:
5.13 KB
patch
obsolete
>diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingExpressionsTest.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingExpressionsTest.java >index 033af68..ee489a0 100644 >--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingExpressionsTest.java >+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingExpressionsTest.java >@@ -2190,4 +2190,63 @@ > assertEqualString(preview, buf.toString()); > } >+ public void testBug404343() throws Exception { >+ IPackageFragment pack1= this.sourceFolder.createPackageFragment("test1", false, null); >+ StringBuffer buf= new StringBuffer(); >+ buf.append("package test1;\n"); >+ buf.append("public class E {\n"); >+ buf.append(" public void foo() {\n"); >+ buf.append(" int a = 0;\n"); >+ buf.append(" String x = \"\";\n"); >+ buf.append(" x = a + \"Processing \"+\" of \" + \"...\";\n"); >+ buf.append(" x = a + \"Processing \";\n"); >+ buf.append(" }\n"); >+ buf.append("}\n"); >+ ICompilationUnit cu= pack1.createCompilationUnit("E.java", buf.toString(), false, null); > >+ CompilationUnit astRoot= createAST(cu); >+ ASTRewrite rewrite= ASTRewrite.create(astRoot.getAST()); >+ >+ AST ast= astRoot.getAST(); >+ >+ assertTrue("Parse errors", (astRoot.getFlags() & ASTNode.MALFORMED) == 0); >+ TypeDeclaration type= findTypeDeclaration(astRoot, "E"); >+ MethodDeclaration methodDecl= findMethodDeclaration(type, "foo"); >+ Block block= methodDecl.getBody(); >+ List statements= block.statements(); >+ assertTrue("Number of statements not 4", statements.size() == 4); >+ { // modify operand and operation >+ ExpressionStatement stmt= (ExpressionStatement) statements.get(2); >+ Assignment assignment= (Assignment) stmt.getExpression(); >+ InfixExpression infix = (InfixExpression) assignment.getRightHandSide(); >+ >+ ListRewrite listRewrite = rewrite.getListRewrite(infix, InfixExpression.EXTENDED_OPERANDS_PROPERTY); >+ PrefixExpression prefix = ast.newPrefixExpression(); >+ prefix.setOperand(ast.newSimpleName("c")); >+ prefix.setOperator(PrefixExpression.Operator.INCREMENT); >+ listRewrite.insertFirst(prefix, null); >+ >+ stmt= (ExpressionStatement) statements.get(3); >+ assignment= (Assignment) stmt.getExpression(); >+ infix = (InfixExpression) assignment.getRightHandSide(); >+ listRewrite = rewrite.getListRewrite(infix, InfixExpression.EXTENDED_OPERANDS_PROPERTY); >+ prefix = ast.newPrefixExpression(); >+ prefix.setOperand(ast.newSimpleName("c")); >+ prefix.setOperator(PrefixExpression.Operator.INCREMENT); >+ listRewrite.insertFirst(prefix, null); >+ } >+ >+ String preview= evaluateRewrite(cu, rewrite); >+ >+ buf= new StringBuffer(); >+ buf.append("package test1;\n"); >+ buf.append("public class E {\n"); >+ buf.append(" public void foo() {\n"); >+ buf.append(" int a = 0;\n"); >+ buf.append(" String x = \"\";\n"); >+ buf.append(" x = a + \"Processing \"+ ++c + \" of \" + \"...\";\n"); >+ buf.append(" x = a + \"Processing \" + ++c;\n"); >+ buf.append(" }\n"); >+ buf.append("}\n"); >+ assertEqualString(preview, buf.toString()); >+ } > } >diff --git a/org.eclipse.jdt.core/dom/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer.java b/org.eclipse.jdt.core/dom/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer.java >index bc30774..db59984 100644 >--- a/org.eclipse.jdt.core/dom/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer.java >+++ b/org.eclipse.jdt.core/dom/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer.java >@@ -1,4 +1,4 @@ > /******************************************************************************* >- * Copyright (c) 2000, 2012 IBM Corporation and others. >+ * Copyright (c) 2000, 2013 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 >@@ -2505,5 +2505,32 @@ > } > } >- rewriteNodeList(node, InfixExpression.EXTENDED_OPERANDS_PROPERTY, pos, prefixString, prefixString); >+ >+ // https://bugs.eclipse.org/bugs/show_bug.cgi?id=404251 >+ // When the first is an insert with more nodes following (including replaced), a space must be inserted >+ boolean firstInsert = false; >+ boolean moreNodes = false; >+ if (event != null && event.getChangeKind() != RewriteEvent.UNCHANGED) { >+ RewriteEvent[] extendedOperands= event.getChildren(); >+ for (int i = 0; i < extendedOperands.length; i++) { >+ if (extendedOperands[i].getChangeKind() != RewriteEvent.INSERTED) { >+ if (i == 0) break; >+ ASTNode elem = (ASTNode) extendedOperands[i].getOriginalValue(); >+ pos = getExtendedOffset(elem); >+ moreNodes = true; >+ break; >+ } else { >+ if (i == 0) firstInsert = true; >+ } >+ } >+ } >+ String keyword = Util.EMPTY_STRING; >+ if (firstInsert) { >+ if (moreNodes) { >+ doTextInsert(pos, " ", getEditGroup(node, InfixExpression.OPERATOR_PROPERTY)); //$NON-NLS-1$ >+ } else { >+ keyword = prefixString; >+ } >+ } >+ rewriteNodeList(node, InfixExpression.EXTENDED_OPERANDS_PROPERTY, pos, keyword, prefixString); > return false; > }
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 404343
: 229031