From bc735ece60ac6cc3b0624d01408e2c95cc575533 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 30 Sep 2023 17:28:56 +0100 Subject: Extract and test isSubType() --- .../java/org/shedlang/compiler/typechecker/TypeChecker.java | 6 ++---- .../shedlang/compiler/typechecker/TypeCheckerSubTyping.java | 13 +++++++++++++ 2 files changed, 15 insertions(+), 4 deletions(-) create mode 100644 src/main/java/org/shedlang/compiler/typechecker/TypeCheckerSubTyping.java (limited to 'src/main/java') diff --git a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java index b7aafe1a..f754d0d0 100644 --- a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java +++ b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java @@ -15,6 +15,8 @@ import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; +import static org.shedlang.compiler.typechecker.TypeCheckerSubTyping.isSubType; + public class TypeChecker { private TypeChecker() { @@ -38,10 +40,6 @@ public class TypeChecker { return subEffect == Effects.NONE || subEffect.equals(superEffect); } - private static boolean isSubType(Type subType, Type superType, TypeCheckerContext context) { - return superType == Types.TOP || subType.equals(superType); - } - private static Type compileTimeLookup(String name, Source source, TypeCheckerContext context) { var variable = context.compileTimeLookup(name) .orElseThrow(() -> new UnknownVariableError(name, source)); diff --git a/src/main/java/org/shedlang/compiler/typechecker/TypeCheckerSubTyping.java b/src/main/java/org/shedlang/compiler/typechecker/TypeCheckerSubTyping.java new file mode 100644 index 00000000..c9576191 --- /dev/null +++ b/src/main/java/org/shedlang/compiler/typechecker/TypeCheckerSubTyping.java @@ -0,0 +1,13 @@ +package org.shedlang.compiler.typechecker; + +import org.shedlang.compiler.types.Type; +import org.shedlang.compiler.types.Types; + +public class TypeCheckerSubTyping { + private TypeCheckerSubTyping() { + } + + static boolean isSubType(Type subType, Type superType, TypeCheckerContext context) { + return superType == Types.TOP || subType.equals(superType); + } +} -- cgit v1.2.3