From b082c893fa9bd64a2312c502c758496734f5857e Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Thu, 28 Sep 2023 12:22:09 +0100 Subject: Extract receiverTypeToFunctionType() --- .../shedlang/compiler/typechecker/TypeChecker.java | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java index f544e876..626ca456 100644 --- a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java +++ b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java @@ -276,13 +276,7 @@ public class TypeChecker { var typedReceiver = receiverResult.value(); context = receiverResult.context(); - if (!(typedReceiver.type() instanceof FunctionType receiverType)) { - throw new UnexpectedTypeError( - TypeSets.FUNCTION, - typedReceiver.type(), - typedReceiver.source() - ); - } + var receiverType = receiverTypeToFunctionType(typedReceiver); var argsResult = typeCheckArgs(untyped.args(), context, receiverType); var typedArgs = argsResult.value(); @@ -315,6 +309,18 @@ public class TypeChecker { )); } + private static FunctionType receiverTypeToFunctionType(TypedExpressionNode typedReceiver) { + if (!(typedReceiver.type() instanceof FunctionType receiverType)) { + throw new UnexpectedTypeError( + TypeSets.FUNCTION, + typedReceiver.type(), + typedReceiver.source() + ); + } + + return receiverType; + } + private static TypeCheckerResult typeCheckConditionalBranch( UntypedConditionalBranchNode conditionalBranch, TypeCheckerContext context -- cgit v1.2.3