mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-08 23:39:39 +07:00
All the corresponding PSI elements now have empty interfaces. The API will be "beefed up" as we start adding actual processing of them in the code insight (e.g. for the upcoming CFG and inspections). The trickiest part of the parsing was the recovery. Patterns allow only a limited subset of expression syntax, but I tried to sensibly consume and report everything else (not building PSI for it). So that if user starts typing more general expressions in the midst of a pattern, we still give meaningful error messages. It seems a likely cause of errors when the feature first rolls out in Python 3.10. GitOrigin-RevId: fae40034964e4a25d91dab06a43d3fc07225d9c7
350 lines
11 KiB
Plaintext
350 lines
11 KiB
Plaintext
PyFile:PatternMatchingRecoveryIncompleteAsPatterns.py
|
|
PyMatchStatement
|
|
PsiElement(Py:MATCH_KEYWORD)('match')
|
|
PsiWhiteSpace(' ')
|
|
PyReferenceExpression: x
|
|
PsiElement(Py:IDENTIFIER)('x')
|
|
PsiElement(Py:COLON)(':')
|
|
PsiWhiteSpace('\n ')
|
|
PyCaseClause
|
|
PsiElement(Py:CASE_KEYWORD)('case')
|
|
PsiWhiteSpace(' ')
|
|
PyAsPattern
|
|
PyCapturePattern
|
|
PyTargetExpression: x
|
|
PsiElement(Py:IDENTIFIER)('x')
|
|
PsiWhiteSpace(' ')
|
|
PsiElement(Py:AS_KEYWORD)('as')
|
|
PsiErrorElement:Name expected
|
|
<empty list>
|
|
PsiElement(Py:COLON)(':')
|
|
PsiWhiteSpace('\n ')
|
|
PyStatementList
|
|
PyPassStatement
|
|
PsiElement(Py:PASS_KEYWORD)('pass')
|
|
PsiWhiteSpace('\n ')
|
|
PyCaseClause
|
|
PsiElement(Py:CASE_KEYWORD)('case')
|
|
PsiWhiteSpace(' ')
|
|
PySequencePattern
|
|
PsiElement(Py:LBRACKET)('[')
|
|
PyAsPattern
|
|
PyLiteralPattern
|
|
PyNumericLiteralExpression
|
|
PsiElement(Py:INTEGER_LITERAL)('1')
|
|
PsiWhiteSpace(' ')
|
|
PsiElement(Py:AS_KEYWORD)('as')
|
|
PsiErrorElement:Name expected
|
|
<empty list>
|
|
PsiWhiteSpace(' ')
|
|
PsiElement(Py:RBRACKET)(']')
|
|
PsiElement(Py:COLON)(':')
|
|
PsiWhiteSpace('\n ')
|
|
PyStatementList
|
|
PyPassStatement
|
|
PsiElement(Py:PASS_KEYWORD)('pass')
|
|
PsiWhiteSpace('\n ')
|
|
PyCaseClause
|
|
PsiElement(Py:CASE_KEYWORD)('case')
|
|
PsiWhiteSpace(' ')
|
|
PySequencePattern
|
|
PsiElement(Py:LBRACKET)('[')
|
|
PyAsPattern
|
|
PyLiteralPattern
|
|
PyNumericLiteralExpression
|
|
PsiElement(Py:INTEGER_LITERAL)('1')
|
|
PsiWhiteSpace(' ')
|
|
PsiElement(Py:AS_KEYWORD)('as')
|
|
PsiErrorElement:Name expected
|
|
<empty list>
|
|
PsiElement(Py:COMMA)(',')
|
|
PsiElement(Py:RBRACKET)(']')
|
|
PsiElement(Py:COLON)(':')
|
|
PsiWhiteSpace('\n ')
|
|
PyStatementList
|
|
PyPassStatement
|
|
PsiElement(Py:PASS_KEYWORD)('pass')
|
|
PsiWhiteSpace('\n ')
|
|
PyCaseClause
|
|
PsiElement(Py:CASE_KEYWORD)('case')
|
|
PsiWhiteSpace(' ')
|
|
PySequencePattern
|
|
PsiElement(Py:LBRACKET)('[')
|
|
PyAsPattern
|
|
PyLiteralPattern
|
|
PyNumericLiteralExpression
|
|
PsiElement(Py:INTEGER_LITERAL)('1')
|
|
PsiWhiteSpace(' ')
|
|
PsiElement(Py:AS_KEYWORD)('as')
|
|
PsiErrorElement:Name expected
|
|
<empty list>
|
|
PsiElement(Py:COMMA)(',')
|
|
PsiWhiteSpace(' ')
|
|
PyLiteralPattern
|
|
PyNumericLiteralExpression
|
|
PsiElement(Py:INTEGER_LITERAL)('2')
|
|
PsiElement(Py:RBRACKET)(']')
|
|
PsiElement(Py:COLON)(':')
|
|
PsiWhiteSpace('\n ')
|
|
PyStatementList
|
|
PyPassStatement
|
|
PsiElement(Py:PASS_KEYWORD)('pass')
|
|
PsiWhiteSpace('\n ')
|
|
PyCaseClause
|
|
PsiElement(Py:CASE_KEYWORD)('case')
|
|
PsiWhiteSpace(' ')
|
|
PyGroupPattern
|
|
PsiElement(Py:LPAR)('(')
|
|
PyAsPattern
|
|
PyLiteralPattern
|
|
PyNumericLiteralExpression
|
|
PsiElement(Py:INTEGER_LITERAL)('1')
|
|
PsiWhiteSpace(' ')
|
|
PsiElement(Py:AS_KEYWORD)('as')
|
|
PsiErrorElement:Name expected
|
|
<empty list>
|
|
PsiWhiteSpace(' ')
|
|
PsiElement(Py:RPAR)(')')
|
|
PsiElement(Py:COLON)(':')
|
|
PsiWhiteSpace('\n ')
|
|
PyStatementList
|
|
PyPassStatement
|
|
PsiElement(Py:PASS_KEYWORD)('pass')
|
|
PsiWhiteSpace('\n ')
|
|
PyCaseClause
|
|
PsiElement(Py:CASE_KEYWORD)('case')
|
|
PsiWhiteSpace(' ')
|
|
PySequencePattern
|
|
PsiElement(Py:LPAR)('(')
|
|
PyAsPattern
|
|
PyLiteralPattern
|
|
PyNumericLiteralExpression
|
|
PsiElement(Py:INTEGER_LITERAL)('1')
|
|
PsiWhiteSpace(' ')
|
|
PsiElement(Py:AS_KEYWORD)('as')
|
|
PsiErrorElement:Name expected
|
|
<empty list>
|
|
PsiElement(Py:COMMA)(',')
|
|
PsiElement(Py:RPAR)(')')
|
|
PsiElement(Py:COLON)(':')
|
|
PsiWhiteSpace('\n ')
|
|
PyStatementList
|
|
PyPassStatement
|
|
PsiElement(Py:PASS_KEYWORD)('pass')
|
|
PsiWhiteSpace('\n ')
|
|
PyCaseClause
|
|
PsiElement(Py:CASE_KEYWORD)('case')
|
|
PsiWhiteSpace(' ')
|
|
PySequencePattern
|
|
PsiElement(Py:LPAR)('(')
|
|
PyAsPattern
|
|
PyLiteralPattern
|
|
PyNumericLiteralExpression
|
|
PsiElement(Py:INTEGER_LITERAL)('1')
|
|
PsiWhiteSpace(' ')
|
|
PsiElement(Py:AS_KEYWORD)('as')
|
|
PsiErrorElement:Name expected
|
|
<empty list>
|
|
PsiElement(Py:COMMA)(',')
|
|
PsiWhiteSpace(' ')
|
|
PyLiteralPattern
|
|
PyNumericLiteralExpression
|
|
PsiElement(Py:INTEGER_LITERAL)('2')
|
|
PsiElement(Py:RPAR)(')')
|
|
PsiElement(Py:COLON)(':')
|
|
PsiWhiteSpace('\n ')
|
|
PyStatementList
|
|
PyPassStatement
|
|
PsiElement(Py:PASS_KEYWORD)('pass')
|
|
PsiWhiteSpace('\n ')
|
|
PyCaseClause
|
|
PsiElement(Py:CASE_KEYWORD)('case')
|
|
PsiWhiteSpace(' ')
|
|
PyClassPattern
|
|
PyReferenceExpression: C
|
|
PsiElement(Py:IDENTIFIER)('C')
|
|
PyPatternArgumentList
|
|
PsiElement(Py:LPAR)('(')
|
|
PyAsPattern
|
|
PyLiteralPattern
|
|
PyNumericLiteralExpression
|
|
PsiElement(Py:INTEGER_LITERAL)('1')
|
|
PsiWhiteSpace(' ')
|
|
PsiElement(Py:AS_KEYWORD)('as')
|
|
PsiErrorElement:Name expected
|
|
<empty list>
|
|
PsiElement(Py:RPAR)(')')
|
|
PsiElement(Py:COLON)(':')
|
|
PsiWhiteSpace('\n ')
|
|
PyStatementList
|
|
PyPassStatement
|
|
PsiElement(Py:PASS_KEYWORD)('pass')
|
|
PsiWhiteSpace('\n ')
|
|
PyCaseClause
|
|
PsiElement(Py:CASE_KEYWORD)('case')
|
|
PsiWhiteSpace(' ')
|
|
PyClassPattern
|
|
PyReferenceExpression: C
|
|
PsiElement(Py:IDENTIFIER)('C')
|
|
PyPatternArgumentList
|
|
PsiElement(Py:LPAR)('(')
|
|
PyAsPattern
|
|
PyLiteralPattern
|
|
PyNumericLiteralExpression
|
|
PsiElement(Py:INTEGER_LITERAL)('1')
|
|
PsiWhiteSpace(' ')
|
|
PsiElement(Py:AS_KEYWORD)('as')
|
|
PsiErrorElement:Name expected
|
|
<empty list>
|
|
PsiElement(Py:COMMA)(',')
|
|
PsiElement(Py:RPAR)(')')
|
|
PsiElement(Py:COLON)(':')
|
|
PsiWhiteSpace('\n ')
|
|
PyStatementList
|
|
PyPassStatement
|
|
PsiElement(Py:PASS_KEYWORD)('pass')
|
|
PsiWhiteSpace('\n ')
|
|
PyCaseClause
|
|
PsiElement(Py:CASE_KEYWORD)('case')
|
|
PsiWhiteSpace(' ')
|
|
PyClassPattern
|
|
PyReferenceExpression: C
|
|
PsiElement(Py:IDENTIFIER)('C')
|
|
PyPatternArgumentList
|
|
PsiElement(Py:LPAR)('(')
|
|
PyAsPattern
|
|
PyLiteralPattern
|
|
PyNumericLiteralExpression
|
|
PsiElement(Py:INTEGER_LITERAL)('1')
|
|
PsiWhiteSpace(' ')
|
|
PsiElement(Py:AS_KEYWORD)('as')
|
|
PsiErrorElement:Name expected
|
|
<empty list>
|
|
PsiElement(Py:COMMA)(',')
|
|
PsiWhiteSpace(' ')
|
|
PyLiteralPattern
|
|
PyNumericLiteralExpression
|
|
PsiElement(Py:INTEGER_LITERAL)('2')
|
|
PsiElement(Py:RPAR)(')')
|
|
PsiElement(Py:COLON)(':')
|
|
PsiWhiteSpace('\n ')
|
|
PyStatementList
|
|
PyPassStatement
|
|
PsiElement(Py:PASS_KEYWORD)('pass')
|
|
PsiWhiteSpace('\n ')
|
|
PyCaseClause
|
|
PsiElement(Py:CASE_KEYWORD)('case')
|
|
PsiWhiteSpace(' ')
|
|
PyMappingPattern
|
|
PsiElement(Py:LBRACE)('{')
|
|
PyKeyValuePattern
|
|
PyLiteralPattern
|
|
PyStringLiteralExpression: foo
|
|
PsiElement(Py:SINGLE_QUOTED_STRING)(''foo'')
|
|
PsiElement(Py:COLON)(':')
|
|
PsiWhiteSpace(' ')
|
|
PyAsPattern
|
|
PyLiteralPattern
|
|
PyNumericLiteralExpression
|
|
PsiElement(Py:INTEGER_LITERAL)('1')
|
|
PsiWhiteSpace(' ')
|
|
PsiElement(Py:AS_KEYWORD)('as')
|
|
PsiErrorElement:Name expected
|
|
<empty list>
|
|
PsiElement(Py:RBRACE)('}')
|
|
PsiElement(Py:COLON)(':')
|
|
PsiWhiteSpace('\n ')
|
|
PyStatementList
|
|
PyPassStatement
|
|
PsiElement(Py:PASS_KEYWORD)('pass')
|
|
PsiWhiteSpace('\n ')
|
|
PyCaseClause
|
|
PsiElement(Py:CASE_KEYWORD)('case')
|
|
PsiWhiteSpace(' ')
|
|
PyMappingPattern
|
|
PsiElement(Py:LBRACE)('{')
|
|
PyKeyValuePattern
|
|
PyLiteralPattern
|
|
PyStringLiteralExpression: foo
|
|
PsiElement(Py:SINGLE_QUOTED_STRING)(''foo'')
|
|
PsiElement(Py:COLON)(':')
|
|
PsiWhiteSpace(' ')
|
|
PyAsPattern
|
|
PyLiteralPattern
|
|
PyNumericLiteralExpression
|
|
PsiElement(Py:INTEGER_LITERAL)('1')
|
|
PsiWhiteSpace(' ')
|
|
PsiElement(Py:AS_KEYWORD)('as')
|
|
PsiErrorElement:Name expected
|
|
<empty list>
|
|
PsiElement(Py:COMMA)(',')
|
|
PsiElement(Py:RBRACE)('}')
|
|
PsiElement(Py:COLON)(':')
|
|
PsiWhiteSpace('\n ')
|
|
PyStatementList
|
|
PyPassStatement
|
|
PsiElement(Py:PASS_KEYWORD)('pass')
|
|
PsiWhiteSpace('\n ')
|
|
PyCaseClause
|
|
PsiElement(Py:CASE_KEYWORD)('case')
|
|
PsiWhiteSpace(' ')
|
|
PyMappingPattern
|
|
PsiElement(Py:LBRACE)('{')
|
|
PyKeyValuePattern
|
|
PyLiteralPattern
|
|
PyStringLiteralExpression: foo
|
|
PsiElement(Py:SINGLE_QUOTED_STRING)(''foo'')
|
|
PsiElement(Py:COLON)(':')
|
|
PsiWhiteSpace(' ')
|
|
PyAsPattern
|
|
PyLiteralPattern
|
|
PyNumericLiteralExpression
|
|
PsiElement(Py:INTEGER_LITERAL)('1')
|
|
PsiWhiteSpace(' ')
|
|
PsiElement(Py:AS_KEYWORD)('as')
|
|
PsiErrorElement:Name expected
|
|
<empty list>
|
|
PsiElement(Py:COMMA)(',')
|
|
PsiWhiteSpace(' ')
|
|
PyKeyValuePattern
|
|
PyLiteralPattern
|
|
PyStringLiteralExpression: bar
|
|
PsiElement(Py:SINGLE_QUOTED_STRING)(''bar'')
|
|
PsiElement(Py:COLON)(':')
|
|
PsiWhiteSpace(' ')
|
|
PyLiteralPattern
|
|
PyNumericLiteralExpression
|
|
PsiElement(Py:INTEGER_LITERAL)('2')
|
|
PsiElement(Py:RBRACE)('}')
|
|
PsiElement(Py:COLON)(':')
|
|
PsiWhiteSpace('\n ')
|
|
PyStatementList
|
|
PyPassStatement
|
|
PsiElement(Py:PASS_KEYWORD)('pass')
|
|
PsiWhiteSpace('\n ')
|
|
PyCaseClause
|
|
PsiElement(Py:CASE_KEYWORD)('case')
|
|
PsiWhiteSpace(' ')
|
|
PyMappingPattern
|
|
PsiElement(Py:LBRACE)('{')
|
|
PyKeyValuePattern
|
|
PyAsPattern
|
|
PyLiteralPattern
|
|
PyStringLiteralExpression: foo
|
|
PsiElement(Py:SINGLE_QUOTED_STRING)(''foo'')
|
|
PsiWhiteSpace(' ')
|
|
PsiElement(Py:AS_KEYWORD)('as')
|
|
PsiErrorElement:Name expected
|
|
<empty list>
|
|
PsiWhiteSpace(' ')
|
|
PsiElement(Py:COLON)(':')
|
|
PsiWhiteSpace(' ')
|
|
PyLiteralPattern
|
|
PyNumericLiteralExpression
|
|
PsiElement(Py:INTEGER_LITERAL)('1')
|
|
PsiElement(Py:RBRACE)('}')
|
|
PsiElement(Py:COLON)(':')
|
|
PsiWhiteSpace('\n ')
|
|
PyStatementList
|
|
PyPassStatement
|
|
PsiElement(Py:PASS_KEYWORD)('pass') |