Skip to content

Commit 2635102

Browse files
authored
Deprecate ScriptElementKind.jsxAttribute (microsoft#47414)
1 parent d0b3ac3 commit 2635102

21 files changed

+61
-68
lines changed

src/services/symbolDisplay.ts

+2-12
Original file line numberDiff line numberDiff line change
@@ -83,18 +83,8 @@ namespace ts.SymbolDisplay {
8383
}
8484
return unionPropertyKind;
8585
}
86-
// If we requested completions after `x.` at the top-level, we may be at a source file location.
87-
switch (location.parent && location.parent.kind) {
88-
// If we've typed a character of the attribute name, will be 'JsxAttribute', else will be 'JsxOpeningElement'.
89-
case SyntaxKind.JsxOpeningElement:
90-
case SyntaxKind.JsxElement:
91-
case SyntaxKind.JsxSelfClosingElement:
92-
return location.kind === SyntaxKind.Identifier ? ScriptElementKind.memberVariableElement : ScriptElementKind.jsxAttribute;
93-
case SyntaxKind.JsxAttribute:
94-
return ScriptElementKind.jsxAttribute;
95-
default:
96-
return ScriptElementKind.memberVariableElement;
97-
}
86+
87+
return ScriptElementKind.memberVariableElement;
9888
}
9989

10090
return ScriptElementKind.unknown;

src/services/types.ts

+1
Original file line numberDiff line numberDiff line change
@@ -1459,6 +1459,7 @@ namespace ts {
14591459

14601460
/**
14611461
* <JsxTagName attribute1 attribute2={0} />
1462+
* @deprecated
14621463
*/
14631464
jsxAttribute = "JSX attribute",
14641465

tests/baselines/reference/api/tsserverlibrary.d.ts

+1
Original file line numberDiff line numberDiff line change
@@ -6594,6 +6594,7 @@ declare namespace ts {
65946594
externalModuleName = "external module name",
65956595
/**
65966596
* <JsxTagName attribute1 attribute2={0} />
6597+
* @deprecated
65976598
*/
65986599
jsxAttribute = "JSX attribute",
65996600
/** String literal */

tests/baselines/reference/api/typescript.d.ts

+1
Original file line numberDiff line numberDiff line change
@@ -6594,6 +6594,7 @@ declare namespace ts {
65946594
externalModuleName = "external module name",
65956595
/**
65966596
* <JsxTagName attribute1 attribute2={0} />
6597+
* @deprecated
65976598
*/
65986599
jsxAttribute = "JSX attribute",
65996600
/** String literal */

tests/cases/fourslash/completionsInJsxTag.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,16 @@ verify.completions({
2626
exact: [
2727
{
2828
name: "aria-label",
29-
text: "(JSX attribute) \"aria-label\": string",
29+
text: "(property) \"aria-label\": string",
3030
documentation: "Label docs",
31-
kind: "JSX attribute",
31+
kind: "property",
3232
kindModifiers: "declare",
3333
},
3434
{
3535
name: "foo",
36-
text: "(JSX attribute) foo: string",
36+
text: "(property) foo: string",
3737
documentation: "Doc",
38-
kind: "JSX attribute",
38+
kind: "property",
3939
kindModifiers: "declare",
4040
},
4141
],

tests/cases/fourslash/completionsJsxAttribute.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
////<div /**/></div>;
1818

1919
const exact: ReadonlyArray<FourSlashInterface.ExpectedCompletionEntry> = [
20-
{ name: "bar", kind: "JSX attribute", kindModifiers: "declare", text: "(JSX attribute) bar: string" },
21-
{ name: "foo", kind: "JSX attribute", kindModifiers: "declare", text: "(JSX attribute) foo: boolean", documentation: "Doc" },
20+
{ name: "bar", kind: "property", kindModifiers: "declare", text: "(property) bar: string" },
21+
{ name: "foo", kind: "property", kindModifiers: "declare", text: "(property) foo: boolean", documentation: "Doc" },
2222
];
2323
verify.completions({ marker: "", exact });
2424
edit.insert("f");

tests/cases/fourslash/completionsJsxAttributeGeneric.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
marker,
1212
exact: [{
1313
name: 'name',
14-
kind: 'JSX attribute',
14+
kind: 'property',
1515
kindModifiers: 'declare'
1616
}]
1717
})

tests/cases/fourslash/completionsJsxAttributeInitializer.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ verify.completions({
99
marker: "",
1010
includes: [
1111
{ name: "x", text: "(parameter) x: number", kind: "parameter", insertText: "{x}" },
12-
{ name: "p", text: "(JSX attribute) p: number", kind: "JSX attribute", insertText: "{this.p}", sortText: completion.SortText.SuggestedClassMembers, source: completion.CompletionSource.ThisProperty },
13-
{ name: "a b", text: '(JSX attribute) "a b": number', kind: "JSX attribute", insertText: '{this["a b"]}', sortText: completion.SortText.SuggestedClassMembers, source: completion.CompletionSource.ThisProperty },
12+
{ name: "p", text: "(property) p: number", kind: "property", insertText: "{this.p}", sortText: completion.SortText.SuggestedClassMembers, source: completion.CompletionSource.ThisProperty },
13+
{ name: "a b", text: '(property) "a b": number', kind: "property", insertText: '{this["a b"]}', sortText: completion.SortText.SuggestedClassMembers, source: completion.CompletionSource.ThisProperty },
1414
],
1515
preferences: {
1616
includeInsertTextCompletions: true,

tests/cases/fourslash/jsxAttributeSnippetCompletionClosed.ts

+11-11
Original file line numberDiff line numberDiff line change
@@ -60,15 +60,15 @@ var preferences: FourSlashInterface.UserPreferences = {
6060
};
6161

6262
verify.completions(
63-
{ marker: "1", preferences, includes: { name: "className", insertText: "className={$1}", text: "(JSX attribute) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
64-
{ marker: "2", preferences, includes: { name: "className", insertText: "className={$1}", text: "(JSX attribute) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
65-
{ marker: "3", preferences, includes: { name: "className", insertText: "className={$1}", text: "(JSX attribute) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
66-
{ marker: "4", preferences, includes: { name: "className", insertText: "className={$1}", text: "(JSX attribute) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
67-
{ marker: "5", preferences, includes: { name: "className", insertText: "className={$1}", text: "(JSX attribute) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
68-
{ marker: "6", preferences, includes: { name: "className", insertText: "className={$1}", text: "(JSX attribute) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
69-
{ marker: "7", preferences, includes: { name: "className", insertText: "className={$1}", text: "(JSX attribute) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
70-
{ marker: "8", preferences, includes: { name: "className", insertText: "className={$1}", text: "(JSX attribute) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
71-
{ marker: "9", preferences, includes: { name: "className", insertText: "className={$1}", text: "(JSX attribute) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
72-
{ marker: "10", preferences, includes: { name: "className", insertText: "className={$1}", text: "(JSX attribute) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
73-
{ marker: "11", preferences, includes: { name: "className", insertText: "className={$1}", text: "(JSX attribute) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
63+
{ marker: "1", preferences, includes: { name: "className", insertText: "className={$1}", text: "(property) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
64+
{ marker: "2", preferences, includes: { name: "className", insertText: "className={$1}", text: "(property) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
65+
{ marker: "3", preferences, includes: { name: "className", insertText: "className={$1}", text: "(property) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
66+
{ marker: "4", preferences, includes: { name: "className", insertText: "className={$1}", text: "(property) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
67+
{ marker: "5", preferences, includes: { name: "className", insertText: "className={$1}", text: "(property) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
68+
{ marker: "6", preferences, includes: { name: "className", insertText: "className={$1}", text: "(property) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
69+
{ marker: "7", preferences, includes: { name: "className", insertText: "className={$1}", text: "(property) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
70+
{ marker: "8", preferences, includes: { name: "className", insertText: "className={$1}", text: "(property) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
71+
{ marker: "9", preferences, includes: { name: "className", insertText: "className={$1}", text: "(property) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
72+
{ marker: "10", preferences, includes: { name: "className", insertText: "className={$1}", text: "(property) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
73+
{ marker: "11", preferences, includes: { name: "className", insertText: "className={$1}", text: "(property) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
7474
)

tests/cases/fourslash/jsxAttributeSnippetCompletionUnclosed.ts

+9-9
Original file line numberDiff line numberDiff line change
@@ -60,15 +60,15 @@ var preferences: FourSlashInterface.UserPreferences = {
6060
};
6161

6262
verify.completions(
63-
{ marker: "1", preferences, includes: { name: "className", insertText: "className={$1}", text: "(JSX attribute) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
64-
{ marker: "2", preferences, includes: { name: "className", insertText: "className={$1}", text: "(JSX attribute) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
65-
{ marker: "3", preferences, includes: { name: "className", insertText: "className={$1}", text: "(JSX attribute) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
66-
{ marker: "4", preferences, includes: { name: "className", insertText: "className={$1}", text: "(JSX attribute) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
67-
{ marker: "5", preferences, includes: { name: "className", insertText: "className={$1}", text: "(JSX attribute) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
68-
{ marker: "6", preferences, includes: { name: "className", insertText: "className={$1}", text: "(JSX attribute) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
63+
{ marker: "1", preferences, includes: { name: "className", insertText: "className={$1}", text: "(property) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
64+
{ marker: "2", preferences, includes: { name: "className", insertText: "className={$1}", text: "(property) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
65+
{ marker: "3", preferences, includes: { name: "className", insertText: "className={$1}", text: "(property) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
66+
{ marker: "4", preferences, includes: { name: "className", insertText: "className={$1}", text: "(property) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
67+
{ marker: "5", preferences, includes: { name: "className", insertText: "className={$1}", text: "(property) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
68+
{ marker: "6", preferences, includes: { name: "className", insertText: "className={$1}", text: "(property) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
6969
{ marker: "7", preferences, includes: { name: "className", insertText: "className={$1}", text: "(property) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
70-
{ marker: "8", preferences, includes: { name: "className", insertText: "className={$1}", text: "(JSX attribute) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
71-
{ marker: "9", preferences, includes: { name: "className", insertText: "className={$1}", text: "(JSX attribute) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
70+
{ marker: "8", preferences, includes: { name: "className", insertText: "className={$1}", text: "(property) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
71+
{ marker: "9", preferences, includes: { name: "className", insertText: "className={$1}", text: "(property) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
7272
{ marker: "10", preferences, includes: { name: "className", insertText: "className={$1}", text: "(property) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
73-
{ marker: "11", preferences, includes: { name: "className", insertText: "className={$1}", text: "(JSX attribute) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
73+
{ marker: "11", preferences, includes: { name: "className", insertText: "className={$1}", text: "(property) className?: string", isSnippet: true, sortText: completion.SortText.OptionalMember } },
7474
)

tests/cases/fourslash/jsxGenericQuickInfo.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,6 @@
2929
verify.quickInfoAt("0", "(property) PropsA<number>.renderItem: (item: number) => string");
3030
verify.quickInfoAt("1", "(parameter) item: number");
3131
verify.quickInfoAt("2", `(property) PropsA<T>.name: "A"`, 'comments for A');
32-
verify.quickInfoAt("3", "(JSX attribute) PropsA<number>.renderItem: (item: number) => string");
32+
verify.quickInfoAt("3", "(property) PropsA<number>.renderItem: (item: number) => string");
3333
verify.quickInfoAt("4", "(parameter) item: number");
34-
verify.quickInfoAt("5", `(JSX attribute) PropsA<T>.name: "A"`, 'comments for A');
34+
verify.quickInfoAt("5", `(property) PropsA<T>.name: "A"`, 'comments for A');

tests/cases/fourslash/jsxTagNameCompletionClosed.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ var preferences: FourSlashInterface.UserPreferences = {
4747
verify.completions(
4848
{ marker: "1", preferences, includes: { name: "Foo", text: "const Foo: NestedInterface" } },
4949
{ marker: "2", preferences, includes: { name: "Foo", text: "const Foo: NestedInterface" } },
50-
{ marker: "3", preferences, includes: { name: "Foo", text: "(JSX attribute) NestedInterface.Foo: NestedInterface" } },
50+
{ marker: "3", preferences, includes: { name: "Foo", text: "(property) NestedInterface.Foo: NestedInterface" } },
5151
{ marker: "4", preferences, includes: { name: "Foo", text: "(property) NestedInterface.Foo: NestedInterface" } },
52-
{ marker: "5", preferences, includes: { name: "Foo", text: "(JSX attribute) NestedInterface.Foo: NestedInterface" } },
52+
{ marker: "5", preferences, includes: { name: "Foo", text: "(property) NestedInterface.Foo: NestedInterface" } },
5353
{ marker: "6", preferences, includes: { name: "Foo", text: "(property) NestedInterface.Foo: NestedInterface" } },
5454
)

tests/cases/fourslash/jsxTagNameCompletionUnclosed.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ var preferences: FourSlashInterface.UserPreferences = {
4747
verify.completions(
4848
{ marker: "1", preferences, includes: { name: "Foo", text: "const Foo: NestedInterface" } },
4949
{ marker: "2", preferences, includes: { name: "Foo", text: "const Foo: NestedInterface" } },
50-
{ marker: "3", preferences, includes: { name: "Foo", text: "(JSX attribute) NestedInterface.Foo: NestedInterface" } },
50+
{ marker: "3", preferences, includes: { name: "Foo", text: "(property) NestedInterface.Foo: NestedInterface" } },
5151
{ marker: "4", preferences, includes: { name: "Foo", text: "(property) NestedInterface.Foo: NestedInterface" } },
52-
{ marker: "5", preferences, includes: { name: "Foo", text: "(JSX attribute) NestedInterface.Foo: NestedInterface" } },
52+
{ marker: "5", preferences, includes: { name: "Foo", text: "(property) NestedInterface.Foo: NestedInterface" } },
5353
{ marker: "6", preferences, includes: { name: "Foo", text: "(property) NestedInterface.Foo: NestedInterface" } },
5454
)

tests/cases/fourslash/jsxTagNameCompletionUnderElementClosed.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ var preferences: FourSlashInterface.UserPreferences = {
2929
};
3030

3131
verify.completions(
32-
{ marker: "1", preferences, includes: { name: "button", text: "(JSX attribute) JSX.IntrinsicElements.button: any" } },
33-
{ marker: "2", preferences, includes: { name: "button", text: "(JSX attribute) JSX.IntrinsicElements.button: any" } },
34-
{ marker: "3", preferences, includes: { name: "button", text: "(JSX attribute) JSX.IntrinsicElements.button: any" } },
32+
{ marker: "1", preferences, includes: { name: "button", text: "(property) JSX.IntrinsicElements.button: any" } },
33+
{ marker: "2", preferences, includes: { name: "button", text: "(property) JSX.IntrinsicElements.button: any" } },
34+
{ marker: "3", preferences, includes: { name: "button", text: "(property) JSX.IntrinsicElements.button: any" } },
3535
)

tests/cases/fourslash/jsxTagNameCompletionUnderElementUnclosed.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ var preferences: FourSlashInterface.UserPreferences = {
2929
};
3030

3131
verify.completions(
32-
{ marker: "1", preferences, includes: { name: "button", text: "(JSX attribute) JSX.IntrinsicElements.button: any" } },
33-
{ marker: "2", preferences, includes: { name: "button", text: "(JSX attribute) JSX.IntrinsicElements.button: any" } },
34-
{ marker: "3", preferences, includes: { name: "button", text: "(JSX attribute) JSX.IntrinsicElements.button: any" } },
32+
{ marker: "1", preferences, includes: { name: "button", text: "(property) JSX.IntrinsicElements.button: any" } },
33+
{ marker: "2", preferences, includes: { name: "button", text: "(property) JSX.IntrinsicElements.button: any" } },
34+
{ marker: "3", preferences, includes: { name: "button", text: "(property) JSX.IntrinsicElements.button: any" } },
3535
)

tests/cases/fourslash/tsxCompletion12.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,14 @@ verify.completions(
2828
exact: [
2929
"propString",
3030
"propx",
31-
{ name: "optional", kind: "JSX attribute", kindModifiers: "optional", sortText: completion.SortText.OptionalMember },
31+
{ name: "optional", kind: "property", kindModifiers: "optional", sortText: completion.SortText.OptionalMember },
3232
]
3333
},
3434
{
3535
marker: "3",
3636
exact: [
3737
"propString",
38-
{ name: "optional", kind: "JSX attribute", kindModifiers: "optional", sortText: completion.SortText.OptionalMember },
38+
{ name: "optional", kind: "property", kindModifiers: "optional", sortText: completion.SortText.OptionalMember },
3939
]
4040
},
4141
{ marker: "4", exact: "propString" },

tests/cases/fourslash/tsxCompletion13.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -36,23 +36,23 @@ verify.completions(
3636
exact: [
3737
"goTo",
3838
"onClick",
39-
{ name: "children", kind: "JSX attribute", kindModifiers: "optional", sortText: completion.SortText.OptionalMember },
40-
{ name: "className", kind: "JSX attribute", kindModifiers: "optional", sortText: completion.SortText.OptionalMember },
39+
{ name: "children", kind: "property", kindModifiers: "optional", sortText: completion.SortText.OptionalMember },
40+
{ name: "className", kind: "property", kindModifiers: "optional", sortText: completion.SortText.OptionalMember },
4141
]
4242
},
4343
{
4444
marker: "2",
4545
exact: [
4646
"goTo",
4747
"onClick",
48-
{ name: "className", kind: "JSX attribute", kindModifiers: "optional", sortText: completion.SortText.OptionalMember },
48+
{ name: "className", kind: "property", kindModifiers: "optional", sortText: completion.SortText.OptionalMember },
4949
]
5050
},
5151
{
5252
marker: ["3", "4", "5"],
5353
exact: [
54-
{ name: "children", kind: "JSX attribute", kindModifiers: "optional", sortText: completion.SortText.OptionalMember },
55-
{ name: "className", kind: "JSX attribute", kindModifiers: "optional", sortText: completion.SortText.OptionalMember },
54+
{ name: "children", kind: "property", kindModifiers: "optional", sortText: completion.SortText.OptionalMember },
55+
{ name: "className", kind: "property", kindModifiers: "optional", sortText: completion.SortText.OptionalMember },
5656
]
5757
},
5858
);

0 commit comments

Comments
 (0)