mirror of
https://github.com/astral-sh/ruff.git
synced 2025-09-30 13:51:16 +00:00
[ty] Fix panic when trying to pull types for attribute expressions inside Literal
type expressions (#18535)
This commit is contained in:
parent
b3b900dc1e
commit
95497ffaab
3 changed files with 10 additions and 6 deletions
|
@ -0,0 +1,6 @@
|
||||||
|
from typing import Literal
|
||||||
|
|
||||||
|
class Format:
|
||||||
|
STRING = "string"
|
||||||
|
|
||||||
|
def evaluate(format: Literal[Format.STRING]) -> str: ...
|
|
@ -304,18 +304,14 @@ const KNOWN_FAILURES: &[(&str, bool, bool)] = &[
|
||||||
|
|
||||||
// These are all "expression should belong to this TypeInference region and TypeInferenceBuilder should have inferred a type for it"
|
// These are all "expression should belong to this TypeInference region and TypeInferenceBuilder should have inferred a type for it"
|
||||||
("crates/ty_vendored/vendor/typeshed/stdlib/abc.pyi", true, true),
|
("crates/ty_vendored/vendor/typeshed/stdlib/abc.pyi", true, true),
|
||||||
("crates/ty_vendored/vendor/typeshed/stdlib/annotationlib.pyi", true, true),
|
|
||||||
("crates/ty_vendored/vendor/typeshed/stdlib/ast.pyi", true, true),
|
("crates/ty_vendored/vendor/typeshed/stdlib/ast.pyi", true, true),
|
||||||
("crates/ty_vendored/vendor/typeshed/stdlib/builtins.pyi", true, true),
|
("crates/ty_vendored/vendor/typeshed/stdlib/builtins.pyi", true, true),
|
||||||
("crates/ty_vendored/vendor/typeshed/stdlib/curses/__init__.pyi", true, true),
|
("crates/ty_vendored/vendor/typeshed/stdlib/curses/__init__.pyi", true, true),
|
||||||
("crates/ty_vendored/vendor/typeshed/stdlib/dataclasses.pyi", true, true),
|
|
||||||
("crates/ty_vendored/vendor/typeshed/stdlib/inspect.pyi", true, true),
|
|
||||||
("crates/ty_vendored/vendor/typeshed/stdlib/lzma.pyi", true, true),
|
("crates/ty_vendored/vendor/typeshed/stdlib/lzma.pyi", true, true),
|
||||||
("crates/ty_vendored/vendor/typeshed/stdlib/os/__init__.pyi", true, true),
|
("crates/ty_vendored/vendor/typeshed/stdlib/os/__init__.pyi", true, true),
|
||||||
("crates/ty_vendored/vendor/typeshed/stdlib/pathlib/__init__.pyi", true, true),
|
("crates/ty_vendored/vendor/typeshed/stdlib/pathlib/__init__.pyi", true, true),
|
||||||
("crates/ty_vendored/vendor/typeshed/stdlib/pathlib/types.pyi", true, true),
|
("crates/ty_vendored/vendor/typeshed/stdlib/pathlib/types.pyi", true, true),
|
||||||
("crates/ty_vendored/vendor/typeshed/stdlib/pstats.pyi", true, true),
|
("crates/ty_vendored/vendor/typeshed/stdlib/pstats.pyi", true, true),
|
||||||
("crates/ty_vendored/vendor/typeshed/stdlib/signal.pyi", true, true),
|
|
||||||
("crates/ty_vendored/vendor/typeshed/stdlib/socket.pyi", true, true),
|
("crates/ty_vendored/vendor/typeshed/stdlib/socket.pyi", true, true),
|
||||||
("crates/ty_vendored/vendor/typeshed/stdlib/sqlite3/__init__.pyi", true, true),
|
("crates/ty_vendored/vendor/typeshed/stdlib/sqlite3/__init__.pyi", true, true),
|
||||||
("crates/ty_vendored/vendor/typeshed/stdlib/tempfile.pyi", true, true),
|
("crates/ty_vendored/vendor/typeshed/stdlib/tempfile.pyi", true, true),
|
||||||
|
|
|
@ -9468,11 +9468,13 @@ impl<'db> TypeInferenceBuilder<'db, '_> {
|
||||||
ast::Expr::Attribute(ast::ExprAttribute { value, attr, .. }) => {
|
ast::Expr::Attribute(ast::ExprAttribute { value, attr, .. }) => {
|
||||||
let value_ty = self.infer_expression(value);
|
let value_ty = self.infer_expression(value);
|
||||||
// TODO: Check that value type is enum otherwise return None
|
// TODO: Check that value type is enum otherwise return None
|
||||||
value_ty
|
let ty = value_ty
|
||||||
.member(self.db(), &attr.id)
|
.member(self.db(), &attr.id)
|
||||||
.place
|
.place
|
||||||
.ignore_possibly_unbound()
|
.ignore_possibly_unbound()
|
||||||
.unwrap_or(Type::unknown())
|
.unwrap_or(Type::unknown());
|
||||||
|
self.store_expression_type(parameters, ty);
|
||||||
|
ty
|
||||||
}
|
}
|
||||||
// for negative and positive numbers
|
// for negative and positive numbers
|
||||||
ast::Expr::UnaryOp(u)
|
ast::Expr::UnaryOp(u)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue