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(
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)
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(
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)
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(
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)
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