diff --git a/packages/boringlang/src/types/type_system.ts b/packages/boringlang/src/types/type_system.ts index a405b5a..35e224c 100644 --- a/packages/boringlang/src/types/type_system.ts +++ b/packages/boringlang/src/types/type_system.ts @@ -89,6 +89,7 @@ class TypeSystem { this.result[comparison.right.name] = comparison.left; comparison.right = comparison.left; } + // check if ( comparison.left.typeUsage !== "UnknownTypeUsage" && comparison.right.typeUsage !== "UnknownTypeUsage" @@ -121,6 +122,13 @@ class TypeSystem { comparison.left.arguments[comparison.operation.argNum]; comparison.right = comparison.left.arguments[comparison.operation.argNum]; } + // check + if ( + argument.typeUsage !== "UnknownTypeUsage" && + comparison.right.typeUsage !== "UnknownTypeUsage" + ) { + compareTypes(argument, comparison.right); + } } // return type if (comparison.operation.operation === "return") { @@ -145,6 +153,13 @@ class TypeSystem { this.result[comparison.right.name] = comparison.left.returnType; comparison.right = comparison.left.returnType; } + // check + if ( + comparison.left.returnType.typeUsage !== "UnknownTypeUsage" && + comparison.right.typeUsage !== "UnknownTypeUsage" + ) { + compareTypes(comparison.left.returnType, comparison.right); + } } if ( comparison.left.typeUsage === "UnknownTypeUsage" ||