Improve typing of patch set numbers

For the "right" side of a diff always use `RevisionPatchSetNum`, which
cannot be `PARENT`.

Release-Notes: skip
Change-Id: Iffa7418236d0a8bc55bb062765099b4bea8ddd35
diff --git a/polygerrit-ui/app/elements/core/gr-router/gr-router.ts b/polygerrit-ui/app/elements/core/gr-router/gr-router.ts
index 24d93b1..0f7a14b 100644
--- a/polygerrit-ui/app/elements/core/gr-router/gr-router.ts
+++ b/polygerrit-ui/app/elements/core/gr-router/gr-router.ts
@@ -39,7 +39,7 @@
   DashboardId,
   GroupId,
   NumericChangeId,
-  PatchSetNum,
+  RevisionPatchSetNum,
   RepoName,
   ServerInfo,
   UrlEncodedCommentId,
@@ -270,7 +270,7 @@
 type QueryStringItem = [string, string]; // [key, value]
 
 export interface PatchRangeParams {
-  patchNum?: PatchSetNum;
+  patchNum?: RevisionPatchSetNum;
   basePatchNum?: BasePatchSetNum;
 }
 
@@ -301,6 +301,8 @@
       view: params.view,
       changeNum: 'changeNum' in params ? params.changeNum : undefined,
       patchNum: 'patchNum' in params ? params.patchNum ?? undefined : undefined,
+      basePatchNum:
+        'basePatchNum' in params ? params.basePatchNum ?? undefined : undefined,
     });
     this.appElement().params = params;
   }
@@ -680,7 +682,7 @@
     } else if (!hasPatchNum) {
       // Regexes set basePatchNum instead of patchNum when only one is
       // specified. Redirect is not needed in this case.
-      params.patchNum = params.basePatchNum;
+      params.patchNum = params.basePatchNum as RevisionPatchSetNum;
       params.basePatchNum = ParentPatchSetNum;
     }
     return needsRedirect;
@@ -1676,7 +1678,7 @@
       project: ctx.params[0] as RepoName,
       changeNum,
       basePatchNum: convertToPatchSetNum(ctx.params[4]) as BasePatchSetNum,
-      patchNum: convertToPatchSetNum(ctx.params[6]),
+      patchNum: convertToPatchSetNum(ctx.params[6]) as RevisionPatchSetNum,
       view: GerritView.CHANGE,
     };
 
@@ -1742,7 +1744,7 @@
       project: ctx.params[0] as RepoName,
       changeNum,
       basePatchNum: convertToPatchSetNum(ctx.params[4]) as BasePatchSetNum,
-      patchNum: convertToPatchSetNum(ctx.params[6]),
+      patchNum: convertToPatchSetNum(ctx.params[6]) as RevisionPatchSetNum,
       path: ctx.params[8],
       view: GerritView.DIFF,
     };
@@ -1785,7 +1787,7 @@
       project,
       changeNum,
       // for edit view params, patchNum cannot be undefined
-      patchNum: convertToPatchSetNum(ctx.params[2])!,
+      patchNum: convertToPatchSetNum(ctx.params[2]) as RevisionPatchSetNum,
       path: ctx.params[3],
       lineNum: ctx.hash,
       view: GerritView.EDIT,
@@ -1801,7 +1803,7 @@
     const params: GenerateUrlChangeViewParameters = {
       project,
       changeNum,
-      patchNum: convertToPatchSetNum(ctx.params[3]),
+      patchNum: convertToPatchSetNum(ctx.params[3]) as RevisionPatchSetNum,
       view: GerritView.CHANGE,
       edit: true,
       tab: ctx.queryMap.get('tab') ?? '',
diff --git a/polygerrit-ui/app/elements/core/gr-router/gr-router_test.ts b/polygerrit-ui/app/elements/core/gr-router/gr-router_test.ts
index 4ffc98b..9eb6acc 100644
--- a/polygerrit-ui/app/elements/core/gr-router/gr-router_test.ts
+++ b/polygerrit-ui/app/elements/core/gr-router/gr-router_test.ts
@@ -38,7 +38,6 @@
   GroupId,
   NumericChangeId,
   ParentPatchSetNum,
-  PatchSetNum,
   RepoName,
   RevisionPatchSetNum,
   TopicName,
@@ -394,7 +393,7 @@
 
       assert.equal(router.generateUrl(params), '/c/test/+/1234');
 
-      params.patchNum = 10 as PatchSetNum;
+      params.patchNum = 10 as RevisionPatchSetNum;
       assert.equal(router.generateUrl(params), '/c/test/+/1234/10');
 
       params.basePatchNum = 5 as BasePatchSetNum;
@@ -421,7 +420,7 @@
         view: GerritView.DIFF,
         changeNum: 42 as NumericChangeId,
         path: 'x+y/path.cpp' as RepoName,
-        patchNum: 12 as PatchSetNum,
+        patchNum: 12 as RevisionPatchSetNum,
         project: '' as RepoName,
       };
       assert.equal(router.generateUrl(params), '/c/42/12/x%252By/path.cpp');
@@ -439,7 +438,7 @@
       );
 
       params.path = 'foo bar/my+file.txt%';
-      params.patchNum = 2 as PatchSetNum;
+      params.patchNum = 2 as RevisionPatchSetNum;
       delete params.basePatchNum;
       assert.equal(
         router.generateUrl(params),
@@ -459,7 +458,7 @@
         view: GerritView.DIFF,
         changeNum: 42 as NumericChangeId,
         path: 'x+y/path.cpp',
-        patchNum: 12 as PatchSetNum,
+        patchNum: 12 as RevisionPatchSetNum,
         project: 'x+/y' as RepoName,
       };
       assert.equal(
@@ -474,7 +473,7 @@
         changeNum: 42 as NumericChangeId,
         project: 'test' as RepoName,
         path: 'x+y/path.cpp',
-        patchNum: 'edit' as PatchSetNum,
+        patchNum: 'edit' as RevisionPatchSetNum,
       };
       assert.equal(
         router.generateUrl(params),
@@ -487,7 +486,7 @@
       let actual = router.getPatchRangeExpression(params);
       assert.equal(actual, '');
 
-      params.patchNum = 4 as PatchSetNum;
+      params.patchNum = 4 as RevisionPatchSetNum;
       actual = router.getPatchRangeExpression(params);
       assert.equal(actual, '4');
 
@@ -621,12 +620,12 @@
       test('range n..n normalizes to n', () => {
         const params: PatchRangeParams = {
           basePatchNum: 4 as BasePatchSetNum,
-          patchNum: 4 as PatchSetNum,
+          patchNum: 4 as RevisionPatchSetNum,
         };
         const needsRedirect = router.normalizePatchRangeParams(params);
         assert.isTrue(needsRedirect);
         assert.equal(params.basePatchNum, ParentPatchSetNum);
-        assert.equal(params.patchNum, 4 as PatchSetNum);
+        assert.equal(params.patchNum, 4 as RevisionPatchSetNum);
       });
 
       test('range n.. normalizes to n', () => {
@@ -634,7 +633,7 @@
         const needsRedirect = router.normalizePatchRangeParams(params);
         assert.isFalse(needsRedirect);
         assert.equal(params.basePatchNum, ParentPatchSetNum);
-        assert.equal(params.patchNum, 4 as PatchSetNum);
+        assert.equal(params.patchNum, 4 as RevisionPatchSetNum);
       });
     });
   });
@@ -1689,7 +1688,7 @@
           changeNum: 1234 as NumericChangeId,
           view: GerritNav.View.EDIT,
           path: 'foo/bar/baz',
-          patchNum: 3 as PatchSetNum,
+          patchNum: 3 as RevisionPatchSetNum,
           lineNum: '',
         };
 
@@ -1722,7 +1721,7 @@
           changeNum: 1234 as NumericChangeId,
           view: GerritNav.View.EDIT,
           path: 'foo/bar/baz',
-          patchNum: 3 as PatchSetNum,
+          patchNum: 3 as RevisionPatchSetNum,
           lineNum: '4',
         };
 
@@ -1753,7 +1752,7 @@
           project: 'foo/bar' as RepoName,
           changeNum: 1234 as NumericChangeId,
           view: GerritView.CHANGE,
-          patchNum: 3 as PatchSetNum,
+          patchNum: 3 as RevisionPatchSetNum,
           edit: true,
           tab: '',
         };