Skip to content

Commit 1efc276

Browse files
committed
Show labels for methods only classified in test and generated
1 parent 94015a0 commit 1efc276

File tree

2 files changed

+65
-11
lines changed

2 files changed

+65
-11
lines changed

extensions/ql-vscode/src/stories/data-extensions-editor/DataExtensionsEditor.stories.tsx

Lines changed: 34 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,17 @@ DataExtensionsEditor.args = {
116116
},
117117
classification: CallClassification.Source,
118118
},
119+
{
120+
label: "println(...)",
121+
url: {
122+
uri: "file:/home/runner/work/sql2o-example/sql2o-example/src/test/java/org/example/HelloControllerTest.java",
123+
startLine: 29,
124+
startColumn: 9,
125+
endLine: 29,
126+
endColumn: 49,
127+
},
128+
classification: CallClassification.Test,
129+
},
119130
],
120131
},
121132
{
@@ -170,17 +181,30 @@ DataExtensionsEditor.args = {
170181
methodParameters: "(String)",
171182
supported: false,
172183
supportedType: "none",
173-
usages: Array(4).fill({
174-
label: "new Sql2o(...)",
175-
url: {
176-
uri: "file:/home/runner/work/sql2o-example/sql2o-example/src/main/java/org/example/HelloController.java",
177-
startLine: 23,
178-
startColumn: 23,
179-
endLine: 23,
180-
endColumn: 36,
184+
usages: [
185+
...Array(4).fill({
186+
label: "new Sql2o(...)",
187+
url: {
188+
uri: "file:/home/runner/work/sql2o-example/sql2o-example/src/main/java/org/example/HelloController.java",
189+
startLine: 23,
190+
startColumn: 23,
191+
endLine: 23,
192+
endColumn: 36,
193+
},
194+
classification: CallClassification.Test,
195+
}),
196+
{
197+
label: "new Sql2o(...)",
198+
url: {
199+
uri: "file:/home/runner/work/sql2o-example/sql2o-example/build/generated/java/org/example/HelloControllerGenerated.java",
200+
startLine: 23,
201+
startColumn: 23,
202+
endLine: 23,
203+
endColumn: 36,
204+
},
205+
classification: CallClassification.Generated,
181206
},
182-
classification: CallClassification.Source,
183-
}),
207+
],
184208
},
185209
],
186210
initialModeledMethods: {

extensions/ql-vscode/src/view/data-extensions-editor/MethodRow.tsx

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,17 @@ import {
33
VSCodeDataGridCell,
44
VSCodeDataGridRow,
55
VSCodeLink,
6+
VSCodeTag,
67
} from "@vscode/webview-ui-toolkit/react";
78
import * as React from "react";
89
import { ChangeEvent, useCallback, useMemo } from "react";
910
import styled from "styled-components";
1011
import { vscode } from "../vscode-api";
1112

12-
import { ExternalApiUsage } from "../../data-extensions-editor/external-api-usage";
13+
import {
14+
CallClassification,
15+
ExternalApiUsage,
16+
} from "../../data-extensions-editor/external-api-usage";
1317
import {
1418
ModeledMethod,
1519
ModeledMethodType,
@@ -39,6 +43,12 @@ const ViewLink = styled(VSCodeLink)`
3943
white-space: nowrap;
4044
`;
4145

46+
const ClassificationsContainer = styled.div`
47+
display: inline-flex;
48+
flex-direction: row;
49+
gap: 0.5rem;
50+
`;
51+
4252
const modelTypeOptions: Array<{ value: ModeledMethodType; label: string }> = [
4353
{ value: "none", label: "Unmodeled" },
4454
{ value: "source", label: "Source" },
@@ -194,6 +204,20 @@ function ModelableMethodRow(props: Props) {
194204
: undefined;
195205
const showKindCell = predicate?.supportedKinds;
196206

207+
const allUsageClassifications = useMemo(
208+
() =>
209+
new Set(
210+
externalApiUsage.usages.map((usage) => {
211+
return usage.classification;
212+
}),
213+
),
214+
[externalApiUsage.usages],
215+
);
216+
217+
const inSource = allUsageClassifications.has(CallClassification.Source);
218+
const inTest = allUsageClassifications.has(CallClassification.Test);
219+
const inGenerated = allUsageClassifications.has(CallClassification.Generated);
220+
197221
return (
198222
<VSCodeDataGridRow>
199223
<ApiOrMethodCell gridColumn={1}>
@@ -205,6 +229,12 @@ function ModelableMethodRow(props: Props) {
205229
</UsagesButton>
206230
)}
207231
<ViewLink onClick={jumpToUsage}>View</ViewLink>
232+
{!inSource && (
233+
<ClassificationsContainer>
234+
{inTest && <VSCodeTag>Test</VSCodeTag>}
235+
{inGenerated && <VSCodeTag>Generated</VSCodeTag>}
236+
</ClassificationsContainer>
237+
)}
208238
</ApiOrMethodCell>
209239
<VSCodeDataGridCell gridColumn={2}>
210240
<Dropdown

0 commit comments

Comments
 (0)