mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
report missing expression in subscription (PY-8652)
This commit is contained in:
@@ -325,7 +325,7 @@ public class ExpressionParsing extends Parsing {
|
||||
parseSliceEnd(expr, sliceItemStart);
|
||||
}
|
||||
else {
|
||||
parseSingleExpression(false, true);
|
||||
boolean hadExpression = parseSingleExpression(false, true);
|
||||
if (atToken(PyTokenTypes.COLON)) {
|
||||
sliceOrTupleStart.drop();
|
||||
parseSliceEnd(expr, sliceItemStart);
|
||||
@@ -342,6 +342,9 @@ public class ExpressionParsing extends Parsing {
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (!hadExpression) {
|
||||
myBuilder.error("expression expected");
|
||||
}
|
||||
sliceOrTupleStart.drop();
|
||||
sliceItemStart.drop();
|
||||
checkMatches(PyTokenTypes.RBRACKET, message("PARSE.expected.rbracket"));
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
def test():
|
||||
x = r"""\x""
|
||||
r"""[<error descr="']' expected">\</error><error descr="Statement expected, found Py:BACKSLASH">t</error><error descr="End of statement expected">\</error><error descr="Statement expected, found Py:BACKSLASH">r</error><error descr="End of statement expected">\</error><error descr="Statement expected, found Py:BACKSLASH">v</error><error descr="End of statement expected">]</error><error descr="Statement expected, found Py:RBRACKET">"</error>""
|
||||
r"""[<error descr="expression expected">\</error><error descr="Statement expected, found Py:BACKSLASH">t</error><error descr="End of statement expected">\</error><error descr="Statement expected, found Py:BACKSLASH">r</error><error descr="End of statement expected">\</error><error descr="Statement expected, found Py:BACKSLASH">v</error><error descr="End of statement expected">]</error><error descr="Statement expected, found Py:RBRACKET">"</error>""
|
||||
"""
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
s = ''[]
|
||||
@@ -0,0 +1,14 @@
|
||||
PyFile:EmptySubscription.py
|
||||
PyAssignmentStatement
|
||||
PyTargetExpression: s
|
||||
PsiElement(Py:IDENTIFIER)('s')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiElement(Py:EQ)('=')
|
||||
PsiWhiteSpace(' ')
|
||||
PySubscriptionExpression
|
||||
PyStringLiteralExpression:
|
||||
PsiElement(Py:SINGLE_QUOTED_STRING)('''')
|
||||
PsiElement(Py:LBRACKET)('[')
|
||||
PsiErrorElement:expression expected
|
||||
<empty list>
|
||||
PsiElement(Py:RBRACKET)(']')
|
||||
@@ -370,6 +370,10 @@ public class PythonParsingTest extends ParsingTestCase {
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testEmptySubscription() { // PY-8652
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void doTest(LanguageLevel languageLevel) {
|
||||
LanguageLevel prev = myLanguageLevel;
|
||||
myLanguageLevel = languageLevel;
|
||||
|
||||
Reference in New Issue
Block a user