mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Don't pass future feature to parsing since it is either null or no more actual
GitOrigin-RevId: 23e266850c1b65facf135248be206387e8284c54
This commit is contained in:
committed by
intellij-monorepo-bot
parent
3a14be417f
commit
7ec52fb1e6
+5
-7
@@ -26,19 +26,17 @@ import com.jetbrains.python.parsing.ExpressionParsing;
|
||||
import com.jetbrains.python.parsing.ParsingContext;
|
||||
import com.jetbrains.python.parsing.PyParser;
|
||||
import com.jetbrains.python.parsing.StatementParsing;
|
||||
import com.jetbrains.python.psi.FutureFeature;
|
||||
import com.jetbrains.python.psi.LanguageLevel;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
* @author Mikhail Golubev
|
||||
*/
|
||||
public class PyFunctionTypeAnnotationParser extends PyParser {
|
||||
@Override
|
||||
protected ParsingContext createParsingContext(SyntaxTreeBuilder builder, LanguageLevel languageLevel, FutureFeature futureFlag) {
|
||||
return new ParsingContext(builder, languageLevel, futureFlag) {
|
||||
private final StatementParsing myStatementParsing = new AnnotationParser(this, futureFlag);
|
||||
protected ParsingContext createParsingContext(SyntaxTreeBuilder builder, LanguageLevel languageLevel) {
|
||||
return new ParsingContext(builder, languageLevel) {
|
||||
private final StatementParsing myStatementParsing = new AnnotationParser(this);
|
||||
private final ExpressionParsing myExpressionParsing = new ExpressionParsing(this) {
|
||||
@Override
|
||||
protected IElementType getReferenceType() {
|
||||
@@ -59,8 +57,8 @@ public class PyFunctionTypeAnnotationParser extends PyParser {
|
||||
}
|
||||
|
||||
private static class AnnotationParser extends StatementParsing {
|
||||
AnnotationParser(ParsingContext context, @Nullable FutureFeature futureFlag) {
|
||||
super(context, futureFlag);
|
||||
AnnotationParser(ParsingContext context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+3
-7
@@ -8,22 +8,18 @@ import com.jetbrains.python.parsing.ExpressionParsing;
|
||||
import com.jetbrains.python.parsing.ParsingContext;
|
||||
import com.jetbrains.python.parsing.PyParser;
|
||||
import com.jetbrains.python.parsing.StatementParsing;
|
||||
import com.jetbrains.python.psi.FutureFeature;
|
||||
import com.jetbrains.python.psi.LanguageLevel;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
class PyTypeHintParser extends PyParser {
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
protected ParsingContext createParsingContext(@NotNull SyntaxTreeBuilder builder,
|
||||
@NotNull LanguageLevel languageLevel,
|
||||
@Nullable FutureFeature futureFlag) {
|
||||
return new ParsingContext(builder, languageLevel, futureFlag) {
|
||||
protected ParsingContext createParsingContext(@NotNull SyntaxTreeBuilder builder, @NotNull LanguageLevel languageLevel) {
|
||||
return new ParsingContext(builder, languageLevel) {
|
||||
|
||||
@NotNull
|
||||
private final StatementParsing myStatementParsing = new StatementParsing(this, futureFlag) {
|
||||
private final StatementParsing myStatementParsing = new StatementParsing(this) {
|
||||
@Override
|
||||
@NotNull
|
||||
protected IElementType getReferenceType() {
|
||||
|
||||
+2
-3
@@ -18,7 +18,6 @@ package com.jetbrains.python.documentation.doctest;
|
||||
import com.intellij.lang.SyntaxTreeBuilder;
|
||||
import com.jetbrains.python.parsing.ParsingContext;
|
||||
import com.jetbrains.python.parsing.PyParser;
|
||||
import com.jetbrains.python.psi.FutureFeature;
|
||||
import com.jetbrains.python.psi.LanguageLevel;
|
||||
|
||||
/**
|
||||
@@ -26,7 +25,7 @@ import com.jetbrains.python.psi.LanguageLevel;
|
||||
*/
|
||||
public class PyDocstringParser extends PyParser {
|
||||
@Override
|
||||
protected ParsingContext createParsingContext(SyntaxTreeBuilder builder, LanguageLevel languageLevel, FutureFeature futureFlag) {
|
||||
return new PyDocstringParsingContext(builder, languageLevel, futureFlag);
|
||||
protected ParsingContext createParsingContext(SyntaxTreeBuilder builder, LanguageLevel languageLevel) {
|
||||
return new PyDocstringParsingContext(builder, languageLevel);
|
||||
}
|
||||
}
|
||||
|
||||
+5
-10
@@ -22,9 +22,7 @@ import com.jetbrains.python.PyTokenTypes;
|
||||
import com.jetbrains.python.parsing.ExpressionParsing;
|
||||
import com.jetbrains.python.parsing.ParsingContext;
|
||||
import com.jetbrains.python.parsing.StatementParsing;
|
||||
import com.jetbrains.python.psi.FutureFeature;
|
||||
import com.jetbrains.python.psi.LanguageLevel;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
* User : ktisha
|
||||
@@ -33,11 +31,9 @@ public class PyDocstringParsingContext extends ParsingContext {
|
||||
private final StatementParsing myStatementParser;
|
||||
private final ExpressionParsing myExpressionParser;
|
||||
|
||||
public PyDocstringParsingContext(final SyntaxTreeBuilder builder,
|
||||
LanguageLevel languageLevel,
|
||||
FutureFeature futureFlag) {
|
||||
super(builder, languageLevel, futureFlag);
|
||||
myStatementParser = new PyDocstringStatementParsing(this, futureFlag);
|
||||
public PyDocstringParsingContext(final SyntaxTreeBuilder builder, LanguageLevel languageLevel) {
|
||||
super(builder, languageLevel);
|
||||
myStatementParser = new PyDocstringStatementParsing(this);
|
||||
myExpressionParser = new PyDocstringExpressionParsing(this);
|
||||
}
|
||||
|
||||
@@ -64,9 +60,8 @@ public class PyDocstringParsingContext extends ParsingContext {
|
||||
|
||||
private static class PyDocstringStatementParsing extends StatementParsing {
|
||||
|
||||
protected PyDocstringStatementParsing(ParsingContext context,
|
||||
@Nullable FutureFeature futureFlag) {
|
||||
super(context, futureFlag);
|
||||
protected PyDocstringStatementParsing(ParsingContext context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
package com.jetbrains.python.parsing;
|
||||
|
||||
import com.intellij.lang.SyntaxTreeBuilder;
|
||||
import com.jetbrains.python.psi.FutureFeature;
|
||||
import com.jetbrains.python.psi.LanguageLevel;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -31,10 +30,10 @@ public class ParsingContext {
|
||||
private final LanguageLevel myLanguageLevel;
|
||||
private final Deque<ParsingScope> myScopes;
|
||||
|
||||
public ParsingContext(final SyntaxTreeBuilder builder, LanguageLevel languageLevel, FutureFeature futureFlag) {
|
||||
public ParsingContext(final SyntaxTreeBuilder builder, LanguageLevel languageLevel) {
|
||||
myBuilder = builder;
|
||||
myLanguageLevel = languageLevel;
|
||||
stmtParser = new StatementParsing(this, futureFlag);
|
||||
stmtParser = new StatementParsing(this);
|
||||
expressionParser = new ExpressionParsing(this);
|
||||
functionParser = new FunctionParsing(this);
|
||||
myScopes = new ArrayDeque<>();
|
||||
|
||||
@@ -3,13 +3,11 @@ package com.jetbrains.python.parsing;
|
||||
import com.intellij.lang.SyntaxTreeBuilder;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import com.jetbrains.python.psi.FutureFeature;
|
||||
import com.jetbrains.python.psi.LanguageLevel;
|
||||
|
||||
public class PythonParser {
|
||||
protected static final Logger LOGGER = Logger.getInstance(PyParser.class.getName());
|
||||
protected LanguageLevel myLanguageLevel;
|
||||
private FutureFeature myFutureFlag;
|
||||
|
||||
public PythonParser() {myLanguageLevel = LanguageLevel.getDefault();}
|
||||
|
||||
@@ -19,7 +17,7 @@ public class PythonParser {
|
||||
|
||||
public void parseRoot(IElementType root, SyntaxTreeBuilder builder) {
|
||||
final SyntaxTreeBuilder.Marker rootMarker = builder.mark();
|
||||
ParsingContext context = createParsingContext(builder, myLanguageLevel, myFutureFlag);
|
||||
ParsingContext context = createParsingContext(builder, myLanguageLevel);
|
||||
StatementParsing statementParser = context.getStatementParser();
|
||||
builder.setTokenTypeRemapper(statementParser); // must be done before touching the caching lexer with eof() call.
|
||||
boolean lastAfterSemicolon = false;
|
||||
@@ -37,11 +35,7 @@ public class PythonParser {
|
||||
rootMarker.done(root);
|
||||
}
|
||||
|
||||
protected ParsingContext createParsingContext(SyntaxTreeBuilder builder, LanguageLevel languageLevel, FutureFeature futureFlag) {
|
||||
return new ParsingContext(builder, languageLevel, futureFlag);
|
||||
}
|
||||
|
||||
public void setFutureFlag(FutureFeature future) {
|
||||
myFutureFlag = future;
|
||||
protected ParsingContext createParsingContext(SyntaxTreeBuilder builder, LanguageLevel languageLevel) {
|
||||
return new ParsingContext(builder, languageLevel);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,11 +76,8 @@ public class StatementParsing extends Parsing implements ITokenTypeRemapper {
|
||||
}
|
||||
}
|
||||
|
||||
public StatementParsing(ParsingContext context, @Nullable FutureFeature futureFlag) {
|
||||
public StatementParsing(ParsingContext context) {
|
||||
super(context);
|
||||
if (futureFlag != null) {
|
||||
myFutureFlags.add(futureFlag);
|
||||
}
|
||||
}
|
||||
|
||||
public void parseStatement() {
|
||||
|
||||
+2
-3
@@ -21,7 +21,6 @@ import com.intellij.psi.tree.IElementType;
|
||||
import com.jetbrains.python.PyTokenTypes;
|
||||
import com.jetbrains.python.parsing.ParsingContext;
|
||||
import com.jetbrains.python.parsing.PyParser;
|
||||
import com.jetbrains.python.psi.FutureFeature;
|
||||
import com.jetbrains.python.psi.LanguageLevel;
|
||||
|
||||
public class PyConsoleParser extends PyParser {
|
||||
@@ -48,8 +47,8 @@ public class PyConsoleParser extends PyParser {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ParsingContext createParsingContext(SyntaxTreeBuilder builder, LanguageLevel languageLevel, FutureFeature futureFlag) {
|
||||
protected ParsingContext createParsingContext(SyntaxTreeBuilder builder, LanguageLevel languageLevel) {
|
||||
boolean iPythonStartSymbol = myPythonConsoleData.isIPythonEnabled() && startsWithIPythonSpecialSymbol(builder);
|
||||
return new PyConsoleParsingContext(builder, languageLevel, futureFlag, myPythonConsoleData, iPythonStartSymbol);
|
||||
return new PyConsoleParsingContext(builder, languageLevel, myPythonConsoleData, iPythonStartSymbol);
|
||||
}
|
||||
}
|
||||
|
||||
+3
-7
@@ -8,9 +8,7 @@ import com.jetbrains.python.PyTokenTypes;
|
||||
import com.jetbrains.python.parsing.ExpressionParsing;
|
||||
import com.jetbrains.python.parsing.ParsingContext;
|
||||
import com.jetbrains.python.parsing.StatementParsing;
|
||||
import com.jetbrains.python.psi.FutureFeature;
|
||||
import com.jetbrains.python.psi.LanguageLevel;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class PyConsoleParsingContext extends ParsingContext {
|
||||
private final StatementParsing stmtParser;
|
||||
@@ -18,11 +16,10 @@ public class PyConsoleParsingContext extends ParsingContext {
|
||||
|
||||
public PyConsoleParsingContext(final SyntaxTreeBuilder builder,
|
||||
LanguageLevel languageLevel,
|
||||
FutureFeature futureFlag,
|
||||
PythonConsoleData pythonConsoleData,
|
||||
boolean startsWithIPythonSymbol) {
|
||||
super(builder, languageLevel, futureFlag);
|
||||
stmtParser = new ConsoleStatementParsing(this, futureFlag, startsWithIPythonSymbol, pythonConsoleData);
|
||||
super(builder, languageLevel);
|
||||
stmtParser = new ConsoleStatementParsing(this, startsWithIPythonSymbol, pythonConsoleData);
|
||||
if (pythonConsoleData.isIPythonEnabled()) {
|
||||
expressionParser = new ConsoleExpressionParsing(this);
|
||||
}
|
||||
@@ -47,10 +44,9 @@ public class PyConsoleParsingContext extends ParsingContext {
|
||||
private final PythonConsoleData myPythonConsoleData;
|
||||
|
||||
protected ConsoleStatementParsing(ParsingContext context,
|
||||
@Nullable FutureFeature futureFlag,
|
||||
boolean startsWithIPythonSymbol,
|
||||
PythonConsoleData pythonConsoleData) {
|
||||
super(context, futureFlag);
|
||||
super(context);
|
||||
myStartsWithIPythonSymbol = startsWithIPythonSymbol;
|
||||
myPythonConsoleData = pythonConsoleData;
|
||||
}
|
||||
|
||||
@@ -91,9 +91,6 @@ public class PyFileElementType extends IStubFileElementType<PyFileStub> {
|
||||
if (parser instanceof PyParser) {
|
||||
final PythonParser pythonParser = (PythonParser)parser;
|
||||
pythonParser.setLanguageLevel(languageLevel);
|
||||
if (languageLevel == LanguageLevel.PYTHON26 && psi.getContainingFile().getName().equals("__builtin__.py")) {
|
||||
pythonParser.setFutureFlag(FutureFeature.PRINT_FUNCTION);
|
||||
}
|
||||
}
|
||||
return parser.parse(this, builder).getFirstChildNode();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user