This is an automated email from the ASF dual-hosted git repository. yangjie01 pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/spark.git
The following commit(s) were added to refs/heads/master by this push: new 35c628d9b27 [SPARK-44407][BUILD][TESTS] Clean up the compilation warnings related to `it will become a keyword in Scala 3` and prohibit use these keywords as variable name 35c628d9b27 is described below commit 35c628d9b27aee9263bf43254cd839da69da9f28 Author: yangjie01 <yangji...@baidu.com> AuthorDate: Thu Oct 26 13:18:23 2023 +0800 [SPARK-44407][BUILD][TESTS] Clean up the compilation warnings related to `it will become a keyword in Scala 3` and prohibit use these keywords as variable name ### What changes were proposed in this pull request? This pr clean up the compilation warnings related to `it will become a keyword in Scala 3`, additionally, to facilitate future Scala version migration, a new compiler option has been added to prohibit the use of these keywords as variable names. ### Why are the changes needed? There are some literals, such as `enum`, `given`, `export`, etc., using them as variable names in Scala 2.13 will trigger compilation warnings, but this will become a compilation error in Scala 3. **Scala 2.13** ``` Welcome to Scala 2.13.12 (OpenJDK 64-Bit Server VM, Java 17.0.8). Type in expressions for evaluation. Or try :help. scala> val enum: Int = 1 ^ warning: Wrap `enum` in backticks to use it as an identifier, it will become a keyword in Scala 3. [quickfixable] val enum: Int = 1 scala> val export: Int = 1 ^ warning: Wrap `export` in backticks to use it as an identifier, it will become a keyword in Scala 3. [quickfixable] val export: Int = 1 scala> val given: Int = 1 ^ warning: Wrap `given` in backticks to use it as an identifier, it will become a keyword in Scala 3. [quickfixable] val given: Int = 1 ``` **Scala 3** ``` Welcome to Scala 3.3.1 (17.0.8, Java OpenJDK 64-Bit Server VM). Type in expressions for evaluation. Or try :help. scala> val enum: Int = 1 -- [E032] Syntax Error: -------------------------------------------------------- 1 |val enum: Int = 1 | ^^^^ | pattern expected | | longer explanation available when compiling with `-explain` scala> val export: Int = 1 -- [E032] Syntax Error: -------------------------------------------------------- 1 |val export: Int = 1 | ^^^^^^ | pattern expected | | longer explanation available when compiling with `-explain` scala> val given: Int = 1 -- [E040] Syntax Error: -------------------------------------------------------- 1 |val given: Int = 1 | ^ | an identifier expected, but ':' found | | longer explanation available when compiling with `-explain` ``` ### Does this PR introduce _any_ user-facing change? No ### How was this patch tested? Pass GitHub Actions ### Was this patch authored or co-authored using generative AI tooling? No Closes #43529 from LuciferYang/SPARK-44407. Authored-by: yangjie01 <yangji...@baidu.com> Signed-off-by: yangjie01 <yangji...@baidu.com> --- pom.xml | 6 ++++++ project/SparkBuild.scala | 6 +++++- .../org/apache/spark/sql/catalyst/JavaTypeInferenceSuite.scala | 4 ++-- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index e3f3b2fe9a1..6488918326f 100644 --- a/pom.xml +++ b/pom.xml @@ -3008,6 +3008,12 @@ SPARK-45627 Symbol literals are deprecated in Scala 2.13 and it's a compile error in Scala 3. --> <arg>-Wconf:cat=deprecation&msg=symbol literal is deprecated:e</arg> + <!-- + SPARK-45627 `enum`, `export` and `given` will become keywords in Scala 3, + so they are prohibited from being used as variable names in Scala 2.13 to + reduce the cost of migration in subsequent versions. + --> + <arg>-Wconf:cat=deprecation&msg=it will become a keyword in Scala 3:e</arg> </args> <jvmArgs> <jvmArg>-Xss128m</jvmArg> diff --git a/project/SparkBuild.scala b/project/SparkBuild.scala index 6e87cab6df8..098a628ba1c 100644 --- a/project/SparkBuild.scala +++ b/project/SparkBuild.scala @@ -265,7 +265,11 @@ object SparkBuild extends PomBuild { // Or use `-Wconf:msg=legacy-binding:s` to silence this warning. [quickfixable]" "-Wconf:msg=legacy-binding:s", // SPARK-45627 Symbol literals are deprecated in Scala 2.13 and it's a compile error in Scala 3. - "-Wconf:cat=deprecation&msg=symbol literal is deprecated:e" + "-Wconf:cat=deprecation&msg=symbol literal is deprecated:e", + // SPARK-45627 `enum`, `export` and `given` will become keywords in Scala 3, + // so they are prohibited from being used as variable names in Scala 2.13 to + // reduce the cost of migration in subsequent versions. + "-Wconf:cat=deprecation&msg=it will become a keyword in Scala 3:e" ) } ) diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/JavaTypeInferenceSuite.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/JavaTypeInferenceSuite.scala index f7c1043d1cb..bef0cf8831e 100644 --- a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/JavaTypeInferenceSuite.scala +++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/JavaTypeInferenceSuite.scala @@ -65,7 +65,7 @@ class LeafBean { @BeanProperty var localDateTime: java.time.LocalDateTime = _ @BeanProperty var duration: java.time.Duration = _ @BeanProperty var period: java.time.Period = _ - @BeanProperty var enum: java.time.Month = _ + @BeanProperty var monthEnum: java.time.Month = _ @BeanProperty val readOnlyString = "read-only" @BeanProperty var genericNestedBean: JavaBeanWithGenericBase = _ @BeanProperty var genericNestedBean2: JavaBeanWithGenericsABC[Integer] = _ @@ -186,7 +186,6 @@ class JavaTypeInferenceSuite extends SparkFunSuite { encoderField("boxedShort", BoxedShortEncoder), encoderField("date", STRICT_DATE_ENCODER), encoderField("duration", DayTimeIntervalEncoder), - encoderField("enum", JavaEnumEncoder(classTag[java.time.Month])), encoderField("genericNestedBean", JavaBeanEncoder( ClassTag(classOf[JavaBeanWithGenericBase]), Seq( @@ -203,6 +202,7 @@ class JavaTypeInferenceSuite extends SparkFunSuite { encoderField("instant", STRICT_INSTANT_ENCODER), encoderField("localDate", STRICT_LOCAL_DATE_ENCODER), encoderField("localDateTime", LocalDateTimeEncoder), + encoderField("monthEnum", JavaEnumEncoder(classTag[java.time.Month])), encoderField("nonNullString", StringEncoder, overrideNullable = Option(false)), encoderField("period", YearMonthIntervalEncoder), encoderField("primitiveBoolean", PrimitiveBooleanEncoder), --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@spark.apache.org For additional commands, e-mail: commits-h...@spark.apache.org