diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-09-30 17:28:56 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-09-30 17:28:56 +0100 |
| commit | bc735ece60ac6cc3b0624d01408e2c95cc575533 (patch) | |
| tree | 6d75b80fdf3664ddd60fa2ba76932013eb388a01 /src/main/java | |
| parent | 84b617ab54023c4a9a67687ead488976a4fb8056 (diff) | |
Extract and test isSubType()
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java | 6 | ||||
| -rw-r--r-- | src/main/java/org/shedlang/compiler/typechecker/TypeCheckerSubTyping.java | 13 |
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); + } +} |
