Skip to content

Commit 0815044

Browse files
alice-kscopybara-github
authored andcommitted
Python parts: Compatibility fixes for 2020.2
PiperOrigin-RevId: 338496735
1 parent 0c09572 commit 0815044

File tree

12 files changed

+263
-0
lines changed

12 files changed

+263
-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
]) + select_for_ide(
1314
android_studio = glob([
1415
"com/google/idea/sdkcompat/cpp/**",
@@ -31,6 +32,7 @@ java_library(
3132
deps = [
3233
"//intellij_platform_sdk:jsr305",
3334
"//intellij_platform_sdk:plugin_api",
35+
"//third_party/python",
3436
"//third_party/scala",
3537
],
3638
)
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.google.idea.sdkcompat.python;
2+
3+
import com.intellij.lang.PsiBuilder;
4+
import com.intellij.lang.PsiBuilder.Marker;
5+
import com.intellij.psi.tree.IElementType;
6+
import com.jetbrains.python.parsing.FunctionParsing;
7+
import com.jetbrains.python.parsing.ParsingContext;
8+
9+
/** #api201: Compat class for {@link FunctionParsing}. */
10+
public class FunctionParsingCompat extends FunctionParsing {
11+
12+
public FunctionParsingCompat(ParsingContext context) {
13+
super(context);
14+
}
15+
16+
protected MarkerCompat getMarker() {
17+
return new MarkerCompat(myBuilder.mark());
18+
}
19+
20+
/** #api201: Compat class for marker which is represented by a new interface in 2020.2. */
21+
protected static class MarkerCompat {
22+
private final PsiBuilder.Marker marker;
23+
24+
private MarkerCompat(Marker marker) {
25+
this.marker = marker;
26+
}
27+
28+
public void done(IElementType type) {
29+
marker.done(type);
30+
}
31+
}
32+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.google.idea.sdkcompat.python;
2+
3+
import com.intellij.lang.PsiBuilder;
4+
import com.intellij.lang.PsiParser;
5+
import com.intellij.openapi.project.Project;
6+
import com.jetbrains.python.PythonParserDefinition;
7+
import com.jetbrains.python.parsing.ParsingContext;
8+
import com.jetbrains.python.parsing.PyParser;
9+
import com.jetbrains.python.parsing.StatementParsing;
10+
import com.jetbrains.python.psi.LanguageLevel;
11+
12+
/** Compat class for {@link PythonParserDefinition}. #api201 */
13+
public abstract class PythonParserDefinitionCompat extends PythonParserDefinition {
14+
15+
protected abstract ParsingContext createCustomParsingContext(
16+
Project project,
17+
SyntaxTreeBuilderCompat builderCompat,
18+
LanguageLevel languageLevel,
19+
StatementParsing.FUTURE futureFlag);
20+
21+
@Override
22+
public PsiParser createParser(Project project) {
23+
return new PyParser() {
24+
/** #api201: Super method uses new interface SyntaxTreeBuilder in 2020.2 */
25+
@Override
26+
protected ParsingContext createParsingContext(
27+
PsiBuilder builder, LanguageLevel languageLevel, StatementParsing.FUTURE futureFlag) {
28+
return createCustomParsingContext(
29+
project, new SyntaxTreeBuilderCompat(builder), languageLevel, futureFlag);
30+
}
31+
};
32+
}
33+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.google.idea.sdkcompat.python;
2+
3+
import com.intellij.lang.PsiBuilder;
4+
5+
/**
6+
* Compat class to support that constructor of ParsingContext uses new interface SyntaxTreeBuilder
7+
* in 2020.2. #api201
8+
*/
9+
public class SyntaxTreeBuilderCompat {
10+
11+
private final PsiBuilder builder;
12+
13+
public SyntaxTreeBuilderCompat(PsiBuilder builder) {
14+
this.builder = builder;
15+
}
16+
17+
public PsiBuilder getBuilder() {
18+
return builder;
19+
}
20+
}

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
]) + select_for_ide(
1314
android_studio = glob([
1415
"com/google/idea/sdkcompat/cpp/**",
@@ -31,6 +32,7 @@ java_library(
3132
deps = [
3233
"//intellij_platform_sdk:jsr305",
3334
"//intellij_platform_sdk:plugin_api",
35+
"//third_party/python",
3436
"//third_party/scala",
3537
],
3638
)
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.google.idea.sdkcompat.python;
2+
3+
import com.intellij.lang.PsiBuilder;
4+
import com.intellij.lang.PsiBuilder.Marker;
5+
import com.intellij.psi.tree.IElementType;
6+
import com.jetbrains.python.parsing.FunctionParsing;
7+
import com.jetbrains.python.parsing.ParsingContext;
8+
9+
/** #api201: Compat class for {@link FunctionParsing}. */
10+
public class FunctionParsingCompat extends FunctionParsing {
11+
12+
public FunctionParsingCompat(ParsingContext context) {
13+
super(context);
14+
}
15+
16+
protected MarkerCompat getMarker() {
17+
return new MarkerCompat(myBuilder.mark());
18+
}
19+
20+
/** #api201: Compat class for marker which is represented by a new interface in 2020.2. */
21+
protected static class MarkerCompat {
22+
private final PsiBuilder.Marker marker;
23+
24+
private MarkerCompat(Marker marker) {
25+
this.marker = marker;
26+
}
27+
28+
public void done(IElementType type) {
29+
marker.done(type);
30+
}
31+
}
32+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.google.idea.sdkcompat.python;
2+
3+
import com.intellij.lang.PsiBuilder;
4+
import com.intellij.lang.PsiParser;
5+
import com.intellij.openapi.project.Project;
6+
import com.jetbrains.python.PythonParserDefinition;
7+
import com.jetbrains.python.parsing.ParsingContext;
8+
import com.jetbrains.python.parsing.PyParser;
9+
import com.jetbrains.python.parsing.StatementParsing;
10+
import com.jetbrains.python.psi.LanguageLevel;
11+
12+
/** Compat class for {@link PythonParserDefinition}. #api201 */
13+
public abstract class PythonParserDefinitionCompat extends PythonParserDefinition {
14+
15+
protected abstract ParsingContext createCustomParsingContext(
16+
Project project,
17+
SyntaxTreeBuilderCompat builderCompat,
18+
LanguageLevel languageLevel,
19+
StatementParsing.FUTURE futureFlag);
20+
21+
@Override
22+
public PsiParser createParser(Project project) {
23+
return new PyParser() {
24+
/** #api201: Super method uses new interface SyntaxTreeBuilder in 2020.2 */
25+
@Override
26+
protected ParsingContext createParsingContext(
27+
PsiBuilder builder, LanguageLevel languageLevel, StatementParsing.FUTURE futureFlag) {
28+
return createCustomParsingContext(
29+
project, new SyntaxTreeBuilderCompat(builder), languageLevel, futureFlag);
30+
}
31+
};
32+
}
33+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.google.idea.sdkcompat.python;
2+
3+
import com.intellij.lang.PsiBuilder;
4+
5+
/**
6+
* Compat class to support that constructor of ParsingContext uses new interface SyntaxTreeBuilder
7+
* in 2020.2. #api201
8+
*/
9+
public class SyntaxTreeBuilderCompat {
10+
11+
private final PsiBuilder builder;
12+
13+
public SyntaxTreeBuilderCompat(PsiBuilder builder) {
14+
this.builder = builder;
15+
}
16+
17+
public PsiBuilder getBuilder() {
18+
return builder;
19+
}
20+
}

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
]) + select_for_ide(
1314
android_studio = glob([
1415
"com/google/idea/sdkcompat/cpp/**",
@@ -31,6 +32,7 @@ java_library(
3132
deps = [
3233
"//intellij_platform_sdk:jsr305",
3334
"//intellij_platform_sdk:plugin_api",
35+
"//third_party/python",
3436
"//third_party/scala",
3537
],
3638
)
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.google.idea.sdkcompat.python;
2+
3+
import com.intellij.lang.SyntaxTreeBuilder;
4+
import com.intellij.lang.SyntaxTreeBuilder.Marker;
5+
import com.intellij.psi.tree.IElementType;
6+
import com.jetbrains.python.parsing.FunctionParsing;
7+
import com.jetbrains.python.parsing.ParsingContext;
8+
9+
/** #api201: Compat class for {@link FunctionParsing}. */
10+
public class FunctionParsingCompat extends FunctionParsing {
11+
12+
public FunctionParsingCompat(ParsingContext context) {
13+
super(context);
14+
}
15+
16+
protected MarkerCompat getMarker() {
17+
return new MarkerCompat(myBuilder.mark());
18+
}
19+
20+
/** #api201: Compat class for marker which is represented by a new interface in 2020.2. */
21+
protected static class MarkerCompat {
22+
private final SyntaxTreeBuilder.Marker marker;
23+
24+
private MarkerCompat(Marker marker) {
25+
this.marker = marker;
26+
}
27+
28+
public void done(IElementType type) {
29+
marker.done(type);
30+
}
31+
}
32+
}

0 commit comments

Comments
 (0)