Skip to content

Commit 651a9f4

Browse files
Add tokens to SequencePattern interface
1 parent 2f5e4f8 commit 651a9f4

File tree

3 files changed

+43
-0
lines changed

3 files changed

+43
-0
lines changed

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
package org.sonar.plugins.python.api.tree;
2121

2222
import java.util.List;
23+
import javax.annotation.CheckForNull;
2324

2425
/**
2526
* Sequence Pattern
@@ -37,5 +38,13 @@
3738
*/
3839
public interface SequencePattern extends Pattern {
3940

41+
@CheckForNull
42+
Token lDelimiter();
43+
4044
List<Pattern> elements();
45+
46+
List<Token> commas();
47+
48+
@CheckForNull
49+
Token rDelimiter();
4150
}

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import java.util.ArrayList;
2323
import java.util.List;
24+
import javax.annotation.CheckForNull;
2425
import javax.annotation.Nullable;
2526
import org.sonar.plugins.python.api.tree.Pattern;
2627
import org.sonar.plugins.python.api.tree.SequencePattern;
@@ -44,11 +45,28 @@ public SequencePatternImpl(@Nullable Token leftDelimiter, List<Pattern> elements
4445
this.rightDelimiter = rightDelimiter;
4546
}
4647

48+
@CheckForNull
49+
@Override
50+
public Token lDelimiter() {
51+
return leftDelimiter;
52+
}
53+
4754
@Override
4855
public List<Pattern> elements() {
4956
return elements;
5057
}
5158

59+
@Override
60+
public List<Token> commas() {
61+
return commas;
62+
}
63+
64+
@CheckForNull
65+
@Override
66+
public Token rDelimiter() {
67+
return rightDelimiter;
68+
}
69+
5270
@Override
5371
public void accept(TreeVisitor visitor) {
5472
visitor.visitSequencePattern(this);

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,22 @@ public void sequence_pattern() {
247247
assertSequenceElements(pattern("case ['foo' as head]: ..."), Kind.AS_PATTERN);
248248
}
249249

250+
@Test
251+
public void sequence_pattern_delimiters() {
252+
SequencePattern pattern = pattern("case [x, y]: ...");
253+
assertThat(pattern.lDelimiter().value()).isEqualTo("[");
254+
assertThat(pattern.rDelimiter().value()).isEqualTo("]");
255+
assertThat(pattern.commas()).hasSize(1);
256+
257+
pattern = pattern("case (x, y): ...");
258+
assertThat(pattern.lDelimiter().value()).isEqualTo("(");
259+
assertThat(pattern.rDelimiter().value()).isEqualTo(")");
260+
261+
pattern = pattern("case x, y: ...");
262+
assertThat(pattern.lDelimiter()).isNull();
263+
assertThat(pattern.rDelimiter()).isNull();
264+
}
265+
250266
@Test
251267
public void group_pattern() {
252268
GroupPattern groupPattern = pattern("case (x): ...");

0 commit comments

Comments
 (0)