Skip to content

Commit cb702ea

Browse files
authored
Java files always end with a new line (#1433)
Java files always end with a new line
1 parent c4d349a commit cb702ea

File tree

10 files changed

+58
-2
lines changed

10 files changed

+58
-2
lines changed

palantir-java-format-jdk-bootstrap/src/test/java/com/palantir/javaformat/bootstrap/FormatterServicesTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import com.google.common.base.Splitter;
2323
import com.google.common.collect.ImmutableList;
2424
import com.google.common.collect.Range;
25+
import com.palantir.javaformat.Utils;
2526
import com.palantir.javaformat.java.FormatterException;
2627
import com.palantir.javaformat.java.FormatterService;
2728
import com.palantir.javaformat.java.Replacement;
@@ -48,6 +49,8 @@ void can_format_file_with_replacement(FormatterService formatterService) throws
4849

4950
assertThat(replacements).hasSize(1);
5051
assertThat(replacements.get(0).getReplacementString()).isEqualTo(expectedOutput);
52+
53+
assertThat(Utils.applyReplacements(input, replacements)).isEqualTo(expectedOutput);
5154
}
5255

5356
@ParameterizedTest

palantir-java-format-jdk-bootstrap/src/test/resources/format.input

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,4 @@ class B {
99
break;
1010
}
1111
}
12-
}
12+
}

palantir-java-format/src/main/java/com/palantir/javaformat/java/CommandLineOptionsParser.java

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ static CommandLineOptions parse(Iterable<String> options) {
7979
case "-character-ranges":
8080
case "--character-range":
8181
case "-character-range":
82-
parseRangeSet(optionsBuilder.characterRangesBuilder(), getValue(flag, it, value));
82+
parseCharacterRanges(optionsBuilder.characterRangesBuilder(), getValue(flag, it, value));
8383
break;
8484
case "--offset":
8585
case "-offset":
@@ -163,6 +163,35 @@ private static String getValue(String flag, Iterator<String> it, @Nullable Strin
163163
return it.next();
164164
}
165165

166+
/**
167+
* Parse multiple --character-ranges flags, like {"0:12,14,20:36", "0:45,50"}. Multiple ranges can be given with multiple
168+
* --character-ranges flags or separated by commas. A single character can be set by a single number.
169+
* See more details on how character ranges are set in {@code com.palantir.javaformat.bootstrap.RangeUtils}
170+
*/
171+
private static void parseCharacterRanges(ImmutableRangeSet.Builder<Integer> result, String ranges) {
172+
for (String range : COMMA_SPLITTER.split(ranges)) {
173+
result.add(parseCharacterRange(range));
174+
}
175+
}
176+
177+
/**
178+
* Parse a character range, as in "0:45" or "45". Character ranges provided are {@code 0}-based, closed ranges.
179+
*/
180+
private static Range<Integer> parseCharacterRange(String range) {
181+
List<String> args = COLON_SPLITTER.splitToList(range);
182+
switch (args.size()) {
183+
case 1:
184+
int lowerUpperRange = Integer.parseInt(args.get(0));
185+
return Range.closed(lowerUpperRange, lowerUpperRange);
186+
case 2:
187+
int lower = Integer.parseInt(args.get(0));
188+
int higher = Integer.parseInt(args.get(1));
189+
return Range.closed(lower, higher);
190+
default:
191+
throw new IllegalArgumentException(range);
192+
}
193+
}
194+
166195
/**
167196
* Parse multiple --lines flags, like {"1:12,14,20:36", "40:45,50"}. Multiple ranges can be given with multiple
168197
* --lines flags or separated by commas. A single line can be set by a single number. Line numbers are

palantir-java-format/src/main/java/com/palantir/javaformat/java/JavaInputAstVisitor.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -384,6 +384,8 @@ public Void visitCompilationUnit(CompilationUnitTree node, Void unused) {
384384
handleModule(first, node);
385385
// set a partial format marker at EOF to make sure we can format the entire file
386386
markForPartialFormat();
387+
// Ensure the file ends with a newline
388+
builder.forcedBreak();
387389
return null;
388390
}
389391

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
class MyClass {
2+
private void myFile() {}
3+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
class MyClass {
2+
private void myFile() {}
3+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
class MyClass {
2+
private void myFile() {}
3+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
class MyClass {
2+
private void myFile() {}
3+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
class MyClass {
2+
private void myFile() {}
3+
}
4+
5+
6+
7+
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
class MyClass {
2+
private void myFile() {}
3+
}

0 commit comments

Comments
 (0)