aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Structure
diff options
context:
space:
mode:
Diffstat (limited to 'src/Structure')
-rw-r--r--src/Structure/Types/FuncType.php10
-rw-r--r--src/Structure/Types/ResultType.php13
-rw-r--r--src/Structure/Types/ValType.php2
-rw-r--r--src/Structure/Types/ValTypes/NumType.php6
-rw-r--r--src/Structure/Types/ValTypes/RefType.php6
-rw-r--r--src/Structure/Types/ValTypes/VecType.php6
6 files changed, 41 insertions, 2 deletions
diff --git a/src/Structure/Types/FuncType.php b/src/Structure/Types/FuncType.php
index 17ef98a..e445512 100644
--- a/src/Structure/Types/FuncType.php
+++ b/src/Structure/Types/FuncType.php
@@ -7,8 +7,14 @@ namespace Nsfisis\Waddiwasi\Structure\Types;
final readonly class FuncType
{
public function __construct(
- public ResultType $args,
- public ResultType $returns,
+ public ResultType $params,
+ public ResultType $results,
) {
}
+
+ public function equals(FuncType $other): bool
+ {
+ return $this->params->equals($other->params)
+ && $this->results->equals($other->results);
+ }
}
diff --git a/src/Structure/Types/ResultType.php b/src/Structure/Types/ResultType.php
index 267916b..a826805 100644
--- a/src/Structure/Types/ResultType.php
+++ b/src/Structure/Types/ResultType.php
@@ -13,4 +13,17 @@ final readonly class ResultType
public array $types,
) {
}
+
+ public function equals(ResultType $other): bool
+ {
+ if (count($this->types) !== count($other->types)) {
+ return false;
+ }
+ foreach ($this->types as $i => $type) {
+ if (!$type->equals($other->types[$i])) {
+ return false;
+ }
+ }
+ return true;
+ }
}
diff --git a/src/Structure/Types/ValType.php b/src/Structure/Types/ValType.php
index 58bf32c..bf072e2 100644
--- a/src/Structure/Types/ValType.php
+++ b/src/Structure/Types/ValType.php
@@ -20,4 +20,6 @@ abstract readonly class ValType
{
return new ValTypes\RefType($type);
}
+
+ abstract public function equals(ValType $other): bool;
}
diff --git a/src/Structure/Types/ValTypes/NumType.php b/src/Structure/Types/ValTypes/NumType.php
index 3376d27..fcaa7e3 100644
--- a/src/Structure/Types/ValTypes/NumType.php
+++ b/src/Structure/Types/ValTypes/NumType.php
@@ -12,4 +12,10 @@ final readonly class NumType extends ValType
protected function __construct(public OrigNumType $inner)
{
}
+
+ public function equals(ValType $other): bool
+ {
+ return $other instanceof self
+ && $this->inner === $other->inner;
+ }
}
diff --git a/src/Structure/Types/ValTypes/RefType.php b/src/Structure/Types/ValTypes/RefType.php
index 720eb7d..fc48dfb 100644
--- a/src/Structure/Types/ValTypes/RefType.php
+++ b/src/Structure/Types/ValTypes/RefType.php
@@ -12,4 +12,10 @@ final readonly class RefType extends ValType
protected function __construct(public OrigRefType $inner)
{
}
+
+ public function equals(ValType $other): bool
+ {
+ return $other instanceof self
+ && $this->inner === $other->inner;
+ }
}
diff --git a/src/Structure/Types/ValTypes/VecType.php b/src/Structure/Types/ValTypes/VecType.php
index 8fb546c..a28081f 100644
--- a/src/Structure/Types/ValTypes/VecType.php
+++ b/src/Structure/Types/ValTypes/VecType.php
@@ -12,4 +12,10 @@ final readonly class VecType extends ValType
protected function __construct(public OrigVecType $inner)
{
}
+
+ public function equals(ValType $other): bool
+ {
+ return $other instanceof self
+ && $this->inner === $other->inner; // @phpstan-ignore-line
+ }
}