From 1416b1bb15b1048b99b6a92b2923630b13de7e30 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Mon, 3 Jul 2023 11:37:28 +0100 Subject: Add builder for untyped call nodes --- .../compiler/typechecker/TypeCheckerCallTests.java | 40 +++++++++------------- .../TypeCheckerFunctionDefinitionTests.java | 14 ++++---- 2 files changed, 22 insertions(+), 32 deletions(-) (limited to 'src/test/java') diff --git a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerCallTests.java b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerCallTests.java index 46c83cf5..d0351d70 100644 --- a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerCallTests.java +++ b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerCallTests.java @@ -2,9 +2,7 @@ package org.shedlang.compiler.typechecker; import org.junit.jupiter.api.Test; import org.shedlang.compiler.ast.untyped.Untyped; -import org.shedlang.compiler.ast.untyped.UntypedArgsNode; import org.shedlang.compiler.ast.untyped.UntypedCallNode; -import org.shedlang.compiler.sources.Sources; import org.shedlang.compiler.typechecker.errors.*; import org.shedlang.compiler.typechecker.typesets.TypeSets; import org.shedlang.compiler.types.Effects; @@ -259,10 +257,10 @@ public class TypeCheckerCallTests { @Test public void givenFunctionHasEffectsWhenCallingFunctionWithoutExplicitEffectsThenErrorIsThrown() { - var untyped = Untyped.call( - Untyped.reference("f"), - List.of() - ); + var untyped = UntypedCallNode.builder() + .withReceiver(Untyped.reference("f")) + .withHasEffects(false) + .build(); var functionType = FunctionType.builder() .withEffect(Effects.IO) .withReturnType(Types.UNIT) @@ -280,12 +278,10 @@ public class TypeCheckerCallTests { @Test public void givenFunctionHasNoEffectWhenCallingFunctionWithExplicitEffectsThenErrorIsThrown() { - var untyped = new UntypedCallNode( - Untyped.reference("f"), - new UntypedArgsNode(List.of(), List.of(), Sources.NULL), - true, - Sources.NULL - ); + var untyped = UntypedCallNode.builder() + .withReceiver(Untyped.reference("f")) + .withHasEffects(true) + .build(); var functionType = FunctionType.builder() .withEffect(Effects.NONE) .withReturnType(Types.UNIT) @@ -301,12 +297,10 @@ public class TypeCheckerCallTests { @Test public void whenReceiverEffectIsSubEffectOfContextEffectThenCallIsAllowed() { - var untyped = new UntypedCallNode( - Untyped.reference("f"), - new UntypedArgsNode(List.of(), List.of(), Sources.NULL), - true, - Sources.NULL - ); + var untyped = UntypedCallNode.builder() + .withReceiver(Untyped.reference("f")) + .withHasEffects(true) + .build(); var functionType = FunctionType.builder() .withEffect(Effects.IO) .withReturnType(Types.UNIT) @@ -326,12 +320,10 @@ public class TypeCheckerCallTests { @Test public void whenReceiverEffectIsNotSubEffectOfContextEffectThenCallIsNotAllowed() { - var untyped = new UntypedCallNode( - Untyped.reference("f"), - new UntypedArgsNode(List.of(), List.of(), Sources.NULL), - true, - Sources.NULL - ); + var untyped = UntypedCallNode.builder() + .withReceiver(Untyped.reference("f")) + .withHasEffects(true) + .build(); var functionType = FunctionType.builder() .withEffect(Effects.IO) .withReturnType(Types.UNIT) diff --git a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFunctionDefinitionTests.java b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFunctionDefinitionTests.java index a7d439dd..c62efde7 100644 --- a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFunctionDefinitionTests.java +++ b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFunctionDefinitionTests.java @@ -2,10 +2,8 @@ package org.shedlang.compiler.typechecker; import org.junit.jupiter.api.Test; import org.shedlang.compiler.ast.untyped.Untyped; -import org.shedlang.compiler.ast.untyped.UntypedArgsNode; import org.shedlang.compiler.ast.untyped.UntypedCallNode; import org.shedlang.compiler.ast.untyped.UntypedFunctionDefinitionNode; -import org.shedlang.compiler.sources.Sources; import org.shedlang.compiler.types.Effects; import org.shedlang.compiler.types.FunctionType; import org.shedlang.compiler.types.NamedParam; @@ -171,12 +169,12 @@ public class TypeCheckerFunctionDefinitionTests { var untyped = UntypedFunctionDefinitionNode.builder() .withEffect(Untyped.typeLevelReference("Io")) .withReturnType(Untyped.typeLevelReference("Unit")) - .addStatement(Untyped.expressionStatement(new UntypedCallNode( - Untyped.reference("f"), - new UntypedArgsNode(List.of(), List.of(), Sources.NULL), - true, - Sources.NULL - ))) + .addStatement(Untyped.expressionStatement( + UntypedCallNode.builder() + .withReceiver(Untyped.reference("f")) + .withHasEffects(true) + .build() + )) .build(); var functionType = FunctionType.builder() .withEffect(Effects.IO) -- cgit v1.2.3