refactor(types): rename AliasType to DerivedType

This commit is contained in:
2026-06-30 16:28:16 +02:00
parent d582df5927
commit 087f6b4669
7 changed files with 26 additions and 24 deletions

View File

@@ -12,10 +12,10 @@ from midas.checker.preamble import Preamble
from midas.checker.registry import TypesRegistry
from midas.checker.reporter import FileReporter, Reporter
from midas.checker.types import (
AliasType,
AppliedType,
ComplexType,
ConstraintType,
DerivedType,
ExtensionType,
Function,
GenericType,
@@ -152,7 +152,7 @@ class MidasTyper(m.Stmt.Visitor[None], m.Expr.Visitor[Type], m.Type.Visitor[Type
if len(params) != 0:
type = GenericType(name=name, params=params, body=type)
else:
type = AliasType(name=name, type=type)
type = DerivedType(name=name, type=type)
self.types.define_type(name, type)
self._local_variables.clear()
self._current_name = None

View File

@@ -18,10 +18,10 @@ from midas.checker.registry import TypesRegistry
from midas.checker.reporter import FileReporter, Reporter
from midas.checker.resolver import Resolver
from midas.checker.types import (
AliasType,
AppliedType,
BaseType,
ConstraintType,
DerivedType,
Function,
GenericType,
OverloadedFunction,
@@ -740,7 +740,7 @@ class PythonTyper(
case UnknownType():
return UnknownType()
case AliasType(type=base):
case DerivedType(type=base):
return self._get_call_result(
location, base, positional, keywords, report_errors
)
@@ -1169,7 +1169,7 @@ class PythonTyper(
self, expr: p.CastExpr, subject_type: Type, target_type: Type, lit_value: Any
) -> bool:
match target_type:
case AliasType(type=base):
case DerivedType(type=base):
return self._evaluate_cast_statically(
expr, subject_type, base, lit_value
)

View File

@@ -5,11 +5,11 @@ from typing import Optional
from midas.ast.midas import MemberKind
from midas.checker.builtins import BUILTIN_SUBTYPES
from midas.checker.types import (
AliasType,
AppliedType,
BaseType,
ComplexType,
ConstraintType,
DerivedType,
ExtensionType,
Function,
GenericType,
@@ -143,7 +143,7 @@ class TypesRegistry:
return True
return self.is_subtype(type1, bound)
case (AliasType(type=base1), _):
case (DerivedType(type=base1), _):
return self.is_subtype(base1, type2)
case (BaseType(name=name1), BaseType(name=name2)):
@@ -294,8 +294,8 @@ class TypesRegistry:
def apply_generic(self, type: Type, args: list[Type]) -> Type:
match type:
case AliasType(name=name, type=base):
return AliasType(name=name, type=self.apply_generic(base, args))
case DerivedType(name=name, type=base):
return DerivedType(name=name, type=self.apply_generic(base, args))
case GenericType(name=name, params=type_vars, body=body):
n_args: int = len(args)
@@ -362,7 +362,7 @@ class TypesRegistry:
return self._members[name][member_name].type
return None
case AliasType(name=name, type=base):
case DerivedType(name=name, type=base):
if name in self._members:
if member_name in self._members[name]:
return self._members[name][member_name].type

View File

@@ -23,7 +23,7 @@ class BaseType:
@dataclass(frozen=True, kw_only=True)
class AliasType:
class DerivedType:
name: str
type: Type
@@ -175,8 +175,10 @@ def substitute_typevars(type: Type, substitutions: dict[str, Type]) -> Type:
case BaseType():
return type
case AliasType(name=name, type=type2):
return AliasType(name=name, type=substitute_typevars(type2, substitutions))
case DerivedType(name=name, type=type2):
return DerivedType(
name=name, type=substitute_typevars(type2, substitutions)
)
case Function(
pos_args=pos_args,
@@ -263,7 +265,7 @@ def substitute_typevars(type: Type, substitutions: dict[str, Type]) -> Type:
def unfold_type(type: Type) -> Type:
match type:
case AliasType(type=ref_type):
case DerivedType(type=ref_type):
return unfold_type(ref_type)
case _:
return type
@@ -286,7 +288,7 @@ def to_annotation(type: Type) -> str:
case BaseType(name=name):
return name
case AliasType(name=name):
case DerivedType(name=name):
return name
case UnknownType():
@@ -331,7 +333,7 @@ class Predicate:
Type = (
TopType
| BaseType
| AliasType
| DerivedType
| UnknownType
| UnitType
| Function

View File

@@ -11,14 +11,14 @@ import click
from midas.ast.printer import MidasPrinter
from midas.checker.checker import TypeChecker
from midas.checker.registry import Member
from midas.checker.types import AliasType, AppliedType, BaseType, GenericType, Type
from midas.checker.types import AppliedType, BaseType, DerivedType, GenericType, Type
def base_type(type: Type) -> Type:
match type:
case BaseType():
return type
case AliasType(type=base):
case DerivedType(type=base):
return base
case AppliedType(body=body):
return body

View File

@@ -10,11 +10,11 @@ from midas.ast.location import Location
from midas.ast.printer import MidasPrinter
from midas.checker.registry import TypesRegistry
from midas.checker.types import (
AliasType,
AppliedType,
BaseType,
ComplexType,
ConstraintType,
DerivedType,
ExtensionType,
Function,
GenericType,
@@ -305,7 +305,7 @@ class Generator(p.Stmt.Visitor[ast.stmt], p.Expr.Visitor[ast.expr]):
self._make_cast_assert_message(src_location, expr, type),
)
case AliasType(type=base):
case DerivedType(type=base):
self._make_cast_asserts(src_location, expr, base)
case UnitType():

View File

@@ -4,11 +4,11 @@ from typing import Optional, assert_never
import midas.ast.midas as m
from midas.checker.registry import Member, TypesRegistry
from midas.checker.types import (
AliasType,
AppliedType,
BaseType,
ComplexType,
ConstraintType,
DerivedType,
ExtensionType,
Function,
GenericType,
@@ -96,7 +96,7 @@ class StubsGenerator:
def get_bases(self, type: Type) -> tuple[list[ast.expr], dict[str, Type]]:
match type:
case AliasType(type=base):
case DerivedType(type=base):
return [self.dump_type(base)], {}
case GenericType(params=params, body=body):
@@ -161,7 +161,7 @@ class StubsGenerator:
def dump_type(self, type: Type) -> ast.expr:
match type:
case AliasType(name=name) | GenericType(name=name) if (
case DerivedType(name=name) | GenericType(name=name) if (
name in self.substitutions
):
type = substitute_typevars(type, self.substitutions[name])
@@ -174,7 +174,7 @@ class StubsGenerator:
case BaseType(name=name):
return ast.Name(id=name)
case AliasType(name=name):
case DerivedType(name=name):
return ast.Name(id=name)
case UnitType():