diff options
| author | nsfisis <nsfisis@gmail.com> | 2024-02-26 13:21:22 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2024-03-03 15:27:26 +0900 |
| commit | 996259e6a1a04f91179d2b83cc19e3fbb371cd33 (patch) | |
| tree | 14ccabf37cc909c8c61899ffb84429fdeb8dfce0 /src/Structure/Types | |
| parent | 8a789bffe72e93ae24ea39648018e5fecf94c7fa (diff) | |
| download | php-waddiwasi-996259e6a1a04f91179d2b83cc19e3fbb371cd33.tar.gz php-waddiwasi-996259e6a1a04f91179d2b83cc19e3fbb371cd33.tar.zst php-waddiwasi-996259e6a1a04f91179d2b83cc19e3fbb371cd33.zip | |
feat: implement some of instructions
Diffstat (limited to 'src/Structure/Types')
| -rw-r--r-- | src/Structure/Types/FuncType.php | 10 | ||||
| -rw-r--r-- | src/Structure/Types/ResultType.php | 13 | ||||
| -rw-r--r-- | src/Structure/Types/ValType.php | 2 | ||||
| -rw-r--r-- | src/Structure/Types/ValTypes/NumType.php | 6 | ||||
| -rw-r--r-- | src/Structure/Types/ValTypes/RefType.php | 6 | ||||
| -rw-r--r-- | src/Structure/Types/ValTypes/VecType.php | 6 |
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 + } } |
