aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-09-30 17:28:56 +0100
committerMichael Williamson <mike@zwobble.org>2023-09-30 17:28:56 +0100
commitbc735ece60ac6cc3b0624d01408e2c95cc575533 (patch)
tree6d75b80fdf3664ddd60fa2ba76932013eb388a01 /src/main/java
parent84b617ab54023c4a9a67687ead488976a4fb8056 (diff)
Extract and test isSubType()
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/typechecker/TypeCheckerSubTyping.java13
2 files changed, 15 insertions, 4 deletions
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);
+ }
+}