@@ -35,7 +35,7 @@ import dotty.tools.dotc.core.Decorators.i
3535 * to handle the full spectrum of Scala types. Additionally, some kinds of symbols like constructors and
3636 * enum instances get special treatment.
3737 */
38- object ImplicitNullInterop {
38+ object JavaNullInterop {
3939
4040 /** Transforms the type `tp` of Java member `sym` to be explicitly nullable.
4141 * `tp` is needed because the type inside `sym` might not be set when this method is called.
@@ -55,6 +55,7 @@ object ImplicitNullInterop {
5555 */
5656 def nullifyMember (sym : Symbol , tp : Type , isEnumValueDef : Boolean )(using Context ): Type = trace(i " nullifyMember ${sym}, ${tp}" ){
5757 assert(ctx.explicitNulls)
58+ // assert(sym.is(JavaDefined), "can only nullify java-defined members")
5859
5960 // Some special cases when nullifying the type
6061 if isEnumValueDef || sym.name == nme.TYPE_ // Don't nullify the `TYPE` field in every class and Java enum instances
@@ -80,14 +81,14 @@ object ImplicitNullInterop {
8081 * but the result type is not nullable.
8182 */
8283 private def nullifyExceptReturnType (tp : Type )(using Context ): Type =
83- new ImplicitNullMap (outermostLevelAlreadyNullable = true )(tp)
84+ new JavaNullMap (outermostLevelAlreadyNullable = true )(tp)
8485
85- /** Nullifies a type by adding `| Null` in the relevant places. */
86+ /** Nullifies a Java type by adding `| Null` in the relevant places. */
8687 private def nullifyType (tp : Type )(using Context ): Type =
87- new ImplicitNullMap (outermostLevelAlreadyNullable = false )(tp)
88+ new JavaNullMap (outermostLevelAlreadyNullable = false )(tp)
8889
89- /** A type map that implements the nullification function on types. Given a Java-sourced type or an
90- * implicitly null type, this adds `| Null` in the right places to make the nulls explicit.
90+ /** A type map that implements the nullification function on types. Given a Java-sourced type, this adds `| Null`
91+ * in the right places to make the nulls explicit in Scala .
9192 *
9293 * @param outermostLevelAlreadyNullable whether this type is already nullable at the outermost level.
9394 * For example, `Array[String] | Null` is already nullable at the
@@ -97,7 +98,7 @@ object ImplicitNullInterop {
9798 * This is useful for e.g. constructors, and also so that `A & B` is nullified
9899 * to `(A & B) | Null`, instead of `(A | Null & B | Null) | Null`.
99100 */
100- private class ImplicitNullMap (var outermostLevelAlreadyNullable : Boolean )(using Context ) extends TypeMap {
101+ private class JavaNullMap (var outermostLevelAlreadyNullable : Boolean )(using Context ) extends TypeMap {
101102 def nullify (tp : Type ): Type = if ctx.flexibleTypes then FlexibleType (tp) else OrNull (tp)
102103
103104 /** Should we nullify `tp` at the outermost level? */
0 commit comments