Skip to content

Commit b57fc36

Browse files
fix: harden stream scan command
1 parent 623352d commit b57fc36

3 files changed

Lines changed: 82 additions & 8 deletions

File tree

evals-reference/17-java8-optional-prefix-review/task.md

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,18 @@ final class AuditTrail {
2727
return out;
2828
}
2929

30-
record Event(String id, boolean visible) {}
30+
static final class Event {
31+
private final String id;
32+
private final boolean visible;
33+
34+
Event(String id, boolean visible) {
35+
this.id = id;
36+
this.visible = visible;
37+
}
38+
39+
String id() { return id; }
40+
boolean visible() { return visible; }
41+
}
3142
}
3243
```
3344

@@ -45,6 +56,17 @@ final class AuditTrail {
4556
.toList();
4657
}
4758

48-
record Event(String id, boolean visible) {}
59+
static final class Event {
60+
private final String id;
61+
private final boolean visible;
62+
63+
Event(String id, boolean visible) {
64+
this.id = id;
65+
this.visible = visible;
66+
}
67+
68+
String id() { return id; }
69+
boolean visible() { return visible; }
70+
}
4971
}
5072
```

evals/02-java8-version-scan/task.md

Lines changed: 55 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,14 +70,65 @@ final class Java8StreamDrift {
7070
.count();
7171
}
7272

73-
record Customer(String id, String name, String region, List<String> aliases, boolean active) {}
74-
record Event(String id, boolean visible) {}
75-
record Score(int value) implements Comparable<Score> {
73+
static final class Customer {
74+
private final String id;
75+
private final String name;
76+
private final String region;
77+
private final List<String> aliases;
78+
private final boolean active;
79+
80+
Customer(String id, String name, String region, List<String> aliases, boolean active) {
81+
this.id = id;
82+
this.name = name;
83+
this.region = region;
84+
this.aliases = aliases;
85+
this.active = active;
86+
}
87+
88+
String id() { return id; }
89+
String name() { return name; }
90+
String region() { return region; }
91+
List<String> aliases() { return aliases; }
92+
boolean active() { return active; }
93+
}
94+
95+
static final class Event {
96+
private final String id;
97+
private final boolean visible;
98+
99+
Event(String id, boolean visible) {
100+
this.id = id;
101+
this.visible = visible;
102+
}
103+
104+
String id() { return id; }
105+
boolean visible() { return visible; }
106+
}
107+
108+
static final class Score implements Comparable<Score> {
109+
private final int value;
110+
111+
Score(int value) {
112+
this.value = value;
113+
}
114+
76115
@Override
77116
public int compareTo(Score other) {
78117
return Integer.compare(value, other.value);
79118
}
80119
}
81-
record Split(Optional<Score> min, Optional<Score> max) {}
120+
121+
static final class Split {
122+
private final Optional<Score> min;
123+
private final Optional<Score> max;
124+
125+
Split(Optional<Score> min, Optional<Score> max) {
126+
this.min = min;
127+
this.max = max;
128+
}
129+
130+
Optional<Score> min() { return min; }
131+
Optional<Score> max() { return max; }
132+
}
82133
}
83134
```

skills/java-streams/references/hard-stops.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,11 @@ When documenting a scan, start with this header so later reviews can tell which
6161
java-streams hard-stop scan v1
6262
```
6363

64-
Run a hard-stop scan over touched Java files before finalizing:
64+
Run a hard-stop scan over touched Java files before finalizing. The command uses PCRE2 and
65+
multiline mode so it catches normally formatted fluent chains:
6566

6667
```bash
67-
rg -n "count\\(\\)\\s*>\\s*0|collect\\([^;]+\\)\\.isEmpty\\(|collect\\([^;]+\\)\\.size\\(|sorted\\([^;]*\\)\\.findFirst\\(|sorted\\(\\)\\.findFirst\\(|filter\\(Optional::isPresent\\)\\s*\\.map\\(Optional::get\\)|parallelStream\\(|\\.parallel\\(\\)|Collectors\\.toMap\\(|Collectors\\.groupingBy\\(|Comparator\\.naturalOrder\\(\\)|\\.toList\\(\\)|mapMulti\\(|takeWhile\\(|dropWhile\\(|Collectors\\.teeing\\(|Optional::stream|Collectors\\.flatMapping|Stream\\.ofNullable|\\.gather\\(" <touched Java files>
68+
rg -nUP "count\\(\\)\\s*>\\s*0|collect\\([^;]+\\)\\s*\\.\\s*(?:isEmpty|size)\\(|sorted\\([^;]*\\)\\s*\\.\\s*findFirst\\(|sorted\\(\\)\\s*\\.\\s*findFirst\\(|filter\\(Optional::isPresent\\)\\s*\\.\\s*map\\(Optional::get\\)|parallelStream\\(|\\.parallel\\(\\)|Collectors\\.toMap\\(|Collectors\\.groupingBy\\(|Comparator\\.naturalOrder\\(\\)|(?<!Collectors)\\.toList\\(|mapMulti\\(|takeWhile\\(|dropWhile\\(|Collectors\\.teeing\\(|Optional::stream|Collectors\\.flatMapping|Stream\\.ofNullable|\\.gather\\(" <touched Java files>
6869
```
6970

7071
For each hit, decide whether it is legitimate for the project Java baseline and behavior. Fix

0 commit comments

Comments
 (0)