diff options
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java | 9 | ||||
| -rw-r--r-- | src/main/java/org/shedlang/compiler/typechecker/typesets/TypeSets.java | 2 |
2 files changed, 10 insertions, 1 deletions
diff --git a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java index 83285f07..e89bdd61 100644 --- a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java +++ b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java @@ -74,7 +74,14 @@ public class TypeChecker { TypeCheckerContext context ) { var typedReceiver = typeCheckExpression(untyped.receiver(), context); - var receiverType = (FunctionType) typedReceiver.type(); + + if (!(typedReceiver.type() instanceof FunctionType receiverType)) { + throw new UnexpectedTypeError( + TypeSets.FUNCTION, + typedReceiver.type(), + typedReceiver.source() + ); + } return new TypedCallNode( typedReceiver, diff --git a/src/main/java/org/shedlang/compiler/typechecker/typesets/TypeSets.java b/src/main/java/org/shedlang/compiler/typechecker/typesets/TypeSets.java index 4f5f1848..b783a5ef 100644 --- a/src/main/java/org/shedlang/compiler/typechecker/typesets/TypeSets.java +++ b/src/main/java/org/shedlang/compiler/typechecker/typesets/TypeSets.java @@ -6,6 +6,8 @@ public class TypeSets { private TypeSets() { } + public static final TypeSet FUNCTION = TypeSetFunction.INSTANCE; + public static TypeSet type(Type type) { return new TypeSetType(type); } |
