diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-09-28 12:22:09 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-09-28 12:22:09 +0100 |
| commit | b082c893fa9bd64a2312c502c758496734f5857e (patch) | |
| tree | ccc74207b21b4063c486f8c842cd4d78512d409d /src/main/java | |
| parent | 7b9881e6dcae7d415fbae7767fdbd5af17f97985 (diff) | |
Extract receiverTypeToFunctionType()
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java | 20 |
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 |
