Skip to content

Commit a6decfb

Browse files
committed
fix token types test
1 parent 54a11df commit a6decfb

File tree

4 files changed

+229
-8
lines changed

4 files changed

+229
-8
lines changed

javaparser-core-testing/src/test/java/com/github/javaparser/TokenTypesTest.java

+25-1
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,19 @@
2828

2929
import com.github.javaparser.ast.CompilationUnit;
3030
import com.github.javaparser.ast.stmt.SwitchEntry;
31+
import org.junit.jupiter.api.DynamicTest;
32+
import org.junit.jupiter.api.Test;
33+
import org.junit.jupiter.api.TestFactory;
34+
3135
import java.io.IOException;
3236
import java.nio.file.Path;
33-
import org.junit.jupiter.api.Test;
37+
import java.util.stream.IntStream;
38+
import java.util.stream.Stream;
39+
40+
import static com.github.javaparser.StaticJavaParser.parse;
41+
import static com.github.javaparser.utils.CodeGenerationUtils.mavenModuleRoot;
42+
import static org.junit.jupiter.api.Assertions.assertEquals;
43+
import static org.junit.jupiter.api.Assertions.assertThrows;
3444

3545
public class TokenTypesTest {
3646

@@ -53,5 +63,19 @@ void throwOnUnrecognisedTokenType() {
5363
assertThrows(AssertionError.class, () -> {
5464
TokenTypes.getCategory(-1);
5565
});
66+
67+
}
68+
69+
@TestFactory
70+
Stream<DynamicTest> everyTokenHasACategory0() throws IOException {
71+
final int tokenCount = GeneratedJavaParserConstants.tokenImage.length;
72+
return IntStream.range(0, tokenCount).mapToObj(it ->
73+
DynamicTest.dynamicTest("TokenType: " + it,
74+
() -> {
75+
try {
76+
TokenTypes.getCategory(it);
77+
} catch (IllegalArgumentException ignored) {
78+
}
79+
}));
5680
}
5781
}

javaparser-core/pom.xml

+6
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,12 @@
3636
<artifactId>jspecify</artifactId>
3737
<version>1.0.0</version>
3838
</dependency>
39+
40+
<dependency>
41+
<groupId>net.bytebuddy</groupId>
42+
<artifactId>byte-buddy-agent</artifactId>
43+
<version>${byte-buddy.version}</version>
44+
</dependency>
3945
</dependencies>
4046

4147
<properties>

javaparser-core/src/main/java/com/github/javaparser/TokenTypes.java

+198-5
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,10 @@
2020
*/
2121
package com.github.javaparser;
2222

23-
import static com.github.javaparser.GeneratedJavaParserConstants.*;
2423
import com.github.javaparser.utils.LineSeparator;
2524

25+
import static com.github.javaparser.GeneratedJavaParserConstants.*;
26+
2627
/**
2728
* Complements GeneratedJavaParserConstants
2829
*/
@@ -42,9 +43,9 @@ public static boolean isWhitespaceOrComment(int kind) {
4243

4344
/**
4445
* @deprecated Use {@link #isWhitespaceButNotEndOfLine(int)} which more explicitly reflects that this also includes
45-
* other whitespace e.g. {@code EOF} and {@code CTRL_Z} and a large number of other characters.
46-
* See the grammar for details of exactly which characters are included as a "space" (.
47-
* <pre>{@code
46+
* other whitespace e.g. {@code EOF} and {@code CTRL_Z} and a large number of other characters.
47+
* See the grammar for details of exactly which characters are included as a "space" (.
48+
* <pre>{@code
4849
* <SPACE: [" ", "\t", "\f", "\u0085", "\u00A0", "\u1680", "\u180e", "\u2000", "\u2001", "\u2002", "\u2003", "\u2004", "\u2005",
4950
* "\u2006", "\u2007", "\u2008", "\u2009", "\u200a", "\u200b", "\u200c", "\u200d", "\u2028", "\u2029", "\u202f", "\u205f", "\u2060", "\u3000", "\ufeff"]>
5051
* }</pre>
@@ -94,7 +95,7 @@ public static int spaceTokenKind() {
9495
* <a href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.5">The JLS</a>.
9596
*/
9697
public static JavaToken.Category getCategory(int kind) {
97-
switch(kind) {
98+
switch (kind) {
9899
case WINDOWS_EOL:
99100
case UNIX_EOL:
100101
case OLD_MAC_EOL:
@@ -173,6 +174,195 @@ public static JavaToken.Category getCategory(int kind) {
173174
case SEALED:
174175
case NON_SEALED:
175176
case WHEN:
177+
case INVARIANT:
178+
case ABRUPT_BEHAVIOR:
179+
case ABRUPT_BEHAVIOUR:
180+
case MODEL_BEHAVIOR:
181+
case MODEL_BEHAVIOUR:
182+
case ACCESSIBLE:
183+
case ACCESSIBLE_REDUNDANTLY:
184+
case ALSO:
185+
case ANTIVALENCE:
186+
case ASSERT_REDUNDANTLY:
187+
case ASSIGNABLE:
188+
case ASSIGNABLE_REDUNDANTLY:
189+
case ASSUME:
190+
case ASSUME_REDUNDANTLY:
191+
case AXIOM:
192+
case BEHAVIOR:
193+
case BEHAVIOUR:
194+
case BIGINT:
195+
case BIGINT_MATH:
196+
case BREAKS:
197+
case BREAKS_REDUNDANTLY:
198+
case BREAK_BEHAVIOR:
199+
case BREAK_BEHAVIOUR:
200+
case CALLABLE:
201+
case CALLABLE_REDUNDANTLY:
202+
case CAPTURES:
203+
case CAPTURES_REDUNDANTLY:
204+
case CHOOSE:
205+
case CHOOSE_IF:
206+
case CODE:
207+
case CODE_BIGINT_MATH:
208+
case CODE_JAVA_MATH:
209+
case CODE_SAFE_MATH:
210+
case IMMUTABLE:
211+
case CONSTRAINT:
212+
case CONSTRAINT_REDUNDANTLY:
213+
case CONSTRUCTOR:
214+
case CONTINUES:
215+
case CONTINUES_REDUNDANTLY:
216+
case CONTINUE_BEHAVIOR:
217+
case CONTINUE_BEHAVIOUR:
218+
case DECLASSIFIES:
219+
case DECREASES:
220+
case DECREASES_REDUNDANTLY:
221+
case DECREASING:
222+
case DECREASING_REDUNDANTLY:
223+
case DETERMINES:
224+
case DIVERGES:
225+
case DIVERGES_REDUNDANTLY:
226+
case DURATION:
227+
case DURATION_REDUNDANTLY:
228+
case ENSURES:
229+
case ENSURES_REDUNDANTLY:
230+
case ENSURES_FREE:
231+
case REQUIRES_FREE:
232+
case EQUIVALENCE:
233+
case IMPLICATION:
234+
case IMPLICATION_BACKWARD:
235+
case ERASES:
236+
case EXAMPLE:
237+
case EXCEPTIONAL_BEHAVIOR:
238+
case EXCEPTIONAL_BEHAVIOUR:
239+
case EXCEPTIONAL_EXAMPLE:
240+
case EXISTS:
241+
case EXSURES:
242+
case EXSURES_REDUNDANTLY:
243+
case EXTRACT:
244+
case FIELD:
245+
case FORALLQ:
246+
case LET:
247+
case FORALL:
248+
case FOR_EXAMPLE:
249+
case PEER:
250+
case REP:
251+
case READ_ONLY:
252+
case GHOST:
253+
case BEGIN:
254+
case END:
255+
case HELPER:
256+
case HENCE_BY:
257+
case HENCE_BY_REDUNDANTLY:
258+
case IMPLIES_THAT:
259+
case IN:
260+
case INITIALIZER:
261+
case INITIALLY:
262+
case INSTANCE:
263+
case TWO_STATE:
264+
case NO_STATE:
265+
case NON_NULL_BY_DEFAULT:
266+
case INVARIANT_REDUNDANTLY:
267+
case IN_REDUNDANTLY:
268+
case JAVA_MATH:
269+
case LBLNEG:
270+
case LBLPOS:
271+
case LBL:
272+
case LOOP_CONTRACT:
273+
case LOOP_INVARIANT:
274+
case LOOP_INVARIANT_FREE:
275+
case LOOP_INVARIANT_REDUNDANTLY:
276+
case MAINTAINING:
277+
case MAINTAINING_REDUNDANTLY:
278+
case MAPS:
279+
case MAPS_REDUNDANTLY:
280+
case MAX:
281+
case MEASURED_BY:
282+
case ESC_MEASURED_BY:
283+
case MEASURED_BY_REDUNDANTLY:
284+
case METHOD:
285+
case MIN:
286+
case MODEL:
287+
case MODEL_PROGRAM:
288+
case MODIFIABLE:
289+
case MODIFIABLE_REDUNDANTLY:
290+
case LOOP_MODIFIES:
291+
case MODIFIES:
292+
case MODIFIES_REDUNDANTLY:
293+
case MONITORED:
294+
case MONITORS_FOR:
295+
case NESTED_CONTRACT_END:
296+
case NESTED_CONTRACT_START:
297+
case NEW_OBJECT:
298+
case NONNULLELEMENTS:
299+
case NON_NULL:
300+
case NORMAL_BEHAVIOR:
301+
case NORMAL_BEHAVIOUR:
302+
case FEASIBLE_BEHAVIOR:
303+
case FEASIBLE_BEHAVIOUR:
304+
case NORMAL_EXAMPLE:
305+
case NOWARN:
306+
case NOWARN_OP:
307+
case NULLABLE:
308+
case NULLABLE_BY_DEFAULT:
309+
case NUM_OF:
310+
case OLD:
311+
case OR:
312+
case POST:
313+
case POST_REDUNDANTLY:
314+
case PRE_ESC:
315+
case PRE:
316+
case PRE_REDUNDANTLY:
317+
case PRODUCT:
318+
case PURE:
319+
case READABLE:
320+
case REFINING:
321+
case REPRESENTS:
322+
case REPRESENTS_REDUNDANTLY:
323+
case REQUIRES_REDUNDANTLY:
324+
case RESULT:
325+
case RETURNS:
326+
case RETURNS_REDUNDANTLY:
327+
case RETURN_BEHAVIOR:
328+
case BACKARROW:
329+
case RETURN_BEHAVIOUR:
330+
case SAFE_MATH:
331+
case SET:
332+
case SIGNALS:
333+
case SIGNALS_ONLY:
334+
case SIGNALS_ONLY_REDUNDANTLY:
335+
case SIGNALS_REDUNDANTLY:
336+
case SPEC_BIGINT_MATH:
337+
case SPEC_JAVA_MATH:
338+
case SPEC_PACKAGE:
339+
case SPEC_PRIVATE:
340+
case SPEC_PROTECTED:
341+
case SPEC_PUBLIC:
342+
case SPEC_SAFE_MATH:
343+
case STATIC_INITIALIZER:
344+
case STRICTLY_PURE:
345+
case SUBTYPE:
346+
case SUCH_THAT:
347+
case SUM:
348+
case TYPE:
349+
case UNINITIALIZED:
350+
case UNKNOWN_OP:
351+
case UNKNOWN_OP_EQ:
352+
case UNREACHABLE:
353+
case WARN:
354+
case WARN_OP:
355+
case WHEN_REDUNDANTLY:
356+
case WORKING_SPACE_ESC:
357+
case WORKING_SPACE:
358+
case WORKING_SPACE_REDUNDANTLY:
359+
case WRITABLE:
360+
case DOTDOT:
361+
case JML_LINE_COMMENT:
362+
case JML_ENTER_MULTILINE_COMMENT:
363+
case ENTER_JML_BLOCK_COMMENT:
364+
case JML_BLOCK_COMMENT:
365+
case JML_MULTI_LINE_COMMENT:
176366
return JavaToken.Category.KEYWORD;
177367
case LONG_LITERAL:
178368
case INTEGER_LITERAL:
@@ -193,6 +383,8 @@ public static JavaToken.Category getCategory(int kind) {
193383
case NULL:
194384
return JavaToken.Category.LITERAL;
195385
case IDENTIFIER:
386+
case JML_IDENTIFIER:
387+
case SYNTH_IDENTIFIER:
196388
return JavaToken.Category.IDENTIFIER;
197389
case LPAREN:
198390
case RPAREN:
@@ -256,6 +448,7 @@ public static JavaToken.Category getCategory(int kind) {
256448
case PART_LETTER:
257449
case TEXT_BLOCK_CONTENT:
258450
case ENTER_TEXT_BLOCK:
451+
throw new IllegalArgumentException("internal token type");
259452
default:
260453
throw new AssertionError("Unable to categorise token kind " + kind + " -- has it recently been added to the grammar but not classified within TokenTypes.java, perhaps?");
261454
}

pom.xml

-2
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,6 @@
145145
<java.version>17</java.version>
146146
<maven.compiler.release>${java.version}</maven.compiler.release>
147147
<byte-buddy.version>1.15.1</byte-buddy.version>
148-
<argLine>-javaagent:'${settings.localRepository}/net/bytebuddy/byte-buddy-agent/${byte-buddy.version}/byte-buddy-agent-${byte-buddy.version}.jar'</argLine>
149148
<build.timestamp>2024-09-02T00:00:00Z</build.timestamp>
150149

151150
<sonar.organization>wadoon</sonar.organization>
@@ -437,7 +436,6 @@
437436
</dependencies>
438437
</dependencyManagement>
439438

440-
441439
<profiles>
442440
<profile>
443441
<!-- doclint requires perfect JavaDoc, and fails the generation of javadoc on even minor problems -->

0 commit comments

Comments
 (0)