Skip to content

Commit

Permalink
Set TypeVariable isNullable if the type variable is explicitly marked…
Browse files Browse the repository at this point in the history
… as Nullable in the Koltin code.

With this change we follow what we do in the JDT frontend.
TypeVariable can be used as JsOptional parameter as they can be marked as nullable.

PiperOrigin-RevId: 591141777
  • Loading branch information
jDramaix authored and copybara-github committed Dec 15, 2023
1 parent a082ad6 commit 47e4451
Show file tree
Hide file tree
Showing 7 changed files with 414 additions and 344 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import javax.annotation.Nonnull;
import jsinterop.annotations.JsMethod;
import jsinterop.annotations.JsNonNull;
import jsinterop.annotations.JsOptional;
import org.jspecify.nullness.Nullable;

public class DefaultNotNullable {
Expand Down Expand Up @@ -57,6 +58,11 @@ public String m2(@Nullable String a, List<@Nullable Double> b) {
public void m3(String... args) {
}

@JsMethod
public String m4(String a, @JsOptional @Nullable String optional) {
return null;
}

interface ParameterizedInterface<T> {
// Exposes the problems described in b/68726480.
T add(T t);
Expand Down Expand Up @@ -124,6 +130,9 @@ void setNullable(@Nullable N n) {}
void setNonNull(@JsNonNull N n) {}

void setDefaultNullability(N n) {}

@JsMethod
void jsOptional(String a, @JsOptional @Nullable N optional) {}
}

static class ParameterizedNullable<N extends @Nullable Object> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ class ParameterizedDefaultNullability extends j_l_Object {
m_setNonNull__java_lang_Object__void_$pp_nullability_defaultnotnullable(/** N */ n) {}
/** @nodts */
m_setDefaultNullability__java_lang_Object__void_$pp_nullability_defaultnotnullable(/** N */ n) {}

jsOptional(/** string */ a, /** N= */ optional) {}
/** @nodts */
static $clinit() {
ParameterizedDefaultNullability.$clinit = () =>{};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@
[n] => [n] "n"
[setDefaultNullability] => [m_setDefaultNullability__java_lang_Object__void_$pp_nullability_defaultnotnullable]
[n] => [n] "n"
[jsOptional] => [jsOptional]
[a] => [a] "a"
[optional] => [optional] "optional"
[ParameterizedDefaultNullability] => [$clinit]
[ParameterizedDefaultNullability] => [ParameterizedDefaultNullability.$clinit = () =>{};] "nullability.defaultnotnullable.DefaultNotNullable$ParameterizedDefaultNullability.<clinit>"
[ParameterizedDefaultNullability] => [ParameterizedDefaultNullability.$loadModules();] "nullability.defaultnotnullable.DefaultNotNullable$ParameterizedDefaultNullability.<clinit>"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,10 @@ class DefaultNotNullable extends j_l_Object {
m3(.../** ...string */ args) {
$Arrays.$stampType(args, j_l_String, 1);
}
/** @return {string} */
m4(/** string */ a, /** ?string= */ optional) {
return null;
}
/** @nodts @template T */
m_methodWithNullableBound__void_$pp_nullability_defaultnotnullable() {}
/** @nodts @template T */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,10 @@
[args] => [args] "args"
[{
}] => [$Arrays.$stampType(args, j_l_String, 1);] "nullability.defaultnotnullable.DefaultNotNullable.m3"
[m4] => [m4]
[a] => [a] "a"
[optional] => [optional] "optional"
[return null;] => [return null;] "nullability.defaultnotnullable.DefaultNotNullable.m4"
[methodWithNullableBound] => [m_methodWithNullableBound__void_$pp_nullability_defaultnotnullable]
[methodWithNonNullableBound] => [m_methodWithNonNullableBound__void_$pp_nullability_defaultnotnullable]
[genericNullableMethod] => [m_genericNullableMethod__nullability_defaultnotnullable_DefaultNotNullable_ParameterizedNullable__java_lang_Object__void]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import java.lang.RuntimeException
import java.lang.Void
import java.util.ArrayList
import jsinterop.annotations.JsMethod
import jsinterop.annotations.JsOptional
import kotlin.Any
import kotlin.Array
import kotlin.Boolean
Expand Down Expand Up @@ -108,6 +109,15 @@ open class DefaultNotNullable {
val args_1: Array<String> = args as Array<String>
}

@ObjCName("m4")
@JsMethod
open fun m4(
@ObjCName("withNSString") a: String,
@ObjCName("withNSString") @JsOptional optional: String?
): String {
return null!!
}

internal open fun <T: DefaultNotNullable.NullableBound<T>?> methodWithNullableBound_pp_nullability_defaultnotnullable() {}

internal open fun <T: DefaultNotNullable.NonNullableBound<T>> methodWithNonNullableBound_pp_nullability_defaultnotnullable() {}
Expand Down Expand Up @@ -392,6 +402,9 @@ open class DefaultNotNullable {
internal open fun setNonNull_pp_nullability_defaultnotnullable(n: N) {}

internal open fun setDefaultNullability_pp_nullability_defaultnotnullable(n: N) {}

@JsMethod(name = "jsOptional")
internal open fun jsOptional_pp_nullability_defaultnotnullable(a: String, @JsOptional optional: N?) {}
}

open class ParameterizedNullable<N> {
Expand Down
Loading

0 comments on commit 47e4451

Please sign in to comment.