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); }