Skip to content

Commit 3bbd0cd

Browse files
committed
fix(transformer): emit Object instead of void 0 for untyped getter/setter design:type metadata (#20488)
## Summary - Fix `design:type` metadata for getter/setter decorators without type annotations emitting `void 0` instead of `Object` - Use `serialize_type_annotation` (which defaults to `Object`) instead of `serialize_return_type_of_node` (which defaults to `void 0`) for getter `design:type` - Verified output matches TypeScript's behavior Closes #20368 ## Test plan - [x] Added untyped getter/setter test cases to `getter-setter-method` fixture - [x] Verified output matches TypeScript compiler output - [x] All conformance tests pass with no regressions - [x] Clippy clean 🤖 Generated with [Claude Code](https://claude.com/claude-code)
1 parent 6022ddb commit 3bbd0cd

File tree

6 files changed

+80
-40
lines changed

6 files changed

+80
-40
lines changed

crates/oxc_transformer/src/decorator/legacy/metadata.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -224,8 +224,8 @@ impl<'a> Traverse<'a, TransformState<'a>> for LegacyDecoratorMetadata<'a> {
224224
// not for getters or setters.
225225

226226
let (design_type, return_type) = if method.kind.is_get() {
227-
// For getters, the design type is the type of the property
228-
(self.serialize_return_type_of_node(&method.value, ctx), None)
227+
// For getters, the design type is the return type (or `Object` if untyped)
228+
(self.serialize_type_annotation(method.value.return_type.as_ref(), ctx), None)
229229
} else if method.kind.is_set()
230230
&& let Some(param) = method.value.params.items.first()
231231
{

tasks/coverage/snapshots/semantic_misc.snap

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,8 @@ Scope parent mismatch:
8888
after transform: ScopeId(392): Some(ScopeId(391))
8989
rebuilt : ScopeId(496): Some(ScopeId(484))
9090
Symbol reference IDs mismatch for "_decorateMetadata":
91-
after transform: SymbolId(200): [ReferenceId(167), ReferenceId(171), ReferenceId(174), ReferenceId(175), ReferenceId(184), ReferenceId(185), ReferenceId(191), ReferenceId(192), ReferenceId(193), ReferenceId(197), ReferenceId(198), ReferenceId(199), ReferenceId(225), ReferenceId(226), ReferenceId(227), ReferenceId(233), ReferenceId(234), ReferenceId(235), ReferenceId(263), ReferenceId(264), ReferenceId(265), ReferenceId(271), ReferenceId(272), ReferenceId(273), ReferenceId(301), ReferenceId(302), ReferenceId(303), ReferenceId(309), ReferenceId(310), ReferenceId(311), ReferenceId(339), ReferenceId(340), ReferenceId(341), ReferenceId(347), ReferenceId(348), ReferenceId(349), ReferenceId(377), ReferenceId(380), ReferenceId(381), ReferenceId(389), ReferenceId(390), ReferenceId(391), ReferenceId(419), ReferenceId(420), ReferenceId(421), ReferenceId(427), ReferenceId(428), ReferenceId(429), ReferenceId(457), ReferenceId(460), ReferenceId(461), ReferenceId(469), ReferenceId(470), ReferenceId(471), ReferenceId(499), ReferenceId(500), ReferenceId(501), ReferenceId(507), ReferenceId(508), ReferenceId(509), ReferenceId(537), ReferenceId(540), ReferenceId(541), ReferenceId(549), ReferenceId(550), ReferenceId(551), ReferenceId(579), ReferenceId(580), ReferenceId(581), ReferenceId(587), ReferenceId(588), ReferenceId(589), ReferenceId(617), ReferenceId(620), ReferenceId(621), ReferenceId(629), ReferenceId(630), ReferenceId(631), ReferenceId(659), ReferenceId(660), ReferenceId(661), ReferenceId(667), ReferenceId(668), ReferenceId(669), ReferenceId(826), ReferenceId(829), ReferenceId(830), ReferenceId(838), ReferenceId(839), ReferenceId(840), ReferenceId(862), ReferenceId(865), ReferenceId(866), ReferenceId(876), ReferenceId(879), ReferenceId(880), ReferenceId(886), ReferenceId(887), ReferenceId(888), ReferenceId(892), ReferenceId(893), ReferenceId(894), ReferenceId(900), ReferenceId(901), ReferenceId(902), ReferenceId(904), ReferenceId(905), ReferenceId(906), ReferenceId(908), ReferenceId(909), ReferenceId(910), ReferenceId(914), ReferenceId(915), ReferenceId(916), ReferenceId(918), ReferenceId(919), ReferenceId(920), ReferenceId(922), ReferenceId(923), ReferenceId(924), ReferenceId(928), ReferenceId(929), ReferenceId(930), ReferenceId(932), ReferenceId(933), ReferenceId(934), ReferenceId(936), ReferenceId(937), ReferenceId(938)]
92-
rebuilt : SymbolId(7): [ReferenceId(168), ReferenceId(172), ReferenceId(176), ReferenceId(177), ReferenceId(180), ReferenceId(181), ReferenceId(184), ReferenceId(186), ReferenceId(187), ReferenceId(190), ReferenceId(192), ReferenceId(193), ReferenceId(288), ReferenceId(292), ReferenceId(293), ReferenceId(296), ReferenceId(298), ReferenceId(299), ReferenceId(360), ReferenceId(364), ReferenceId(365), ReferenceId(368), ReferenceId(370), ReferenceId(371), ReferenceId(432), ReferenceId(436), ReferenceId(437), ReferenceId(440), ReferenceId(442), ReferenceId(443), ReferenceId(619), ReferenceId(626), ReferenceId(627), ReferenceId(633), ReferenceId(635), ReferenceId(636), ReferenceId(770), ReferenceId(774), ReferenceId(775), ReferenceId(778), ReferenceId(780), ReferenceId(781), ReferenceId(802), ReferenceId(806), ReferenceId(807), ReferenceId(810), ReferenceId(814), ReferenceId(815), ReferenceId(818), ReferenceId(820), ReferenceId(821), ReferenceId(824), ReferenceId(826), ReferenceId(827), ReferenceId(831), ReferenceId(833), ReferenceId(834), ReferenceId(837), ReferenceId(839), ReferenceId(840), ReferenceId(844), ReferenceId(846), ReferenceId(847)]
91+
after transform: SymbolId(200): [ReferenceId(167), ReferenceId(171), ReferenceId(175), ReferenceId(176), ReferenceId(186), ReferenceId(187), ReferenceId(193), ReferenceId(194), ReferenceId(195), ReferenceId(199), ReferenceId(200), ReferenceId(201), ReferenceId(227), ReferenceId(229), ReferenceId(230), ReferenceId(236), ReferenceId(237), ReferenceId(238), ReferenceId(266), ReferenceId(268), ReferenceId(269), ReferenceId(275), ReferenceId(276), ReferenceId(277), ReferenceId(305), ReferenceId(307), ReferenceId(308), ReferenceId(314), ReferenceId(315), ReferenceId(316), ReferenceId(344), ReferenceId(346), ReferenceId(347), ReferenceId(353), ReferenceId(354), ReferenceId(355), ReferenceId(383), ReferenceId(387), ReferenceId(388), ReferenceId(396), ReferenceId(397), ReferenceId(398), ReferenceId(426), ReferenceId(428), ReferenceId(429), ReferenceId(435), ReferenceId(436), ReferenceId(437), ReferenceId(465), ReferenceId(469), ReferenceId(470), ReferenceId(478), ReferenceId(479), ReferenceId(480), ReferenceId(508), ReferenceId(510), ReferenceId(511), ReferenceId(517), ReferenceId(518), ReferenceId(519), ReferenceId(547), ReferenceId(551), ReferenceId(552), ReferenceId(560), ReferenceId(561), ReferenceId(562), ReferenceId(590), ReferenceId(592), ReferenceId(593), ReferenceId(599), ReferenceId(600), ReferenceId(601), ReferenceId(629), ReferenceId(633), ReferenceId(634), ReferenceId(642), ReferenceId(643), ReferenceId(644), ReferenceId(672), ReferenceId(674), ReferenceId(675), ReferenceId(681), ReferenceId(682), ReferenceId(683), ReferenceId(840), ReferenceId(844), ReferenceId(845), ReferenceId(853), ReferenceId(854), ReferenceId(855), ReferenceId(877), ReferenceId(881), ReferenceId(882), ReferenceId(892), ReferenceId(896), ReferenceId(897), ReferenceId(903), ReferenceId(904), ReferenceId(905), ReferenceId(909), ReferenceId(910), ReferenceId(911), ReferenceId(917), ReferenceId(918), ReferenceId(919), ReferenceId(921), ReferenceId(922), ReferenceId(923), ReferenceId(925), ReferenceId(926), ReferenceId(927), ReferenceId(931), ReferenceId(932), ReferenceId(933), ReferenceId(935), ReferenceId(936), ReferenceId(937), ReferenceId(939), ReferenceId(940), ReferenceId(941), ReferenceId(945), ReferenceId(946), ReferenceId(947), ReferenceId(949), ReferenceId(950), ReferenceId(951), ReferenceId(953), ReferenceId(954), ReferenceId(955)]
92+
rebuilt : SymbolId(7): [ReferenceId(168), ReferenceId(172), ReferenceId(176), ReferenceId(178), ReferenceId(181), ReferenceId(183), ReferenceId(186), ReferenceId(188), ReferenceId(189), ReferenceId(192), ReferenceId(194), ReferenceId(195), ReferenceId(290), ReferenceId(294), ReferenceId(296), ReferenceId(299), ReferenceId(301), ReferenceId(302), ReferenceId(363), ReferenceId(367), ReferenceId(369), ReferenceId(372), ReferenceId(374), ReferenceId(375), ReferenceId(436), ReferenceId(440), ReferenceId(442), ReferenceId(445), ReferenceId(447), ReferenceId(448), ReferenceId(624), ReferenceId(631), ReferenceId(633), ReferenceId(639), ReferenceId(641), ReferenceId(642), ReferenceId(776), ReferenceId(780), ReferenceId(782), ReferenceId(785), ReferenceId(787), ReferenceId(788), ReferenceId(809), ReferenceId(813), ReferenceId(815), ReferenceId(818), ReferenceId(822), ReferenceId(824), ReferenceId(827), ReferenceId(829), ReferenceId(830), ReferenceId(833), ReferenceId(835), ReferenceId(836), ReferenceId(840), ReferenceId(842), ReferenceId(843), ReferenceId(846), ReferenceId(848), ReferenceId(849), ReferenceId(853), ReferenceId(855), ReferenceId(856)]
9393
Symbol span mismatch for "Inner5":
9494
after transform: SymbolId(57): Span { start: 4573, end: 4579 }
9595
rebuilt : SymbolId(100): Span { start: 0, end: 0 }
@@ -103,11 +103,11 @@ Symbol span mismatch for "Inner4":
103103
after transform: SymbolId(328): Span { start: 0, end: 0 }
104104
rebuilt : SymbolId(293): Span { start: 12166, end: 12172 }
105105
Unresolved reference IDs mismatch for "Function":
106-
after transform: [ReferenceId(190), ReferenceId(196), ReferenceId(232), ReferenceId(270), ReferenceId(308), ReferenceId(346), ReferenceId(388), ReferenceId(426), ReferenceId(468), ReferenceId(506), ReferenceId(548), ReferenceId(586), ReferenceId(628), ReferenceId(666), ReferenceId(837), ReferenceId(885), ReferenceId(891), ReferenceId(899), ReferenceId(903), ReferenceId(907), ReferenceId(913), ReferenceId(917), ReferenceId(921), ReferenceId(927), ReferenceId(931), ReferenceId(935)]
107-
rebuilt : [ReferenceId(185), ReferenceId(191), ReferenceId(297), ReferenceId(369), ReferenceId(441), ReferenceId(634), ReferenceId(779), ReferenceId(819), ReferenceId(825), ReferenceId(832), ReferenceId(838), ReferenceId(845)]
106+
after transform: [ReferenceId(192), ReferenceId(198), ReferenceId(235), ReferenceId(274), ReferenceId(313), ReferenceId(352), ReferenceId(395), ReferenceId(434), ReferenceId(477), ReferenceId(516), ReferenceId(559), ReferenceId(598), ReferenceId(641), ReferenceId(680), ReferenceId(852), ReferenceId(902), ReferenceId(908), ReferenceId(916), ReferenceId(920), ReferenceId(924), ReferenceId(930), ReferenceId(934), ReferenceId(938), ReferenceId(944), ReferenceId(948), ReferenceId(952)]
107+
rebuilt : [ReferenceId(187), ReferenceId(193), ReferenceId(300), ReferenceId(373), ReferenceId(446), ReferenceId(640), ReferenceId(786), ReferenceId(828), ReferenceId(834), ReferenceId(841), ReferenceId(847), ReferenceId(854)]
108108
Unresolved reference IDs mismatch for "Object":
109-
after transform: [ReferenceId(166), ReferenceId(170), ReferenceId(224), ReferenceId(262), ReferenceId(300), ReferenceId(338), ReferenceId(376), ReferenceId(418), ReferenceId(456), ReferenceId(498), ReferenceId(536), ReferenceId(578), ReferenceId(616), ReferenceId(658), ReferenceId(825), ReferenceId(861), ReferenceId(875)]
110-
rebuilt : [ReferenceId(169), ReferenceId(173), ReferenceId(289), ReferenceId(361), ReferenceId(433), ReferenceId(620), ReferenceId(771), ReferenceId(803), ReferenceId(811)]
109+
after transform: [ReferenceId(166), ReferenceId(170), ReferenceId(174), ReferenceId(185), ReferenceId(226), ReferenceId(228), ReferenceId(265), ReferenceId(267), ReferenceId(304), ReferenceId(306), ReferenceId(343), ReferenceId(345), ReferenceId(382), ReferenceId(386), ReferenceId(425), ReferenceId(427), ReferenceId(464), ReferenceId(468), ReferenceId(507), ReferenceId(509), ReferenceId(546), ReferenceId(550), ReferenceId(589), ReferenceId(591), ReferenceId(628), ReferenceId(632), ReferenceId(671), ReferenceId(673), ReferenceId(839), ReferenceId(843), ReferenceId(876), ReferenceId(880), ReferenceId(891), ReferenceId(895)]
110+
rebuilt : [ReferenceId(169), ReferenceId(173), ReferenceId(177), ReferenceId(182), ReferenceId(291), ReferenceId(295), ReferenceId(364), ReferenceId(368), ReferenceId(437), ReferenceId(441), ReferenceId(625), ReferenceId(632), ReferenceId(777), ReferenceId(781), ReferenceId(810), ReferenceId(814), ReferenceId(819), ReferenceId(823)]
111111

112112
semantic Error: tasks/coverage/misc/pass/oxc-13284.ts
113113
Symbol reference IDs mismatch for "_super":

0 commit comments

Comments
 (0)