Skip to content

Commit a4f8914

Browse files
AsPattern#pattern() can accept any type of closed pattern (#982)
1 parent c2959db commit a4f8914

File tree

2 files changed

+5
-1
lines changed

2 files changed

+5
-1
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -831,7 +831,7 @@ public static Pattern pattern(AstNode pattern) {
831831
}
832832

833833
private static AsPattern asPattern(AstNode asPattern) {
834-
Pattern pattern = literalPattern(asPattern.getFirstChild(PythonGrammar.CLOSED_PATTERN).getFirstChild());
834+
Pattern pattern = closedPattern(asPattern.getFirstChild(PythonGrammar.CLOSED_PATTERN));
835835
Token asKeyword = toPyToken(asPattern.getFirstChild(PythonKeyword.AS).getToken());
836836
Name alias = name(asPattern.getFirstChild(PythonGrammar.CAPTURE_PATTERN).getFirstChild());
837837
return new AsPatternImpl(pattern, asKeyword, alias);

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,10 @@ public void as_pattern() {
157157
assertThat(asPattern.pattern()).isInstanceOf(LiteralPattern.class);
158158
assertThat(asPattern.alias().name()).isEqualTo("x");
159159
assertThat(asPattern.children()).extracting(Tree::getKind).containsExactly(Tree.Kind.LITERAL_PATTERN, Tree.Kind.TOKEN, Tree.Kind.NAME);
160+
161+
caseBlock = parse("case value as x: ...", treeMaker::caseBlock);
162+
asPattern = (AsPattern) caseBlock.pattern();
163+
assertThat(asPattern.pattern().getKind()).isEqualTo(Tree.Kind.CAPTURE_PATTERN);
160164
}
161165

162166
@Test

0 commit comments

Comments
 (0)