Stop re-exporting basic diff types from gr-diff-line.ts Also replace 'FILE' by FILE and 'LOST' by LOST. This makes forking embed/diff/... easier. Release-Notes: skip Change-Id: Ief3784d6450694604c4e5156db0b6088e9f6b3c4
diff --git a/polygerrit-ui/app/api/diff.ts b/polygerrit-ui/app/api/diff.ts index 4bf253d..8b3820e 100644 --- a/polygerrit-ui/app/api/diff.ts +++ b/polygerrit-ui/app/api/diff.ts
@@ -302,11 +302,15 @@ code_range: LineRange; } -/** LOST LineNumber is for ported comments without a range, they have their own - * line number and are added on top of the FILE row in gr-diff +/** + * LOST LineNumber is for ported comments without a range, they have their own + * line number and are added on top of the FILE row in <gr-diff>. */ export declare type LineNumber = number | 'FILE' | 'LOST'; +export const FILE: LineNumber = 'FILE'; +export const LOST: LineNumber = 'LOST'; + /** The detail of the 'create-comment' event dispatched by gr-diff. */ export declare interface CreateCommentEventDetail { side: Side;
diff --git a/polygerrit-ui/app/elements/change/gr-thread-list/gr-thread-list.ts b/polygerrit-ui/app/elements/change/gr-thread-list/gr-thread-list.ts index 75845f6..5c40050 100644 --- a/polygerrit-ui/app/elements/change/gr-thread-list/gr-thread-list.ts +++ b/polygerrit-ui/app/elements/change/gr-thread-list/gr-thread-list.ts
@@ -96,7 +96,7 @@ return specialFilePathCompare(c1.path, c2.path); } - // Convert 'FILE' and 'LOST' to undefined. + // Convert FILE and LOST to undefined. const line1 = typeof c1.line === 'number' ? c1.line : undefined; const line2 = typeof c2.line === 'number' ? c2.line : undefined; if (line1 !== line2) {
diff --git a/polygerrit-ui/app/elements/change/gr-thread-list/gr-thread-list_test.ts b/polygerrit-ui/app/elements/change/gr-thread-list/gr-thread-list_test.ts index a4357bb..3a06f8d 100644 --- a/polygerrit-ui/app/elements/change/gr-thread-list/gr-thread-list_test.ts +++ b/polygerrit-ui/app/elements/change/gr-thread-list/gr-thread-list_test.ts
@@ -41,6 +41,7 @@ import {GrDropdownList} from '../../shared/gr-dropdown-list/gr-dropdown-list'; import {fixture, html, assert} from '@open-wc/testing'; import {GrCommentThread} from '../../shared/gr-comment-thread/gr-comment-thread'; +import {FILE} from '../../../api/diff'; suite('gr-thread-list tests', () => { let element: GrThreadList; @@ -665,7 +666,7 @@ test('file level comment before line', () => { t1.line = 123; - t2.line = 'FILE'; + t2.line = FILE; checkOrder([t2, t1]); });
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host.ts b/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host.ts index 2ccae8d..9650a14 100644 --- a/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host.ts +++ b/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host.ts
@@ -53,7 +53,6 @@ } from '../../../embed/diff/gr-diff/gr-diff'; import {DiffViewMode, Side, CommentSide} from '../../../constants/constants'; import {FilesWebLinks} from '../gr-patch-range-select/gr-patch-range-select'; -import {LineNumber, FILE} from '../../../embed/diff/gr-diff/gr-diff-line'; import {GrCommentThread} from '../../shared/gr-comment-thread/gr-comment-thread'; import {KnownExperimentId} from '../../../services/flags/flags'; import { @@ -71,7 +70,10 @@ import {Subscription} from 'rxjs'; import { DisplayLine, + FILE, + LineNumber, LineSelectedEventDetail, + LOST, RenderPreferences, } from '../../../api/diff'; import {resolve} from '../../../models/dependency'; @@ -754,7 +756,7 @@ const pointer = check.codePointers?.[0]; assertIsDefined(pointer, 'code pointer of check result in diff'); const line: LineNumber = - pointer.range?.end_line || pointer.range?.start_line || 'FILE'; + pointer.range?.end_line || pointer.range?.start_line || FILE; const el = document.createElement('gr-diff-check-result'); // This is what gr-diff expects, even though this is a check, not a comment. el.className = 'comment-thread'; @@ -1212,9 +1214,9 @@ threadEl.showPortedComment = !!thread.ported; // These attributes are the "interface" between comment threads and gr-diff. // <gr-comment-thread> does not care about them and is not affected by them. - threadEl.setAttribute('slot', `${diffSide}-${thread.line || 'LOST'}`); + threadEl.setAttribute('slot', `${diffSide}-${thread.line || LOST}`); threadEl.setAttribute('diff-side', `${diffSide}`); - threadEl.setAttribute('line-num', `${thread.line || 'LOST'}`); + threadEl.setAttribute('line-num', `${thread.line || LOST}`); if (thread.range) { threadEl.setAttribute('range', `${JSON.stringify(thread.range)}`); }
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host_test.ts b/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host_test.ts index 045e2d0..4cf8356 100644 --- a/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host_test.ts +++ b/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host_test.ts
@@ -44,7 +44,12 @@ } from '../../../types/common'; import {CoverageType} from '../../../types/types'; import {GrDiffHost, LineInfo} from './gr-diff-host'; -import {DiffInfo, DiffViewMode, IgnoreWhitespaceType} from '../../../api/diff'; +import { + DiffInfo, + DiffViewMode, + FILE, + IgnoreWhitespaceType, +} from '../../../api/diff'; import {ErrorCallback} from '../../../api/rest'; import {SinonStub, SinonStubbedMember} from 'sinon'; import {RunResult} from '../../../models/checks/checks-model'; @@ -1321,7 +1326,7 @@ }); test('filterThreadElsForLocation for file comments', () => { - const line: LineInfo = {beforeNumber: 'FILE', afterNumber: 'FILE'}; + const line: LineInfo = {beforeNumber: FILE, afterNumber: FILE}; const l = document.createElement('gr-comment-thread'); l.setAttribute('diff-side', Side.LEFT);
diff --git a/polygerrit-ui/app/elements/shared/gr-comment-thread/gr-comment-thread.ts b/polygerrit-ui/app/elements/shared/gr-comment-thread/gr-comment-thread.ts index c76f04c..e98d7d2 100644 --- a/polygerrit-ui/app/elements/shared/gr-comment-thread/gr-comment-thread.ts +++ b/polygerrit-ui/app/elements/shared/gr-comment-thread/gr-comment-thread.ts
@@ -44,10 +44,9 @@ UrlEncodedCommentId, } from '../../../types/common'; import {CommentEditingChangedDetail, GrComment} from '../gr-comment/gr-comment'; -import {FILE} from '../../../embed/diff/gr-diff/gr-diff-line'; import {GrButton} from '../gr-button/gr-button'; import {DiffInfo, DiffPreferencesInfo} from '../../../types/diff'; -import {DiffLayer, RenderPreferences} from '../../../api/diff'; +import {DiffLayer, FILE, RenderPreferences} from '../../../api/diff'; import { assert, assertIsDefined,
diff --git a/polygerrit-ui/app/elements/shared/gr-comment/gr-comment.ts b/polygerrit-ui/app/elements/shared/gr-comment/gr-comment.ts index 27a5590..74c5806 100644 --- a/polygerrit-ui/app/elements/shared/gr-comment/gr-comment.ts +++ b/polygerrit-ui/app/elements/shared/gr-comment/gr-comment.ts
@@ -55,7 +55,7 @@ import {subscribe} from '../../lit/subscription-controller'; import {ShortcutController} from '../../lit/shortcut-controller'; import {classMap} from 'lit/directives/class-map.js'; -import {LineNumber} from '../../../api/diff'; +import {FILE, LineNumber} from '../../../api/diff'; import {CommentSide, SpecialFilePath} from '../../../constants/constants'; import {Subject} from 'rxjs'; import {debounceTime} from 'rxjs/operators'; @@ -66,8 +66,6 @@ import {userModelToken} from '../../../models/user/user-model'; import {modalStyles} from '../../../styles/gr-modal-styles'; -const FILE = 'FILE'; - // visible for testing export const AUTO_SAVE_DEBOUNCE_DELAY_MS = 2000;
diff --git a/polygerrit-ui/app/embed/diff/gr-context-controls/gr-context-controls_test.ts b/polygerrit-ui/app/embed/diff/gr-context-controls/gr-context-controls_test.ts index 8e2f432..215dc88 100644 --- a/polygerrit-ui/app/embed/diff/gr-context-controls/gr-context-controls_test.ts +++ b/polygerrit-ui/app/embed/diff/gr-context-controls/gr-context-controls_test.ts
@@ -8,9 +8,14 @@ import './gr-context-controls'; import {GrContextControls} from './gr-context-controls'; -import {GrDiffLine, GrDiffLineType} from '../gr-diff/gr-diff-line'; +import {GrDiffLine} from '../gr-diff/gr-diff-line'; import {GrDiffGroup, GrDiffGroupType} from '../gr-diff/gr-diff-group'; -import {DiffFileMetaInfo, DiffInfo, SyntaxBlock} from '../../../api/diff'; +import { + DiffFileMetaInfo, + DiffInfo, + GrDiffLineType, + SyntaxBlock, +} from '../../../api/diff'; import {fixture, html, assert} from '@open-wc/testing'; import {waitEventLoop} from '../../../test/test-utils';
diff --git a/polygerrit-ui/app/embed/diff/gr-diff-builder/gr-diff-builder-binary.ts b/polygerrit-ui/app/embed/diff/gr-diff-builder/gr-diff-builder-binary.ts index cc45e1e..7ace605 100644 --- a/polygerrit-ui/app/embed/diff/gr-diff-builder/gr-diff-builder-binary.ts +++ b/polygerrit-ui/app/embed/diff/gr-diff-builder/gr-diff-builder-binary.ts
@@ -8,6 +8,7 @@ import {createElementDiff} from '../gr-diff/gr-diff-utils'; import {GrDiffGroup} from '../gr-diff/gr-diff-group'; import {html, render} from 'lit'; +import {FILE} from '../../../api/diff'; export class GrDiffBuilderBinary extends GrDiffBuilder { constructor( @@ -20,8 +21,8 @@ override buildSectionElement(group: GrDiffGroup): HTMLElement { const section = createElementDiff('tbody', 'binary-diff'); - // Do not create a diff row for 'LOST'. - if (group.lines[0].beforeNumber !== 'FILE') return section; + // Do not create a diff row for LOST. + if (group.lines[0].beforeNumber !== FILE) return section; return super.buildSectionElement(group); }
diff --git a/polygerrit-ui/app/embed/diff/gr-diff-builder/gr-diff-builder-element.ts b/polygerrit-ui/app/embed/diff/gr-diff-builder/gr-diff-builder-element.ts index 328b577..c1c6d15 100644 --- a/polygerrit-ui/app/embed/diff/gr-diff-builder/gr-diff-builder-element.ts +++ b/polygerrit-ui/app/embed/diff/gr-diff-builder/gr-diff-builder-element.ts
@@ -27,9 +27,9 @@ GrRangedCommentLayer, } from '../gr-ranged-comment-layer/gr-ranged-comment-layer'; import {GrCoverageLayer} from '../gr-coverage-layer/gr-coverage-layer'; -import {DiffViewMode, RenderPreferences} from '../../../api/diff'; +import {DiffViewMode, LineNumber, RenderPreferences} from '../../../api/diff'; import {createDefaultDiffPrefs, Side} from '../../../constants/constants'; -import {GrDiffLine, LineNumber} from '../gr-diff/gr-diff-line'; +import {GrDiffLine} from '../gr-diff/gr-diff-line'; import { GrDiffGroup, GrDiffGroupType,
diff --git a/polygerrit-ui/app/embed/diff/gr-diff-builder/gr-diff-builder-element_test.ts b/polygerrit-ui/app/embed/diff/gr-diff-builder/gr-diff-builder-element_test.ts index da2e9f1..f6f0cb3 100644 --- a/polygerrit-ui/app/embed/diff/gr-diff-builder/gr-diff-builder-element_test.ts +++ b/polygerrit-ui/app/embed/diff/gr-diff-builder/gr-diff-builder-element_test.ts
@@ -11,12 +11,13 @@ import './gr-diff-builder-element'; import {stubBaseUrl, waitUntil} from '../../../test/test-utils'; import {GrAnnotation} from '../gr-diff-highlight/gr-annotation'; -import {GrDiffLine, GrDiffLineType} from '../gr-diff/gr-diff-line'; +import {GrDiffLine} from '../gr-diff/gr-diff-line'; import { DiffContent, DiffLayer, DiffPreferencesInfo, DiffViewMode, + GrDiffLineType, Side, } from '../../../api/diff'; import {stubRestApi} from '../../../test/test-utils';
diff --git a/polygerrit-ui/app/embed/diff/gr-diff-builder/gr-diff-builder-image.ts b/polygerrit-ui/app/embed/diff/gr-diff-builder/gr-diff-builder-image.ts index 1f7ffd3..59933c3 100644 --- a/polygerrit-ui/app/embed/diff/gr-diff-builder/gr-diff-builder-image.ts +++ b/polygerrit-ui/app/embed/diff/gr-diff-builder/gr-diff-builder-image.ts
@@ -5,7 +5,7 @@ */ import {ImageInfo} from '../../../types/common'; import {DiffInfo, DiffPreferencesInfo} from '../../../types/diff'; -import {RenderPreferences, Side} from '../../../api/diff'; +import {FILE, RenderPreferences, Side} from '../../../api/diff'; import '../gr-diff-image-viewer/gr-image-viewer'; import {html, LitElement, nothing} from 'lit'; import {customElement, property, query, state} from 'lit/decorators.js'; @@ -32,8 +32,8 @@ override buildSectionElement(group: GrDiffGroup): HTMLElement { const section = createElementDiff('tbody'); - // Do not create a diff row for 'LOST'. - if (group.lines[0].beforeNumber !== 'FILE') return section; + // Do not create a diff row for LOST. + if (group.lines[0].beforeNumber !== FILE) return section; return super.buildSectionElement(group); }
diff --git a/polygerrit-ui/app/embed/diff/gr-diff-builder/gr-diff-builder.ts b/polygerrit-ui/app/embed/diff/gr-diff-builder/gr-diff-builder.ts index f38ba5c..b0818e0 100644 --- a/polygerrit-ui/app/embed/diff/gr-diff-builder/gr-diff-builder.ts +++ b/polygerrit-ui/app/embed/diff/gr-diff-builder/gr-diff-builder.ts
@@ -9,9 +9,9 @@ ContentLoadNeededEventDetail, DiffContextExpandedExternalDetail, DiffViewMode, + LineNumber, RenderPreferences, } from '../../../api/diff'; -import {LineNumber} from '../gr-diff/gr-diff-line'; import {GrDiffGroup} from '../gr-diff/gr-diff-group'; import {BlameInfo} from '../../../types/common'; import {DiffInfo, DiffPreferencesInfo} from '../../../types/diff';
diff --git a/polygerrit-ui/app/embed/diff/gr-diff-builder/gr-diff-row.ts b/polygerrit-ui/app/embed/diff/gr-diff-builder/gr-diff-row.ts index 9acda81..b898a37 100644 --- a/polygerrit-ui/app/embed/diff/gr-diff-builder/gr-diff-row.ts +++ b/polygerrit-ui/app/embed/diff/gr-diff-builder/gr-diff-row.ts
@@ -12,13 +12,16 @@ Side, LineNumber, DiffLayer, + GrDiffLineType, + LOST, + FILE, } from '../../../api/diff'; import {BlameInfo} from '../../../types/common'; import {assertIsDefined} from '../../../utils/common-util'; import {fire} from '../../../utils/event-util'; import {getBaseUrl} from '../../../utils/url-util'; import './gr-diff-text'; -import {GrDiffLine, GrDiffLineType} from '../gr-diff/gr-diff-line'; +import {GrDiffLine} from '../gr-diff/gr-diff-line'; import {diffClasses, isResponsive} from '../gr-diff/gr-diff-utils'; @customElement('gr-diff-row') @@ -281,8 +284,8 @@ lineNumber: LineNumber, side: Side ) { - if (this.hideFileCommentButton && lineNumber === 'FILE') return; - if (lineNumber === 'LOST') return; + if (this.hideFileCommentButton && lineNumber === FILE) return; + if (lineNumber === LOST) return; // .lineNumButton has `white-space: pre`, so prettier must not add spaces. // prettier-ignore return html` @@ -298,18 +301,18 @@ fire(this, 'line-mouse-enter', {lineNum: lineNumber, side})} @mouseleave=${() => fire(this, 'line-mouse-leave', {lineNum: lineNumber, side})} - >${lineNumber === 'FILE' ? 'File' : lineNumber.toString()}</button> + >${lineNumber === FILE ? 'File' : lineNumber.toString()}</button> `; } private computeLineNumberAriaLabel(line: GrDiffLine, lineNumber: LineNumber) { - if (lineNumber === 'FILE') return 'Add file comment'; + if (lineNumber === FILE) return 'Add file comment'; // Add aria-labels for valid line numbers. // For unified diff, this method will be called with number set to 0 for // the empty line number column for added/removed lines. This should not // be announced to the screenreader. - if (lineNumber === 'LOST' || lineNumber <= 0) return undefined; + if (lineNumber === LOST || lineNumber <= 0) return undefined; switch (line.type) { case GrDiffLineType.REMOVE: @@ -336,8 +339,8 @@ const extras: string[] = [line.type, side]; if (line.type !== GrDiffLineType.BLANK) extras.push('content'); if (!line.hasIntralineInfo) extras.push('no-intraline-info'); - if (line.beforeNumber === 'FILE') extras.push('file'); - if (line.beforeNumber === 'LOST') extras.push('lost'); + if (line.beforeNumber === FILE) extras.push('file'); + if (line.beforeNumber === LOST) extras.push('lost'); // .content has `white-space: pre`, so prettier must not add spaces. // prettier-ignore @@ -437,7 +440,7 @@ private renderText(side: Side) { const line = this.line(side); const lineNumber = this.lineNumber(side); - if (lineNumber === 'FILE' || lineNumber === 'LOST') return; + if (typeof lineNumber !== 'number') return; // Note that `this.layersApplied` will wipe away the <gr-diff-text>, and // another rendering cycle will be initiated in `updated()`.
diff --git a/polygerrit-ui/app/embed/diff/gr-diff-builder/token-highlight-layer_test.ts b/polygerrit-ui/app/embed/diff/gr-diff-builder/token-highlight-layer_test.ts index 8fd03bb..5651dcf 100644 --- a/polygerrit-ui/app/embed/diff/gr-diff-builder/token-highlight-layer_test.ts +++ b/polygerrit-ui/app/embed/diff/gr-diff-builder/token-highlight-layer_test.ts
@@ -4,8 +4,12 @@ * SPDX-License-Identifier: Apache-2.0 */ import '../../../test/common-test-setup'; -import {Side, TokenHighlightEventDetails} from '../../../api/diff'; -import {GrDiffLine, GrDiffLineType} from '../gr-diff/gr-diff-line'; +import { + GrDiffLineType, + Side, + TokenHighlightEventDetails, +} from '../../../api/diff'; +import {GrDiffLine} from '../gr-diff/gr-diff-line'; import {HOVER_DELAY_MS, TokenHighlightLayer} from './token-highlight-layer'; import {GrAnnotation} from '../gr-diff-highlight/gr-annotation'; import {html, render} from 'lit';
diff --git a/polygerrit-ui/app/embed/diff/gr-diff-cursor/gr-diff-cursor.ts b/polygerrit-ui/app/embed/diff/gr-diff-cursor/gr-diff-cursor.ts index 9e3640b..6a32afb 100644 --- a/polygerrit-ui/app/embed/diff/gr-diff-cursor/gr-diff-cursor.ts +++ b/polygerrit-ui/app/embed/diff/gr-diff-cursor/gr-diff-cursor.ts
@@ -8,6 +8,7 @@ import { DiffViewMode, GrDiffCursor as GrDiffCursorApi, + GrDiffLineType, LineNumber, LineSelectedEventDetail, } from '../../../api/diff'; @@ -17,7 +18,6 @@ GrCursorManager, isTargetable, } from '../../../elements/shared/gr-cursor-manager/gr-cursor-manager'; -import {GrDiffLineType} from '../gr-diff/gr-diff-line'; import {GrDiffGroupType} from '../gr-diff/gr-diff-group'; import {GrDiff} from '../gr-diff/gr-diff'; import {fire} from '../../../utils/event-util';
diff --git a/polygerrit-ui/app/embed/diff/gr-diff-highlight/gr-diff-highlight.ts b/polygerrit-ui/app/embed/diff/gr-diff-highlight/gr-diff-highlight.ts index 69c0f5c..0d9250c 100644 --- a/polygerrit-ui/app/embed/diff/gr-diff-highlight/gr-diff-highlight.ts +++ b/polygerrit-ui/app/embed/diff/gr-diff-highlight/gr-diff-highlight.ts
@@ -11,7 +11,6 @@ import {Side} from '../../../constants/constants'; import {CommentRange} from '../../../types/common'; import {GrSelectionActionBox} from '../gr-selection-action-box/gr-selection-action-box'; -import {FILE} from '../gr-diff/gr-diff-line'; import { getLineElByChild, getLineNumberByChild, @@ -308,7 +307,7 @@ const side = getSideByLineEl(lineEl); if (!side) return null; const line = getLineNumberByChild(lineEl); - if (!line || line === FILE || line === 'LOST') return null; + if (typeof line !== 'number') return null; const contentTd = this.diffBuilder.getContentTdByLineEl(lineEl); if (!contentTd) return null; const contentText = contentTd.querySelector('.contentText');
diff --git a/polygerrit-ui/app/embed/diff/gr-diff-processor/gr-diff-processor.ts b/polygerrit-ui/app/embed/diff/gr-diff-processor/gr-diff-processor.ts index 05e5d3b..256dc11 100644 --- a/polygerrit-ui/app/embed/diff/gr-diff-processor/gr-diff-processor.ts +++ b/polygerrit-ui/app/embed/diff/gr-diff-processor/gr-diff-processor.ts
@@ -3,13 +3,7 @@ * Copyright 2016 Google LLC * SPDX-License-Identifier: Apache-2.0 */ -import { - GrDiffLine, - GrDiffLineType, - FILE, - Highlights, - LineNumber, -} from '../gr-diff/gr-diff-line'; +import {GrDiffLine, Highlights} from '../gr-diff/gr-diff-line'; import { GrDiffGroup, GrDiffGroupType, @@ -20,6 +14,7 @@ import {debounce, DelayedTask} from '../../../utils/async-util'; import {assert, assertIsDefined} from '../../../utils/common-util'; import {GrAnnotation} from '../gr-diff-highlight/gr-annotation'; +import {FILE, GrDiffLineType, LOST, LineNumber} from '../../../api/diff'; const WHOLE_FILE = -1; @@ -130,7 +125,7 @@ assertIsDefined(this.consumer, 'consumer'); this.consumer.clearGroups(); - this.consumer.addGroup(this.makeGroup('LOST')); + this.consumer.addGroup(this.makeGroup(LOST)); this.consumer.addGroup(this.makeGroup(FILE)); if (isBinary) return Promise.resolve();
diff --git a/polygerrit-ui/app/embed/diff/gr-diff-processor/gr-diff-processor_test.ts b/polygerrit-ui/app/embed/diff/gr-diff-processor/gr-diff-processor_test.ts index adcfff8..335f0d0 100644 --- a/polygerrit-ui/app/embed/diff/gr-diff-processor/gr-diff-processor_test.ts +++ b/polygerrit-ui/app/embed/diff/gr-diff-processor/gr-diff-processor_test.ts
@@ -5,11 +5,12 @@ */ import '../../../test/common-test-setup'; import './gr-diff-processor'; -import {GrDiffLineType, FILE, GrDiffLine} from '../gr-diff/gr-diff-line'; +import {GrDiffLine} from '../gr-diff/gr-diff-line'; import {GrDiffGroup, GrDiffGroupType} from '../gr-diff/gr-diff-group'; import {GrDiffProcessor, State} from './gr-diff-processor'; import {DiffContent} from '../../../types/diff'; import {assert} from '@open-wc/testing'; +import {FILE, GrDiffLineType} from '../../../api/diff'; suite('gr-diff-processor tests', () => { const WHOLE_FILE = -1;
diff --git a/polygerrit-ui/app/embed/diff/gr-diff/gr-diff-group.ts b/polygerrit-ui/app/embed/diff/gr-diff/gr-diff-group.ts index 6d80d78..771e298 100644 --- a/polygerrit-ui/app/embed/diff/gr-diff/gr-diff-group.ts +++ b/polygerrit-ui/app/embed/diff/gr-diff/gr-diff-group.ts
@@ -3,9 +3,8 @@ * Copyright 2016 Google LLC * SPDX-License-Identifier: Apache-2.0 */ -import {BLANK_LINE, GrDiffLine, GrDiffLineType} from './gr-diff-line'; -import {LineRange, Side} from '../../../api/diff'; -import {LineNumber} from './gr-diff-line'; +import {BLANK_LINE, GrDiffLine} from './gr-diff-line'; +import {GrDiffLineType, LineNumber, LineRange, Side} from '../../../api/diff'; import {assertIsDefined, assert} from '../../../utils/common-util'; import {untilRendered} from '../../../utils/dom-util'; import {isDefined} from '../../../types/types'; @@ -133,12 +132,10 @@ for (const line of group.lines) { if ( (line.beforeNumber && - line.beforeNumber !== 'FILE' && - line.beforeNumber !== 'LOST' && + typeof line.beforeNumber === 'number' && line.beforeNumber < leftSplit) || (line.afterNumber && - line.afterNumber !== 'FILE' && - line.afterNumber !== 'LOST' && + typeof line.afterNumber === 'number' && line.afterNumber < rightSplit) ) { before.push(line); @@ -435,7 +432,7 @@ } containsLine(side: Side, line: LineNumber) { - if (line === 'FILE' || line === 'LOST') { + if (typeof line !== 'number') { // For FILE and LOST, beforeNumber and afterNumber are the same return this.lines[0]?.beforeNumber === line; } @@ -462,14 +459,8 @@ } private _updateRangeWithNewLine(line: GrDiffLine) { - if ( - line.beforeNumber === 'FILE' || - line.afterNumber === 'FILE' || - line.beforeNumber === 'LOST' || - line.afterNumber === 'LOST' - ) { - return; - } + if (typeof line.beforeNumber !== 'number') return; + if (typeof line.afterNumber !== 'number') return; if (line.type === GrDiffLineType.ADD || line.type === GrDiffLineType.BOTH) { if ( @@ -505,8 +496,7 @@ // untilRendered() promise. if ( this.skip !== undefined || - lineNumber === 'LOST' || - lineNumber === 'FILE' || + typeof lineNumber !== 'number' || this.type === GrDiffGroupType.CONTEXT_CONTROL ) { return Promise.resolve();
diff --git a/polygerrit-ui/app/embed/diff/gr-diff/gr-diff-group_test.ts b/polygerrit-ui/app/embed/diff/gr-diff/gr-diff-group_test.ts index 7ead68f..bbbb4ad 100644 --- a/polygerrit-ui/app/embed/diff/gr-diff/gr-diff-group_test.ts +++ b/polygerrit-ui/app/embed/diff/gr-diff/gr-diff-group_test.ts
@@ -4,14 +4,14 @@ * SPDX-License-Identifier: Apache-2.0 */ import '../../../test/common-test-setup'; -import {GrDiffLine, GrDiffLineType, BLANK_LINE} from './gr-diff-line'; +import {GrDiffLine, BLANK_LINE} from './gr-diff-line'; import { GrDiffGroup, GrDiffGroupType, hideInContextControl, } from './gr-diff-group'; import {assert} from '@open-wc/testing'; -import {Side} from '../../../api/diff'; +import {FILE, GrDiffLineType, LOST, Side} from '../../../api/diff'; suite('gr-diff-group tests', () => { test('delta line pairs', () => { @@ -297,18 +297,18 @@ test('FILE', () => { const lines: GrDiffLine[] = []; - lines.push(new GrDiffLine(GrDiffLineType.BOTH, 'FILE', 'FILE')); + lines.push(new GrDiffLine(GrDiffLineType.BOTH, FILE, FILE)); const group = new GrDiffGroup({type: GrDiffGroupType.DELTA, lines}); - assert.equal(group.startLine(Side.LEFT), 'FILE'); - assert.equal(group.startLine(Side.RIGHT), 'FILE'); + assert.equal(group.startLine(Side.LEFT), FILE); + assert.equal(group.startLine(Side.RIGHT), FILE); }); test('LOST', () => { const lines: GrDiffLine[] = []; - lines.push(new GrDiffLine(GrDiffLineType.BOTH, 'LOST', 'LOST')); + lines.push(new GrDiffLine(GrDiffLineType.BOTH, LOST, LOST)); const group = new GrDiffGroup({type: GrDiffGroupType.DELTA, lines}); - assert.equal(group.startLine(Side.LEFT), 'LOST'); - assert.equal(group.startLine(Side.RIGHT), 'LOST'); + assert.equal(group.startLine(Side.LEFT), LOST); + assert.equal(group.startLine(Side.RIGHT), LOST); }); }); });
diff --git a/polygerrit-ui/app/embed/diff/gr-diff/gr-diff-line.ts b/polygerrit-ui/app/embed/diff/gr-diff/gr-diff-line.ts index 338a275..1a89207 100644 --- a/polygerrit-ui/app/embed/diff/gr-diff/gr-diff-line.ts +++ b/polygerrit-ui/app/embed/diff/gr-diff/gr-diff-line.ts
@@ -4,17 +4,13 @@ * SPDX-License-Identifier: Apache-2.0 */ import { + FILE, GrDiffLine as GrDiffLineApi, GrDiffLineType, LineNumber, Side, } from '../../../api/diff'; -export {GrDiffLineType}; -export type {LineNumber}; - -export const FILE = 'FILE'; - export class GrDiffLine implements GrDiffLineApi { constructor( readonly type: GrDiffLineType,
diff --git a/polygerrit-ui/app/embed/diff/gr-diff/gr-diff-utils.ts b/polygerrit-ui/app/embed/diff/gr-diff/gr-diff-utils.ts index 669537e..927943c 100644 --- a/polygerrit-ui/app/embed/diff/gr-diff/gr-diff-utils.ts +++ b/polygerrit-ui/app/embed/diff/gr-diff/gr-diff-utils.ts
@@ -4,12 +4,14 @@ * SPDX-License-Identifier: Apache-2.0 */ import {BlameInfo, CommentRange} from '../../../types/common'; -import {FILE, LineNumber} from './gr-diff-line'; import {Side} from '../../../constants/constants'; import {DiffInfo} from '../../../types/diff'; import { DiffPreferencesInfo, DiffResponsiveMode, + FILE, + LOST, + LineNumber, RenderPreferences, } from '../../../api/diff'; import {getBaseUrl} from '../../../utils/url-util'; @@ -103,9 +105,7 @@ } export function lineNumberToNumber(lineNumber?: LineNumber | null): number { - if (!lineNumber) return 0; - if (lineNumber === 'LOST') return 0; - if (lineNumber === 'FILE') return 0; + if (typeof lineNumber !== 'number') return 0; return lineNumber; } @@ -138,15 +138,15 @@ const lineNumberStr = lineEl.getAttribute('data-value'); if (!lineNumberStr) return null; if (lineNumberStr === FILE) return FILE; - if (lineNumberStr === 'LOST') return 'LOST'; + if (lineNumberStr === LOST) return LOST; const lineNumber = Number(lineNumberStr); return Number.isInteger(lineNumber) ? lineNumber : null; } export function getLine(threadEl: HTMLElement): LineNumber { const lineAtt = threadEl.getAttribute('line-num'); - if (lineAtt === 'LOST') return lineAtt; - if (!lineAtt || lineAtt === 'FILE') return FILE; + if (lineAtt === LOST) return lineAtt; + if (!lineAtt || lineAtt === FILE) return FILE; const line = Number(lineAtt); if (isNaN(line)) throw new Error(`cannot parse line number: ${lineAtt}`); if (line < 1) throw new Error(`line number smaller than 1: ${line}`);
diff --git a/polygerrit-ui/app/embed/diff/gr-diff/gr-diff.ts b/polygerrit-ui/app/embed/diff/gr-diff/gr-diff.ts index 3929330..38cb2ba 100644 --- a/polygerrit-ui/app/embed/diff/gr-diff/gr-diff.ts +++ b/polygerrit-ui/app/embed/diff/gr-diff/gr-diff.ts
@@ -12,7 +12,6 @@ import '../gr-syntax-themes/gr-syntax-theme'; import '../gr-ranged-comment-themes/gr-ranged-comment-theme'; import '../gr-ranged-comment-hint/gr-ranged-comment-hint'; -import {LineNumber} from './gr-diff-line'; import { getLine, getLineElByChild, @@ -54,6 +53,8 @@ RenderPreferences, GrDiff as GrDiffApi, DisplayLine, + LineNumber, + LOST, } from '../../../api/diff'; import {isSafari, toggleClass} from '../../../utils/dom-util'; import {assertIsDefined} from '../../../utils/common-util'; @@ -617,7 +618,7 @@ const el = e.target as Element; if ( - el.getAttribute('data-value') !== 'LOST' && + el.getAttribute('data-value') !== LOST && (el.classList.contains('lineNum') || el.classList.contains('lineNumButton')) ) { @@ -980,7 +981,7 @@ } const contentEl = this.diffBuilder.getContentTdByLineEl(lineEl); if (!contentEl) continue; - if (lineNum === 'LOST') { + if (lineNum === LOST) { this.insertPortedCommentsWithoutRangeMessage(contentEl); }
diff --git a/polygerrit-ui/app/embed/diff/gr-ranged-comment-layer/gr-ranged-comment-layer.ts b/polygerrit-ui/app/embed/diff/gr-ranged-comment-layer/gr-ranged-comment-layer.ts index 38eecfa..e2837ab 100644 --- a/polygerrit-ui/app/embed/diff/gr-ranged-comment-layer/gr-ranged-comment-layer.ts +++ b/polygerrit-ui/app/embed/diff/gr-ranged-comment-layer/gr-ranged-comment-layer.ts
@@ -4,12 +4,13 @@ * SPDX-License-Identifier: Apache-2.0 */ import {GrAnnotation} from '../gr-diff-highlight/gr-annotation'; -import {GrDiffLine, GrDiffLineType} from '../gr-diff/gr-diff-line'; +import {GrDiffLine} from '../gr-diff/gr-diff-line'; import {strToClassName} from '../../../utils/dom-util'; import {Side} from '../../../constants/constants'; import {CommentRange} from '../../../types/common'; import {DiffLayer, DiffLayerListener} from '../../../types/types'; import {isLongCommentRange} from '../gr-diff/gr-diff-utils'; +import {GrDiffLineType} from '../../../api/diff'; /** * Enhanced CommentRange by UI state. Interface for incoming ranges set from the @@ -192,7 +193,7 @@ // visible for testing getRangesForLine(line: GrDiffLine, side: Side): CommentRangeLineLayer[] { const lineNum = side === Side.LEFT ? line.beforeNumber : line.afterNumber; - if (lineNum === 'FILE' || lineNum === 'LOST') return []; + if (typeof lineNum !== 'number') return []; const ranges: CommentRangeLineLayer[] = this.rangesMap[side][lineNum] || []; return ranges.map(range => { // Make a copy, so that the normalization below does not mess with
diff --git a/polygerrit-ui/app/embed/diff/gr-ranged-comment-layer/gr-ranged-comment-layer_test.ts b/polygerrit-ui/app/embed/diff/gr-ranged-comment-layer/gr-ranged-comment-layer_test.ts index 7feda47..b90d6f7 100644 --- a/polygerrit-ui/app/embed/diff/gr-ranged-comment-layer/gr-ranged-comment-layer_test.ts +++ b/polygerrit-ui/app/embed/diff/gr-ranged-comment-layer/gr-ranged-comment-layer_test.ts
@@ -11,8 +11,8 @@ GrRangedCommentLayer, } from './gr-ranged-comment-layer'; import {GrAnnotation} from '../gr-diff-highlight/gr-annotation'; -import {GrDiffLine, GrDiffLineType} from '../gr-diff/gr-diff-line'; -import {Side} from '../../../api/diff'; +import {GrDiffLine} from '../gr-diff/gr-diff-line'; +import {GrDiffLineType, Side} from '../../../api/diff'; import {SinonStub} from 'sinon'; import {assert} from '@open-wc/testing';
diff --git a/polygerrit-ui/app/embed/diff/gr-syntax-layer/gr-syntax-layer-worker.ts b/polygerrit-ui/app/embed/diff/gr-syntax-layer/gr-syntax-layer-worker.ts index da08a1f..baa2ab4 100644 --- a/polygerrit-ui/app/embed/diff/gr-syntax-layer/gr-syntax-layer-worker.ts +++ b/polygerrit-ui/app/embed/diff/gr-syntax-layer/gr-syntax-layer-worker.ts
@@ -4,7 +4,7 @@ * SPDX-License-Identifier: Apache-2.0 */ import {GrAnnotation} from '../gr-diff-highlight/gr-annotation'; -import {FILE, GrDiffLine, GrDiffLineType} from '../gr-diff/gr-diff-line'; +import {GrDiffLine} from '../gr-diff/gr-diff-line'; import {DiffFileMetaInfo, DiffInfo} from '../../../types/diff'; import {DiffLayer, DiffLayerListener} from '../../../types/types'; import {Side} from '../../../constants/constants'; @@ -13,6 +13,8 @@ import {HighlightService} from '../../../services/highlight/highlight-service'; import {Provider} from '../../../models/dependency'; import {ReportingService} from '../../../services/gr-reporting/gr-reporting'; +import {GrDiffLineType} from '../../../api/diff'; +import {assert} from '../../../utils/common-util'; const LANGUAGE_MAP = new Map<string, string>([ ['application/dart', 'dart'], @@ -183,8 +185,8 @@ annotate(el: HTMLElement, _: HTMLElement, line: GrDiffLine) { if (!this.enabled) return; - if (line.beforeNumber === FILE || line.afterNumber === FILE) return; - if (line.beforeNumber === 'LOST' || line.afterNumber === 'LOST') return; + if (typeof line.beforeNumber !== 'number') return; + if (typeof line.afterNumber !== 'number') return; let side: Side | undefined; if ( @@ -203,6 +205,7 @@ const isLeft = side === Side.LEFT; const lineNumber = isLeft ? line.beforeNumber : line.afterNumber; + assert(typeof lineNumber === 'number', 'lineNumber must be a number'); const rangesPerLine = isLeft ? this.leftRanges : this.rightRanges; const ranges = rangesPerLine[lineNumber - 1]?.ranges ?? [];
diff --git a/polygerrit-ui/app/utils/comment-util.ts b/polygerrit-ui/app/utils/comment-util.ts index ee1a44c..f5649b6 100644 --- a/polygerrit-ui/app/utils/comment-util.ts +++ b/polygerrit-ui/app/utils/comment-util.ts
@@ -36,6 +36,7 @@ import {FormattedReviewerUpdateInfo} from '../types/types'; import {extractMentionedUsers} from './account-util'; import {assertIsDefined, uuid} from './common-util'; +import {FILE} from '../api/diff'; export function isFormattedReviewerUpdate( message: ChangeMessage @@ -173,7 +174,7 @@ rootId: id(comment), }; if (!comment.line && !comment.range) { - newThread.line = 'FILE'; + newThread.line = FILE; } threads.push(newThread); if (id(comment)) idThreadMap[id(comment)] = newThread;
diff --git a/polygerrit-ui/app/utils/comment-util_test.ts b/polygerrit-ui/app/utils/comment-util_test.ts index 7bf0c1e..713e6df 100644 --- a/polygerrit-ui/app/utils/comment-util_test.ts +++ b/polygerrit-ui/app/utils/comment-util_test.ts
@@ -35,6 +35,7 @@ UrlEncodedCommentId, } from '../types/common'; import {assert} from '@open-wc/testing'; +import {FILE} from '../api/diff'; suite('comment-util', () => { test('isUnresolved', () => { @@ -213,7 +214,7 @@ assert.equal(actualThreads[1].comments.length, 1); assert.deepEqual(actualThreads[1].comments[0], comments[2]); assert.equal(actualThreads[1].patchNum, 1 as RevisionPatchSetNum); - assert.equal(actualThreads[1].line, 'FILE'); + assert.equal(actualThreads[1].line, FILE); }); test('derives patchNum and range', () => {