From b02598aa7b8d02e2f1177177d6e0cd7b2d805198 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Tue, 7 Nov 2023 18:41:16 +0000 Subject: Rename effect fields to effect methods --- .../shedlang/compiler/ast/typed/TypedTryNode.java | 2 +- .../compiler/ast/untyped/UntypedTryNode.java | 14 ++++---- .../java/org/shedlang/compiler/parser/Parser.java | 4 +-- .../shedlang/compiler/typechecker/TypeChecker.java | 40 +++++++++++----------- ...nnotResumeOutsideOfEffectHandlerFieldError.java | 10 ------ ...notResumeOutsideOfEffectHandlerMethodError.java | 10 ++++++ .../CannotReturnFromEffectHandlerFieldError.java | 10 ------ .../CannotReturnFromEffectHandlerMethodError.java | 10 ++++++ .../errors/MissingEffectHandlerFieldError.java | 17 --------- .../errors/MissingEffectHandlerMethodError.java | 17 +++++++++ 10 files changed, 67 insertions(+), 67 deletions(-) delete mode 100644 src/main/java/org/shedlang/compiler/typechecker/errors/CannotResumeOutsideOfEffectHandlerFieldError.java create mode 100644 src/main/java/org/shedlang/compiler/typechecker/errors/CannotResumeOutsideOfEffectHandlerMethodError.java delete mode 100644 src/main/java/org/shedlang/compiler/typechecker/errors/CannotReturnFromEffectHandlerFieldError.java create mode 100644 src/main/java/org/shedlang/compiler/typechecker/errors/CannotReturnFromEffectHandlerMethodError.java delete mode 100644 src/main/java/org/shedlang/compiler/typechecker/errors/MissingEffectHandlerFieldError.java create mode 100644 src/main/java/org/shedlang/compiler/typechecker/errors/MissingEffectHandlerMethodError.java (limited to 'src/main/java') diff --git a/src/main/java/org/shedlang/compiler/ast/typed/TypedTryNode.java b/src/main/java/org/shedlang/compiler/ast/typed/TypedTryNode.java index dd782a50..b58b0b3a 100644 --- a/src/main/java/org/shedlang/compiler/ast/typed/TypedTryNode.java +++ b/src/main/java/org/shedlang/compiler/ast/typed/TypedTryNode.java @@ -9,7 +9,7 @@ import java.util.List; public record TypedTryNode( TypedBlockNode body, TypedTypeLevelExpressionNode handledEffect, - List handlerFields, + List handlerMethods, Source source ) implements TypedExpressionNode { @Override diff --git a/src/main/java/org/shedlang/compiler/ast/untyped/UntypedTryNode.java b/src/main/java/org/shedlang/compiler/ast/untyped/UntypedTryNode.java index c89aff2a..a411039e 100644 --- a/src/main/java/org/shedlang/compiler/ast/untyped/UntypedTryNode.java +++ b/src/main/java/org/shedlang/compiler/ast/untyped/UntypedTryNode.java @@ -10,7 +10,7 @@ import java.util.List; public record UntypedTryNode( UntypedBlockNode body, UntypedTypeLevelExpressionNode handledEffect, - List handlerFields, + List handlerMethods, Source source ) implements UntypedExpressionNode { public static Builder builder() { @@ -24,13 +24,13 @@ public record UntypedTryNode( public record Builder( PVector body, UntypedTypeLevelExpressionNode handledEffect, - PVector handlerFields + PVector handlerMethods ) { public UntypedTryNode build() { return new UntypedTryNode( new UntypedBlockNode(body, Sources.NULL), handledEffect, - handlerFields, + handlerMethods, Sources.NULL ); } @@ -39,7 +39,7 @@ public record UntypedTryNode( return new Builder( this.body.plus(statement), this.handledEffect, - this.handlerFields + this.handlerMethods ); } @@ -47,15 +47,15 @@ public record UntypedTryNode( return new Builder( this.body, handledEffect, - this.handlerFields + this.handlerMethods ); } - public Builder addHandlerField(UntypedFunctionDefinitionNode handlerField) { + public Builder addHandlerMethod(UntypedFunctionDefinitionNode handlerMethod) { return new Builder( this.body, this.handledEffect, - this.handlerFields.plus(handlerField) + this.handlerMethods.plus(handlerMethod) ); } } diff --git a/src/main/java/org/shedlang/compiler/parser/Parser.java b/src/main/java/org/shedlang/compiler/parser/Parser.java index b858534e..7536f3b9 100644 --- a/src/main/java/org/shedlang/compiler/parser/Parser.java +++ b/src/main/java/org/shedlang/compiler/parser/Parser.java @@ -1095,7 +1095,7 @@ public class Parser { tokens.skip(TokenType.SYMBOL_BRACE_OPEN); - var handlerFields = parseMany( + var handlerMethods = parseMany( () -> tokens.isNext(TokenType.SYMBOL_BRACE_CLOSE), () -> parseFunctionDefinition(tokens), () -> true @@ -1106,7 +1106,7 @@ public class Parser { var end = tokens.position(); var source = start.to(end); - return new UntypedTryNode(body, handledEffect, handlerFields, source); + return new UntypedTryNode(body, handledEffect, handlerMethods, source); } private static UntypedExpressionNode parseTuple( diff --git a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java index d04bcea4..d31876d4 100644 --- a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java +++ b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java @@ -854,7 +854,7 @@ public class TypeChecker { throw new CannotReturnOutsideOfFunctionError(returnValueSource); } case ReturnTypeState.EffectHandler effectHandler -> { - throw new CannotReturnFromEffectHandlerFieldError(returnValueSource); + throw new CannotReturnFromEffectHandlerMethodError(returnValueSource); } }; @@ -1292,16 +1292,16 @@ public class TypeChecker { ) { switch (context.returnTypeState()) { case ReturnTypeState.Explicit explicit -> { - throw new CannotResumeOutsideOfEffectHandlerFieldError(untyped.source()); + throw new CannotResumeOutsideOfEffectHandlerMethodError(untyped.source()); } case ReturnTypeState.ImplicitUnknown implicitUnknown -> { - throw new CannotResumeOutsideOfEffectHandlerFieldError(untyped.source()); + throw new CannotResumeOutsideOfEffectHandlerMethodError(untyped.source()); } case ReturnTypeState.ImplicitLowerBound implicitLowerBound -> { - throw new CannotResumeOutsideOfEffectHandlerFieldError(untyped.source()); + throw new CannotResumeOutsideOfEffectHandlerMethodError(untyped.source()); } case ReturnTypeState.NotInFunction notInFunction -> { - throw new CannotResumeOutsideOfEffectHandlerFieldError(untyped.source()); + throw new CannotResumeOutsideOfEffectHandlerMethodError(untyped.source()); } case ReturnTypeState.EffectHandler effectHandler -> { var typedExpressionResult = typeCheckExpressionOptional( @@ -1678,48 +1678,48 @@ public class TypeChecker { var effectInfo = context.userDefinedEffectInfo(handledEffect, typedHandledEffect.source()); var handledFieldNames = new HashSet(); - var typedHandlerFields = new ArrayList(); - for (var untypedHandlerField : untyped.handlerFields()) { - handledFieldNames.add(untypedHandlerField.name()); + var typedHandlerMethods = new ArrayList(); + for (var untypedHandlerMethod : untyped.handlerMethods()) { + handledFieldNames.add(untypedHandlerMethod.name()); var effectFieldType = effectInfo.fields() - .fieldType(untypedHandlerField.name()) + .fieldType(untypedHandlerMethod.name()) .orElseThrow(() -> new NoSuchFieldError( Types.effectType(handledEffect), - untypedHandlerField.name(), - untypedHandlerField.source() + untypedHandlerMethod.name(), + untypedHandlerMethod.source() )); - var typedHandlerFieldResult = typeCheckTryHandlerField(untypedHandlerField, effectFieldType, context); - var typedHandlerField = typedHandlerFieldResult.value(); - context = typedHandlerFieldResult.context(); + var typedHandlerMethodResult = typeCheckTryHandlerMethod(untypedHandlerMethod, effectFieldType, context); + var typedHandlerMethod = typedHandlerMethodResult.value(); + context = typedHandlerMethodResult.context(); checkIsSubType( - typedHandlerField.type().withEffect(Effects.NONE), + typedHandlerMethod.type().withEffect(Effects.NONE), effectFieldType, - untypedHandlerField.source(), + untypedHandlerMethod.source(), context ); - typedHandlerFields.add(typedHandlerField); + typedHandlerMethods.add(typedHandlerMethod); } // TODO: Don't create unnecessary list for (var effectField : effectInfo.fields().stream().toList()) { if (!handledFieldNames.contains(effectField.name())) { - throw new MissingEffectHandlerFieldError(effectField.name(), untyped.source()); + throw new MissingEffectHandlerMethodError(effectField.name(), untyped.source()); } } return context.toResult(new TypedTryNode( typedBody, typedHandledEffect, - typedHandlerFields, + typedHandlerMethods, untyped.source() )); } - private static TypeCheckerResult typeCheckTryHandlerField( + private static TypeCheckerResult typeCheckTryHandlerMethod( UntypedFunctionDefinitionNode untyped, FunctionType effectFieldType, TypeCheckerContext context diff --git a/src/main/java/org/shedlang/compiler/typechecker/errors/CannotResumeOutsideOfEffectHandlerFieldError.java b/src/main/java/org/shedlang/compiler/typechecker/errors/CannotResumeOutsideOfEffectHandlerFieldError.java deleted file mode 100644 index 6d53c809..00000000 --- a/src/main/java/org/shedlang/compiler/typechecker/errors/CannotResumeOutsideOfEffectHandlerFieldError.java +++ /dev/null @@ -1,10 +0,0 @@ -package org.shedlang.compiler.typechecker.errors; - -import org.shedlang.compiler.errors.SourceError; -import org.shedlang.compiler.sources.Source; - -public class CannotResumeOutsideOfEffectHandlerFieldError extends SourceError { - public CannotResumeOutsideOfEffectHandlerFieldError(Source source) { - super("Cannot return outside of effect handler field", source); - } -} diff --git a/src/main/java/org/shedlang/compiler/typechecker/errors/CannotResumeOutsideOfEffectHandlerMethodError.java b/src/main/java/org/shedlang/compiler/typechecker/errors/CannotResumeOutsideOfEffectHandlerMethodError.java new file mode 100644 index 00000000..2fedb9c8 --- /dev/null +++ b/src/main/java/org/shedlang/compiler/typechecker/errors/CannotResumeOutsideOfEffectHandlerMethodError.java @@ -0,0 +1,10 @@ +package org.shedlang.compiler.typechecker.errors; + +import org.shedlang.compiler.errors.SourceError; +import org.shedlang.compiler.sources.Source; + +public class CannotResumeOutsideOfEffectHandlerMethodError extends SourceError { + public CannotResumeOutsideOfEffectHandlerMethodError(Source source) { + super("Cannot return outside of effect handler method", source); + } +} diff --git a/src/main/java/org/shedlang/compiler/typechecker/errors/CannotReturnFromEffectHandlerFieldError.java b/src/main/java/org/shedlang/compiler/typechecker/errors/CannotReturnFromEffectHandlerFieldError.java deleted file mode 100644 index e887f353..00000000 --- a/src/main/java/org/shedlang/compiler/typechecker/errors/CannotReturnFromEffectHandlerFieldError.java +++ /dev/null @@ -1,10 +0,0 @@ -package org.shedlang.compiler.typechecker.errors; - -import org.shedlang.compiler.errors.SourceError; -import org.shedlang.compiler.sources.Source; - -public class CannotReturnFromEffectHandlerFieldError extends SourceError { - public CannotReturnFromEffectHandlerFieldError(Source source) { - super("Cannot return from effect handler field", source); - } -} diff --git a/src/main/java/org/shedlang/compiler/typechecker/errors/CannotReturnFromEffectHandlerMethodError.java b/src/main/java/org/shedlang/compiler/typechecker/errors/CannotReturnFromEffectHandlerMethodError.java new file mode 100644 index 00000000..1c174040 --- /dev/null +++ b/src/main/java/org/shedlang/compiler/typechecker/errors/CannotReturnFromEffectHandlerMethodError.java @@ -0,0 +1,10 @@ +package org.shedlang.compiler.typechecker.errors; + +import org.shedlang.compiler.errors.SourceError; +import org.shedlang.compiler.sources.Source; + +public class CannotReturnFromEffectHandlerMethodError extends SourceError { + public CannotReturnFromEffectHandlerMethodError(Source source) { + super("Cannot return from effect handler method", source); + } +} diff --git a/src/main/java/org/shedlang/compiler/typechecker/errors/MissingEffectHandlerFieldError.java b/src/main/java/org/shedlang/compiler/typechecker/errors/MissingEffectHandlerFieldError.java deleted file mode 100644 index c08b293a..00000000 --- a/src/main/java/org/shedlang/compiler/typechecker/errors/MissingEffectHandlerFieldError.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.shedlang.compiler.typechecker.errors; - -import org.shedlang.compiler.errors.SourceError; -import org.shedlang.compiler.sources.Source; - -public class MissingEffectHandlerFieldError extends SourceError { - private final String fieldName; - - public MissingEffectHandlerFieldError(String fieldName, Source source) { - super("Missing effect handler field: " + fieldName, source); - this.fieldName = fieldName; - } - - public String fieldName() { - return fieldName; - } -} diff --git a/src/main/java/org/shedlang/compiler/typechecker/errors/MissingEffectHandlerMethodError.java b/src/main/java/org/shedlang/compiler/typechecker/errors/MissingEffectHandlerMethodError.java new file mode 100644 index 00000000..0de0569b --- /dev/null +++ b/src/main/java/org/shedlang/compiler/typechecker/errors/MissingEffectHandlerMethodError.java @@ -0,0 +1,17 @@ +package org.shedlang.compiler.typechecker.errors; + +import org.shedlang.compiler.errors.SourceError; +import org.shedlang.compiler.sources.Source; + +public class MissingEffectHandlerMethodError extends SourceError { + private final String fieldName; + + public MissingEffectHandlerMethodError(String fieldName, Source source) { + super("Missing effect handler method: " + fieldName, source); + this.fieldName = fieldName; + } + + public String fieldName() { + return fieldName; + } +} -- cgit v1.2.3