Provide popUpToId for NavOptions

Adding an expect for popUpToId and implementing it in nonAndroid
targets.

RelNote: N/A
Test: all tests pass
Bug: 403616316
Change-Id: I9a354359828786be54268096859bf8b3b35b51ac
diff --git a/navigation/navigation-common/bcv/native/current.txt b/navigation/navigation-common/bcv/native/current.txt
index 0ba5ef6..fa1427e 100644
--- a/navigation/navigation-common/bcv/native/current.txt
+++ b/navigation/navigation-common/bcv/native/current.txt
@@ -299,6 +299,9 @@
 final class androidx.navigation/NavOptions { // androidx.navigation/NavOptions|null[0]
     constructor <init>() // androidx.navigation/NavOptions.<init>|<init>(){}[0]
 
+    final val popUpToId // androidx.navigation/NavOptions.popUpToId|{}popUpToId[0]
+        final fun <get-popUpToId>(): kotlin/Int // androidx.navigation/NavOptions.popUpToId.<get-popUpToId>|<get-popUpToId>(){}[0]
+
     final var popUpToRoute // androidx.navigation/NavOptions.popUpToRoute|{}popUpToRoute[0]
         final fun <get-popUpToRoute>(): kotlin/String? // androidx.navigation/NavOptions.popUpToRoute.<get-popUpToRoute>|<get-popUpToRoute>(){}[0]
         final fun <set-popUpToRoute>(kotlin/String?) // androidx.navigation/NavOptions.popUpToRoute.<set-popUpToRoute>|<set-popUpToRoute>(kotlin.String?){}[0]
diff --git a/navigation/navigation-common/src/androidMain/kotlin/androidx/navigation/NavOptions.android.kt b/navigation/navigation-common/src/androidMain/kotlin/androidx/navigation/NavOptions.android.kt
index fd6787c..9e69b7a 100644
--- a/navigation/navigation-common/src/androidMain/kotlin/androidx/navigation/NavOptions.android.kt
+++ b/navigation/navigation-common/src/androidMain/kotlin/androidx/navigation/NavOptions.android.kt
@@ -19,7 +19,6 @@
 import androidx.annotation.AnimatorRes
 import androidx.annotation.IdRes
 import androidx.navigation.NavDestination.Companion.createRoute
-import androidx.navigation.NavOptions.Builder
 import androidx.navigation.serialization.generateHashCode
 import kotlin.reflect.KClass
 import kotlinx.serialization.InternalSerializationApi
@@ -38,7 +37,7 @@
      * @see isPopUpToInclusive
      * @see shouldPopUpToSaveState
      */
-    @field:IdRes @get:IdRes @param:IdRes public val popUpToId: Int,
+    @field:IdRes @get:IdRes @param:IdRes public actual val popUpToId: Int,
     private val popUpToInclusive: Boolean,
     private val popUpToSaveState: Boolean,
     /**
diff --git a/navigation/navigation-common/src/commonMain/kotlin/androidx/navigation/NavOptions.kt b/navigation/navigation-common/src/commonMain/kotlin/androidx/navigation/NavOptions.kt
index 86a8d9d..9ffc891 100644
--- a/navigation/navigation-common/src/commonMain/kotlin/androidx/navigation/NavOptions.kt
+++ b/navigation/navigation-common/src/commonMain/kotlin/androidx/navigation/NavOptions.kt
@@ -23,6 +23,17 @@
 public expect class NavOptions {
 
     /**
+     * The destination to pop up to before navigating. When set, all non-matching destinations
+     * should be popped from the back stack.
+     *
+     * @return the destinationId to pop up to, clearing all intervening destinations
+     * @see Builder.setPopUpTo
+     * @see isPopUpToInclusive
+     * @see shouldPopUpToSaveState
+     */
+    public val popUpToId: Int
+
+    /**
      * Route for the destination to pop up to before navigating. When set, all non-matching
      * destinations should be popped from the back stack.
      *
diff --git a/navigation/navigation-common/src/nonAndroidMain/kotlin/androidx/navigation/NavOptions.nonAndroid.kt b/navigation/navigation-common/src/nonAndroidMain/kotlin/androidx/navigation/NavOptions.nonAndroid.kt
index 62e4252..db38ef4 100644
--- a/navigation/navigation-common/src/nonAndroidMain/kotlin/androidx/navigation/NavOptions.nonAndroid.kt
+++ b/navigation/navigation-common/src/nonAndroidMain/kotlin/androidx/navigation/NavOptions.nonAndroid.kt
@@ -20,6 +20,8 @@
 import kotlin.reflect.KClass
 
 public actual class NavOptions {
+    public actual val popUpToId: Int = 0
+
     public actual var popUpToRoute: String?
         get() = implementedInJetBrainsFork()
         set(_) {