@@ -4,8 +4,10 @@ import {
44 computed ,
55 emitSymbol ,
66 For ,
7+ isNamekey ,
78 Match ,
89 moveTakenMembersTo ,
10+ Namekey ,
911 Refkey ,
1012 Switch ,
1113 takeSymbols ,
@@ -83,7 +85,7 @@ export function ObjectExpression(props: ObjectExpressionProps) {
8385}
8486
8587export interface ObjectPropertyProps {
86- name ?: string ;
88+ name ?: string | Namekey ;
8789 nameExpression ?: Children ;
8890 value ?: Children ;
8991 jsValue ?: unknown ;
@@ -92,22 +94,12 @@ export interface ObjectPropertyProps {
9294}
9395
9496export function ObjectProperty ( props : ObjectPropertyProps ) {
95- let name ;
96- let symbolName = props . name ;
97- if ( props . name ) {
98- const namer = useTSNamePolicy ( ) ;
99- symbolName = namer . getName ( props . name , "object-member-data" ) ;
100- name = < PropertyName name = { symbolName } /> ;
101- } else if ( props . nameExpression ) {
102- name = < > [{ props . nameExpression } ]</ > ;
103- } else {
104- throw new Error ( "ObjectProperty either a name or a nameExpression." ) ;
105- }
106-
10797 let sym = undefined ;
108- if ( props . refkey && props . name ) {
109- sym = createStaticMemberSymbol ( symbolName ! , {
98+
99+ if ( isNamekey ( props . name ) || ( props . refkey && props . name ) ) {
100+ sym = createStaticMemberSymbol ( props . name , {
110101 refkeys : props . refkey ,
102+ namePolicy : useTSNamePolicy ( ) . for ( "object-member-data" ) ,
111103 } ) ;
112104
113105 moveTakenMembersTo ( sym ) ;
@@ -117,6 +109,18 @@ export function ObjectProperty(props: ObjectPropertyProps) {
117109 takeSymbols ( ) ;
118110 }
119111
112+ let name : Children ;
113+ if ( sym ) {
114+ name = < PropertyName name = { sym . name } /> ;
115+ } else if ( props . name ) {
116+ // can't be a namekey if we get here
117+ name = < PropertyName name = { props . name as string } /> ;
118+ } else if ( props . nameExpression ) {
119+ name = < > [{ props . nameExpression } ]</ > ;
120+ } else {
121+ throw new Error ( "ObjectProperty either a name or a nameExpression." ) ;
122+ }
123+
120124 let value ;
121125 if ( props . value ) {
122126 value = props . value ;
0 commit comments