File tree Expand file tree Collapse file tree 9 files changed +150
-0
lines changed
com/google/idea/sdkcompat/python
com/google/idea/sdkcompat/python
com/google/idea/sdkcompat/python Expand file tree Collapse file tree 9 files changed +150
-0
lines changed Original file line number Diff line number Diff line change @@ -9,6 +9,7 @@ java_library(
9
9
srcs = glob ([
10
10
"com/google/idea/sdkcompat/general/**" ,
11
11
"com/google/idea/sdkcompat/platform/**" ,
12
+ "com/google/idea/sdkcompat/python/**" ,
12
13
"com/google/idea/sdkcompat/vcs/**" ,
13
14
]) + select_for_ide (
14
15
android_studio = glob ([
@@ -32,6 +33,7 @@ java_library(
32
33
deps = [
33
34
"//intellij_platform_sdk:jsr305" ,
34
35
"//intellij_platform_sdk:plugin_api" ,
36
+ "//third_party/python" ,
35
37
"//third_party/scala" ,
36
38
],
37
39
)
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change @@ -9,6 +9,7 @@ java_library(
9
9
srcs = glob ([
10
10
"com/google/idea/sdkcompat/general/**" ,
11
11
"com/google/idea/sdkcompat/platform/**" ,
12
+ "com/google/idea/sdkcompat/python/**" ,
12
13
"com/google/idea/sdkcompat/vcs/**" ,
13
14
]) + select_for_ide (
14
15
android_studio = glob ([
@@ -32,6 +33,7 @@ java_library(
32
33
deps = [
33
34
"//intellij_platform_sdk:jsr305" ,
34
35
"//intellij_platform_sdk:plugin_api" ,
36
+ "//third_party/python" ,
35
37
"//third_party/scala" ,
36
38
],
37
39
)
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change @@ -9,6 +9,7 @@ java_library(
9
9
srcs = glob ([
10
10
"com/google/idea/sdkcompat/general/**" ,
11
11
"com/google/idea/sdkcompat/platform/**" ,
12
+ "com/google/idea/sdkcompat/python/**" ,
12
13
"com/google/idea/sdkcompat/vcs/**" ,
13
14
]) + select_for_ide (
14
15
android_studio = glob ([
@@ -32,6 +33,7 @@ java_library(
32
33
deps = [
33
34
"//intellij_platform_sdk:jsr305" ,
34
35
"//intellij_platform_sdk:plugin_api" ,
36
+ "//third_party/python" ,
35
37
"//third_party/scala" ,
36
38
],
37
39
)
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments