aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-11-19 10:39:14 +0000
committerMichael Williamson <mike@zwobble.org>2023-11-19 10:43:06 +0000
commit5e30f2e61066ff01d4a56474b7b969b9db80ff84 (patch)
treec4e882d63b9a95b6e34c56cee677b7c98f012b1c /src/main/java
parentdde9f5d961dc8a3bbaeba18b25d9d7b68ce66e36 (diff)
Add methodType() to UserDefinedEffectInfo
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java6
-rw-r--r--src/main/java/org/shedlang/compiler/types/UserDefinedEffectInfo.java6
2 files changed, 9 insertions, 3 deletions
diff --git a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java
index fdc24287..d109f2ae 100644
--- a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java
+++ b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java
@@ -546,7 +546,7 @@ public class TypeChecker {
) {
var effectInfo = context.userDefinedEffectInfo(effect, source);
- return effectInfo.methods().fieldType(fieldName)
+ return effectInfo.methodType(fieldName)
.orElseThrow(() -> new NoSuchFieldError(receiverType, fieldName, source))
.withEffect(effect);
} else {
@@ -1702,8 +1702,8 @@ public class TypeChecker {
for (var untypedHandlerMethod : untyped.handlerMethods()) {
handledFieldNames.add(untypedHandlerMethod.name());
- var effectFieldType = effectInfo.methods()
- .fieldType(untypedHandlerMethod.name())
+ var effectFieldType = effectInfo
+ .methodType(untypedHandlerMethod.name())
.orElseThrow(() -> new NoSuchFieldError(
Types.effectType(handledEffect),
untypedHandlerMethod.name(),
diff --git a/src/main/java/org/shedlang/compiler/types/UserDefinedEffectInfo.java b/src/main/java/org/shedlang/compiler/types/UserDefinedEffectInfo.java
index 0fc32896..d5276e9f 100644
--- a/src/main/java/org/shedlang/compiler/types/UserDefinedEffectInfo.java
+++ b/src/main/java/org/shedlang/compiler/types/UserDefinedEffectInfo.java
@@ -1,6 +1,12 @@
package org.shedlang.compiler.types;
+import java.util.Optional;
+
public record UserDefinedEffectInfo(FieldsInfo<FunctionType> methods) {
+ public Optional<FunctionType> methodType(String methodName) {
+ return methods.fieldType(methodName);
+ }
+
public static Builder builder() {
return new Builder(FieldsInfo.builder());
}