### 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.107
diff -u -r1.107 Scribe.java
--- formatter/org/eclipse/jdt/internal/formatter/Scribe.java 29 May 2007 15:12:40 -0000 1.107
+++ formatter/org/eclipse/jdt/internal/formatter/Scribe.java 5 Oct 2007 18:05:55 -0000
@@ -11,6 +11,7 @@
package org.eclipse.jdt.internal.formatter;
import java.util.Arrays;
+import java.util.Comparator;
import org.eclipse.jdt.core.compiler.CharOperation;
import org.eclipse.jdt.core.compiler.InvalidInputException;
@@ -25,6 +26,8 @@
import org.eclipse.jdt.internal.core.util.RecordedParsingInformation;
import org.eclipse.jdt.internal.formatter.align.Alignment;
import org.eclipse.jdt.internal.formatter.align.AlignmentException;
+import org.eclipse.jface.text.IRegion;
+import org.eclipse.jface.text.Region;
import org.eclipse.text.edits.MultiTextEdit;
import org.eclipse.text.edits.ReplaceEdit;
import org.eclipse.text.edits.TextEdit;
@@ -66,9 +69,8 @@
public Scanner scanner;
public int scannerEndPosition;
public int tabLength;
- public int indentationSize;
- private int textRegionEnd;
- private int textRegionStart;
+ public int indentationSize;
+ private IRegion[] regions;
public int tabChar;
public int numberOfIndentations;
private boolean useTabsOnlyForLeadingIndents;
@@ -79,7 +81,7 @@
private final boolean formatJavadocComment;
private final boolean formatBlockComment;
- Scribe(CodeFormatterVisitor formatter, long sourceLevel, int offset, int length, CodeSnippetParsingUtil codeSnippetParsingUtil) {
+ Scribe(CodeFormatterVisitor formatter, long sourceLevel, IRegion[] regions, CodeSnippetParsingUtil codeSnippetParsingUtil) {
this.scanner = new Scanner(true, true, false/*nls*/, sourceLevel/*sourceLevel*/, null/*taskTags*/, null/*taskPriorities*/, true/*taskCaseSensitive*/);
this.formatter = formatter;
this.pageWidth = formatter.preferences.page_width;
@@ -96,8 +98,7 @@
}
this.lineSeparator = formatter.preferences.line_separator;
this.indentationLevel = formatter.preferences.initial_indentation_level * this.indentationSize;
- this.textRegionStart = offset;
- this.textRegionEnd = offset + length - 1;
+ this.regions= regions;
if (codeSnippetParsingUtil != null) {
final RecordedParsingInformation information = codeSnippetParsingUtil.recordedParsingInformation;
if (information != null) {
@@ -541,9 +542,8 @@
int rem = indent % this.indentationSize;
int addition = rem == 0 ? 0 : this.indentationSize - rem; // round to superior
return indent + addition;
- } else {
- return indent;
}
+ return indent;
}
private String getPreserveEmptyLines(int count) {
@@ -551,24 +551,36 @@
if (this.formatter.preferences.number_of_empty_lines_to_preserve != 0) {
int linesToPreserve = Math.min(count, this.formatter.preferences.number_of_empty_lines_to_preserve);
return this.getEmptyLines(linesToPreserve);
- } else {
- return getNewLine();
}
+ return getNewLine();
}
return Util.EMPTY_STRING;
}
public TextEdit getRootEdit() {
MultiTextEdit edit = null;
- int length = this.textRegionEnd - this.textRegionStart + 1;
- if (this.textRegionStart <= 0) {
+ int regionsLength = this.regions.length;
+ int textRegionStart;
+ int textRegionEnd;
+ if (regionsLength == 1) {
+ IRegion lastRegion = this.regions[0];
+ textRegionStart = lastRegion.getOffset();
+ textRegionEnd = textRegionStart + lastRegion.getLength();
+ } else {
+ textRegionStart = this.regions[0].getOffset();
+ IRegion lastRegion = this.regions[regionsLength - 1];
+ textRegionEnd = lastRegion.getOffset() + lastRegion.getLength();
+ }
+
+ int length = textRegionEnd - textRegionStart + 1;
+ if (textRegionStart <= 0) {
if (length <= 0) {
edit = new MultiTextEdit(0, 0);
} else {
- edit = new MultiTextEdit(0, this.textRegionEnd + 1);
+ edit = new MultiTextEdit(0, textRegionEnd);
}
} else {
- edit = new MultiTextEdit(this.textRegionStart, this.textRegionEnd - this.textRegionStart + 1);
+ edit = new MultiTextEdit(textRegionStart, length - 1);
}
for (int i= 0, max = this.editsIndex; i < max; i++) {
OptimizedReplaceEdit currentEdit = edits[i];
@@ -664,7 +676,9 @@
final int editReplacementLength= edit.replacement.length();
final int editOffset= edit.offset;
if (editLength != 0) {
- if (this.textRegionStart <= editOffset && (editOffset + editLength - 1) <= this.textRegionEnd) {
+
+ IRegion covering = getCoveringRegion(editOffset, (editOffset + editLength - 1));
+ if (covering != null) {
if (editReplacementLength != 0 && editLength == editReplacementLength) {
for (int i = editOffset, max = editOffset + editLength; i < max; i++) {
if (scanner.source[i] != edit.replacement.charAt(i - editOffset)) {
@@ -672,10 +686,12 @@
}
}
return false;
- } else {
- return true;
}
- } else if (editOffset + editLength == this.textRegionStart) {
+ return true;
+ }
+
+ IRegion starting = getRegionAt(editOffset + editLength);
+ if (starting != null) {
int i = editOffset;
for (int max = editOffset + editLength; i < max; i++) {
int replacementStringIndex = i - editOffset;
@@ -684,20 +700,89 @@
}
}
if (i - editOffset != editReplacementLength && i != editOffset + editLength - 1) {
- edit.offset = textRegionStart;
+ edit.offset = starting.getOffset();
edit.length = 0;
edit.replacement = edit.replacement.substring(i - editOffset);
return true;
}
}
- } else if (this.textRegionStart <= editOffset && editOffset <= this.textRegionEnd) {
+
+ return false;
+ }
+
+ IRegion covering = getCoveringRegion(editOffset, editOffset);
+ if (covering != null) {
return true;
- } else if (editOffset == this.scannerEndPosition && editOffset == this.textRegionEnd + 1) {
+ }
+
+ if (editOffset == this.scannerEndPosition) {
+ int index = Arrays.binarySearch(
+ this.regions,
+ new Region(editOffset, 0),
+ new Comparator() {
+ public int compare(Object o1, Object o2) {
+ IRegion r1 = (IRegion)o1;
+ IRegion r2 = (IRegion)o2;
+
+ int r1End = r1.getOffset() + r1.getLength();
+ int r2End = r2.getOffset() + r2.getLength();
+
+ return r1End - r2End;
+ }
+ });
+ if (index < 0) {
+ return false;
+ }
return true;
}
return false;
}
+ private IRegion getRegionAt(int offset) {
+ int index = getIndexOfRegionAt(offset);
+ if (index < 0) {
+ return null;
+ }
+
+ return this.regions[index];
+ }
+
+ private IRegion getCoveringRegion(int offset, int end) {
+ int index = getIndexOfRegionAt(offset);
+
+ if (index < 0) {
+ index = -(index + 1);
+ index--;
+ if (index < 0) {
+ return null;
+ }
+ }
+
+ IRegion region = this.regions[index];
+ if ((region.getOffset() <= offset) && (end <= region.getOffset() + region.getLength() - 1)) {
+ return region;
+ }
+ return null;
+ }
+
+ private int getIndexOfRegionAt(int offset) {
+ if (this.regions.length == 1) {
+ int offset2 = this.regions[0].getOffset();
+ if (offset2 == offset) {
+ return 0;
+ }
+ return offset2 < offset ? -2 : -1;
+ }
+ return Arrays.binarySearch(this.regions, new Region(offset, 0), new Comparator() {
+ public int compare(Object o1, Object o2) {
+ int r1Offset = ((IRegion)o1).getOffset();
+ int r2Offset = ((IRegion)o2).getOffset();
+
+ return r1Offset - r2Offset;
+ }
+ });
+ }
+
private void preserveEmptyLines(int count, int insertPosition) {
if (count > 0) {
if (this.formatter.preferences.number_of_empty_lines_to_preserve != 0) {
@@ -1559,10 +1644,9 @@
addDeleteEdit(currentTokenStartPosition, this.scanner.getCurrentTokenEndPosition());
this.scanner.resetTo(this.scanner.currentPosition, this.scannerEndPosition - 1);
return;
- } else {
- this.scanner.resetTo(currentTokenStartPosition, this.scannerEndPosition - 1);
- return;
}
+ this.scanner.resetTo(currentTokenStartPosition, this.scannerEndPosition - 1);
+ return;
} else if (count > 1) {
this.printEmptyLines(numberOfNewLinesToInsert, this.scanner.getCurrentTokenStartPosition());
this.scanner.resetTo(currentTokenStartPosition, this.scannerEndPosition - 1);
@@ -1631,10 +1715,9 @@
addDeleteEdit(currentTokenStartPosition, this.scanner.getCurrentTokenEndPosition());
this.scanner.resetTo(this.scanner.currentPosition, this.scannerEndPosition - 1);
return;
- } else {
- this.scanner.resetTo(currentTokenStartPosition, this.scannerEndPosition - 1);
- return;
}
+ this.scanner.resetTo(currentTokenStartPosition, this.scannerEndPosition - 1);
+ return;
} else if (count >= 1) {
if (hasComment) {
this.printNewLine(this.scanner.getCurrentTokenStartPosition());
@@ -1643,7 +1726,7 @@
return;
} else {
hasWhitespaces = true;
- currentTokenStartPosition = this.scanner.currentPosition;
+ currentTokenStartPosition = this.scanner.currentPosition;
addDeleteEdit(this.scanner.getCurrentTokenStartPosition(), this.scanner.getCurrentTokenEndPosition());
}
break;
Index: formatter/org/eclipse/jdt/internal/formatter/DefaultCodeFormatter.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/DefaultCodeFormatter.java,v
retrieving revision 1.63
diff -u -r1.63 DefaultCodeFormatter.java
--- formatter/org/eclipse/jdt/internal/formatter/DefaultCodeFormatter.java 4 Oct 2007 13:01:36 -0000 1.63
+++ formatter/org/eclipse/jdt/internal/formatter/DefaultCodeFormatter.java 5 Oct 2007 18:05:55 -0000
@@ -32,7 +32,9 @@
import org.eclipse.jdt.internal.formatter.comment.MultiCommentRegion;
import org.eclipse.jface.text.Document;
import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.Position;
+import org.eclipse.jface.text.Region;
import org.eclipse.text.edits.MultiTextEdit;
import org.eclipse.text.edits.TextEdit;
@@ -147,34 +149,88 @@
if (offset < 0 || length < 0 || length > source.length()) {
throw new IllegalArgumentException();
}
+ switch(kind) {
+ case K_JAVA_DOC :
+ case K_MULTI_LINE_COMMENT :
+ case K_SINGLE_LINE_COMMENT :
+ this.codeSnippetParsingUtil = new CodeSnippetParsingUtil();
+ return formatComment(kind, source, indentationLevel, lineSeparator, new IRegion[] {new Region(offset, length)});
+ }
+
+ return format(kind, source, new IRegion[] {new Region(offset, length)}, indentationLevel, lineSeparator);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public TextEdit format(int kind, String source, IRegion[] regions, int indentationLevel, String lineSeparator) {
+ if (!regionsSatisfiesPreconditions(regions, source.length())) {
+ throw new IllegalArgumentException();
+ }
+
this.codeSnippetParsingUtil = new CodeSnippetParsingUtil();
switch(kind) {
case K_CLASS_BODY_DECLARATIONS :
- return formatClassBodyDeclarations(source, indentationLevel, lineSeparator, offset, length);
+ return formatClassBodyDeclarations(source, indentationLevel, lineSeparator, regions);
case K_COMPILATION_UNIT :
- return formatCompilationUnit(source, indentationLevel, lineSeparator, offset, length);
+ return formatCompilationUnit(source, indentationLevel, lineSeparator, regions);
case K_EXPRESSION :
- return formatExpression(source, indentationLevel, lineSeparator, offset, length);
+ return formatExpression(source, indentationLevel, lineSeparator, regions);
case K_STATEMENTS :
- return formatStatements(source, indentationLevel, lineSeparator, offset, length);
+ return formatStatements(source, indentationLevel, lineSeparator, regions);
case K_UNKNOWN :
- return probeFormatting(source, indentationLevel, lineSeparator, offset, length);
+ return probeFormatting(source, indentationLevel, lineSeparator, regions);
case K_JAVA_DOC :
case K_MULTI_LINE_COMMENT :
case K_SINGLE_LINE_COMMENT :
- return formatComment(kind, source, indentationLevel, lineSeparator, offset, length);
+ //https://bugs.eclipse.org/bugs/show_bug.cgi?id=204091
+ throw new IllegalArgumentException();
}
return null;
}
- private TextEdit formatClassBodyDeclarations(String source, int indentationLevel, String lineSeparator, int offset, int length) {
+ /**
+ * True if
+ * 1. All regions are within maxLength
+ * 2. regions are sorted
+ * 3. regions are not overlapping
+ */
+ private boolean regionsSatisfiesPreconditions(IRegion[] regions, int maxLength) {
+ int regionsLength = regions == null ? 0 : regions.length;
+ if (regionsLength == 0) {
+ return false;
+ }
+
+ IRegion first = regions[0];
+ if (first.getOffset() < 0 || first.getLength() < 0 || first.getOffset() + first.getLength() > maxLength) {
+ return false;
+ }
+
+ int lastOffset = first.getOffset() + first.getLength() - 1;
+ for (int i= 1; i < regionsLength; i++) {
+ IRegion current = regions[i];
+ if (lastOffset > current.getOffset()) {
+ return false;
+ }
+
+ if (current.getOffset() < 0 || current.getLength() < 0 || current.getOffset() + current.getLength() > maxLength) {
+ return false;
+ }
+
+ lastOffset = current.getOffset() + current.getLength() - 1;
+ }
+
+ return true;
+ }
+
+ private TextEdit formatClassBodyDeclarations(String source, int indentationLevel, String lineSeparator, IRegion[] regions) {
ASTNode[] bodyDeclarations = this.codeSnippetParsingUtil.parseClassBodyDeclarations(source.toCharArray(), getDefaultCompilerOptions(), true);
if (bodyDeclarations == null) {
// a problem occured while parsing the source
return null;
}
- return internalFormatClassBodyDeclarations(source, indentationLevel, lineSeparator, bodyDeclarations, offset, length);
+ return internalFormatClassBodyDeclarations(source, indentationLevel, lineSeparator, bodyDeclarations, regions);
}
/**
@@ -184,12 +240,11 @@
* @param source the given source
* @param indentationLevel the given indentation level
* @param lineSeparator the given line separator
- * @param offset the given offset
- * @param length the given length
+ * @param regions the given regions
* @return the resulting text edit
* @deprecated
*/
- private TextEdit formatComment(int kind, String source, int indentationLevel, String lineSeparator, int offset, int length) {
+ private TextEdit formatComment(int kind, String source, int indentationLevel, String lineSeparator, IRegion[] regions) {
Object oldOption = this.options.get(DefaultCodeFormatterConstants.FORMATTER_COMMENT_FORMAT);
boolean isFormattingComments = false;
if (oldOption == null) {
@@ -213,7 +268,12 @@
this.preferences.line_separator = Util.LINE_SEPARATOR;
}
this.preferences.initial_indentation_level = indentationLevel;
- this.newCodeFormatter = new CodeFormatterVisitor(this.preferences, this.options, offset, length, null);
+ this.newCodeFormatter = new CodeFormatterVisitor(this.preferences, this.options, regions, null);
+
+ IRegion coveredRegion = getCoveredRegion(regions);
+ int offset = coveredRegion.getOffset();
+ int length = coveredRegion.getLength();
+
final CommentRegion region = createRegion(kind, new Document(source), new Position(offset, length), this.newCodeFormatter);
if (region != null) {
return this.newCodeFormatter.format(source, region);
@@ -222,7 +282,7 @@
return new MultiTextEdit();
}
- private TextEdit formatCompilationUnit(String source, int indentationLevel, String lineSeparator, int offset, int length) {
+ private TextEdit formatCompilationUnit(String source, int indentationLevel, String lineSeparator, IRegion[] regions) {
CompilationUnitDeclaration compilationUnitDeclaration = this.codeSnippetParsingUtil.parseCompilationUnit(source.toCharArray(), getDefaultCompilerOptions(), true);
if (lineSeparator != null) {
@@ -232,29 +292,29 @@
}
this.preferences.initial_indentation_level = indentationLevel;
- this.newCodeFormatter = new CodeFormatterVisitor(this.preferences, this.options, offset, length, this.codeSnippetParsingUtil);
+ this.newCodeFormatter = new CodeFormatterVisitor(this.preferences, this.options, regions, this.codeSnippetParsingUtil);
return this.newCodeFormatter.format(source, compilationUnitDeclaration);
}
- private TextEdit formatExpression(String source, int indentationLevel, String lineSeparator, int offset, int length) {
+ private TextEdit formatExpression(String source, int indentationLevel, String lineSeparator, IRegion[] regions) {
Expression expression = this.codeSnippetParsingUtil.parseExpression(source.toCharArray(), getDefaultCompilerOptions(), true);
if (expression == null) {
// a problem occured while parsing the source
return null;
}
- return internalFormatExpression(source, indentationLevel, lineSeparator, expression, offset, length);
+ return internalFormatExpression(source, indentationLevel, lineSeparator, expression, regions);
}
- private TextEdit formatStatements(String source, int indentationLevel, String lineSeparator, int offset, int length) {
+ private TextEdit formatStatements(String source, int indentationLevel, String lineSeparator, IRegion[] regions) {
ConstructorDeclaration constructorDeclaration = this.codeSnippetParsingUtil.parseStatements(source.toCharArray(), getDefaultCompilerOptions(), true, false);
if (constructorDeclaration.statements == null) {
// a problem occured while parsing the source
return null;
}
- return internalFormatStatements(source, indentationLevel, lineSeparator, constructorDeclaration, offset, length);
+ return internalFormatStatements(source, indentationLevel, lineSeparator, constructorDeclaration, regions);
}
public String getDebugOutput() {
@@ -332,7 +392,7 @@
return this.defaultCompilerOptions;
}
- private TextEdit internalFormatClassBodyDeclarations(String source, int indentationLevel, String lineSeparator, ASTNode[] bodyDeclarations, int offset, int length) {
+ private TextEdit internalFormatClassBodyDeclarations(String source, int indentationLevel, String lineSeparator, ASTNode[] bodyDeclarations, IRegion[] regions) {
if (lineSeparator != null) {
this.preferences.line_separator = lineSeparator;
} else {
@@ -340,11 +400,11 @@
}
this.preferences.initial_indentation_level = indentationLevel;
- this.newCodeFormatter = new CodeFormatterVisitor(this.preferences, this.options, offset, length, this.codeSnippetParsingUtil);
+ this.newCodeFormatter = new CodeFormatterVisitor(this.preferences, this.options, regions, this.codeSnippetParsingUtil);
return this.newCodeFormatter.format(source, bodyDeclarations);
}
- private TextEdit internalFormatExpression(String source, int indentationLevel, String lineSeparator, Expression expression, int offset, int length) {
+ private TextEdit internalFormatExpression(String source, int indentationLevel, String lineSeparator, Expression expression, IRegion[] regions) {
if (lineSeparator != null) {
this.preferences.line_separator = lineSeparator;
} else {
@@ -352,13 +412,13 @@
}
this.preferences.initial_indentation_level = indentationLevel;
- this.newCodeFormatter = new CodeFormatterVisitor(this.preferences, this.options, offset, length, this.codeSnippetParsingUtil);
+ this.newCodeFormatter = new CodeFormatterVisitor(this.preferences, this.options, regions, this.codeSnippetParsingUtil);
TextEdit textEdit = this.newCodeFormatter.format(source, expression);
return textEdit;
}
- private TextEdit internalFormatStatements(String source, int indentationLevel, String lineSeparator, ConstructorDeclaration constructorDeclaration, int offset, int length) {
+ private TextEdit internalFormatStatements(String source, int indentationLevel, String lineSeparator, ConstructorDeclaration constructorDeclaration, IRegion[] regions) {
if (lineSeparator != null) {
this.preferences.line_separator = lineSeparator;
} else {
@@ -366,33 +426,38 @@
}
this.preferences.initial_indentation_level = indentationLevel;
- this.newCodeFormatter = new CodeFormatterVisitor(this.preferences, this.options, offset, length, this.codeSnippetParsingUtil);
+ this.newCodeFormatter = new CodeFormatterVisitor(this.preferences, this.options, regions, this.codeSnippetParsingUtil);
return this.newCodeFormatter.format(source, constructorDeclaration);
}
- private TextEdit probeFormatting(String source, int indentationLevel, String lineSeparator, int offset, int length) {
+ private TextEdit probeFormatting(String source, int indentationLevel, String lineSeparator, IRegion[] regions) {
if (ProbingScanner == null) {
// scanner use to check if the kind could be K_JAVA_DOC, K_MULTI_LINE_COMMENT or K_SINGLE_LINE_COMMENT
ProbingScanner = new Scanner(true, true, false/*nls*/, ClassFileConstants.JDK1_3, ClassFileConstants.JDK1_3, null/*taskTags*/, null/*taskPriorities*/, true/*taskCaseSensitive*/);
}
ProbingScanner.setSource(source.toCharArray());
+
+ IRegion coveredRegion = getCoveredRegion(regions);
+ int offset = coveredRegion.getOffset();
+ int length = coveredRegion.getLength();
+
ProbingScanner.resetTo(offset, offset + length);
try {
switch(ProbingScanner.getNextToken()) {
case ITerminalSymbols.TokenNameCOMMENT_BLOCK :
if (ProbingScanner.getCurrentTokenEndPosition() == offset + length - 1) {
- return formatComment(K_MULTI_LINE_COMMENT, source, indentationLevel, lineSeparator, offset, length);
+ return formatComment(K_MULTI_LINE_COMMENT, source, indentationLevel, lineSeparator, regions);
}
break;
case ITerminalSymbols.TokenNameCOMMENT_LINE :
if (ProbingScanner.getCurrentTokenEndPosition() == offset + length - 1) {
- return formatComment(K_SINGLE_LINE_COMMENT, source, indentationLevel, lineSeparator, offset, length);
+ return formatComment(K_SINGLE_LINE_COMMENT, source, indentationLevel, lineSeparator, regions);
}
break;
case ITerminalSymbols.TokenNameCOMMENT_JAVADOC :
if (ProbingScanner.getCurrentTokenEndPosition() == offset + length - 1) {
- return formatComment(K_JAVA_DOC, source, indentationLevel, lineSeparator, offset, length);
+ return formatComment(K_JAVA_DOC, source, indentationLevel, lineSeparator, regions);
}
}
} catch (InvalidInputException e) {
@@ -403,22 +468,34 @@
// probe for expression
Expression expression = this.codeSnippetParsingUtil.parseExpression(source.toCharArray(), getDefaultCompilerOptions(), true);
if (expression != null) {
- return internalFormatExpression(source, indentationLevel, lineSeparator, expression, offset, length);
+ return internalFormatExpression(source, indentationLevel, lineSeparator, expression, regions);
}
// probe for body declarations (fields, methods, constructors)
ASTNode[] bodyDeclarations = this.codeSnippetParsingUtil.parseClassBodyDeclarations(source.toCharArray(), getDefaultCompilerOptions(), true);
if (bodyDeclarations != null) {
- return internalFormatClassBodyDeclarations(source, indentationLevel, lineSeparator, bodyDeclarations, offset, length);
+ return internalFormatClassBodyDeclarations(source, indentationLevel, lineSeparator, bodyDeclarations, regions);
}
// probe for statements
ConstructorDeclaration constructorDeclaration = this.codeSnippetParsingUtil.parseStatements(source.toCharArray(), getDefaultCompilerOptions(), true, false);
if (constructorDeclaration.statements != null) {
- return internalFormatStatements(source, indentationLevel, lineSeparator, constructorDeclaration, offset, length);
+ return internalFormatStatements(source, indentationLevel, lineSeparator, constructorDeclaration, regions);
}
// this has to be a compilation unit
- return formatCompilationUnit(source, indentationLevel, lineSeparator, offset, length);
+ return formatCompilationUnit(source, indentationLevel, lineSeparator, regions);
+ }
+
+ private IRegion getCoveredRegion(IRegion[] regions) {
+ int length = regions.length;
+ if (length == 1) {
+ return regions[0];
+ }
+
+ int offset = regions[0].getOffset();
+ IRegion lastRegion = regions[length - 1];
+
+ return new Region(offset, lastRegion.getOffset() + lastRegion.getLength() - offset);
}
}
Index: formatter/org/eclipse/jdt/internal/formatter/CodeFormatterVisitor.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/CodeFormatterVisitor.java,v
retrieving revision 1.201
diff -u -r1.201 CodeFormatterVisitor.java
--- formatter/org/eclipse/jdt/internal/formatter/CodeFormatterVisitor.java 12 Sep 2007 14:09:06 -0000 1.201
+++ formatter/org/eclipse/jdt/internal/formatter/CodeFormatterVisitor.java 5 Oct 2007 18:05:55 -0000
@@ -19,6 +19,7 @@
import org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants;
import org.eclipse.jdt.internal.compiler.ASTVisitor;
import org.eclipse.jdt.internal.compiler.ast.AND_AND_Expression;
+import org.eclipse.jdt.internal.compiler.ast.ASTNode;
import org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration;
import org.eclipse.jdt.internal.compiler.ast.AbstractVariableDeclaration;
import org.eclipse.jdt.internal.compiler.ast.AllocationExpression;
@@ -31,7 +32,6 @@
import org.eclipse.jdt.internal.compiler.ast.ArrayTypeReference;
import org.eclipse.jdt.internal.compiler.ast.AssertStatement;
import org.eclipse.jdt.internal.compiler.ast.Assignment;
-import org.eclipse.jdt.internal.compiler.ast.ASTNode;
import org.eclipse.jdt.internal.compiler.ast.BinaryExpression;
import org.eclipse.jdt.internal.compiler.ast.Block;
import org.eclipse.jdt.internal.compiler.ast.BreakStatement;
@@ -71,13 +71,11 @@
import org.eclipse.jdt.internal.compiler.ast.MessageSend;
import org.eclipse.jdt.internal.compiler.ast.MethodDeclaration;
import org.eclipse.jdt.internal.compiler.ast.NormalAnnotation;
-import org.eclipse.jdt.internal.compiler.ast.ParameterizedQualifiedTypeReference;
-import org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference;
-import org.eclipse.jdt.internal.compiler.ast.SingleMemberAnnotation;
-import org.eclipse.jdt.internal.compiler.ast.StringLiteralConcatenation;
import org.eclipse.jdt.internal.compiler.ast.NullLiteral;
import org.eclipse.jdt.internal.compiler.ast.OR_OR_Expression;
import org.eclipse.jdt.internal.compiler.ast.OperatorIds;
+import org.eclipse.jdt.internal.compiler.ast.ParameterizedQualifiedTypeReference;
+import org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference;
import org.eclipse.jdt.internal.compiler.ast.PostfixExpression;
import org.eclipse.jdt.internal.compiler.ast.PrefixExpression;
import org.eclipse.jdt.internal.compiler.ast.QualifiedAllocationExpression;
@@ -86,10 +84,12 @@
import org.eclipse.jdt.internal.compiler.ast.QualifiedThisReference;
import org.eclipse.jdt.internal.compiler.ast.QualifiedTypeReference;
import org.eclipse.jdt.internal.compiler.ast.ReturnStatement;
+import org.eclipse.jdt.internal.compiler.ast.SingleMemberAnnotation;
import org.eclipse.jdt.internal.compiler.ast.SingleNameReference;
import org.eclipse.jdt.internal.compiler.ast.SingleTypeReference;
import org.eclipse.jdt.internal.compiler.ast.Statement;
import org.eclipse.jdt.internal.compiler.ast.StringLiteral;
+import org.eclipse.jdt.internal.compiler.ast.StringLiteralConcatenation;
import org.eclipse.jdt.internal.compiler.ast.SuperReference;
import org.eclipse.jdt.internal.compiler.ast.SwitchStatement;
import org.eclipse.jdt.internal.compiler.ast.SynchronizedStatement;
@@ -117,6 +117,7 @@
import org.eclipse.jdt.internal.formatter.align.Alignment;
import org.eclipse.jdt.internal.formatter.align.AlignmentException;
import org.eclipse.jdt.internal.formatter.comment.CommentRegion;
+import org.eclipse.jface.text.IRegion;
import org.eclipse.text.edits.TextEdit;
/**
@@ -174,14 +175,14 @@
public DefaultCodeFormatterOptions preferences;
public Scribe scribe;
- public CodeFormatterVisitor(DefaultCodeFormatterOptions preferences, Map settings, int offset, int length, CodeSnippetParsingUtil codeSnippetParsingUtil) {
+ public CodeFormatterVisitor(DefaultCodeFormatterOptions preferences, Map settings, IRegion[] regions, CodeSnippetParsingUtil codeSnippetParsingUtil) {
long sourceLevel = settings == null
? ClassFileConstants.JDK1_3
: CompilerOptions.versionToJdkLevel(settings.get(JavaCore.COMPILER_SOURCE));
this.localScanner = new Scanner(true, false, false/*nls*/, sourceLevel/*sourceLevel*/, null/*taskTags*/, null/*taskPriorities*/, true/*taskCaseSensitive*/);
this.preferences = preferences;
- this.scribe = new Scribe(this, sourceLevel, offset, length, codeSnippetParsingUtil);
+ this.scribe = new Scribe(this, sourceLevel, regions, codeSnippetParsingUtil);
}
/**
Index: formatter/org/eclipse/jdt/core/formatter/CodeFormatter.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/formatter/org/eclipse/jdt/core/formatter/CodeFormatter.java,v
retrieving revision 1.16
diff -u -r1.16 CodeFormatter.java
--- formatter/org/eclipse/jdt/core/formatter/CodeFormatter.java 24 Nov 2006 01:32:06 -0000 1.16
+++ formatter/org/eclipse/jdt/core/formatter/CodeFormatter.java 5 Oct 2007 18:05:55 -0000
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * Copyright (c) 2000, 2007 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
@@ -11,6 +11,7 @@
package org.eclipse.jdt.core.formatter;
import org.eclipse.jdt.internal.compiler.util.Util;
+import org.eclipse.jface.text.IRegion;
import org.eclipse.text.edits.TextEdit;
/**
@@ -86,6 +87,34 @@
*/
public abstract TextEdit format(int kind, String source, int offset, int length, int indentationLevel, String lineSeparator);
+ /**
+ * Format source
,
+ * and returns a text edit that correspond to the difference between the given string and the formatted string.
+ *
It returns null if the given string cannot be formatted.
+ * + *If an offset position is matching a whitespace, the result can include whitespaces. It would be up to the + * caller to get rid of preceeding whitespaces.
+ * + *No region in regions
must overlap with any other region in regions
.
+ * Each region must be within source. There must be at least one region. Regions must be sorted
+ * by their offsets, smaller offset first.
null
, then the platform default one will be used.
+ * @return the text edit
+ * @throws IllegalArgumentException if offset is lower than 0, length is lower than 0 or
+ * length is greater than source length.
+ * @since 3.4
+ */
+ public abstract TextEdit format(int kind, String source, IRegion[] regions, int indentationLevel, String lineSeparator);
+
/**
* Answers the string that corresponds to the indentation to the given indentation level or an empty string
* if the indentation cannot be computed.
#P org.eclipse.jdt.core.tests.model
Index: src/org/eclipse/jdt/core/tests/formatter/FormatterRegressionTests.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterRegressionTests.java,v
retrieving revision 1.216
diff -u -r1.216 FormatterRegressionTests.java
--- src/org/eclipse/jdt/core/tests/formatter/FormatterRegressionTests.java 12 Sep 2007 14:09:15 -0000 1.216
+++ src/org/eclipse/jdt/core/tests/formatter/FormatterRegressionTests.java 5 Oct 2007 18:05:57 -0000
@@ -29,19 +29,21 @@
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
-import org.eclipse.jdt.core.compiler.CharOperation;
-import org.eclipse.jdt.core.dom.ASTNode;
-import org.eclipse.jdt.core.formatter.CodeFormatter;
-import org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.core.ToolFactory;
+import org.eclipse.jdt.core.compiler.CharOperation;
+import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.formatter.CodeFormatter;
+import org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants;
import org.eclipse.jdt.core.tests.model.AbstractJavaModelTests;
import org.eclipse.jdt.core.tests.util.Util;
import org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
import org.eclipse.jdt.internal.formatter.DefaultCodeFormatter;
import org.eclipse.jdt.internal.formatter.DefaultCodeFormatterOptions;
+import org.eclipse.jface.text.IRegion;
+import org.eclipse.jface.text.Region;
import org.eclipse.text.edits.TextEdit;
public class FormatterRegressionTests extends AbstractJavaModelTests {
@@ -134,6 +136,15 @@
}
return result;
}
+
+ private String runFormatter(CodeFormatter codeFormatter, String source, int kind, int indentationLevel, IRegion[] regions, String lineSeparator) {
+// long time = System.currentTimeMillis();
+ TextEdit edit = codeFormatter.format(kind, source, regions, indentationLevel, lineSeparator);//$NON-NLS-1$
+// System.out.println((System.currentTimeMillis() - time) + " ms");
+ if (edit == null) return null;
+
+ return org.eclipse.jdt.internal.core.util.Util.editedString(source, edit);
+ }
/**
* Create project and set the jar placeholder.
@@ -257,6 +268,21 @@
assertTrue(false);
}
}
+
+ private void runTest(CodeFormatter codeFormatter, String packageName, String compilationUnitName, int kind, int indentationLevel, boolean checkNull, IRegion[] regions, String lineSeparator) {
+ try {
+ ICompilationUnit sourceUnit = getCompilationUnit("Formatter" , "", packageName, getIn(compilationUnitName)); //$NON-NLS-1$ //$NON-NLS-2$
+ String s = sourceUnit.getSource();
+ assertNotNull(s);
+ ICompilationUnit outputUnit = getCompilationUnit("Formatter" , "", packageName, getOut(compilationUnitName)); //$NON-NLS-1$ //$NON-NLS-2$
+ assertNotNull(outputUnit);
+ String result= runFormatter(codeFormatter, s, kind, indentationLevel, regions, lineSeparator);
+ assertLineEquals(result, s, outputUnit.getSource(), checkNull);
+ } catch (JavaModelException e) {
+ e.printStackTrace();
+ assertTrue(false);
+ }
+ }
String getSource(ASTNode astNode, char[] source) {
String result = new String(CharOperation.subarray(source, astNode.getStartPosition() + 1, astNode.getStartPosition() + astNode.getLength() - 1));
@@ -9385,4 +9411,178 @@
DefaultCodeFormatter codeFormatter = new DefaultCodeFormatter(preferences);
runTest(codeFormatter, "test670", "A.java");//$NON-NLS-1$ //$NON-NLS-2$
}
+
+ // https://bugs.eclipse.org/bugs/show_bug.cgi?id=203304
+ public void test671() {
+ final Map options = DefaultCodeFormatterConstants.getEclipseDefaultSettings();
+ DefaultCodeFormatterOptions preferences = new DefaultCodeFormatterOptions(options);
+ DefaultCodeFormatter codeFormatter = new DefaultCodeFormatter(preferences);
+ IRegion[] regions = new IRegion[] {
+ new Region(59, 20),
+ new Region(101, 20)
+ };
+ runTest(codeFormatter, "test671", "A.java", CodeFormatter.K_COMPILATION_UNIT, 0, false, regions, "\n");//$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ // https://bugs.eclipse.org/bugs/show_bug.cgi?id=203304
+ public void test672() {
+ final Map options = DefaultCodeFormatterConstants.getEclipseDefaultSettings();
+ DefaultCodeFormatterOptions preferences = new DefaultCodeFormatterOptions(options);
+ DefaultCodeFormatter codeFormatter = new DefaultCodeFormatter(preferences);
+ IRegion[] regions = new IRegion[] {
+ new Region(0, 18),
+ new Region(38, 18)
+ };
+ runTest(codeFormatter, "test672", "A.java", CodeFormatter.K_STATEMENTS, 0, false, regions, "\n");//$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ // https://bugs.eclipse.org/bugs/show_bug.cgi?id=203304
+ public void test673() {
+ final Map options = DefaultCodeFormatterConstants.getEclipseDefaultSettings();
+ DefaultCodeFormatterOptions preferences = new DefaultCodeFormatterOptions(options);
+ DefaultCodeFormatter codeFormatter = new DefaultCodeFormatter(preferences);
+ IRegion[] regions = new IRegion[] {
+ new Region(0, 9),
+ new Region(19, 19)
+ };
+ runTest(codeFormatter, "test673", "A.java", CodeFormatter.K_EXPRESSION, 0, false, regions, "\n");//$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ // https://bugs.eclipse.org/bugs/show_bug.cgi?id=203304
+ public void test674() {
+ final Map options = DefaultCodeFormatterConstants.getEclipseDefaultSettings();
+ DefaultCodeFormatterOptions preferences = new DefaultCodeFormatterOptions(options);
+ DefaultCodeFormatter codeFormatter = new DefaultCodeFormatter(preferences);
+ IRegion[] regions = new IRegion[] {
+ new Region(44, 126),
+ new Region(276, 54)
+ };
+ runTest(codeFormatter, "test674", "A.java", CodeFormatter.K_CLASS_BODY_DECLARATIONS, 0, false, regions, "\n");//$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+//https://bugs.eclipse.org/bugs/show_bug.cgi?id=204091
+//
+// // https://bugs.eclipse.org/bugs/show_bug.cgi?id=203304
+// public void test675() {
+// final Map options = DefaultCodeFormatterConstants.getEclipseDefaultSettings();
+// DefaultCodeFormatterOptions preferences = new DefaultCodeFormatterOptions(options);
+// DefaultCodeFormatter codeFormatter = new DefaultCodeFormatter(preferences);
+// IRegion[] regions = new IRegion[] {
+// new Region(10, 20),
+// new Region(50, 14),
+// new Region(68, 25)
+// };
+// runTest(codeFormatter, "test675", "A.java", CodeFormatter.K_MULTI_LINE_COMMENT, 0, false, regions, "\n");//$NON-NLS-1$ //$NON-NLS-2$
+// }
+//
+// // https://bugs.eclipse.org/bugs/show_bug.cgi?id=203304
+// public void test676() {
+// final Map options = DefaultCodeFormatterConstants.getEclipseDefaultSettings();
+// DefaultCodeFormatterOptions preferences = new DefaultCodeFormatterOptions(options);
+// DefaultCodeFormatter codeFormatter = new DefaultCodeFormatter(preferences);
+// IRegion[] regions = new IRegion[] {
+// new Region(3, 16),
+// new Region(31, 16)
+// };
+// runTest(codeFormatter, "test676", "A.java", CodeFormatter.K_SINGLE_LINE_COMMENT, 0, false, regions, "\n");//$NON-NLS-1$ //$NON-NLS-2$
+// }
+//
+// // https://bugs.eclipse.org/bugs/show_bug.cgi?id=203304
+// public void test677() {
+// final Map options = DefaultCodeFormatterConstants.getEclipseDefaultSettings();
+// DefaultCodeFormatterOptions preferences = new DefaultCodeFormatterOptions(options);
+// DefaultCodeFormatter codeFormatter = new DefaultCodeFormatter(preferences);
+// IRegion[] regions = new IRegion[] {
+// new Region(4, 16),
+// new Region(32, 16)
+// };
+// runTest(codeFormatter, "test677", "A.java", CodeFormatter.K_JAVA_DOC, 0, false, regions, "\n");//$NON-NLS-1$ //$NON-NLS-2$
+// }
+
+ // https://bugs.eclipse.org/bugs/show_bug.cgi?id=203304
+ public void test678() {
+ final Map options = DefaultCodeFormatterConstants.getEclipseDefaultSettings();
+ DefaultCodeFormatterOptions preferences = new DefaultCodeFormatterOptions(options);
+ DefaultCodeFormatter codeFormatter = new DefaultCodeFormatter(preferences);
+ IRegion[] regions = new IRegion[] {
+ new Region(59, 20),
+ new Region(101, 20)
+ };
+ runTest(codeFormatter, "test671", "A.java", CodeFormatter.K_UNKNOWN, 0, false, regions, "\n");//$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ // https://bugs.eclipse.org/bugs/show_bug.cgi?id=203304
+ public void test679() {
+ final Map options = DefaultCodeFormatterConstants.getEclipseDefaultSettings();
+ DefaultCodeFormatterOptions preferences = new DefaultCodeFormatterOptions(options);
+ DefaultCodeFormatter codeFormatter = new DefaultCodeFormatter(preferences);
+ IRegion[] regions = new IRegion[] {
+ new Region(0, 18),
+ new Region(38, 18)
+ };
+ runTest(codeFormatter, "test672", "A.java", CodeFormatter.K_UNKNOWN, 0, false, regions, "\n");//$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ // https://bugs.eclipse.org/bugs/show_bug.cgi?id=203304
+ public void test680() {
+ final Map options = DefaultCodeFormatterConstants.getEclipseDefaultSettings();
+ DefaultCodeFormatterOptions preferences = new DefaultCodeFormatterOptions(options);
+ DefaultCodeFormatter codeFormatter = new DefaultCodeFormatter(preferences);
+ IRegion[] regions = new IRegion[] {
+ new Region(0, 9),
+ new Region(19, 19)
+ };
+ runTest(codeFormatter, "test673", "A.java", CodeFormatter.K_UNKNOWN, 0, false, regions, "\n");//$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ // https://bugs.eclipse.org/bugs/show_bug.cgi?id=203304
+ public void test681() {
+ final Map options = DefaultCodeFormatterConstants.getEclipseDefaultSettings();
+ DefaultCodeFormatterOptions preferences = new DefaultCodeFormatterOptions(options);
+ DefaultCodeFormatter codeFormatter = new DefaultCodeFormatter(preferences);
+ IRegion[] regions = new IRegion[] {
+ new Region(44, 126),
+ new Region(276, 54)
+ };
+ runTest(codeFormatter, "test674", "A.java", CodeFormatter.K_UNKNOWN, 0, false, regions, "\n");//$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+//https://bugs.eclipse.org/bugs/show_bug.cgi?id=204091
+//
+// // https://bugs.eclipse.org/bugs/show_bug.cgi?id=203304
+// public void test682() {
+// final Map options = DefaultCodeFormatterConstants.getEclipseDefaultSettings();
+// DefaultCodeFormatterOptions preferences = new DefaultCodeFormatterOptions(options);
+// DefaultCodeFormatter codeFormatter = new DefaultCodeFormatter(preferences);
+// IRegion[] regions = new IRegion[] {
+// new Region(10, 20),
+// new Region(50, 14),
+// new Region(68, 25)
+// };
+// runTest(codeFormatter, "test675", "A.java", CodeFormatter.K_UNKNOWN, 0, false, regions, "\n");//$NON-NLS-1$ //$NON-NLS-2$
+// }
+//
+// // https://bugs.eclipse.org/bugs/show_bug.cgi?id=203304
+// public void test683() {
+// final Map options = DefaultCodeFormatterConstants.getEclipseDefaultSettings();
+// DefaultCodeFormatterOptions preferences = new DefaultCodeFormatterOptions(options);
+// DefaultCodeFormatter codeFormatter = new DefaultCodeFormatter(preferences);
+// IRegion[] regions = new IRegion[] {
+// new Region(3, 16),
+// new Region(31, 16)
+// };
+// runTest(codeFormatter, "test676", "A.java", CodeFormatter.K_UNKNOWN, 0, false, regions, "\n");//$NON-NLS-1$ //$NON-NLS-2$
+// }
+//
+// // https://bugs.eclipse.org/bugs/show_bug.cgi?id=203304
+// public void test684() {
+// final Map options = DefaultCodeFormatterConstants.getEclipseDefaultSettings();
+// DefaultCodeFormatterOptions preferences = new DefaultCodeFormatterOptions(options);
+// DefaultCodeFormatter codeFormatter = new DefaultCodeFormatter(preferences);
+// IRegion[] regions = new IRegion[] {
+// new Region(4, 16),
+// new Region(32, 16)
+// };
+// runTest(codeFormatter, "test677", "A.java", CodeFormatter.K_UNKNOWN, 0, false, regions, "\n");//$NON-NLS-1$ //$NON-NLS-2$
+// }
}
Index: workspace/Formatter/test674/A_out.java
===================================================================
RCS file: workspace/Formatter/test674/A_out.java
diff -N workspace/Formatter/test674/A_out.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ workspace/Formatter/test674/A_out.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,25 @@
+public class A {
+
+
+ private class Inner1 {
+
+ void bar() {
+ }
+
+ void i() {
+
+ }
+ }
+
+
+ private class Inner2 {
+ void xy() {
+
+ }
+ }
+}
+class B {
+ private void foo() {
+
+ }
+}
Index: workspace/Formatter/test674/A_in.java
===================================================================
RCS file: workspace/Formatter/test674/A_in.java
diff -N workspace/Formatter/test674/A_in.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ workspace/Formatter/test674/A_in.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,26 @@
+public class A {
+
+
+ private class Inner1 {
+
+
+ void bar () { }
+
+ void i()
+ {
+
+ }
+ }
+
+
+ private class Inner2 {
+ void xy() {
+
+ }
+ }
+}
+class B {
+ private void foo() {
+
+ }
+}
Index: workspace/Formatter/test676/A_in.java
===================================================================
RCS file: workspace/Formatter/test676/A_in.java
diff -N workspace/Formatter/test676/A_in.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ workspace/Formatter/test676/A_in.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,1 @@
+// single line comment to format
Index: workspace/Formatter/test672/A_out.java
===================================================================
RCS file: workspace/Formatter/test672/A_out.java
diff -N workspace/Formatter/test672/A_out.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ workspace/Formatter/test672/A_out.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,3 @@
+int a = 1;
+int b = 2;
+int c = 3;
Index: workspace/Formatter/test672/A_in.java
===================================================================
RCS file: workspace/Formatter/test672/A_in.java
diff -N workspace/Formatter/test672/A_in.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ workspace/Formatter/test672/A_in.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,3 @@
+int a = 1;
+int b = 2;
+int c = 3;
Index: workspace/Formatter/test675/A_out.java
===================================================================
RCS file: workspace/Formatter/test675/A_out.java
diff -N workspace/Formatter/test675/A_out.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ workspace/Formatter/test675/A_out.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,5 @@
+/*
+ * forma t here dasf
+ * don't here but here
+ * and here as well
+ */
Index: workspace/Formatter/test671/A_in.java
===================================================================
RCS file: workspace/Formatter/test671/A_in.java
diff -N workspace/Formatter/test671/A_in.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ workspace/Formatter/test671/A_in.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,7 @@
+public class A {
+ public static void main(String[] args) {
+ int a = 1;
+ int b = 2;
+ int c = 3;
+ }
+}
Index: workspace/Formatter/test675/A_in.java
===================================================================
RCS file: workspace/Formatter/test675/A_in.java
diff -N workspace/Formatter/test675/A_in.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ workspace/Formatter/test675/A_in.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,5 @@
+/*
+ * forma t here dasf
+ * don't here but here
+ * and here as well
+ */
Index: workspace/Formatter/test677/A_out.java
===================================================================
RCS file: workspace/Formatter/test677/A_out.java
diff -N workspace/Formatter/test677/A_out.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ workspace/Formatter/test677/A_out.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,5 @@
+/**
+ * forma t here dasf
+ * don't here but here
+ * and here as well
+ */
Index: workspace/Formatter/test676/A_out.java
===================================================================
RCS file: workspace/Formatter/test676/A_out.java
diff -N workspace/Formatter/test676/A_out.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ workspace/Formatter/test676/A_out.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,1 @@
+// single line comment to format
Index: workspace/Formatter/test677/A_in.java
===================================================================
RCS file: workspace/Formatter/test677/A_in.java
diff -N workspace/Formatter/test677/A_in.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ workspace/Formatter/test677/A_in.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,5 @@
+/**
+ * forma t here dasf
+ * don't here but here
+ * and here as well
+ */
Index: workspace/Formatter/test673/A_in.java
===================================================================
RCS file: workspace/Formatter/test673/A_in.java
diff -N workspace/Formatter/test673/A_in.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ workspace/Formatter/test673/A_in.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,1 @@
+1 - 2 * ( 3 * a -- - foo())
Index: workspace/Formatter/test673/A_out.java
===================================================================
RCS file: workspace/Formatter/test673/A_out.java
diff -N workspace/Formatter/test673/A_out.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ workspace/Formatter/test673/A_out.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,1 @@
+1 - 2 * ( 3 * a-- - foo())
Index: workspace/Formatter/test671/A_out.java
===================================================================
RCS file: workspace/Formatter/test671/A_out.java
diff -N workspace/Formatter/test671/A_out.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ workspace/Formatter/test671/A_out.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,7 @@
+public class A {
+ public static void main(String[] args) {
+ int a = 1;
+ int b = 2;
+ int c = 3;
+ }
+}