Skip to content

Commit e8d4e40

Browse files
alice-kscopybara-github
authored andcommitted
Python parts: Compatibility fixes for 2020.2
PiperOrigin-RevId: 338496735
1 parent 6fd7565 commit e8d4e40

File tree

9 files changed

+150
-0
lines changed

9 files changed

+150
-0
lines changed

sdkcompat/v193/BUILD

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ java_library(
99
srcs = glob([
1010
"com/google/idea/sdkcompat/general/**",
1111
"com/google/idea/sdkcompat/platform/**",
12+
"com/google/idea/sdkcompat/python/**",
1213
"com/google/idea/sdkcompat/vcs/**",
1314
]) + select_for_ide(
1415
android_studio = glob([
@@ -32,6 +33,7 @@ java_library(
3233
deps = [
3334
"//intellij_platform_sdk:jsr305",
3435
"//intellij_platform_sdk:plugin_api",
36+
"//third_party/python",
3537
"//third_party/scala",
3638
],
3739
)
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.google.idea.sdkcompat.python;
2+
3+
import com.intellij.lang.PsiBuilder;
4+
import com.jetbrains.python.parsing.ParsingContext;
5+
import com.jetbrains.python.parsing.PyParser;
6+
import com.jetbrains.python.parsing.StatementParsing;
7+
import com.jetbrains.python.psi.LanguageLevel;
8+
9+
/** Compatibility adapter for {@link PyParser}. #api201 */
10+
public abstract class PyParserAdapter extends PyParser {
11+
12+
/** #api201: Super method uses new interface SyntaxTreeBuilder in 2020.2 */
13+
@Override
14+
protected ParsingContext createParsingContext(
15+
PsiBuilder builder, LanguageLevel languageLevel, StatementParsing.FUTURE futureFlag) {
16+
return createParsingContext(SyntaxTreeBuilderWrapper.wrap(builder), languageLevel, futureFlag);
17+
}
18+
19+
protected abstract ParsingContext createParsingContext(
20+
SyntaxTreeBuilderWrapper builder,
21+
LanguageLevel languageLevel,
22+
StatementParsing.FUTURE futureFlag);
23+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.google.idea.sdkcompat.python;
2+
3+
import com.intellij.lang.PsiBuilder;
4+
import java.util.function.Supplier;
5+
6+
/**
7+
* Compatibility wrapper to support that constructor of ParsingContext uses new interface
8+
* SyntaxTreeBuilder in 2020.2. #api201
9+
*/
10+
public interface SyntaxTreeBuilderWrapper extends Supplier<PsiBuilder> {
11+
12+
static SyntaxTreeBuilderWrapper wrap(PsiBuilder builder) {
13+
return () -> builder;
14+
}
15+
16+
/**
17+
* #api201: Compatibility wrapper for marker which is represented by a new interface in 2020.2.
18+
*/
19+
interface MarkerWrapper extends Supplier<PsiBuilder.Marker> {
20+
21+
static MarkerWrapper wrap(PsiBuilder.Marker marker) {
22+
return () -> marker;
23+
}
24+
}
25+
}

sdkcompat/v201/BUILD

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ java_library(
99
srcs = glob([
1010
"com/google/idea/sdkcompat/general/**",
1111
"com/google/idea/sdkcompat/platform/**",
12+
"com/google/idea/sdkcompat/python/**",
1213
"com/google/idea/sdkcompat/vcs/**",
1314
]) + select_for_ide(
1415
android_studio = glob([
@@ -32,6 +33,7 @@ java_library(
3233
deps = [
3334
"//intellij_platform_sdk:jsr305",
3435
"//intellij_platform_sdk:plugin_api",
36+
"//third_party/python",
3537
"//third_party/scala",
3638
],
3739
)
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.google.idea.sdkcompat.python;
2+
3+
import com.intellij.lang.PsiBuilder;
4+
import com.jetbrains.python.parsing.ParsingContext;
5+
import com.jetbrains.python.parsing.PyParser;
6+
import com.jetbrains.python.parsing.StatementParsing;
7+
import com.jetbrains.python.psi.LanguageLevel;
8+
9+
/** Compatibility adapter for {@link PyParser}. #api201 */
10+
public abstract class PyParserAdapter extends PyParser {
11+
12+
/** #api201: Super method uses new interface SyntaxTreeBuilder in 2020.2 */
13+
@Override
14+
protected ParsingContext createParsingContext(
15+
PsiBuilder builder, LanguageLevel languageLevel, StatementParsing.FUTURE futureFlag) {
16+
return createParsingContext(SyntaxTreeBuilderWrapper.wrap(builder), languageLevel, futureFlag);
17+
}
18+
19+
protected abstract ParsingContext createParsingContext(
20+
SyntaxTreeBuilderWrapper builder,
21+
LanguageLevel languageLevel,
22+
StatementParsing.FUTURE futureFlag);
23+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.google.idea.sdkcompat.python;
2+
3+
import com.intellij.lang.PsiBuilder;
4+
import java.util.function.Supplier;
5+
6+
/**
7+
* Compatibility wrapper to support that constructor of ParsingContext uses new interface
8+
* SyntaxTreeBuilder in 2020.2. #api201
9+
*/
10+
public interface SyntaxTreeBuilderWrapper extends Supplier<PsiBuilder> {
11+
12+
static SyntaxTreeBuilderWrapper wrap(PsiBuilder builder) {
13+
return () -> builder;
14+
}
15+
16+
/**
17+
* #api201: Compatibility wrapper for marker which is represented by a new interface in 2020.2.
18+
*/
19+
interface MarkerWrapper extends Supplier<PsiBuilder.Marker> {
20+
21+
static MarkerWrapper wrap(PsiBuilder.Marker marker) {
22+
return () -> marker;
23+
}
24+
}
25+
}

sdkcompat/v202/BUILD

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ java_library(
99
srcs = glob([
1010
"com/google/idea/sdkcompat/general/**",
1111
"com/google/idea/sdkcompat/platform/**",
12+
"com/google/idea/sdkcompat/python/**",
1213
"com/google/idea/sdkcompat/vcs/**",
1314
]) + select_for_ide(
1415
android_studio = glob([
@@ -32,6 +33,7 @@ java_library(
3233
deps = [
3334
"//intellij_platform_sdk:jsr305",
3435
"//intellij_platform_sdk:plugin_api",
36+
"//third_party/python",
3537
"//third_party/scala",
3638
],
3739
)
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.google.idea.sdkcompat.python;
2+
3+
import com.intellij.lang.SyntaxTreeBuilder;
4+
import com.jetbrains.python.parsing.ParsingContext;
5+
import com.jetbrains.python.parsing.PyParser;
6+
import com.jetbrains.python.parsing.StatementParsing;
7+
import com.jetbrains.python.psi.LanguageLevel;
8+
9+
/** Compatibility adapter for {@link PyParser}. #api201 */
10+
public abstract class PyParserAdapter extends PyParser {
11+
12+
/** #api201: Super method uses new interface SyntaxTreeBuilder in 2020.2 */
13+
@Override
14+
protected ParsingContext createParsingContext(
15+
SyntaxTreeBuilder builder, LanguageLevel languageLevel, StatementParsing.FUTURE futureFlag) {
16+
return createParsingContext(SyntaxTreeBuilderWrapper.wrap(builder), languageLevel, futureFlag);
17+
}
18+
19+
protected abstract ParsingContext createParsingContext(
20+
SyntaxTreeBuilderWrapper builder,
21+
LanguageLevel languageLevel,
22+
StatementParsing.FUTURE futureFlag);
23+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.google.idea.sdkcompat.python;
2+
3+
import com.intellij.lang.SyntaxTreeBuilder;
4+
import java.util.function.Supplier;
5+
6+
/**
7+
* Compatibility wrapper to support that constructor of ParsingContext uses new interface
8+
* SyntaxTreeBuilder in 2020.2. #api201
9+
*/
10+
public interface SyntaxTreeBuilderWrapper extends Supplier<SyntaxTreeBuilder> {
11+
12+
static SyntaxTreeBuilderWrapper wrap(SyntaxTreeBuilder builder) {
13+
return () -> builder;
14+
}
15+
16+
/**
17+
* #api201: Compatibility wrapper for marker which is represented by a new interface in 2020.2.
18+
*/
19+
interface MarkerWrapper extends Supplier<SyntaxTreeBuilder.Marker> {
20+
21+
static MarkerWrapper wrap(SyntaxTreeBuilder.Marker marker) {
22+
return () -> marker;
23+
}
24+
}
25+
}

0 commit comments

Comments
 (0)