Skip to content

Commit a9177f6

Browse files
authored
Fix the bug that does not allow the use of permits as field names. (#202)
1 parent 54b0534 commit a9177f6

File tree

2 files changed

+42
-1
lines changed

2 files changed

+42
-1
lines changed

src/grammar/lexer.flex

+7-1
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,6 @@ JavadocEnd = "*"+ "/"
267267
"new" { return Parser.NEW; }
268268
"sealed" { return Parser.SEALED; }
269269
"non-sealed" { return Parser.NON_SEALED; }
270-
"permits" { return Parser.PERMITS; }
271270

272271
"[" { nestingDepth++; return Parser.SQUAREOPEN; }
273272
"]" { nestingDepth--; return Parser.SQUARECLOSE; }
@@ -315,6 +314,13 @@ JavadocEnd = "*"+ "/"
315314
pushState(NAME);
316315
return Parser.RECORD;
317316
}
317+
"permits" / {WhiteSpace}+ {Id} {
318+
markAnnotatedElementLine();
319+
classDepth++;
320+
braceMode = TYPE;
321+
pushState(NAME);
322+
return Parser.PERMITS;
323+
}
318324
"@" {
319325
markAnnotatedElementLine();
320326
pushState(ATANNOTATION);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.thoughtworks.qdox;
2+
3+
import org.junit.jupiter.api.Test;
4+
5+
import java.io.StringReader;
6+
7+
/**
8+
*
9+
* @author shalousun
10+
*/
11+
public class PermitsTest {
12+
@Test
13+
public void permitsAsTypeAndIdentifiers() {
14+
String source = "public class MyPermits {\n" +
15+
"\n" +
16+
" private Object permits;\n" +
17+
"\n" +
18+
" public MyPermits(){}\n" +
19+
"\n" +
20+
" public MyPermits(Object permits) {\n" +
21+
" this.permits = permits;\n" +
22+
" }\n" +
23+
"\n" +
24+
" public Object getPermits() {\n" +
25+
" return permits;\n" +
26+
" }\n" +
27+
"\n" +
28+
" public void setPermits(Object permits) {\n" +
29+
" this.permits = permits;\n" +
30+
" }\n" +
31+
"}";
32+
JavaProjectBuilder javaDocBuilder = new JavaProjectBuilder();
33+
javaDocBuilder.addSource( new StringReader(source) );
34+
}
35+
}

0 commit comments

Comments
 (0)