Skip to content

type[None] should be types.NoneType but attribute access fails #1625

@Jack-GitHub12

Description

@Jack-GitHub12

Describe the Bug

When I get the type of None (which should be types.NoneType), Pyrefly fails to resolve attributes on it. This prevents me from accessing methods like bool on type[None].

Code Snippet:

  def ty[T](x: T) -> type[T]: ...

  # Try to access __bool__ method on type[None]
  none_type = ty(None)
  result = none_type.__bool__(None)

Expected Behavior:

  • ty(None) returns type[None]
  • type[None] should be equivalent to types.NoneType
  • types.NoneType is a real Python class with methods like bool
  • Therefore, none_type.bool(None) should be valid

I am getting ERROR: Expr::attr_infer_for_type attribute base undefined
Pyrefly cannot resolve the bool attribute on type[None].

Sandbox Link

https://pyrefly.org/sandbox/?project=N4IgZglgNgpgziAXKOBDAdgEwEYHsAeAdAA4CeSIAxAAQDqMUAxrgLYzUAuunAFuwAqkATjDBRS1AMoYcBADS8IcakuqpqxVAHMYAHXQ0A7nxHVSuAK7VGGaoaEQOMBXB6pTM6rHfo1eCxycpMQQ6FoqvoIcPLjohPqUCdQAEjAeHtaWxLDUYDCoHBYiyrhgispoWHj4iEkAtNQA4jCBIqhQdRwQbEHE7Ix8jADWoeF5MDiow-XUAKpw7CIAbvlQAPocwTAAFACUnNyhcH2MgaF5QiKYvfAzMPh9DmzogYaOPLzsAJIAIgCiuXyhWKvAKdnYcAsxGIuCEgW2MEIWkIagCuGYLGyLWc1C0uE6%2BMwolCjggsQUMRWQgULUYuxmtAcTjUWGoQgskVI0VimSJ1EwEBEp3EETMliE1GwQlwhgWQn0%2BiJZU2AG0ACoAXW2NWoav2dQAfDd1RrENRCBaFeh0LEYBsttQALxBbYAOVt9PQxQsUECzpt6Dtmz6hDWazwuHWazdHqtNGWq3tfTs0CgGmlmAsjHY6mD7DS0ol0TBTigUGU5is0XYeeoghEYgkbjgSQxxACE1ysM%2BbJaRV821C5WsqAWLg4Qk9IDkIAC0DgJHIiCocy6UEcEjAHNOZPQLfQitEXaELAKa3QFhY2DS2rNoQ4%2BqNcAntV81HfImBvjAuhArsv15CGawD4AAvr%2B%2BjTiAZANuIhBcCwUAUDQ9aiCKlSyPgmToJAWhFAUu7xAYUgwOwPAcBwxBwIgAD0NEwWhpCELCWg0TA6A0Zg6JwDRzA4RAeFCARsQ0ceahLKg0CoNgOR8bh%2BFdDyuDEIpe5EWQ3LoHUVJwLuTrUL%2BADMhAAIwAEwQegICgTOUxdCsABi0AwBQGHVIu1lAA

(Only applicable for extension issues) IDE Information

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions