Skip to content

Commit fbb9309

Browse files
committed
rename method and add comments
1 parent 6843be5 commit fbb9309

File tree

1 file changed

+21
-17
lines changed

1 file changed

+21
-17
lines changed

crates/ty_python_semantic/src/types/display.rs

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -134,24 +134,24 @@ impl<'db> AmbiguousClassCollector<'db> {
134134
match value {
135135
AmbiguityState::Unambiguous(existing) => {
136136
if *existing != class {
137-
let class_parents = class.class_parents(db);
138-
if existing.class_parents(db) == class_parents {
137+
let qualified_name_components = class.qualified_name_components(db);
138+
if existing.qualified_name_components(db) == qualified_name_components {
139139
*value = AmbiguityState::RequiresFileAndLineNumber;
140140
} else {
141141
*value = AmbiguityState::RequiresFullyQualifiedName {
142142
class,
143-
class_parents,
143+
qualified_name_components,
144144
};
145145
}
146146
}
147147
}
148148
AmbiguityState::RequiresFullyQualifiedName {
149149
class: existing,
150-
class_parents,
150+
qualified_name_components,
151151
} => {
152152
if *existing != class {
153-
let new_class_parents = class.class_parents(db);
154-
if *class_parents == new_class_parents {
153+
let new_components = class.qualified_name_components(db);
154+
if *qualified_name_components == new_components {
155155
*value = AmbiguityState::RequiresFileAndLineNumber;
156156
}
157157
}
@@ -172,7 +172,7 @@ enum AmbiguityState<'db> {
172172
/// The class must be displayed using its fully qualified name to avoid ambiguity.
173173
RequiresFullyQualifiedName {
174174
class: ClassLiteral<'db>,
175-
class_parents: Vec<String>,
175+
qualified_name_components: Vec<String>,
176176
},
177177
/// Even the class's fully qualified name is not sufficient;
178178
/// we must also include the file and line number.
@@ -275,16 +275,14 @@ impl<'db> ClassLiteral<'db> {
275275
settings,
276276
}
277277
}
278-
}
279-
280-
struct ClassDisplay<'db> {
281-
db: &'db dyn Db,
282-
class: ClassLiteral<'db>,
283-
settings: DisplaySettings<'db>,
284-
}
285278

286-
impl<'db> ClassLiteral<'db> {
287-
fn class_parents(self, db: &'db dyn Db) -> Vec<String> {
279+
/// Returns the components of the qualified name of this class, excluding this class itself.
280+
///
281+
/// For example, calling this method on a class `C` in the module `a.b` would return
282+
/// `["a", "b"]`. Calling this method on a class `D` inside the namespace of a method
283+
/// `m` inside the namespace of a class `C` in the module `a.b` would return
284+
/// `["a", "b", "C", "<locals of function 'm'>"]`.
285+
fn qualified_name_components(self, db: &'db dyn Db) -> Vec<String> {
288286
let body_scope = self.body_scope(db);
289287
let file = body_scope.file(db);
290288
let module_ast = parsed_module(db, file).load(db);
@@ -325,11 +323,17 @@ impl<'db> ClassLiteral<'db> {
325323
}
326324
}
327325

326+
struct ClassDisplay<'db> {
327+
db: &'db dyn Db,
328+
class: ClassLiteral<'db>,
329+
settings: DisplaySettings<'db>,
330+
}
331+
328332
impl Display for ClassDisplay<'_> {
329333
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
330334
let qualification_level = self.settings.qualified.get(&**self.class.name(self.db));
331335
if qualification_level.is_some() {
332-
for parent in self.class.class_parents(self.db) {
336+
for parent in self.class.qualified_name_components(self.db) {
333337
f.write_str(&parent)?;
334338
f.write_char('.')?;
335339
}

0 commit comments

Comments
 (0)