summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeChecker.java5
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerSubtyping.java12
-rw-r--r--src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerSubtypingTests.java30
3 files changed, 43 insertions, 4 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeChecker.java b/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeChecker.java
index 1b10de2..841c934 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeChecker.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeChecker.java
@@ -9,6 +9,7 @@ import java.util.ArrayList;
import java.util.List;
import static org.zwobble.hobgoblin.compiler.typechecker.NamespaceNameResolution.resolveNamespaceName;
+import static org.zwobble.hobgoblin.compiler.typechecker.TypeCheckerSubtyping.isSubtype;
public class TypeChecker {
@@ -395,8 +396,4 @@ public class TypeChecker {
);
}
}
-
- private static boolean isSubtype(Type subtype, Type supertype) {
- return subtype.equals(supertype);
- }
}
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerSubtyping.java b/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerSubtyping.java
new file mode 100644
index 0000000..673d931
--- /dev/null
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerSubtyping.java
@@ -0,0 +1,12 @@
+package org.zwobble.hobgoblin.compiler.typechecker;
+
+import org.zwobble.hobgoblin.compiler.types.Type;
+
+class TypeCheckerSubtyping {
+ private TypeCheckerSubtyping() {
+ }
+
+ static boolean isSubtype(Type subtype, Type supertype) {
+ return subtype.equals(supertype);
+ }
+}
diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerSubtypingTests.java b/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerSubtypingTests.java
new file mode 100644
index 0000000..35779fe
--- /dev/null
+++ b/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerSubtypingTests.java
@@ -0,0 +1,30 @@
+package org.zwobble.hobgoblin.compiler.typechecker;
+
+import org.junit.jupiter.api.Test;
+import org.zwobble.hobgoblin.compiler.types.SimpleNativeType;
+
+import static org.zwobble.hobgoblin.compiler.typechecker.TypeCheckerSubtyping.isSubtype;
+import static org.zwobble.precisely.AssertThat.assertThat;
+import static org.zwobble.precisely.Matchers.equalTo;
+
+public class TypeCheckerSubtypingTests {
+ @Test
+ public void whenTypeIsEqualToTypeThenTypeIsSubtype() {
+ var nativeType1 = SimpleNativeType.builtin("Int32");
+ var nativeType2 = SimpleNativeType.builtin("Int32");
+
+ var isSubtype = isSubtype(nativeType1, nativeType2);
+
+ assertThat(isSubtype, equalTo(true));
+ }
+
+ @Test
+ public void distinctTypesAreNotSubtypes() {
+ var nativeType1 = SimpleNativeType.builtin("Int32");
+ var nativeType2 = SimpleNativeType.builtin("Int64");
+
+ var isSubtype = isSubtype(nativeType1, nativeType2);
+
+ assertThat(isSubtype, equalTo(false));
+ }
+}