mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 22:02:55 +01:00
Explorer: move subtyping logic to TypeChecker (#2484)
Addresses comments from this discussion: https://github.com/carbon-language/carbon-lang/pull/2460#discussion_r1046444433 Features: * Move subtyping logic from Interpreter to TypeChecker, exposing subtyping as a series of access to `.base`. * Excludes function parameter conversion, which is still done in ::Convert due to parameters conversion being handled differently. Changes: * Add new `class BaseAccessExpression : public MemberAccessExpression`, allowing rewrites * Handle `BaseAccessExpression` expression type in Interpreter * Move subtyping logic to `TypeChecker::ImplicitlyConvert`
This commit is contained in:
@@ -275,6 +275,7 @@ static auto ResolveNames(Expression& expression,
|
||||
break;
|
||||
case ExpressionKind::ValueLiteral:
|
||||
case ExpressionKind::BuiltinConvertExpression:
|
||||
case ExpressionKind::BaseAccessExpression:
|
||||
CARBON_FATAL() << "should not exist before type checking";
|
||||
case ExpressionKind::UnimplementedExpression:
|
||||
return ProgramError(expression.source_loc()) << "Unimplemented";
|
||||
|
||||
Reference in New Issue
Block a user