Skip to content

Commit 6b6a244

Browse files
Change CaseBlock#patterns() to CaseBlock#pattern()
1 parent 33db918 commit 6b6a244

File tree

8 files changed

+26
-31
lines changed

8 files changed

+26
-31
lines changed

python-frontend/src/main/java/org/sonar/plugins/python/api/tree/BaseTreeVisitor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -480,7 +480,7 @@ public void visitMatchStatement(MatchStatement matchStatement) {
480480

481481
@Override
482482
public void visitCaseBlock(CaseBlock caseBlock) {
483-
scan(caseBlock.patterns());
483+
scan(caseBlock.pattern());
484484
scan(caseBlock.guard());
485485
scan(caseBlock.body());
486486
}

python-frontend/src/main/java/org/sonar/plugins/python/api/tree/CaseBlock.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,13 @@
2020
package org.sonar.plugins.python.api.tree;
2121

2222

23-
import java.util.List;
2423
import javax.annotation.CheckForNull;
2524

2625
/**
2726
* Case block
2827
*
2928
* <pre>
30-
* {@link #caseKeyword()} {@link #patterns()} {@link #guard()}:
29+
* {@link #caseKeyword()} {@link #pattern()} {@link #guard()}:
3130
* {@link #body()}
3231
* </pre>
3332
*
@@ -37,7 +36,7 @@ public interface CaseBlock extends Tree {
3736

3837
Token caseKeyword();
3938

40-
List<Pattern> patterns();
39+
Pattern pattern();
4140

4241
@CheckForNull
4342
Guard guard();

python-frontend/src/main/java/org/sonar/python/api/PythonGrammar.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ public enum PythonGrammar implements GrammarRuleKey {
154154
CASE_BLOCK,
155155
GUARD,
156156

157-
PATTERNS,
157+
PATTERN,
158158
LITERAL_PATTERN,
159159

160160
SIGNED_NUMBER,
@@ -452,11 +452,11 @@ public static void compoundStatements(LexerfulGrammarBuilder b) {
452452

453453
b.rule(MATCH_STMT).is("match", SUBJECT_EXPR, ":", NEWLINE, INDENT, b.oneOrMore(CASE_BLOCK), DEDENT);
454454
b.rule(SUBJECT_EXPR).is(STAR_NAMED_EXPRESSIONS);
455-
b.rule(CASE_BLOCK).is("case", PATTERNS, b.optional(GUARD), ":", SUITE);
455+
b.rule(CASE_BLOCK).is("case", PATTERN, b.optional(GUARD), ":", SUITE);
456456
b.rule(GUARD).is("if", NAMED_EXPR_TEST);
457457

458458
// TODO: this should be either OR_PATTERN or AS_PATTERN
459-
b.rule(PATTERNS).is(LITERAL_PATTERN);
459+
b.rule(PATTERN).is(LITERAL_PATTERN);
460460

461461
b.rule(LITERAL_PATTERN).is(b.firstOf(
462462
COMPLEX_NUMBER,

python-frontend/src/main/java/org/sonar/python/tree/CaseBlockImpl.java

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@
1919
*/
2020
package org.sonar.python.tree;
2121

22-
import java.util.Arrays;
23-
import java.util.Collections;
2422
import java.util.List;
2523
import java.util.Objects;
2624
import java.util.stream.Collectors;
@@ -37,7 +35,7 @@
3735

3836
public class CaseBlockImpl extends PyTree implements CaseBlock {
3937
private final Token caseKeyword;
40-
private final List<Pattern> patterns;
38+
private final Pattern pattern;
4139
@Nullable
4240
private final Guard guard;
4341
private final Token colon;
@@ -49,11 +47,11 @@ public class CaseBlockImpl extends PyTree implements CaseBlock {
4947
@Nullable
5048
private final Token dedent;
5149

52-
public CaseBlockImpl(Token caseKeyword, List<Pattern> patterns, @Nullable Guard guard, Token colon, @Nullable Token newLine,
50+
public CaseBlockImpl(Token caseKeyword, Pattern pattern, @Nullable Guard guard, Token colon, @Nullable Token newLine,
5351
@Nullable Token indent, StatementList body, @Nullable Token dedent) {
5452

5553
this.caseKeyword = caseKeyword;
56-
this.patterns = patterns;
54+
this.pattern = pattern;
5755
this.guard = guard;
5856
this.colon = colon;
5957
this.newLine = newLine;
@@ -69,8 +67,8 @@ public Token caseKeyword() {
6967
}
7068

7169
@Override
72-
public List<Pattern> patterns() {
73-
return patterns;
70+
public Pattern pattern() {
71+
return pattern;
7472
}
7573

7674
@CheckForNull
@@ -96,8 +94,7 @@ public Kind getKind() {
9694

9795
@Override
9896
List<Tree> computeChildren() {
99-
return Stream.of(Collections.singletonList(caseKeyword), patterns, Arrays.asList(guard, colon, newLine, indent, body, dedent))
100-
.flatMap(List::stream)
97+
return Stream.of(caseKeyword, pattern, guard, colon, newLine, indent, body, dedent)
10198
.filter(Objects::nonNull)
10299
.collect(Collectors.toList());
103100
}

python-frontend/src/main/java/org/sonar/python/tree/PythonTreeMaker.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -804,7 +804,7 @@ public MatchStatement matchStatement(AstNode matchStmt) {
804804

805805
public CaseBlock caseBlock(AstNode caseBlock) {
806806
Token caseKeyword = toPyToken(caseBlock.getTokens().get(0));
807-
List<Pattern> patterns = patterns(caseBlock.getFirstChild(PythonGrammar.PATTERNS));
807+
Pattern pattern = pattern(caseBlock.getFirstChild(PythonGrammar.PATTERN));
808808
Guard guard = null;
809809
AstNode guardNode = caseBlock.getFirstChild(PythonGrammar.GUARD);
810810
if (guardNode != null) {
@@ -813,7 +813,7 @@ public CaseBlock caseBlock(AstNode caseBlock) {
813813
Token colon = toPyToken(caseBlock.getFirstChild(PythonPunctuator.COLON).getToken());
814814
AstNode suite = caseBlock.getFirstChild(PythonGrammar.SUITE);
815815
StatementList body = getStatementListFromSuite(suite);
816-
return new CaseBlockImpl(caseKeyword, patterns, guard, colon, suiteNewLine(suite), suiteIndent(suite), body, suiteDedent(suite));
816+
return new CaseBlockImpl(caseKeyword, pattern, guard, colon, suiteNewLine(suite), suiteIndent(suite), body, suiteDedent(suite));
817817
}
818818

819819
public Guard guard(AstNode guardNode) {
@@ -822,7 +822,7 @@ public Guard guard(AstNode guardNode) {
822822
return new GuardImpl(ifKeyword, condition);
823823
}
824824

825-
private static List<Pattern> patterns(AstNode pattern) {
825+
private static Pattern pattern(AstNode pattern) {
826826
// TODO: consider OR Patterns and other kind of patterns
827827
AstNode literalPattern = pattern.getFirstChild(PythonGrammar.LITERAL_PATTERN);
828828
LiteralPattern.LiteralKind literalKind;
@@ -836,7 +836,7 @@ private static List<Pattern> patterns(AstNode pattern) {
836836
literalKind = LiteralPattern.LiteralKind.BOOLEAN;
837837
}
838838
List<Token> tokens = literalPattern.getTokens().stream().map(PythonTreeMaker::toPyToken).collect(Collectors.toList());
839-
return Collections.singletonList(new LiteralPatternImpl(tokens, literalKind));
839+
return new LiteralPatternImpl(tokens, literalKind);
840840
}
841841

842842

python-frontend/src/test/java/org/sonar/plugins/python/api/tree/BaseTreeVisitorTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,7 @@ public void case_block() {
386386
FirstLastTokenVerifierVisitor visitor = spy(FirstLastTokenVerifierVisitor.class);
387387
caseBlock.accept(visitor);
388388

389-
verify(visitor).visitLiteralPattern(((LiteralPattern) caseBlock.patterns().get(0)));
389+
verify(visitor).visitLiteralPattern(((LiteralPattern) caseBlock.pattern()));
390390
verify(visitor).visitGuard(caseBlock.guard());
391391
verify(visitor).visitStatementList(caseBlock.body());
392392
}

python-frontend/src/test/java/org/sonar/python/parser/compound/statements/CasePatternsTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public class CasePatternsTest extends RuleTest {
3030

3131
@Before
3232
public void init() {
33-
setRootRule(PythonGrammar.PATTERNS);
33+
setRootRule(PythonGrammar.PATTERN);
3434
}
3535

3636
@Test

python-frontend/src/test/java/org/sonar/python/tree/PythonTreeMakerMatchStatementTest.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,12 @@ public void match_statement() {
5151

5252
CaseBlock caseBlock = matchStatement.caseBlocks().get(0);
5353
assertThat(caseBlock.caseKeyword().value()).isEqualTo("case");
54-
assertThat(caseBlock.patterns()).hasSize(1);
5554
assertThat(caseBlock.guard()).isNull();
5655
assertThat(caseBlock.body().statements()).extracting(Tree::getKind).containsExactly(Tree.Kind.EXPRESSION_STMT);
5756
assertThat(caseBlock.children()).extracting(Tree::getKind)
5857
.containsExactly(Tree.Kind.TOKEN, Tree.Kind.LITERAL_PATTERN, Tree.Kind.TOKEN, Tree.Kind.STATEMENT_LIST);
5958

60-
Pattern pattern = caseBlock.patterns().get(0);
59+
Pattern pattern = caseBlock.pattern();
6160
assertThat(pattern.getKind()).isEqualTo(Tree.Kind.LITERAL_PATTERN);
6261
LiteralPattern literalPattern = (LiteralPattern) pattern;
6362
assertThat(literalPattern.literalKind()).isEqualTo(LiteralPattern.LiteralKind.NUMBER);
@@ -113,37 +112,37 @@ public void case_block_with_guard() {
113112
public void literal_patterns() {
114113
setRootRule(PythonGrammar.CASE_BLOCK);
115114
CaseBlock caseBlock = parse("case \"foo\": ...", treeMaker::caseBlock);
116-
LiteralPattern literalPattern = (LiteralPattern) caseBlock.patterns().get(0);
115+
LiteralPattern literalPattern = (LiteralPattern) caseBlock.pattern();
117116
assertThat(literalPattern.literalKind()).isEqualTo(LiteralPattern.LiteralKind.STRING);
118117
assertThat(literalPattern.valueAsString()).isEqualTo("\"foo\"");
119118

120119
caseBlock = parse("case \"foo\" \"bar\": ...", treeMaker::caseBlock);
121-
literalPattern = (LiteralPattern) caseBlock.patterns().get(0);
120+
literalPattern = (LiteralPattern) caseBlock.pattern();
122121
assertThat(literalPattern.literalKind()).isEqualTo(LiteralPattern.LiteralKind.STRING);
123122
assertThat(literalPattern.valueAsString()).isEqualTo("\"foo\"\"bar\"");
124123

125124
caseBlock = parse("case -42: ...", treeMaker::caseBlock);
126-
literalPattern = (LiteralPattern) caseBlock.patterns().get(0);
125+
literalPattern = (LiteralPattern) caseBlock.pattern();
127126
assertThat(literalPattern.literalKind()).isEqualTo(LiteralPattern.LiteralKind.NUMBER);
128127
assertThat(literalPattern.valueAsString()).isEqualTo("-42");
129128

130129
caseBlock = parse("case 3 + 5j: ...", treeMaker::caseBlock);
131-
literalPattern = (LiteralPattern) caseBlock.patterns().get(0);
130+
literalPattern = (LiteralPattern) caseBlock.pattern();
132131
assertThat(literalPattern.literalKind()).isEqualTo(LiteralPattern.LiteralKind.NUMBER);
133132
assertThat(literalPattern.valueAsString()).isEqualTo("3+5j");
134133

135134
caseBlock = parse("case None: ...", treeMaker::caseBlock);
136-
literalPattern = (LiteralPattern) caseBlock.patterns().get(0);
135+
literalPattern = (LiteralPattern) caseBlock.pattern();
137136
assertThat(literalPattern.literalKind()).isEqualTo(LiteralPattern.LiteralKind.NONE);
138137
assertThat(literalPattern.valueAsString()).isEqualTo("None");
139138

140139
caseBlock = parse("case True: ...", treeMaker::caseBlock);
141-
literalPattern = (LiteralPattern) caseBlock.patterns().get(0);
140+
literalPattern = (LiteralPattern) caseBlock.pattern();
142141
assertThat(literalPattern.literalKind()).isEqualTo(LiteralPattern.LiteralKind.BOOLEAN);
143142
assertThat(literalPattern.valueAsString()).isEqualTo("True");
144143

145144
caseBlock = parse("case False: ...", treeMaker::caseBlock);
146-
literalPattern = (LiteralPattern) caseBlock.patterns().get(0);
145+
literalPattern = (LiteralPattern) caseBlock.pattern();
147146
assertThat(literalPattern.literalKind()).isEqualTo(LiteralPattern.LiteralKind.BOOLEAN);
148147
assertThat(literalPattern.valueAsString()).isEqualTo("False");
149148
}

0 commit comments

Comments
 (0)