From ce01209ecf0de67d0fa3e46ba374e846e6cd3707 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexey=20Gy=C3=B6ri?= Date: Fri, 5 Feb 2021 15:15:21 -0800 Subject: [PATCH] [2020.3 compat] remove obsolete `StatementParsing.FUTURE` flag from sdkcompat The flag is nonexistent in the sdk for 2020.3. The flag has been used previously for Python 2.6 support of `__future__` imports of `print_function` but [is obsolete](https://github.com/JetBrains/intellij-community/commit/7ec52fb1e61469d7a2d62b4baef1d3ec2b84f957) since 2.6 support has been dropped [since 2019.1](https://github.com/JetBrains/intellij-community/blob/a251e6a423baa93fc6fd85038ec9ccec63fc2797/python/python-psi-api/src/com/jetbrains/python/psi/LanguageLevel.java) For reasons of having a simple implementation of compatibility with old sdks and reducing the maintenance burden we chose to pass the StatementParsing.FUTURE as null for versions < 203. PiperOrigin-RevId: 355938588 --- .../python/ParsingContextAdapter.java | 19 +++++++++++++++++++ .../sdkcompat/python/PyParserAdapter.java | 14 ++++++++------ .../python/ParsingContextAdapter.java | 19 +++++++++++++++++++ .../sdkcompat/python/PyParserAdapter.java | 12 +++++++----- .../python/ParsingContextAdapter.java | 19 +++++++++++++++++++ .../sdkcompat/python/PyParserAdapter.java | 18 ++++++++++-------- .../python/ParsingContextAdapter.java | 13 +++++++++++++ .../sdkcompat/python/PyParserAdapter.java | 17 +++++++++-------- 8 files changed, 104 insertions(+), 27 deletions(-) create mode 100644 sdkcompat/v193/com/google/idea/sdkcompat/python/ParsingContextAdapter.java create mode 100644 sdkcompat/v201/com/google/idea/sdkcompat/python/ParsingContextAdapter.java create mode 100644 sdkcompat/v202/com/google/idea/sdkcompat/python/ParsingContextAdapter.java create mode 100644 sdkcompat/v203/com/google/idea/sdkcompat/python/ParsingContextAdapter.java diff --git a/sdkcompat/v193/com/google/idea/sdkcompat/python/ParsingContextAdapter.java b/sdkcompat/v193/com/google/idea/sdkcompat/python/ParsingContextAdapter.java new file mode 100644 index 00000000000..c8bca675a0e --- /dev/null +++ b/sdkcompat/v193/com/google/idea/sdkcompat/python/ParsingContextAdapter.java @@ -0,0 +1,19 @@ +package com.google.idea.sdkcompat.python; + +import com.intellij.lang.PsiBuilder; +import com.jetbrains.python.parsing.ParsingContext; +import com.jetbrains.python.psi.LanguageLevel; + +/** Compatibility adapter for {@link ParsingContext}. #api202 */ +public class ParsingContextAdapter extends ParsingContext { + /** #api202: Constructor does NOT accept the additional futureFlag parameter anymore in 2020.3 */ + public ParsingContextAdapter(PsiBuilder builder, LanguageLevel languageLevel) { + // For reasons of having a simple implementation of compatibility with old sdks and reducing the + // maintenance burden we chose to pass the StatementParsing.FUTURE as null for versions < 203. + // we expect this to only impact python versions below 2.7. + // Python 2.67, the last version below 2.7, is officially unsupported + // and a potential security risk context: https://www.python.org/downloads/release/python-267/ + + super(builder, languageLevel, /* futureFlag= */ null); + } +} diff --git a/sdkcompat/v193/com/google/idea/sdkcompat/python/PyParserAdapter.java b/sdkcompat/v193/com/google/idea/sdkcompat/python/PyParserAdapter.java index 0b6845c7e98..35ed27a221c 100644 --- a/sdkcompat/v193/com/google/idea/sdkcompat/python/PyParserAdapter.java +++ b/sdkcompat/v193/com/google/idea/sdkcompat/python/PyParserAdapter.java @@ -6,18 +6,20 @@ import com.jetbrains.python.parsing.StatementParsing; import com.jetbrains.python.psi.LanguageLevel; -/** Compatibility adapter for {@link PyParser}. #api201 */ +/** Compatibility adapter for {@link PyParser}. #api202 */ public abstract class PyParserAdapter extends PyParser { - /** #api201: Super method uses new interface SyntaxTreeBuilder in 2020.2 */ + /** + * #api201: Super method uses new interface SyntaxTreeBuilder in 2020.2 + * + *

#api202: Super method does not require futureFlag anymore in 2020.3 + */ @Override protected ParsingContext createParsingContext( PsiBuilder builder, LanguageLevel languageLevel, StatementParsing.FUTURE futureFlag) { - return createParsingContext(SyntaxTreeBuilderWrapper.wrap(builder), languageLevel, futureFlag); + return createParsingContext(SyntaxTreeBuilderWrapper.wrap(builder), languageLevel); } protected abstract ParsingContext createParsingContext( - SyntaxTreeBuilderWrapper builder, - LanguageLevel languageLevel, - StatementParsing.FUTURE futureFlag); + SyntaxTreeBuilderWrapper builder, LanguageLevel languageLevel); } diff --git a/sdkcompat/v201/com/google/idea/sdkcompat/python/ParsingContextAdapter.java b/sdkcompat/v201/com/google/idea/sdkcompat/python/ParsingContextAdapter.java new file mode 100644 index 00000000000..c8bca675a0e --- /dev/null +++ b/sdkcompat/v201/com/google/idea/sdkcompat/python/ParsingContextAdapter.java @@ -0,0 +1,19 @@ +package com.google.idea.sdkcompat.python; + +import com.intellij.lang.PsiBuilder; +import com.jetbrains.python.parsing.ParsingContext; +import com.jetbrains.python.psi.LanguageLevel; + +/** Compatibility adapter for {@link ParsingContext}. #api202 */ +public class ParsingContextAdapter extends ParsingContext { + /** #api202: Constructor does NOT accept the additional futureFlag parameter anymore in 2020.3 */ + public ParsingContextAdapter(PsiBuilder builder, LanguageLevel languageLevel) { + // For reasons of having a simple implementation of compatibility with old sdks and reducing the + // maintenance burden we chose to pass the StatementParsing.FUTURE as null for versions < 203. + // we expect this to only impact python versions below 2.7. + // Python 2.67, the last version below 2.7, is officially unsupported + // and a potential security risk context: https://www.python.org/downloads/release/python-267/ + + super(builder, languageLevel, /* futureFlag= */ null); + } +} diff --git a/sdkcompat/v201/com/google/idea/sdkcompat/python/PyParserAdapter.java b/sdkcompat/v201/com/google/idea/sdkcompat/python/PyParserAdapter.java index 0b6845c7e98..3c05d1a15d6 100644 --- a/sdkcompat/v201/com/google/idea/sdkcompat/python/PyParserAdapter.java +++ b/sdkcompat/v201/com/google/idea/sdkcompat/python/PyParserAdapter.java @@ -9,15 +9,17 @@ /** Compatibility adapter for {@link PyParser}. #api201 */ public abstract class PyParserAdapter extends PyParser { - /** #api201: Super method uses new interface SyntaxTreeBuilder in 2020.2 */ + /** + * #api201: Super method uses new interface SyntaxTreeBuilder in 2020.2 + * + *

#api202: Super method does not require futureFlag anymore in 2020.3 + */ @Override protected ParsingContext createParsingContext( PsiBuilder builder, LanguageLevel languageLevel, StatementParsing.FUTURE futureFlag) { - return createParsingContext(SyntaxTreeBuilderWrapper.wrap(builder), languageLevel, futureFlag); + return createParsingContext(SyntaxTreeBuilderWrapper.wrap(builder), languageLevel); } protected abstract ParsingContext createParsingContext( - SyntaxTreeBuilderWrapper builder, - LanguageLevel languageLevel, - StatementParsing.FUTURE futureFlag); + SyntaxTreeBuilderWrapper builder, LanguageLevel languageLevel); } diff --git a/sdkcompat/v202/com/google/idea/sdkcompat/python/ParsingContextAdapter.java b/sdkcompat/v202/com/google/idea/sdkcompat/python/ParsingContextAdapter.java new file mode 100644 index 00000000000..e965a6465d2 --- /dev/null +++ b/sdkcompat/v202/com/google/idea/sdkcompat/python/ParsingContextAdapter.java @@ -0,0 +1,19 @@ +package com.google.idea.sdkcompat.python; + +import com.intellij.lang.SyntaxTreeBuilder; +import com.jetbrains.python.parsing.ParsingContext; +import com.jetbrains.python.psi.LanguageLevel; + +/** Compatibility adapter for {@link ParsingContext}. #api202 */ +public class ParsingContextAdapter extends ParsingContext { + /** #api202: Constructor does NOT accept the additional futureFlag parameter anymore in 2020.3 */ + public ParsingContextAdapter(SyntaxTreeBuilder builder, LanguageLevel languageLevel) { + // For reasons of having a simple implementation of compatibility with old sdks and reducing the + // maintenance burden we chose to pass the StatementParsing.FUTURE as null for versions < 203. + // we expect this to only impact python versions below 2.7. + // Python 2.67, the last version below 2.7, is officially unsupported + // and a potential security risk context: https://www.python.org/downloads/release/python-267/ + + super(builder, languageLevel, /* futureFlag= */ null); + } +} diff --git a/sdkcompat/v202/com/google/idea/sdkcompat/python/PyParserAdapter.java b/sdkcompat/v202/com/google/idea/sdkcompat/python/PyParserAdapter.java index ee0c64c85e2..069db797a6a 100644 --- a/sdkcompat/v202/com/google/idea/sdkcompat/python/PyParserAdapter.java +++ b/sdkcompat/v202/com/google/idea/sdkcompat/python/PyParserAdapter.java @@ -3,21 +3,23 @@ import com.intellij.lang.SyntaxTreeBuilder; import com.jetbrains.python.parsing.ParsingContext; import com.jetbrains.python.parsing.PyParser; -import com.jetbrains.python.parsing.StatementParsing; +import com.jetbrains.python.parsing.StatementParsing.FUTURE; import com.jetbrains.python.psi.LanguageLevel; -/** Compatibility adapter for {@link PyParser}. #api201 */ +/** Compatibility adapter for {@link PyParser}. #api202 */ public abstract class PyParserAdapter extends PyParser { - /** #api201: Super method uses new interface SyntaxTreeBuilder in 2020.2 */ + /** + * #api201: Super method uses new interface SyntaxTreeBuilder in 2020.2 + * + *

#api202: Super method does not require futureFlag anymore in 2020.3 + */ @Override protected ParsingContext createParsingContext( - SyntaxTreeBuilder builder, LanguageLevel languageLevel, StatementParsing.FUTURE futureFlag) { - return createParsingContext(SyntaxTreeBuilderWrapper.wrap(builder), languageLevel, futureFlag); + SyntaxTreeBuilder builder, LanguageLevel languageLevel, FUTURE futureFlag) { + return createParsingContext(SyntaxTreeBuilderWrapper.wrap(builder), languageLevel); } protected abstract ParsingContext createParsingContext( - SyntaxTreeBuilderWrapper builder, - LanguageLevel languageLevel, - StatementParsing.FUTURE futureFlag); + SyntaxTreeBuilderWrapper builder, LanguageLevel languageLevel); } diff --git a/sdkcompat/v203/com/google/idea/sdkcompat/python/ParsingContextAdapter.java b/sdkcompat/v203/com/google/idea/sdkcompat/python/ParsingContextAdapter.java new file mode 100644 index 00000000000..61719de686a --- /dev/null +++ b/sdkcompat/v203/com/google/idea/sdkcompat/python/ParsingContextAdapter.java @@ -0,0 +1,13 @@ +package com.google.idea.sdkcompat.python; + +import com.intellij.lang.SyntaxTreeBuilder; +import com.jetbrains.python.parsing.ParsingContext; +import com.jetbrains.python.psi.LanguageLevel; + +/** Compatibility adapter for {@link ParsingContext}. #api202 */ +public class ParsingContextAdapter extends ParsingContext { + /** #api202: Constructor does NOT accept the additional futureFlag parameter anymore in 2020.3 */ + public ParsingContextAdapter(SyntaxTreeBuilder builder, LanguageLevel languageLevel) { + super(builder, languageLevel); + } +} diff --git a/sdkcompat/v203/com/google/idea/sdkcompat/python/PyParserAdapter.java b/sdkcompat/v203/com/google/idea/sdkcompat/python/PyParserAdapter.java index ee0c64c85e2..dcbfd87e0a1 100644 --- a/sdkcompat/v203/com/google/idea/sdkcompat/python/PyParserAdapter.java +++ b/sdkcompat/v203/com/google/idea/sdkcompat/python/PyParserAdapter.java @@ -3,21 +3,22 @@ import com.intellij.lang.SyntaxTreeBuilder; import com.jetbrains.python.parsing.ParsingContext; import com.jetbrains.python.parsing.PyParser; -import com.jetbrains.python.parsing.StatementParsing; import com.jetbrains.python.psi.LanguageLevel; -/** Compatibility adapter for {@link PyParser}. #api201 */ +/** Compatibility adapter for {@link PyParser}. #api202 */ public abstract class PyParserAdapter extends PyParser { - /** #api201: Super method uses new interface SyntaxTreeBuilder in 2020.2 */ + /** + * #api201: Super method uses new interface SyntaxTreeBuilder in 2020.2 + * + *

#api202: Super method does not require futureFlag anymore in 2020.3 + */ @Override protected ParsingContext createParsingContext( - SyntaxTreeBuilder builder, LanguageLevel languageLevel, StatementParsing.FUTURE futureFlag) { - return createParsingContext(SyntaxTreeBuilderWrapper.wrap(builder), languageLevel, futureFlag); + SyntaxTreeBuilder builder, LanguageLevel languageLevel) { + return createParsingContext(SyntaxTreeBuilderWrapper.wrap(builder), languageLevel); } protected abstract ParsingContext createParsingContext( - SyntaxTreeBuilderWrapper builder, - LanguageLevel languageLevel, - StatementParsing.FUTURE futureFlag); + SyntaxTreeBuilderWrapper builder, LanguageLevel languageLevel); }