From 0dccfde55d3bba5e7c75ff35fc9d6a1c657a3d85 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 31 Dec 2023 11:24:43 +0000 Subject: Use FunctionType builder instead of calling constructor directly --- .../compiler/config/ConfigCheckerTests.java | 16 ++++-- .../TypeCheckerFunctionDefinitionTests.java | 4 +- .../TypeCheckerFunctionExpressionTests.java | 37 ++++++++++--- .../typechecker/TypeCheckerNamespaceTests.java | 2 +- .../shedlang/compiler/types/FunctionTypeTests.java | 64 ++++++++-------------- 5 files changed, 65 insertions(+), 58 deletions(-) (limited to 'src/test/java') diff --git a/src/test/java/org/shedlang/compiler/config/ConfigCheckerTests.java b/src/test/java/org/shedlang/compiler/config/ConfigCheckerTests.java index 3c53df73..b3468c6e 100644 --- a/src/test/java/org/shedlang/compiler/config/ConfigCheckerTests.java +++ b/src/test/java/org/shedlang/compiler/config/ConfigCheckerTests.java @@ -6,7 +6,6 @@ import org.shedlang.compiler.typechecker.TypeInfos; import org.shedlang.compiler.types.*; import java.io.IOException; -import java.util.List; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.zwobble.precisely.AssertThat.assertThat; @@ -22,7 +21,10 @@ public class ConfigCheckerTests { NamespaceTypeInfo.builder() .addField( "main", - new FunctionType(List.of(), List.of(), Effects.IO, Types.UNIT) + FunctionType.builder() + .withEffect(Effects.IO) + .withReturnType(Types.UNIT) + .build() ) .build() ); @@ -52,7 +54,10 @@ public class ConfigCheckerTests { NamespaceTypeInfo.builder() .addField( "main2", - new FunctionType(List.of(), List.of(), Effects.IO, Types.UNIT) + FunctionType.builder() + .withEffect(Effects.IO) + .withReturnType(Types.UNIT) + .build() ) .build() ); @@ -74,7 +79,10 @@ public class ConfigCheckerTests { NamespaceTypeInfo.builder() .addField( "main", - new FunctionType(List.of(), List.of(), Effects.IO, Types.STRING) + FunctionType.builder() + .withEffect(Effects.IO) + .withReturnType(Types.STRING) + .build() ) .build() ); diff --git a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFunctionDefinitionTests.java b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFunctionDefinitionTests.java index 47813c25..cbca6f6d 100644 --- a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFunctionDefinitionTests.java +++ b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFunctionDefinitionTests.java @@ -6,13 +6,11 @@ import org.shedlang.compiler.ast.untyped.UntypedFunctionDefinitionNode; import org.shedlang.compiler.typechecker.errors.CannotCaptureVarError; import org.shedlang.compiler.typechecker.errors.FunctionSignatureMissingParamTypeError; import org.shedlang.compiler.typechecker.errors.FunctionSignatureMissingReturnTypeError; -import org.shedlang.compiler.types.Effects; import org.shedlang.compiler.types.FunctionType; import org.shedlang.compiler.types.NamespaceName; import org.shedlang.compiler.types.Types; import org.shedlang.compiler.util.P; -import java.util.List; import java.util.Map; import java.util.Optional; @@ -42,7 +40,7 @@ public class TypeCheckerFunctionDefinitionTests { .withEffect(isOptionalEmpty()) .withReturnType(isTypedTypeLevelReferenceNode("Unit", Types.UNIT)) .withBodyBlock(isTypedBlockNode(isSequence())) - .withType(new FunctionType(List.of(), List.of(), Effects.NONE, Types.UNIT)) + .withType(FunctionType.builder().withReturnType(Types.UNIT).build()) ); } diff --git a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFunctionExpressionTests.java b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFunctionExpressionTests.java index 27b5b444..8f4bb98b 100644 --- a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFunctionExpressionTests.java +++ b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFunctionExpressionTests.java @@ -5,10 +5,11 @@ import org.shedlang.compiler.ast.untyped.Untyped; import org.shedlang.compiler.ast.untyped.UntypedFunctionExpressionNode; import org.shedlang.compiler.typechecker.errors.CannotCaptureVarError; import org.shedlang.compiler.typechecker.errors.FunctionSignatureMissingParamTypeError; -import org.shedlang.compiler.types.*; +import org.shedlang.compiler.types.FunctionType; +import org.shedlang.compiler.types.NamespaceName; +import org.shedlang.compiler.types.Types; import org.shedlang.compiler.util.P; -import java.util.List; import java.util.Map; import java.util.Optional; @@ -35,7 +36,7 @@ public class TypeCheckerFunctionExpressionTests { .withEffect(isOptionalEmpty()) .withReturnType(isTypedTypeLevelReferenceNode("Unit", Types.UNIT)) .withBodyBlock(isTypedBlockNode(isSequence())) - .withType(new FunctionType(List.of(), List.of(), Effects.NONE, Types.UNIT)) + .withType(FunctionType.builder().withReturnType(Types.UNIT).build()) ); } @@ -52,7 +53,7 @@ public class TypeCheckerFunctionExpressionTests { assertThat( typed.value(), isTypedFunctionExpressionNode() - .withType(new FunctionType(List.of(), List.of(), Effects.NONE, Types.STRING)) + .withType(FunctionType.builder().withReturnType(Types.STRING).build()) ); } @@ -65,14 +66,24 @@ public class TypeCheckerFunctionExpressionTests { var typed = TypeChecker.typeCheckExpression( untyped, - Optional.of(new FunctionType(List.of(Types.STRING), List.of(), Effects.NONE, Types.UNIT)), + Optional.of( + FunctionType.builder() + .addPositionalParam(Types.STRING) + .withReturnType(Types.UNIT) + .build() + ), context ); assertThat( typed.value(), isTypedFunctionExpressionNode() - .withType(new FunctionType(List.of(Types.STRING), List.of(), Effects.NONE, Types.UNIT)) + .withType( + FunctionType.builder() + .addPositionalParam(Types.STRING) + .withReturnType(Types.UNIT) + .build() + ) ); } @@ -102,14 +113,24 @@ public class TypeCheckerFunctionExpressionTests { var typed = TypeChecker.typeCheckExpression( untyped, - Optional.of(new FunctionType(List.of(), List.of(new NamedParam("x", Types.STRING)), Effects.NONE, Types.UNIT)), + Optional.of( + FunctionType.builder() + .addNamedParam("x", Types.STRING) + .withReturnType(Types.UNIT) + .build() + ), context ); assertThat( typed.value(), isTypedFunctionExpressionNode() - .withType(new FunctionType(List.of(), List.of(new NamedParam("x", Types.STRING)), Effects.NONE, Types.UNIT)) + .withType( + FunctionType.builder() + .addNamedParam("x", Types.STRING) + .withReturnType(Types.UNIT) + .build() + ) ); } diff --git a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerNamespaceTests.java b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerNamespaceTests.java index 16890569..28b2421e 100644 --- a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerNamespaceTests.java +++ b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerNamespaceTests.java @@ -551,7 +551,7 @@ public class TypeCheckerNamespaceTests { namespaceTypeInfo, equalTo( NamespaceTypeInfo.builder() - .addField("g", new FunctionType(List.of(), List.of(), Effects.NONE, Types.UNIT)) + .addField("g", FunctionType.builder().withReturnType(Types.UNIT).build()) .build() ) ); diff --git a/src/test/java/org/shedlang/compiler/types/FunctionTypeTests.java b/src/test/java/org/shedlang/compiler/types/FunctionTypeTests.java index d182ce19..e6f6bab4 100644 --- a/src/test/java/org/shedlang/compiler/types/FunctionTypeTests.java +++ b/src/test/java/org/shedlang/compiler/types/FunctionTypeTests.java @@ -2,20 +2,15 @@ package org.shedlang.compiler.types; import org.junit.jupiter.api.Test; -import java.util.List; - import static org.zwobble.precisely.AssertThat.assertThat; import static org.zwobble.precisely.Matchers.equalTo; public class FunctionTypeTests { @Test public void descriptionIncludesReturnType() { - var functionType = new FunctionType( - List.of(), - List.of(), - Effects.NONE, - Types.STRING - ); + var functionType = FunctionType.builder() + .withReturnType(Types.STRING) + .build(); var result = functionType.describe(); @@ -24,15 +19,11 @@ public class FunctionTypeTests { @Test public void descriptionIncludesPositionalParams() { - var functionType = new FunctionType( - List.of( - Types.INT, - Types.BOOL - ), - List.of(), - Effects.NONE, - Types.STRING - ); + var functionType = FunctionType.builder() + .addPositionalParam(Types.INT) + .addPositionalParam(Types.BOOL) + .withReturnType(Types.STRING) + .build(); var result = functionType.describe(); @@ -41,15 +32,11 @@ public class FunctionTypeTests { @Test public void descriptionIncludesNamedParams() { - var functionType = new FunctionType( - List.of(), - List.of( - new NamedParam("a", Types.INT), - new NamedParam("b", Types.BOOL) - ), - Effects.NONE, - Types.STRING - ); + var functionType = FunctionType.builder() + .addNamedParam("a", Types.INT) + .addNamedParam("b", Types.BOOL) + .withReturnType(Types.STRING) + .build(); var result = functionType.describe(); @@ -58,16 +45,11 @@ public class FunctionTypeTests { @Test public void positionalParamsAndNamedParamsAreCommaSeparated() { - var functionType = new FunctionType( - List.of( - Types.INT - ), - List.of( - new NamedParam("b", Types.BOOL) - ), - Effects.NONE, - Types.STRING - ); + var functionType = FunctionType.builder() + .addPositionalParam(Types.INT) + .addNamedParam("b", Types.BOOL) + .withReturnType(Types.STRING) + .build(); var result = functionType.describe(); @@ -76,12 +58,10 @@ public class FunctionTypeTests { @Test public void descriptionIncludesEffect() { - var functionType = new FunctionType( - List.of(), - List.of(), - Effects.IO, - Types.STRING - ); + var functionType = FunctionType.builder() + .withEffect(Effects.IO) + .withReturnType(Types.STRING) + .build(); var result = functionType.describe(); -- cgit v1.2.3