Skip to content

Commit ed45ff3

Browse files
rchen152facebook-github-bot
authored andcommitted
Return early from get_typed_dict_value_type() if we see ExtraItems::Default
Summary: This saves some work in the common case of a legacy open TypedDict. Reviewed By: samwgoldman Differential Revision: D80870290 fbshipit-source-id: 972fa5fc2496eecaadf3d73185799b38cbe53f2d
1 parent 59828df commit ed45ff3

1 file changed

Lines changed: 6 additions & 1 deletion

File tree

pyrefly/lib/alt/class/typed_dict.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -623,7 +623,12 @@ impl<'a, Ans: LookupAnswer> AnswersSolver<'a, Ans> {
623623
cls: &Class,
624624
fields: &SmallMap<Name, bool>,
625625
) -> Type {
626-
let extra = self.typed_dict_extra_items(cls).extra_item(self.stdlib).ty;
626+
let extra_items = self.typed_dict_extra_items(cls);
627+
if matches!(extra_items, ExtraItems::Default) {
628+
// extra_items defaults to `ReadOnly[object]`, and `object | ...` simplifies to `object`.
629+
return self.stdlib.object().clone().to_type();
630+
}
631+
let extra = extra_items.extra_item(self.stdlib).ty;
627632
let mut values = self
628633
.names_to_fields(cls, fields)
629634
.map(|(_, field)| field.ty)

0 commit comments

Comments
 (0)