aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-09-28 12:22:09 +0100
committerMichael Williamson <mike@zwobble.org>2023-09-28 12:22:09 +0100
commitb082c893fa9bd64a2312c502c758496734f5857e (patch)
treeccc74207b21b4063c486f8c842cd4d78512d409d /src/main/java
parent7b9881e6dcae7d415fbae7767fdbd5af17f97985 (diff)
Extract receiverTypeToFunctionType()
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java20
1 files changed, 13 insertions, 7 deletions
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<TypedConditionalBranchNode> typeCheckConditionalBranch(
UntypedConditionalBranchNode conditionalBranch,
TypeCheckerContext context