aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-11-07 17:01:06 +0000
committerMichael Williamson <mike@zwobble.org>2023-11-07 17:01:06 +0000
commit1e6ea9f8b84625c46a09b16fc7f68d04205465bd (patch)
treeea458b4018fae6938095481a5bd70a2a7c7b5c66 /src/main/java
parente450be55c05a6bb1eda4e49595b50cf776e6e6d6 (diff)
Use type hint when typing expression of return statements
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java
index 756e4584..3e9f4a46 100644
--- a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java
+++ b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java
@@ -804,10 +804,13 @@ public class TypeChecker {
UntypedFunctionReturnNode untyped,
TypeCheckerContext context
) {
- // TODO: pass return type as hint if available
+ var expressionTypeHint = context.returnTypeState() instanceof ReturnTypeState.Explicit returnTypeExplicit
+ ? Optional.of(returnTypeExplicit.type())
+ : Optional.<Type>empty();
+
var expressionResult = typeCheckExpressionOptional(
untyped.expression(),
- Optional.empty(),
+ expressionTypeHint,
untyped.source(),
context
);