diff --git a/src/Definition/BinaryOperator.php b/src/Definition/BinaryOperator.php
index 07ac8a2e..a46e840b 100644
--- a/src/Definition/BinaryOperator.php
+++ b/src/Definition/BinaryOperator.php
@@ -29,12 +29,6 @@ enum BinaryOperator: string
case AND = 'AND';
case OR = 'OR';
- case PLUS = 'PLUS';
- case MINUS = 'MINUS';
- case MULTIPLY_BY = 'MULTIPLY_BY';
- case DIVIDE_BY = 'DIVIDE_BY';
- case MODULO = 'MODULO';
-
case EQUAL = 'EQUAL';
case NOT_EQUAL = 'NOT_EQUAL';
case GREATER_THAN = 'GREATER_THAN';
@@ -48,12 +42,6 @@ public static function fromTokenType(TokenType $tokenType): self
TokenType::OPERATOR_BOOLEAN_AND => self::AND,
TokenType::OPERATOR_BOOLEAN_OR => self::OR,
- TokenType::OPERATOR_ARITHMETIC_PLUS => self::PLUS,
- TokenType::OPERATOR_ARITHMETIC_MINUS => self::MINUS,
- TokenType::OPERATOR_ARITHMETIC_MULTIPLY_BY => self::MULTIPLY_BY,
- TokenType::OPERATOR_ARITHMETIC_DIVIDE_BY => self::DIVIDE_BY,
- TokenType::OPERATOR_ARITHMETIC_MODULO => self::MODULO,
-
TokenType::COMPARATOR_EQUAL => self::EQUAL,
TokenType::COMPARATOR_NOT_EQUAL => self::NOT_EQUAL,
TokenType::COMPARATOR_GREATER_THAN => self::GREATER_THAN,
@@ -72,13 +60,6 @@ public function toPrecedence(): Precedence
self::OR => Precedence::LOGICAL_OR,
- self::PLUS,
- self::MINUS => Precedence::DASH,
-
- self::MULTIPLY_BY,
- self::DIVIDE_BY,
- self::MODULO => Precedence::POINT,
-
self::EQUAL,
self::NOT_EQUAL => Precedence::EQUALITY,
diff --git a/src/Definition/NumberFormat.php b/src/Definition/IntegerFormat.php
similarity index 86%
rename from src/Definition/NumberFormat.php
rename to src/Definition/IntegerFormat.php
index 9cb58b2c..5118d4c7 100644
--- a/src/Definition/NumberFormat.php
+++ b/src/Definition/IntegerFormat.php
@@ -24,7 +24,7 @@
use PackageFactory\ComponentEngine\Parser\Tokenizer\TokenType;
-enum NumberFormat: string
+enum IntegerFormat: string
{
case BINARY = 'BINARY';
case OCTAL = 'OCTAL';
@@ -36,11 +36,10 @@ public static function fromTokenType(TokenType $tokenType): self
return match ($tokenType) {
TokenType::NUMBER_BINARY => self::BINARY,
TokenType::NUMBER_OCTAL => self::OCTAL,
- TokenType::NUMBER_DECIMAL,
- TokenType::PERIOD => self::DECIMAL,
+ TokenType::NUMBER_DECIMAL => self::DECIMAL,
TokenType::NUMBER_HEXADECIMAL => self::HEXADECIMAL,
- default => throw new \Exception('@TODO: Unknown Number Format: ' . $tokenType->value)
+ default => throw new \Exception('@TODO: Unknown Integer Format: ' . $tokenType->value)
};
}
}
diff --git a/src/Definition/Precedence.php b/src/Definition/Precedence.php
index 49da1b56..3f48773b 100644
--- a/src/Definition/Precedence.php
+++ b/src/Definition/Precedence.php
@@ -34,8 +34,6 @@ enum Precedence: int
case ACCESS = 18;
case UNARY = 15;
- case POINT = 13;
- case DASH = 12;
case COMPARISON = 10;
case EQUALITY = 9;
case LOGICAL_AND = 5;
@@ -55,13 +53,6 @@ public static function forTokenType(TokenType $tokenType): self
TokenType::OPERATOR_BOOLEAN_NOT => self::UNARY,
- TokenType::OPERATOR_ARITHMETIC_MULTIPLY_BY,
- TokenType::OPERATOR_ARITHMETIC_DIVIDE_BY,
- TokenType::OPERATOR_ARITHMETIC_MODULO => self::POINT,
-
- TokenType::OPERATOR_ARITHMETIC_PLUS,
- TokenType::OPERATOR_ARITHMETIC_MINUS => self::DASH,
-
TokenType::COMPARATOR_GREATER_THAN,
TokenType::COMPARATOR_GREATER_THAN_OR_EQUAL,
TokenType::COMPARATOR_LESS_THAN,
diff --git a/src/Parser/Ast/EnumMemberDeclarationNode.php b/src/Parser/Ast/EnumMemberDeclarationNode.php
index 673bcd73..ccc03929 100644
--- a/src/Parser/Ast/EnumMemberDeclarationNode.php
+++ b/src/Parser/Ast/EnumMemberDeclarationNode.php
@@ -30,7 +30,7 @@ final class EnumMemberDeclarationNode implements \JsonSerializable
{
private function __construct(
public readonly string $name,
- public readonly null|StringLiteralNode|NumberLiteralNode $value
+ public readonly null|StringLiteralNode|IntegerLiteralNode $value
) {
}
@@ -54,7 +54,7 @@ public static function fromTokens(\Iterator $tokens): self
/** @phpstan-ignore-next-line */
TokenType::STRING_QUOTED => StringLiteralNode::fromTokens($tokens),
/** @phpstan-ignore-next-line */
- TokenType::NUMBER_DECIMAL => NumberLiteralNode::fromTokens($tokens),
+ TokenType::NUMBER_DECIMAL => IntegerLiteralNode::fromTokens($tokens),
default => throw new \Exception('@TODO: Unexpected Token ' . Scanner::type($tokens)->value)
};
/** @phpstan-ignore-next-line */
diff --git a/src/Parser/Ast/ExpressionNode.php b/src/Parser/Ast/ExpressionNode.php
index d8437c1d..3d6bde7a 100644
--- a/src/Parser/Ast/ExpressionNode.php
+++ b/src/Parser/Ast/ExpressionNode.php
@@ -33,7 +33,7 @@
final class ExpressionNode implements \JsonSerializable
{
private function __construct(
- public readonly IdentifierNode | NumberLiteralNode | BinaryOperationNode | UnaryOperationNode | AccessNode | TernaryOperationNode | TagNode | StringLiteralNode | MatchNode | TemplateLiteralNode | BooleanLiteralNode | NullLiteralNode $root
+ public readonly IdentifierNode | IntegerLiteralNode | BinaryOperationNode | UnaryOperationNode | AccessNode | TernaryOperationNode | TagNode | StringLiteralNode | MatchNode | TemplateLiteralNode | BooleanLiteralNode | NullLiteralNode $root
) {
}
@@ -89,7 +89,7 @@ public static function fromTokens(\Iterator &$tokens, Precedence $precedence = P
case TokenType::NUMBER_DECIMAL:
case TokenType::NUMBER_HEXADECIMAL:
case TokenType::PERIOD:
- $root = NumberLiteralNode::fromTokens($tokens);
+ $root = IntegerLiteralNode::fromTokens($tokens);
break;
case TokenType::KEYWORD_TRUE:
case TokenType::KEYWORD_FALSE:
@@ -134,11 +134,6 @@ public static function fromTokens(\Iterator &$tokens, Precedence $precedence = P
switch (Scanner::type($tokens)) {
case TokenType::OPERATOR_BOOLEAN_AND:
case TokenType::OPERATOR_BOOLEAN_OR:
- case TokenType::OPERATOR_ARITHMETIC_PLUS:
- case TokenType::OPERATOR_ARITHMETIC_MINUS:
- case TokenType::OPERATOR_ARITHMETIC_MULTIPLY_BY:
- case TokenType::OPERATOR_ARITHMETIC_DIVIDE_BY:
- case TokenType::OPERATOR_ARITHMETIC_MODULO:
case TokenType::COMPARATOR_EQUAL:
case TokenType::COMPARATOR_NOT_EQUAL:
case TokenType::COMPARATOR_GREATER_THAN:
diff --git a/src/Parser/Ast/NumberLiteralNode.php b/src/Parser/Ast/IntegerLiteralNode.php
similarity index 85%
rename from src/Parser/Ast/NumberLiteralNode.php
rename to src/Parser/Ast/IntegerLiteralNode.php
index 49a81b17..d3e26643 100644
--- a/src/Parser/Ast/NumberLiteralNode.php
+++ b/src/Parser/Ast/IntegerLiteralNode.php
@@ -22,15 +22,15 @@
namespace PackageFactory\ComponentEngine\Parser\Ast;
-use PackageFactory\ComponentEngine\Definition\NumberFormat;
+use PackageFactory\ComponentEngine\Definition\IntegerFormat;
use PackageFactory\ComponentEngine\Parser\Tokenizer\Scanner;
use PackageFactory\ComponentEngine\Parser\Tokenizer\Token;
-final class NumberLiteralNode implements \JsonSerializable
+final class IntegerLiteralNode implements \JsonSerializable
{
private function __construct(
public readonly string $value,
- public readonly NumberFormat $format
+ public readonly IntegerFormat $format
) {
}
@@ -40,7 +40,7 @@ private function __construct(
*/
public static function fromTokens(\Iterator $tokens): self
{
- $format = NumberFormat::fromTokenType(Scanner::type($tokens));
+ $format = IntegerFormat::fromTokenType(Scanner::type($tokens));
$value = Scanner::value($tokens);
Scanner::skipOne($tokens);
@@ -54,7 +54,7 @@ public static function fromTokens(\Iterator $tokens): self
public function jsonSerialize(): mixed
{
return [
- 'type' => 'NumberLiteralNode',
+ 'type' => 'IntegerLiteralNode',
'payload' => [
'value' => $this->value,
'format' => $this->format->value
diff --git a/src/Parser/Tokenizer/TokenType.php b/src/Parser/Tokenizer/TokenType.php
index 090bcfda..12d76b29 100644
--- a/src/Parser/Tokenizer/TokenType.php
+++ b/src/Parser/Tokenizer/TokenType.php
@@ -58,12 +58,6 @@ enum TokenType: string
case OPERATOR_BOOLEAN_OR = 'OPERATOR_BOOLEAN_OR';
case OPERATOR_BOOLEAN_NOT = 'OPERATOR_BOOLEAN_NOT';
- case OPERATOR_ARITHMETIC_PLUS = 'OPERATOR_ARITHMETIC_PLUS';
- case OPERATOR_ARITHMETIC_MINUS = 'OPERATOR_ARITHMETIC_MINUS';
- case OPERATOR_ARITHMETIC_MULTIPLY_BY = 'OPERATOR_ARITHMETIC_MULTIPLY_BY';
- case OPERATOR_ARITHMETIC_DIVIDE_BY = 'OPERATOR_ARITHMETIC_DIVIDE_BY';
- case OPERATOR_ARITHMETIC_MODULO = 'OPERATOR_ARITHMETIC_MODULO';
-
case COMPARATOR_EQUAL = 'COMPARATOR_EQUAL';
case COMPARATOR_NOT_EQUAL = 'COMPARATOR_NOT_EQUAL';
case COMPARATOR_GREATER_THAN = 'COMPARATOR_GREATER_THAN';
@@ -117,6 +111,8 @@ public static function fromBuffer(Buffer $buffer): TokenType
$value === 'false' => self::KEYWORD_FALSE,
$value === 'null' => self::KEYWORD_NULL,
+ $value === '.' => self::PERIOD,
+
(bool) preg_match(
'/^0[bB][0-1]+$/',
$value
@@ -126,7 +122,7 @@ public static function fromBuffer(Buffer $buffer): TokenType
$value
) => self::NUMBER_OCTAL,
$value !== '' && preg_match(
- '/^([-+]?[0-9]+)?(\.[0-9]+)?([eE][0-9]+)?$/',
+ '/^([-+]?[0-9]+)$/',
$value
) => self::NUMBER_DECIMAL,
(bool) preg_match(
diff --git a/src/Parser/Tokenizer/Tokenizer.php b/src/Parser/Tokenizer/Tokenizer.php
index 346861b6..c08eaa15 100644
--- a/src/Parser/Tokenizer/Tokenizer.php
+++ b/src/Parser/Tokenizer/Tokenizer.php
@@ -85,13 +85,7 @@ private static function block(\Iterator $fragments): \Iterator
CharacterType::TEMPLATE_LITERAL_DELIMITER => self::templateLiteral($fragments),
CharacterType::BRACKET_OPEN => self::block($fragments),
CharacterType::ANGLE_OPEN => self::angle($fragments),
- CharacterType::PERIOD => match (TokenType::fromBuffer($buffer)) {
- TokenType::NUMBER_BINARY,
- TokenType::NUMBER_OCTAL,
- TokenType::NUMBER_DECIMAL,
- TokenType::NUMBER_HEXADECIMAL => null,
- default => self::period($fragments)
- },
+ CharacterType::PERIOD => self::period($fragments),
CharacterType::ANGLE_CLOSE,
CharacterType::FORWARD_SLASH,
CharacterType::SYMBOL => self::symbol($fragments),
@@ -235,27 +229,6 @@ public static function period(\Iterator $fragments): \Iterator
$buffer = Buffer::empty()->append($fragments->current());
$fragments->next();
- if ($fragments->valid()) {
- $fragment = $fragments->current();
-
- if (CharacterType::DIGIT->is($fragment->value)) {
- $buffer->append($fragment);
- $fragments->next();
-
- while ($fragments->valid()) {
- $fragment = $fragments->current();
-
- if (CharacterType::DIGIT->is($fragment->value)) {
- $buffer->append($fragment);
- $fragments->next();
- } else {
- yield from $buffer->flush(TokenType::NUMBER_DECIMAL);
- return;
- }
- }
- }
- }
-
yield from $buffer->flush(TokenType::PERIOD);
}
@@ -287,11 +260,6 @@ public static function symbol(\Iterator $fragments, ?Buffer $buffer = null): \It
}
yield from match ($buffer->value()) {
- '+' => $buffer->flush(TokenType::OPERATOR_ARITHMETIC_PLUS),
- '-' => $buffer->flush(TokenType::OPERATOR_ARITHMETIC_MINUS),
- '*' => $buffer->flush(TokenType::OPERATOR_ARITHMETIC_MULTIPLY_BY),
- '/' => $buffer->flush(TokenType::OPERATOR_ARITHMETIC_DIVIDE_BY),
- '%' => $buffer->flush(TokenType::OPERATOR_ARITHMETIC_MODULO),
'&&' => $buffer->flush(TokenType::OPERATOR_BOOLEAN_AND),
'||' => $buffer->flush(TokenType::OPERATOR_BOOLEAN_OR),
'!' => $buffer->flush(TokenType::OPERATOR_BOOLEAN_NOT),
diff --git a/src/Target/Php/Transpiler/BinaryOperation/BinaryOperationTranspiler.php b/src/Target/Php/Transpiler/BinaryOperation/BinaryOperationTranspiler.php
index b5268b19..abc7ff72 100644
--- a/src/Target/Php/Transpiler/BinaryOperation/BinaryOperationTranspiler.php
+++ b/src/Target/Php/Transpiler/BinaryOperation/BinaryOperationTranspiler.php
@@ -38,11 +38,6 @@ private function transpileBinaryOperator(BinaryOperator $binaryOperator): string
return match ($binaryOperator) {
BinaryOperator::AND => '&&',
BinaryOperator::OR => '||',
- BinaryOperator::PLUS => '+',
- BinaryOperator::MINUS => '-',
- BinaryOperator::MULTIPLY_BY => '*',
- BinaryOperator::DIVIDE_BY => '/',
- BinaryOperator::MODULO => '%',
BinaryOperator::EQUAL => '===',
BinaryOperator::NOT_EQUAL => '!==',
BinaryOperator::GREATER_THAN => '>',
diff --git a/src/Target/Php/Transpiler/EnumDeclaration/EnumDeclarationTranspiler.php b/src/Target/Php/Transpiler/EnumDeclaration/EnumDeclarationTranspiler.php
index ef5d82a8..a73b9361 100644
--- a/src/Target/Php/Transpiler/EnumDeclaration/EnumDeclarationTranspiler.php
+++ b/src/Target/Php/Transpiler/EnumDeclaration/EnumDeclarationTranspiler.php
@@ -24,7 +24,7 @@
use PackageFactory\ComponentEngine\Parser\Ast\EnumDeclarationNode;
use PackageFactory\ComponentEngine\Parser\Ast\EnumMemberDeclarationNode;
-use PackageFactory\ComponentEngine\Parser\Ast\NumberLiteralNode;
+use PackageFactory\ComponentEngine\Parser\Ast\IntegerLiteralNode;
use PackageFactory\ComponentEngine\Parser\Ast\StringLiteralNode;
final class EnumDeclarationTranspiler
@@ -62,7 +62,7 @@ public function transpile(EnumDeclarationNode $enumDeclarationNode): string
private function transpileBackingType(EnumDeclarationNode $enumDeclarationNode): string
{
foreach ($enumDeclarationNode->memberDeclarations->items as $memberDeclarationNode) {
- if ($memberDeclarationNode->value instanceof NumberLiteralNode) {
+ if ($memberDeclarationNode->value instanceof IntegerLiteralNode) {
return 'int';
} else {
return 'string';
@@ -74,7 +74,7 @@ private function transpileBackingType(EnumDeclarationNode $enumDeclarationNode):
private function transpileMemberValue(EnumMemberDeclarationNode $enumMemberDeclarationNode): string
{
- if ($enumMemberDeclarationNode->value instanceof NumberLiteralNode) {
+ if ($enumMemberDeclarationNode->value instanceof IntegerLiteralNode) {
return $enumMemberDeclarationNode->value->value;
} else if ($enumMemberDeclarationNode->value instanceof StringLiteralNode) {
return '\'' . $enumMemberDeclarationNode->value->value . '\'';
diff --git a/src/Target/Php/Transpiler/Expression/ExpressionTranspiler.php b/src/Target/Php/Transpiler/Expression/ExpressionTranspiler.php
index c54a503e..450ff657 100644
--- a/src/Target/Php/Transpiler/Expression/ExpressionTranspiler.php
+++ b/src/Target/Php/Transpiler/Expression/ExpressionTranspiler.php
@@ -29,7 +29,7 @@
use PackageFactory\ComponentEngine\Parser\Ast\IdentifierNode;
use PackageFactory\ComponentEngine\Parser\Ast\MatchNode;
use PackageFactory\ComponentEngine\Parser\Ast\NullLiteralNode;
-use PackageFactory\ComponentEngine\Parser\Ast\NumberLiteralNode;
+use PackageFactory\ComponentEngine\Parser\Ast\IntegerLiteralNode;
use PackageFactory\ComponentEngine\Parser\Ast\StringLiteralNode;
use PackageFactory\ComponentEngine\Parser\Ast\TagNode;
use PackageFactory\ComponentEngine\Parser\Ast\TemplateLiteralNode;
@@ -41,7 +41,7 @@
use PackageFactory\ComponentEngine\Target\Php\Transpiler\Identifier\IdentifierTranspiler;
use PackageFactory\ComponentEngine\Target\Php\Transpiler\Match\MatchTranspiler;
use PackageFactory\ComponentEngine\Target\Php\Transpiler\NullLiteral\NullLiteralTranspiler;
-use PackageFactory\ComponentEngine\Target\Php\Transpiler\NumberLiteral\NumberLiteralTranspiler;
+use PackageFactory\ComponentEngine\Target\Php\Transpiler\IntegerLiteral\IntegerLiteralTranspiler;
use PackageFactory\ComponentEngine\Target\Php\Transpiler\StringLiteral\StringLiteralTranspiler;
use PackageFactory\ComponentEngine\Target\Php\Transpiler\Tag\TagTranspiler;
use PackageFactory\ComponentEngine\Target\Php\Transpiler\TemplateLiteral\TemplateLiteralTranspiler;
@@ -80,7 +80,7 @@ public function transpile(ExpressionNode $expressionNode): string
scope: $this->scope
),
NullLiteralNode::class => new NullLiteralTranspiler(),
- NumberLiteralNode::class => new NumberLiteralTranspiler(),
+ IntegerLiteralNode::class => new IntegerLiteralTranspiler(),
StringLiteralNode::class => new StringLiteralTranspiler(
shouldAddQuotes: $this->shouldAddQuotesIfNecessary
),
diff --git a/src/Target/Php/Transpiler/NumberLiteral/NumberLiteralTranspiler.php b/src/Target/Php/Transpiler/IntegerLiteral/IntegerLiteralTranspiler.php
similarity index 63%
rename from src/Target/Php/Transpiler/NumberLiteral/NumberLiteralTranspiler.php
rename to src/Target/Php/Transpiler/IntegerLiteral/IntegerLiteralTranspiler.php
index 60a68619..14a45676 100644
--- a/src/Target/Php/Transpiler/NumberLiteral/NumberLiteralTranspiler.php
+++ b/src/Target/Php/Transpiler/IntegerLiteral/IntegerLiteralTranspiler.php
@@ -20,18 +20,18 @@
declare(strict_types=1);
-namespace PackageFactory\ComponentEngine\Target\Php\Transpiler\NumberLiteral;
+namespace PackageFactory\ComponentEngine\Target\Php\Transpiler\IntegerLiteral;
-use PackageFactory\ComponentEngine\Definition\NumberFormat;
-use PackageFactory\ComponentEngine\Parser\Ast\NumberLiteralNode;
+use PackageFactory\ComponentEngine\Definition\IntegerFormat;
+use PackageFactory\ComponentEngine\Parser\Ast\IntegerLiteralNode;
-final class NumberLiteralTranspiler
+final class IntegerLiteralTranspiler
{
- public function transpile(NumberLiteralNode $numberLiteralNode): string
+ public function transpile(IntegerLiteralNode $integerLiteralNode): string
{
- return match ($numberLiteralNode->format) {
- NumberFormat::BINARY => strtolower($numberLiteralNode->value),
- default => $numberLiteralNode->value
+ return match ($integerLiteralNode->format) {
+ IntegerFormat::BINARY => strtolower($integerLiteralNode->value),
+ default => $integerLiteralNode->value
};
}
}
diff --git a/src/Target/Php/Transpiler/TypeReference/TypeReferenceTranspiler.php b/src/Target/Php/Transpiler/TypeReference/TypeReferenceTranspiler.php
index b36a7e2b..2992d632 100644
--- a/src/Target/Php/Transpiler/TypeReference/TypeReferenceTranspiler.php
+++ b/src/Target/Php/Transpiler/TypeReference/TypeReferenceTranspiler.php
@@ -27,7 +27,7 @@
use PackageFactory\ComponentEngine\TypeSystem\Type\BooleanType\BooleanType;
use PackageFactory\ComponentEngine\TypeSystem\Type\ComponentType\ComponentType;
use PackageFactory\ComponentEngine\TypeSystem\Type\EnumType\EnumStaticType;
-use PackageFactory\ComponentEngine\TypeSystem\Type\NumberType\NumberType;
+use PackageFactory\ComponentEngine\TypeSystem\Type\IntegerType\IntegerType;
use PackageFactory\ComponentEngine\TypeSystem\Type\SlotType\SlotType;
use PackageFactory\ComponentEngine\TypeSystem\Type\StringType\StringType;
use PackageFactory\ComponentEngine\TypeSystem\Type\StructType\StructType;
@@ -44,7 +44,7 @@ public function transpile(TypeReferenceNode $typeReferenceNode): string
{
$type = $this->scope->resolveTypeReference($typeReferenceNode);
$phpTypeReference = match ($type::class) {
- NumberType::class => 'int|float',
+ IntegerType::class => 'int|float',
StringType::class => 'string',
BooleanType::class => 'bool',
SlotType::class => $this->strategy->getPhpTypeReferenceForSlotType($type, $typeReferenceNode),
diff --git a/src/TypeSystem/Resolver/BinaryOperation/BinaryOperationTypeResolver.php b/src/TypeSystem/Resolver/BinaryOperation/BinaryOperationTypeResolver.php
index cf95fe8b..d6580a6c 100644
--- a/src/TypeSystem/Resolver/BinaryOperation/BinaryOperationTypeResolver.php
+++ b/src/TypeSystem/Resolver/BinaryOperation/BinaryOperationTypeResolver.php
@@ -27,7 +27,6 @@
use PackageFactory\ComponentEngine\TypeSystem\Resolver\Expression\ExpressionTypeResolver;
use PackageFactory\ComponentEngine\TypeSystem\ScopeInterface;
use PackageFactory\ComponentEngine\TypeSystem\Type\BooleanType\BooleanType;
-use PackageFactory\ComponentEngine\TypeSystem\Type\NumberType\NumberType;
use PackageFactory\ComponentEngine\TypeSystem\Type\UnionType\UnionType;
use PackageFactory\ComponentEngine\TypeSystem\TypeInterface;
@@ -44,12 +43,6 @@ public function resolveTypeOf(BinaryOperationNode $binaryOperationNode): TypeInt
BinaryOperator::AND,
BinaryOperator::OR => $this->resolveTypeOfBooleanOperation($binaryOperationNode),
- BinaryOperator::PLUS,
- BinaryOperator::MINUS,
- BinaryOperator::MULTIPLY_BY,
- BinaryOperator::DIVIDE_BY,
- BinaryOperator::MODULO => $this->resolveTypeOfArithmeticOperation($binaryOperationNode),
-
BinaryOperator::EQUAL,
BinaryOperator::NOT_EQUAL,
BinaryOperator::GREATER_THAN,
@@ -70,20 +63,4 @@ private function resolveTypeOfBooleanOperation(BinaryOperationNode $binaryOperat
$expressionTypeResolver->resolveTypeOf($binaryOperationNode->right)
);
}
-
- private function resolveTypeOfArithmeticOperation(BinaryOperationNode $binaryOperationNode): TypeInterface
- {
- $expressionTypeResolver = new ExpressionTypeResolver(
- scope: $this->scope
- );
-
- foreach ([$binaryOperationNode->left, $binaryOperationNode->right] as $operandNode) {
- $typeOfOperandNode = $expressionTypeResolver->resolveTypeOf($operandNode);
- if (!$typeOfOperandNode->is(NumberType::get())) {
- throw new \Exception('@TODO: Operand must be of type number');
- }
- }
-
- return NumberType::get();
- }
}
diff --git a/src/TypeSystem/Resolver/Expression/ExpressionTypeResolver.php b/src/TypeSystem/Resolver/Expression/ExpressionTypeResolver.php
index fcc3b7ec..872b9da1 100644
--- a/src/TypeSystem/Resolver/Expression/ExpressionTypeResolver.php
+++ b/src/TypeSystem/Resolver/Expression/ExpressionTypeResolver.php
@@ -29,7 +29,7 @@
use PackageFactory\ComponentEngine\Parser\Ast\IdentifierNode;
use PackageFactory\ComponentEngine\Parser\Ast\MatchNode;
use PackageFactory\ComponentEngine\Parser\Ast\NullLiteralNode;
-use PackageFactory\ComponentEngine\Parser\Ast\NumberLiteralNode;
+use PackageFactory\ComponentEngine\Parser\Ast\IntegerLiteralNode;
use PackageFactory\ComponentEngine\Parser\Ast\StringLiteralNode;
use PackageFactory\ComponentEngine\Parser\Ast\TagNode;
use PackageFactory\ComponentEngine\Parser\Ast\TemplateLiteralNode;
@@ -40,7 +40,7 @@
use PackageFactory\ComponentEngine\TypeSystem\Resolver\Identifier\IdentifierTypeResolver;
use PackageFactory\ComponentEngine\TypeSystem\Resolver\Match\MatchTypeResolver;
use PackageFactory\ComponentEngine\TypeSystem\Resolver\NullLiteral\NullLiteralTypeResolver;
-use PackageFactory\ComponentEngine\TypeSystem\Resolver\NumberLiteral\NumberLiteralTypeResolver;
+use PackageFactory\ComponentEngine\TypeSystem\Resolver\IntegerLiteral\IntegerLiteralTypeResolver;
use PackageFactory\ComponentEngine\TypeSystem\Resolver\StringLiteral\StringLiteralTypeResolver;
use PackageFactory\ComponentEngine\TypeSystem\Resolver\Tag\TagTypeResolver;
use PackageFactory\ComponentEngine\TypeSystem\Resolver\TemplateLiteral\TemplateLiteralTypeResolver;
@@ -72,7 +72,7 @@ public function resolveTypeOf(ExpressionNode $expressionNode): TypeInterface
))->resolveTypeOf($rootNode),
NullLiteralNode::class => (new NullLiteralTypeResolver())
->resolveTypeOf($rootNode),
- NumberLiteralNode::class => (new NumberLiteralTypeResolver())
+ IntegerLiteralNode::class => (new IntegerLiteralTypeResolver())
->resolveTypeOf($rootNode),
StringLiteralNode::class => (new StringLiteralTypeResolver())
->resolveTypeOf($rootNode),
diff --git a/src/TypeSystem/Resolver/NumberLiteral/NumberLiteralTypeResolver.php b/src/TypeSystem/Resolver/IntegerLiteral/IntegerLiteralTypeResolver.php
similarity index 70%
rename from src/TypeSystem/Resolver/NumberLiteral/NumberLiteralTypeResolver.php
rename to src/TypeSystem/Resolver/IntegerLiteral/IntegerLiteralTypeResolver.php
index 82118710..93582f6c 100644
--- a/src/TypeSystem/Resolver/NumberLiteral/NumberLiteralTypeResolver.php
+++ b/src/TypeSystem/Resolver/IntegerLiteral/IntegerLiteralTypeResolver.php
@@ -20,16 +20,16 @@
declare(strict_types=1);
-namespace PackageFactory\ComponentEngine\TypeSystem\Resolver\NumberLiteral;
+namespace PackageFactory\ComponentEngine\TypeSystem\Resolver\IntegerLiteral;
-use PackageFactory\ComponentEngine\Parser\Ast\NumberLiteralNode;
-use PackageFactory\ComponentEngine\TypeSystem\Type\NumberType\NumberType;
+use PackageFactory\ComponentEngine\Parser\Ast\IntegerLiteralNode;
+use PackageFactory\ComponentEngine\TypeSystem\Type\IntegerType\IntegerType;
use PackageFactory\ComponentEngine\TypeSystem\TypeInterface;
-final class NumberLiteralTypeResolver
+final class IntegerLiteralTypeResolver
{
- public function resolveTypeOf(NumberLiteralNode $numberLiteralNode): TypeInterface
+ public function resolveTypeOf(IntegerLiteralNode $IntegerLiteralNode): TypeInterface
{
- return NumberType::get();
+ return IntegerType::get();
}
}
diff --git a/src/TypeSystem/Scope/GlobalScope/GlobalScope.php b/src/TypeSystem/Scope/GlobalScope/GlobalScope.php
index a6ab1b87..f9253a55 100644
--- a/src/TypeSystem/Scope/GlobalScope/GlobalScope.php
+++ b/src/TypeSystem/Scope/GlobalScope/GlobalScope.php
@@ -22,11 +22,10 @@
namespace PackageFactory\ComponentEngine\TypeSystem\Scope\GlobalScope;
-use PackageFactory\ComponentEngine\Parser\Ast\ComponentDeclarationNode;
use PackageFactory\ComponentEngine\Parser\Ast\TypeReferenceNode;
use PackageFactory\ComponentEngine\TypeSystem\ScopeInterface;
use PackageFactory\ComponentEngine\TypeSystem\Type\BooleanType\BooleanType;
-use PackageFactory\ComponentEngine\TypeSystem\Type\NumberType\NumberType;
+use PackageFactory\ComponentEngine\TypeSystem\Type\IntegerType\IntegerType;
use PackageFactory\ComponentEngine\TypeSystem\Type\SlotType\SlotType;
use PackageFactory\ComponentEngine\TypeSystem\Type\StringType\StringType;
use PackageFactory\ComponentEngine\TypeSystem\TypeInterface;
@@ -53,7 +52,7 @@ public function resolveTypeReference(TypeReferenceNode $typeReferenceNode): Type
{
return match ($typeReferenceNode->name) {
'string' => StringType::get(),
- 'number' => NumberType::get(),
+ 'number' => IntegerType::get(),
'boolean' => BooleanType::get(),
'slot' => SlotType::get(),
default => throw new \Exception('@TODO: Unknown Type ' . $typeReferenceNode->name)
diff --git a/src/TypeSystem/Type/NumberType/NumberType.php b/src/TypeSystem/Type/IntegerType/IntegerType.php
similarity index 91%
rename from src/TypeSystem/Type/NumberType/NumberType.php
rename to src/TypeSystem/Type/IntegerType/IntegerType.php
index 26da9440..d7570833 100644
--- a/src/TypeSystem/Type/NumberType/NumberType.php
+++ b/src/TypeSystem/Type/IntegerType/IntegerType.php
@@ -20,11 +20,11 @@
declare(strict_types=1);
-namespace PackageFactory\ComponentEngine\TypeSystem\Type\NumberType;
+namespace PackageFactory\ComponentEngine\TypeSystem\Type\IntegerType;
use PackageFactory\ComponentEngine\TypeSystem\TypeInterface;
-final class NumberType implements TypeInterface
+final class IntegerType implements TypeInterface
{
private static null|self $instance = null;
diff --git a/test/Integration/Examples/EnumWithNumberValue/EnumWithNumberValue.ast.json b/test/Integration/Examples/EnumWithNumberValue/EnumWithNumberValue.ast.json
index 150629c1..8633cd3d 100644
--- a/test/Integration/Examples/EnumWithNumberValue/EnumWithNumberValue.ast.json
+++ b/test/Integration/Examples/EnumWithNumberValue/EnumWithNumberValue.ast.json
@@ -11,7 +11,7 @@
"RED": {
"name": "RED",
"value": {
- "type": "NumberLiteralNode",
+ "type": "IntegerLiteralNode",
"payload": {
"value": "1",
"format": "DECIMAL"
@@ -21,7 +21,7 @@
"YELLOW": {
"name": "YELLOW",
"value": {
- "type": "NumberLiteralNode",
+ "type": "IntegerLiteralNode",
"payload": {
"value": "2",
"format": "DECIMAL"
@@ -31,7 +31,7 @@
"GREEN": {
"name": "GREEN",
"value": {
- "type": "NumberLiteralNode",
+ "type": "IntegerLiteralNode",
"payload": {
"value": "3",
"format": "DECIMAL"
diff --git a/test/Integration/Examples/Expression/Expression.afx b/test/Integration/Examples/Expression/Expression.afx
index 5c4e9a82..a098cddd 100644
--- a/test/Integration/Examples/Expression/Expression.afx
+++ b/test/Integration/Examples/Expression/Expression.afx
@@ -3,6 +3,6 @@ export component Expression {
b: number
return a <= 120
- ? b * a + (17 % b)
- : b / a
-}
\ No newline at end of file
+ ? b || a || 17
+ : b && a
+}
diff --git a/test/Integration/Examples/Expression/Expression.ast.json b/test/Integration/Examples/Expression/Expression.ast.json
index 936ca0a0..a2055f1d 100644
--- a/test/Integration/Examples/Expression/Expression.ast.json
+++ b/test/Integration/Examples/Expression/Expression.ast.json
@@ -44,7 +44,7 @@
"payload": "a"
},
{
- "type": "NumberLiteralNode",
+ "type": "IntegerLiteralNode",
"payload": {
"value": "120",
"format": "DECIMAL"
@@ -56,12 +56,12 @@
"true": {
"type": "BinaryOperationNode",
"payload": {
- "operator": "PLUS",
+ "operator": "OR",
"operands": [
{
"type": "BinaryOperationNode",
"payload": {
- "operator": "MULTIPLY_BY",
+ "operator": "OR",
"operands": [
{
"type": "Identifier",
@@ -75,22 +75,10 @@
}
},
{
- "type": "BinaryOperationNode",
+ "type": "IntegerLiteralNode",
"payload": {
- "operator": "MODULO",
- "operands": [
- {
- "type": "NumberLiteralNode",
- "payload": {
- "value": "17",
- "format": "DECIMAL"
- }
- },
- {
- "type": "Identifier",
- "payload": "b"
- }
- ]
+ "value": "17",
+ "format": "DECIMAL"
}
}
]
@@ -99,7 +87,7 @@
"false": {
"type": "BinaryOperationNode",
"payload": {
- "operator": "DIVIDE_BY",
+ "operator": "AND",
"operands": [
{
"type": "Identifier",
diff --git a/test/Integration/Examples/Expression/Expression.php b/test/Integration/Examples/Expression/Expression.php
index 547282b8..d37ad8db 100644
--- a/test/Integration/Examples/Expression/Expression.php
+++ b/test/Integration/Examples/Expression/Expression.php
@@ -16,6 +16,6 @@ public function __construct(
public function render(): string
{
- return (string) (($this->a <= 120) ? (($this->b * $this->a) + (17 % $this->b)) : ($this->b / $this->a));
+ return (string) (($this->a <= 120) ? (($this->b || $this->a) || 17) : ($this->b && $this->a));
}
}
diff --git a/test/Integration/Examples/Expression/Expression.tokens.json b/test/Integration/Examples/Expression/Expression.tokens.json
index eaa47363..0ff447a1 100644
--- a/test/Integration/Examples/Expression/Expression.tokens.json
+++ b/test/Integration/Examples/Expression/Expression.tokens.json
@@ -140,8 +140,8 @@
"value": " "
},
{
- "type": "OPERATOR_ARITHMETIC_MULTIPLY_BY",
- "value": "*"
+ "type": "OPERATOR_BOOLEAN_OR",
+ "value": "||"
},
{
"type": "SPACE",
@@ -156,41 +156,17 @@
"value": " "
},
{
- "type": "OPERATOR_ARITHMETIC_PLUS",
- "value": "+"
+ "type": "OPERATOR_BOOLEAN_OR",
+ "value": "||"
},
{
"type": "SPACE",
"value": " "
},
- {
- "type": "BRACKET_ROUND_OPEN",
- "value": "("
- },
{
"type": "NUMBER_DECIMAL",
"value": "17"
},
- {
- "type": "SPACE",
- "value": " "
- },
- {
- "type": "OPERATOR_ARITHMETIC_MODULO",
- "value": "%"
- },
- {
- "type": "SPACE",
- "value": " "
- },
- {
- "type": "STRING",
- "value": "b"
- },
- {
- "type": "BRACKET_ROUND_CLOSE",
- "value": ")"
- },
{
"type": "END_OF_LINE",
"value": "\n"
@@ -216,8 +192,8 @@
"value": " "
},
{
- "type": "OPERATOR_ARITHMETIC_DIVIDE_BY",
- "value": "/"
+ "type": "OPERATOR_BOOLEAN_AND",
+ "value": "&&"
},
{
"type": "SPACE",
diff --git a/test/Integration/Examples/Numbers/Numbers.afx b/test/Integration/Examples/Numbers/Numbers.afx
index a315619d..852a474d 100644
--- a/test/Integration/Examples/Numbers/Numbers.afx
+++ b/test/Integration/Examples/Numbers/Numbers.afx
@@ -1,30 +1,21 @@
export component Numbers {
return
# Decimal
- 0 +
- 1234567890 +
- 42 +
+ 0 ||
+ 1234567890 ||
+ 42 ||
# Binary
- 0b10000000000000000000000000000000 +
- 0b01111111100000000000000000000000 +
- 0B00000000011111111111111111111111 +
+ 0b10000000000000000000000000000000 ||
+ 0b01111111100000000000000000000000 ||
+ 0B00000000011111111111111111111111 ||
# Octal
- 0o755 +
- 0o644 +
+ 0o755 ||
+ 0o644 ||
# Hexadecimal
- 0xFFFFFFFFFFFFFFFFF +
- 0x123456789ABCDEF +
- 0xA +
-
- # With Exponent
- 1E3 +
- 2e6 +
-
- # With Floating Point
- 123.456 +
- 0.1e2 +
- .22
+ 0xFFFFFFFFFFFFFFFFF ||
+ 0x123456789ABCDEF ||
+ 0xA
}
diff --git a/test/Integration/Examples/Numbers/Numbers.ast.json b/test/Integration/Examples/Numbers/Numbers.ast.json
index 56d43578..6ba7112c 100644
--- a/test/Integration/Examples/Numbers/Numbers.ast.json
+++ b/test/Integration/Examples/Numbers/Numbers.ast.json
@@ -11,230 +11,156 @@
"returnExpression": {
"type": "BinaryOperationNode",
"payload": {
- "operator": "PLUS",
+ "operator": "OR",
"operands": [
{
"type": "BinaryOperationNode",
"payload": {
- "operator": "PLUS",
+ "operator": "OR",
"operands": [
{
"type": "BinaryOperationNode",
"payload": {
- "operator": "PLUS",
+ "operator": "OR",
"operands": [
{
"type": "BinaryOperationNode",
"payload": {
- "operator": "PLUS",
+ "operator": "OR",
"operands": [
{
"type": "BinaryOperationNode",
"payload": {
- "operator": "PLUS",
+ "operator": "OR",
"operands": [
{
"type": "BinaryOperationNode",
"payload": {
- "operator": "PLUS",
+ "operator": "OR",
"operands": [
{
"type": "BinaryOperationNode",
"payload": {
- "operator": "PLUS",
+ "operator": "OR",
"operands": [
{
"type": "BinaryOperationNode",
"payload": {
- "operator": "PLUS",
+ "operator": "OR",
"operands": [
{
"type": "BinaryOperationNode",
"payload": {
- "operator": "PLUS",
+ "operator": "OR",
"operands": [
{
"type": "BinaryOperationNode",
"payload": {
- "operator": "PLUS",
+ "operator": "OR",
"operands": [
{
- "type": "BinaryOperationNode",
+ "type": "IntegerLiteralNode",
"payload": {
- "operator": "PLUS",
- "operands": [
- {
- "type": "BinaryOperationNode",
- "payload": {
- "operator": "PLUS",
- "operands": [
- {
- "type": "BinaryOperationNode",
- "payload": {
- "operator": "PLUS",
- "operands": [
- {
- "type": "BinaryOperationNode",
- "payload": {
- "operator": "PLUS",
- "operands": [
- {
- "type": "BinaryOperationNode",
- "payload": {
- "operator": "PLUS",
- "operands": [
- {
- "type": "NumberLiteralNode",
- "payload": {
- "value": "0",
- "format": "DECIMAL"
- }
- },
- {
- "type": "NumberLiteralNode",
- "payload": {
- "value": "1234567890",
- "format": "DECIMAL"
- }
- }
- ]
- }
- },
- {
- "type": "NumberLiteralNode",
- "payload": {
- "value": "42",
- "format": "DECIMAL"
- }
- }
- ]
- }
- },
- {
- "type": "NumberLiteralNode",
- "payload": {
- "value": "0b10000000000000000000000000000000",
- "format": "BINARY"
- }
- }
- ]
- }
- },
- {
- "type": "NumberLiteralNode",
- "payload": {
- "value": "0b01111111100000000000000000000000",
- "format": "BINARY"
- }
- }
- ]
- }
- },
- {
- "type": "NumberLiteralNode",
- "payload": {
- "value": "0B00000000011111111111111111111111",
- "format": "BINARY"
- }
- }
- ]
+ "value": "0",
+ "format": "DECIMAL"
}
},
+
{
- "type": "NumberLiteralNode",
+ "type": "IntegerLiteralNode",
"payload": {
- "value": "0o755",
- "format": "OCTAL"
+ "value": "1234567890",
+ "format": "DECIMAL"
}
}
]
}
},
{
- "type": "NumberLiteralNode",
+ "type": "IntegerLiteralNode",
"payload": {
- "value": "0o644",
- "format": "OCTAL"
+ "value": "42",
+ "format": "DECIMAL"
}
}
]
}
},
{
- "type": "NumberLiteralNode",
+ "type": "IntegerLiteralNode",
"payload": {
- "value": "0xFFFFFFFFFFFFFFFFF",
- "format": "HEXADECIMAL"
+ "value": "0b10000000000000000000000000000000",
+ "format": "BINARY"
}
}
]
}
},
{
- "type": "NumberLiteralNode",
+ "type": "IntegerLiteralNode",
"payload": {
- "value": "0x123456789ABCDEF",
- "format": "HEXADECIMAL"
+ "value": "0b01111111100000000000000000000000",
+ "format": "BINARY"
}
}
]
}
},
{
- "type": "NumberLiteralNode",
+ "type": "IntegerLiteralNode",
"payload": {
- "value": "0xA",
- "format": "HEXADECIMAL"
+ "value": "0B00000000011111111111111111111111",
+ "format": "BINARY"
}
}
]
}
},
{
- "type": "NumberLiteralNode",
+ "type": "IntegerLiteralNode",
"payload": {
- "value": "1E3",
- "format": "DECIMAL"
+ "value": "0o755",
+ "format": "OCTAL"
}
}
]
}
},
{
- "type": "NumberLiteralNode",
+ "type": "IntegerLiteralNode",
"payload": {
- "value": "2e6",
- "format": "DECIMAL"
+ "value": "0o644",
+ "format": "OCTAL"
}
}
]
}
},
{
- "type": "NumberLiteralNode",
+ "type": "IntegerLiteralNode",
"payload": {
- "value": "123.456",
- "format": "DECIMAL"
+ "value": "0xFFFFFFFFFFFFFFFFF",
+ "format": "HEXADECIMAL"
}
}
]
}
},
{
- "type": "NumberLiteralNode",
+ "type": "IntegerLiteralNode",
"payload": {
- "value": "0.1e2",
- "format": "DECIMAL"
+ "value": "0x123456789ABCDEF",
+ "format": "HEXADECIMAL"
}
}
]
}
},
{
- "type": "NumberLiteralNode",
+ "type": "IntegerLiteralNode",
"payload": {
- "value": ".22",
- "format": "DECIMAL"
+ "value": "0xA",
+ "format": "HEXADECIMAL"
}
}
]
diff --git a/test/Integration/Examples/Numbers/Numbers.php b/test/Integration/Examples/Numbers/Numbers.php
index 58555d25..7a97cf95 100644
--- a/test/Integration/Examples/Numbers/Numbers.php
+++ b/test/Integration/Examples/Numbers/Numbers.php
@@ -10,6 +10,6 @@ final class Numbers extends BaseClass
{
public function render(): string
{
- return (string) (((((((((((((((0 + 1234567890) + 42) + 0b10000000000000000000000000000000) + 0b01111111100000000000000000000000) + 0b00000000011111111111111111111111) + 0o755) + 0o644) + 0xFFFFFFFFFFFFFFFFF) + 0x123456789ABCDEF) + 0xA) + 1E3) + 2e6) + 123.456) + 0.1e2) + .22);
+ return (string) ((((((((((0 || 1234567890) || 42) || 0b10000000000000000000000000000000) || 0b01111111100000000000000000000000) || 0b00000000011111111111111111111111) || 0o755) || 0o644) || 0xFFFFFFFFFFFFFFFFF) || 0x123456789ABCDEF) || 0xA);
}
}
diff --git a/test/Integration/Examples/Numbers/Numbers.tokens.json b/test/Integration/Examples/Numbers/Numbers.tokens.json
index ff727ee2..c36ec52e 100644
--- a/test/Integration/Examples/Numbers/Numbers.tokens.json
+++ b/test/Integration/Examples/Numbers/Numbers.tokens.json
@@ -68,8 +68,8 @@
"value": " "
},
{
- "type": "OPERATOR_ARITHMETIC_PLUS",
- "value": "+"
+ "type": "OPERATOR_BOOLEAN_OR",
+ "value": "||"
},
{
"type": "END_OF_LINE",
@@ -88,8 +88,8 @@
"value": " "
},
{
- "type": "OPERATOR_ARITHMETIC_PLUS",
- "value": "+"
+ "type": "OPERATOR_BOOLEAN_OR",
+ "value": "||"
},
{
"type": "END_OF_LINE",
@@ -108,8 +108,8 @@
"value": " "
},
{
- "type": "OPERATOR_ARITHMETIC_PLUS",
- "value": "+"
+ "type": "OPERATOR_BOOLEAN_OR",
+ "value": "||"
},
{
"type": "END_OF_LINE",
@@ -144,8 +144,8 @@
"value": " "
},
{
- "type": "OPERATOR_ARITHMETIC_PLUS",
- "value": "+"
+ "type": "OPERATOR_BOOLEAN_OR",
+ "value": "||"
},
{
"type": "END_OF_LINE",
@@ -164,8 +164,8 @@
"value": " "
},
{
- "type": "OPERATOR_ARITHMETIC_PLUS",
- "value": "+"
+ "type": "OPERATOR_BOOLEAN_OR",
+ "value": "||"
},
{
"type": "END_OF_LINE",
@@ -184,8 +184,8 @@
"value": " "
},
{
- "type": "OPERATOR_ARITHMETIC_PLUS",
- "value": "+"
+ "type": "OPERATOR_BOOLEAN_OR",
+ "value": "||"
},
{
"type": "END_OF_LINE",
@@ -220,8 +220,8 @@
"value": " "
},
{
- "type": "OPERATOR_ARITHMETIC_PLUS",
- "value": "+"
+ "type": "OPERATOR_BOOLEAN_OR",
+ "value": "||"
},
{
"type": "END_OF_LINE",
@@ -240,8 +240,8 @@
"value": " "
},
{
- "type": "OPERATOR_ARITHMETIC_PLUS",
- "value": "+"
+ "type": "OPERATOR_BOOLEAN_OR",
+ "value": "||"
},
{
"type": "END_OF_LINE",
@@ -276,8 +276,8 @@
"value": " "
},
{
- "type": "OPERATOR_ARITHMETIC_PLUS",
- "value": "+"
+ "type": "OPERATOR_BOOLEAN_OR",
+ "value": "||"
},
{
"type": "END_OF_LINE",
@@ -296,8 +296,8 @@
"value": " "
},
{
- "type": "OPERATOR_ARITHMETIC_PLUS",
- "value": "+"
+ "type": "OPERATOR_BOOLEAN_OR",
+ "value": "||"
},
{
"type": "END_OF_LINE",
@@ -311,138 +311,6 @@
"type": "NUMBER_HEXADECIMAL",
"value": "0xA"
},
- {
- "type": "SPACE",
- "value": " "
- },
- {
- "type": "OPERATOR_ARITHMETIC_PLUS",
- "value": "+"
- },
- {
- "type": "END_OF_LINE",
- "value": "\n"
- },
- {
- "type": "END_OF_LINE",
- "value": "\n"
- },
- {
- "type": "SPACE",
- "value": " "
- },
- {
- "type": "COMMENT",
- "value": "# With Exponent"
- },
- {
- "type": "END_OF_LINE",
- "value": "\n"
- },
- {
- "type": "SPACE",
- "value": " "
- },
- {
- "type": "NUMBER_DECIMAL",
- "value": "1E3"
- },
- {
- "type": "SPACE",
- "value": " "
- },
- {
- "type": "OPERATOR_ARITHMETIC_PLUS",
- "value": "+"
- },
- {
- "type": "END_OF_LINE",
- "value": "\n"
- },
- {
- "type": "SPACE",
- "value": " "
- },
- {
- "type": "NUMBER_DECIMAL",
- "value": "2e6"
- },
- {
- "type": "SPACE",
- "value": " "
- },
- {
- "type": "OPERATOR_ARITHMETIC_PLUS",
- "value": "+"
- },
- {
- "type": "END_OF_LINE",
- "value": "\n"
- },
- {
- "type": "END_OF_LINE",
- "value": "\n"
- },
- {
- "type": "SPACE",
- "value": " "
- },
- {
- "type": "COMMENT",
- "value": "# With Floating Point"
- },
- {
- "type": "END_OF_LINE",
- "value": "\n"
- },
- {
- "type": "SPACE",
- "value": " "
- },
- {
- "type": "NUMBER_DECIMAL",
- "value": "123.456"
- },
- {
- "type": "SPACE",
- "value": " "
- },
- {
- "type": "OPERATOR_ARITHMETIC_PLUS",
- "value": "+"
- },
- {
- "type": "END_OF_LINE",
- "value": "\n"
- },
- {
- "type": "SPACE",
- "value": " "
- },
- {
- "type": "NUMBER_DECIMAL",
- "value": "0.1e2"
- },
- {
- "type": "SPACE",
- "value": " "
- },
- {
- "type": "OPERATOR_ARITHMETIC_PLUS",
- "value": "+"
- },
- {
- "type": "END_OF_LINE",
- "value": "\n"
- },
- {
- "type": "SPACE",
- "value": " "
- },
- {
- "type": "NUMBER_DECIMAL",
- "value": ".22"
- },
{
"type": "END_OF_LINE",
"value": "\n"
diff --git a/test/Integration/Examples/TemplateLiteral/TemplateLiteral.afx b/test/Integration/Examples/TemplateLiteral/TemplateLiteral.afx
index 8e6a9987..8f467526 100644
--- a/test/Integration/Examples/TemplateLiteral/TemplateLiteral.afx
+++ b/test/Integration/Examples/TemplateLiteral/TemplateLiteral.afx
@@ -8,7 +8,7 @@ export component TemplateLiteral {
It can span multiple lines.
Interpolated Expressions can be arbitrarily complex:
- ${isActive ? 27 * someNumber : someNumber % 17}
+ ${isActive ? 27 : 17}
They can also contain other template literals:
${isActive ? `Is 27? ${someNumber === 27 ? "yes" : "no"}` : `Number is ${27}`}
diff --git a/test/Integration/Examples/TemplateLiteral/TemplateLiteral.ast.json b/test/Integration/Examples/TemplateLiteral/TemplateLiteral.ast.json
index 5ff62a8f..b477685b 100644
--- a/test/Integration/Examples/TemplateLiteral/TemplateLiteral.ast.json
+++ b/test/Integration/Examples/TemplateLiteral/TemplateLiteral.ast.json
@@ -12,21 +12,33 @@
"name": "expression",
"type": {
"type": "TypeReferenceNode",
- "payload": { "name": "string", "isArray": false, "isOptional": false }
+ "payload": {
+ "name": "string",
+ "isArray": false,
+ "isOptional": false
+ }
}
},
{
"name": "isActive",
"type": {
"type": "TypeReferenceNode",
- "payload": { "name": "boolean", "isArray": false, "isOptional": false }
+ "payload": {
+ "name": "boolean",
+ "isArray": false,
+ "isOptional": false
+ }
}
},
{
"name": "someNumber",
"type": {
"type": "TypeReferenceNode",
- "payload": { "name": "number", "isArray": false, "isOptional": false }
+ "payload": {
+ "name": "number",
+ "isArray": false,
+ "isOptional": false
+ }
}
}
],
@@ -53,36 +65,12 @@
"payload": "isActive"
},
"true": {
- "type": "BinaryOperationNode",
- "payload": {
- "operator": "MULTIPLY_BY",
- "operands": [
- {
- "type": "NumberLiteralNode",
- "payload": { "value": "27", "format": "DECIMAL" }
- },
- {
- "type": "Identifier",
- "payload": "someNumber"
- }
- ]
- }
+ "type": "IntegerLiteralNode",
+ "payload": { "value": "27", "format": "DECIMAL" }
},
"false": {
- "type": "BinaryOperationNode",
- "payload": {
- "operator": "MODULO",
- "operands": [
- {
- "type": "Identifier",
- "payload": "someNumber"
- },
- {
- "type": "NumberLiteralNode",
- "payload": { "value": "17", "format": "DECIMAL" }
- }
- ]
- }
+ "type": "IntegerLiteralNode",
+ "payload": { "value": "17", "format": "DECIMAL" }
}
}
},
@@ -114,7 +102,7 @@
"payload": "someNumber"
},
{
- "type": "NumberLiteralNode",
+ "type": "IntegerLiteralNode",
"payload": {
"value": "27",
"format": "DECIMAL"
@@ -140,7 +128,7 @@
"payload": [
{ "type": "StringLiteralNode", "payload": "Number is " },
{
- "type": "NumberLiteralNode",
+ "type": "IntegerLiteralNode",
"payload": { "value": "27", "format": "DECIMAL" }
}
]
diff --git a/test/Integration/Examples/TemplateLiteral/TemplateLiteral.php b/test/Integration/Examples/TemplateLiteral/TemplateLiteral.php
index 9cf72e63..a802f738 100644
--- a/test/Integration/Examples/TemplateLiteral/TemplateLiteral.php
+++ b/test/Integration/Examples/TemplateLiteral/TemplateLiteral.php
@@ -17,6 +17,6 @@ public function __construct(
public function render(): string
{
- return 'A template literal may contain ' . $this->expression . 's.' . "\n\n" . ' It can span multiple lines.' . "\n\n" . ' Interpolated Expressions can be arbitrarily complex:' . "\n" . ' ' . ($this->isActive ? (27 * $this->someNumber) : ($this->someNumber % 17)) . "\n\n" . ' They can also contain other template literals:' . "\n" . ' ' . ($this->isActive ? 'Is 27? ' . (($this->someNumber === 27) ? 'yes' : 'no') : 'Number is ' . 27) . "\n\n" . ' Even markup:' . "\n" . ' ' . 'Number is ' . $this->someNumber . '
' . "\n" . ' ';
+ return 'A template literal may contain ' . $this->expression . 's.' . "\n\n" . ' It can span multiple lines.' . "\n\n" . ' Interpolated Expressions can be arbitrarily complex:' . "\n" . ' ' . ($this->isActive ? 27 : 17) . "\n\n" . ' They can also contain other template literals:' . "\n" . ' ' . ($this->isActive ? 'Is 27? ' . (($this->someNumber === 27) ? 'yes' : 'no') : 'Number is ' . 27) . "\n\n" . ' Even markup:' . "\n" . ' ' . 'Number is ' . $this->someNumber . '
' . "\n" . ' ';
}
}
diff --git a/test/Integration/Examples/TemplateLiteral/TemplateLiteral.tokens.json b/test/Integration/Examples/TemplateLiteral/TemplateLiteral.tokens.json
index 332127ce..a2d2c635 100644
--- a/test/Integration/Examples/TemplateLiteral/TemplateLiteral.tokens.json
+++ b/test/Integration/Examples/TemplateLiteral/TemplateLiteral.tokens.json
@@ -179,22 +179,6 @@
"type": "SPACE",
"value": " "
},
- {
- "type": "OPERATOR_ARITHMETIC_MULTIPLY_BY",
- "value": "*"
- },
- {
- "type": "SPACE",
- "value": " "
- },
- {
- "type": "STRING",
- "value": "someNumber"
- },
- {
- "type": "SPACE",
- "value": " "
- },
{
"type": "COLON",
"value": ":"
@@ -203,22 +187,6 @@
"type": "SPACE",
"value": " "
},
- {
- "type": "STRING",
- "value": "someNumber"
- },
- {
- "type": "SPACE",
- "value": " "
- },
- {
- "type": "OPERATOR_ARITHMETIC_MODULO",
- "value": "%"
- },
- {
- "type": "SPACE",
- "value": " "
- },
{
"type": "NUMBER_DECIMAL",
"value": "17"
diff --git a/test/Unit/Target/Php/Transpiler/Attribute/AttributeTranspilerTest.php b/test/Unit/Target/Php/Transpiler/Attribute/AttributeTranspilerTest.php
index 4e3efcdd..ea760619 100644
--- a/test/Unit/Target/Php/Transpiler/Attribute/AttributeTranspilerTest.php
+++ b/test/Unit/Target/Php/Transpiler/Attribute/AttributeTranspilerTest.php
@@ -37,7 +37,6 @@ public static function attributeExamples(): array
return [
'foo="bar"' => ['foo="bar"', 'foo="bar"'],
'foo={42}' => ['foo={42}', 'foo="\' . 42 . \'"'],
- 'foo={4 + 2}' => ['foo={4 + 2}', 'foo="\' . (4 + 2) . \'"'],
'foo={a}' => ['foo={a}', 'foo="\' . $this->a . \'"'],
];
}
diff --git a/test/Unit/Target/Php/Transpiler/BinaryOperation/BinaryOperationTranspilerTest.php b/test/Unit/Target/Php/Transpiler/BinaryOperation/BinaryOperationTranspilerTest.php
index 79f2de91..55c98e87 100644
--- a/test/Unit/Target/Php/Transpiler/BinaryOperation/BinaryOperationTranspilerTest.php
+++ b/test/Unit/Target/Php/Transpiler/BinaryOperation/BinaryOperationTranspilerTest.php
@@ -49,34 +49,6 @@ public static function binaryOperationExamples(): array
'true && 42' => ['true && 42', '(true && 42)'],
'true || 42' => ['true || 42', '(true || 42)'],
- '1 + 2' => ['1 + 2', '(1 + 2)'],
- 'a + 2' => ['a + 2', '($this->a + 2)'],
- '1 + b' => ['1 + b', '(1 + $this->b)'],
- 'a + b' => ['a + b', '($this->a + $this->b)'],
- '2 - 1' => ['2 - 1', '(2 - 1)'],
- 'a - 1' => ['a - 1', '($this->a - 1)'],
- '2 - b' => ['2 - b', '(2 - $this->b)'],
- 'a - b' => ['a - b', '($this->a - $this->b)'],
- '2 * 4' => ['2 * 4', '(2 * 4)'],
- 'a * 4' => ['a * 4', '($this->a * 4)'],
- '2 * b' => ['2 * b', '(2 * $this->b)'],
- 'a * b' => ['a * b', '($this->a * $this->b)'],
- '2 / 4' => ['2 / 4', '(2 / 4)'],
- 'a / 4' => ['a / 4', '($this->a / 4)'],
- '2 / b' => ['2 / b', '(2 / $this->b)'],
- 'a / b' => ['a / b', '($this->a / $this->b)'],
- '2 % 4' => ['2 % 4', '(2 % 4)'],
- 'a % 4' => ['a % 4', '($this->a % 4)'],
- '2 % b' => ['2 % b', '(2 % $this->b)'],
- 'a % b' => ['a % b', '($this->a % $this->b)'],
-
- '!1 + 1' => ['!1 + 1', '((!1) + 1)'],
-
- '42 * a / 23 + b - 17 * c' => [
- '42 * a / 23 + b - 17 * c',
- '((((42 * $this->a) / 23) + $this->b) - (17 * $this->c))'
- ],
-
'4 === 2' => ['4 === 2', '(4 === 2)'],
'a === 2' => ['a === 2', '($this->a === 2)'],
'4 === b' => ['4 === b', '(4 === $this->b)'],
@@ -104,7 +76,6 @@ public static function binaryOperationExamples(): array
'true && true && true' => ['true && true && true', '((true && true) && true)'],
'1 === 1 === true' => ['1 === 1 === true', '((1 === 1) === true)'],
- '1 + 1 + 1' => ['1 + 1 + 1', '((1 + 1) + 1)'],
];
}
diff --git a/test/Unit/Target/Php/Transpiler/NumberLiteral/NumberLiteralTranspilerTest.php b/test/Unit/Target/Php/Transpiler/IntegerLiteral/IntegerLiteralTranspilerTest.php
similarity index 67%
rename from test/Unit/Target/Php/Transpiler/NumberLiteral/NumberLiteralTranspilerTest.php
rename to test/Unit/Target/Php/Transpiler/IntegerLiteral/IntegerLiteralTranspilerTest.php
index 4f96d835..58eeff3b 100644
--- a/test/Unit/Target/Php/Transpiler/NumberLiteral/NumberLiteralTranspilerTest.php
+++ b/test/Unit/Target/Php/Transpiler/IntegerLiteral/IntegerLiteralTranspilerTest.php
@@ -20,19 +20,19 @@
declare(strict_types=1);
-namespace PackageFactory\ComponentEngine\Test\Unit\Target\Php\Transpiler\NumberLiteral;
+namespace PackageFactory\ComponentEngine\Test\Unit\Target\Php\Transpiler\IntegerLiteral;
use PackageFactory\ComponentEngine\Parser\Ast\ExpressionNode;
-use PackageFactory\ComponentEngine\Parser\Ast\NumberLiteralNode;
-use PackageFactory\ComponentEngine\Target\Php\Transpiler\NumberLiteral\NumberLiteralTranspiler;
+use PackageFactory\ComponentEngine\Parser\Ast\IntegerLiteralNode;
+use PackageFactory\ComponentEngine\Target\Php\Transpiler\IntegerLiteral\IntegerLiteralTranspiler;
use PHPUnit\Framework\TestCase;
-final class NumberLiteralTranspilerTest extends TestCase
+final class IntegerLiteralTranspilerTest extends TestCase
{
/**
* @return array
*/
- public static function numberLiteralExamples(): array
+ public static function integerLiteralExamples(): array
{
return [
// Decimal
@@ -53,33 +53,24 @@ public static function numberLiteralExamples(): array
' 0xFFFFFFFFFFFFFFFFF ' => ['0xFFFFFFFFFFFFFFFFF', '0xFFFFFFFFFFFFFFFFF'],
' 0x123456789ABCDEF ' => ['0x123456789ABCDEF', '0x123456789ABCDEF'],
' 0xA ' => ['0xA', '0xA'],
-
- // With Exponent
- ' 1E3 ' => ['1E3', '1E3'],
- ' 2e6 ' => ['2e6', '2e6'],
-
- // With Floating Point
- ' 123.456 ' => ['123.456', '123.456'],
- ' 0.1e2 ' => ['0.1e2', '0.1e2'],
- ' .22 ' => ['.22', '.22'],
];
}
/**
- * @dataProvider numberLiteralExamples
+ * @dataProvider integerLiteralExamples
* @test
- * @param string $numberLiteralAsString
+ * @param string $integerLiteralAsString
* @param string $expectedTranspilationResult
* @return void
*/
- public function transpilesNumberLiteralNodes(string $numberLiteralAsString, string $expectedTranspilationResult): void
+ public function transpilesIntegerLiteralNodes(string $integerLiteralAsString, string $expectedTranspilationResult): void
{
- $numberLiteralTranspiler = new NumberLiteralTranspiler();
- $numberLiteralNode = ExpressionNode::fromString($numberLiteralAsString)->root;
- assert($numberLiteralNode instanceof NumberLiteralNode);
+ $integerLiteralTranspiler = new IntegerLiteralTranspiler();
+ $integerLiteralNode = ExpressionNode::fromString($integerLiteralAsString)->root;
+ assert($integerLiteralNode instanceof IntegerLiteralNode);
- $actualTranspilationResult = $numberLiteralTranspiler->transpile(
- $numberLiteralNode
+ $actualTranspilationResult = $integerLiteralTranspiler->transpile(
+ $integerLiteralNode
);
$this->assertEquals(
diff --git a/test/Unit/Target/Php/Transpiler/TernaryOperation/TernaryOperationTranspilerTest.php b/test/Unit/Target/Php/Transpiler/TernaryOperation/TernaryOperationTranspilerTest.php
index 242739ea..05e2ee0f 100644
--- a/test/Unit/Target/Php/Transpiler/TernaryOperation/TernaryOperationTranspilerTest.php
+++ b/test/Unit/Target/Php/Transpiler/TernaryOperation/TernaryOperationTranspilerTest.php
@@ -61,7 +61,7 @@ public static function ternaryOperationWithVariablesInConditionExamples(): array
'true === someStruct.deep.foo ? "a" : "foo"' => ['true === someStruct.deep.foo ? "a" : "foo"', '((true === $this->someStruct->deep->foo) ? \'a\' : \'foo\')'],
'someStruct.foo === true ? "a" : "foo"' => ['someStruct.foo === true ? "a" : "foo"', '(($this->someStruct->foo === true) ? \'a\' : \'foo\')'],
'someStruct.foo === true || false ? "a" : "foo"' => ['someStruct.foo === true || false ? "a" : "foo"', '((($this->someStruct->foo === true) || false) ? \'a\' : \'foo\')'],
- '1 + 2 + 3 === a || 5 * b || c === true && false ? "a" : "foo"' => ['1 + 2 + 3 === a || 5 * b || c === true && false ? "a" : "foo"', '((((((1 + 2) + 3) === $this->a) || (5 * $this->b)) || (($this->c === true) && false)) ? \'a\' : \'foo\')'],
+ '1 < 2 === a || 5 > b || c === true && false ? "a" : "foo"' => ['1 < 2 === a || 5 > b || c === true && false ? "a" : "foo"', '(((((1 < 2) === $this->a) || (5 > $this->b)) || (($this->c === true) && false)) ? \'a\' : \'foo\')'],
];
}
diff --git a/test/Unit/Target/Php/Transpiler/TypeReference/TypeReferenceTranspilerTest.php b/test/Unit/Target/Php/Transpiler/TypeReference/TypeReferenceTranspilerTest.php
index a31a8bbe..6332b4bd 100644
--- a/test/Unit/Target/Php/Transpiler/TypeReference/TypeReferenceTranspilerTest.php
+++ b/test/Unit/Target/Php/Transpiler/TypeReference/TypeReferenceTranspilerTest.php
@@ -32,7 +32,7 @@
use PackageFactory\ComponentEngine\TypeSystem\Type\BooleanType\BooleanType;
use PackageFactory\ComponentEngine\TypeSystem\Type\ComponentType\ComponentType;
use PackageFactory\ComponentEngine\TypeSystem\Type\EnumType\EnumStaticType;
-use PackageFactory\ComponentEngine\TypeSystem\Type\NumberType\NumberType;
+use PackageFactory\ComponentEngine\TypeSystem\Type\IntegerType\IntegerType;
use PackageFactory\ComponentEngine\TypeSystem\Type\StringType\StringType;
use PackageFactory\ComponentEngine\TypeSystem\Type\StructType\StructType;
use PackageFactory\ComponentEngine\TypeSystem\TypeInterface;
@@ -46,7 +46,7 @@ protected function getTypeReferenceTranspiler(): TypeReferenceTranspiler
scope: new DummyScope([], [
'string' => StringType::get(),
'boolean' => BooleanType::get(),
- 'number' => NumberType::get(),
+ 'number' => IntegerType::get(),
'Button' => ComponentType::fromComponentDeclarationNode(
ComponentDeclarationNode::fromString('component Button { return "" }')
),
diff --git a/test/Unit/TypeSystem/Resolver/BinaryOperation/BinaryOperationTypeResolverTest.php b/test/Unit/TypeSystem/Resolver/BinaryOperation/BinaryOperationTypeResolverTest.php
index 5fb74494..54f851ac 100644
--- a/test/Unit/TypeSystem/Resolver/BinaryOperation/BinaryOperationTypeResolverTest.php
+++ b/test/Unit/TypeSystem/Resolver/BinaryOperation/BinaryOperationTypeResolverTest.php
@@ -27,7 +27,7 @@
use PackageFactory\ComponentEngine\Test\Unit\TypeSystem\Scope\Fixtures\DummyScope;
use PackageFactory\ComponentEngine\TypeSystem\Resolver\BinaryOperation\BinaryOperationTypeResolver;
use PackageFactory\ComponentEngine\TypeSystem\Type\BooleanType\BooleanType;
-use PackageFactory\ComponentEngine\TypeSystem\Type\NumberType\NumberType;
+use PackageFactory\ComponentEngine\TypeSystem\Type\IntegerType\IntegerType;
use PackageFactory\ComponentEngine\TypeSystem\Type\StringType\StringType;
use PackageFactory\ComponentEngine\TypeSystem\Type\UnionType\UnionType;
use PackageFactory\ComponentEngine\TypeSystem\TypeInterface;
@@ -45,14 +45,8 @@ public static function binaryOperationExamples(): array
'true || false' => ['true || false', BooleanType::get()],
'true && "foo"' => ['true && "foo"', UnionType::of(BooleanType::get(), StringType::get())],
'true || "foo"' => ['true || "foo"', UnionType::of(BooleanType::get(), StringType::get())],
- 'true && 42' => ['true && 42', UnionType::of(BooleanType::get(), NumberType::get())],
- 'true || 42' => ['true || 42', UnionType::of(BooleanType::get(), NumberType::get())],
-
- '1 + 2' => ['1 + 2', NumberType::get()],
- '2 - 1' => ['2 - 1', NumberType::get()],
- '2 * 4' => ['2 * 4', NumberType::get()],
- '2 / 4' => ['2 / 4', NumberType::get()],
- '2 % 4' => ['2 % 4', NumberType::get()],
+ 'true && 42' => ['true && 42', UnionType::of(BooleanType::get(), IntegerType::get())],
+ 'true || 42' => ['true || 42', UnionType::of(BooleanType::get(), IntegerType::get())],
'4 === 2' => ['4 === 2', BooleanType::get()],
'4 !== 2' => ['4 !== 2', BooleanType::get()],
@@ -63,7 +57,6 @@ public static function binaryOperationExamples(): array
'true && true && true' => ['true && true && true', BooleanType::get()],
'1 === 1 === true' => ['1 === 1 === true', BooleanType::get()],
- '1 + 1 + 1' => ['1 + 1 + 1', NumberType::get()],
];
}
@@ -90,46 +83,4 @@ public function resolvesBinaryOperationToResultingType(string $binaryOperationAs
sprintf('Expected %s, got %s', $expectedType::class, $actualType::class)
);
}
-
-
- /**
- * @return array
- */
- public static function faultyArithmeticOperationExamples(): array
- {
- return [
- '1 + false' => ['1 + false'],
- '1 + "foo"' => ['1 + "foo"'],
- '1 + null' => ['1 + null'],
- '1 +
' => ['1 +
'],
- 'true + 1' => ['true + 1'],
- '"bar" + 1' => ['"bar" + 1'],
- 'null + 1' => ['null + 1'],
- ' + 1' => [' + 1'],
- 'true + false' => ['true + false'],
- 'true + null' => ['true + null'],
- 'null + "foobar"' => ['null + "foobar"'],
- '"foobar" + ' => ['"foobar" + '],
- ];
- }
-
- /**
- * @dataProvider faultyArithmeticOperationExamples
- * @test
- * @param string $faultyArithmeticOperationAsString
- * @return void
- */
- public function throwsIfBinaryOperationIsArithmeticButOperandsAreNotOfTypeNumber(string $faultyArithmeticOperationAsString): void
- {
- $scope = new DummyScope();
- $binaryOperationTypeResolver = new BinaryOperationTypeResolver(
- scope: $scope
- );
- $arithmeticOperationNode = ExpressionNode::fromString($faultyArithmeticOperationAsString)->root;
- assert($arithmeticOperationNode instanceof BinaryOperationNode);
-
- $this->expectExceptionMessageMatches('/number/i');
-
- $binaryOperationTypeResolver->resolveTypeOf($arithmeticOperationNode);
- }
}
diff --git a/test/Unit/TypeSystem/Resolver/Expression/ExpressionTypeResolverTest.php b/test/Unit/TypeSystem/Resolver/Expression/ExpressionTypeResolverTest.php
index c2bc8824..ca05a579 100644
--- a/test/Unit/TypeSystem/Resolver/Expression/ExpressionTypeResolverTest.php
+++ b/test/Unit/TypeSystem/Resolver/Expression/ExpressionTypeResolverTest.php
@@ -27,7 +27,7 @@
use PackageFactory\ComponentEngine\TypeSystem\Resolver\Expression\ExpressionTypeResolver;
use PackageFactory\ComponentEngine\TypeSystem\Type\BooleanType\BooleanType;
use PackageFactory\ComponentEngine\TypeSystem\Type\NullType\NullType;
-use PackageFactory\ComponentEngine\TypeSystem\Type\NumberType\NumberType;
+use PackageFactory\ComponentEngine\TypeSystem\Type\IntegerType\IntegerType;
use PackageFactory\ComponentEngine\TypeSystem\Type\StringType\StringType;
use PackageFactory\ComponentEngine\TypeSystem\Type\UnionType\UnionType;
use PackageFactory\ComponentEngine\TypeSystem\TypeInterface;
@@ -45,14 +45,8 @@ public static function binaryOperationExamples(): array
'true || false' => ['true || false', BooleanType::get()],
'true && "foo"' => ['true && "foo"', UnionType::of(BooleanType::get(), StringType::get())],
'true || "foo"' => ['true || "foo"', UnionType::of(BooleanType::get(), StringType::get())],
- 'true && 42' => ['true && 42', UnionType::of(BooleanType::get(), NumberType::get())],
- 'true || 42' => ['true || 42', UnionType::of(BooleanType::get(), NumberType::get())],
-
- '1 + 2' => ['1 + 2', NumberType::get()],
- '2 - 1' => ['2 - 1', NumberType::get()],
- '2 * 4' => ['2 * 4', NumberType::get()],
- '2 / 4' => ['2 / 4', NumberType::get()],
- '2 % 4' => ['2 % 4', NumberType::get()],
+ 'true && 42' => ['true && 42', UnionType::of(BooleanType::get(), IntegerType::get())],
+ 'true || 42' => ['true || 42', UnionType::of(BooleanType::get(), IntegerType::get())],
'4 === 2' => ['4 === 2', BooleanType::get()],
'4 !== 2' => ['4 !== 2', BooleanType::get()],
@@ -130,7 +124,7 @@ public static function matchExamples(): array
return [
'match (true) { true -> 42 false -> "foo" }' => [
'match (true) { true -> 42 false -> "foo" }',
- NumberType::get()
+ IntegerType::get()
],
'match (false) { true -> 42 false -> "foo" }' => [
'match (false) { true -> 42 false -> "foo" }',
@@ -138,11 +132,11 @@ public static function matchExamples(): array
],
'match (variableOfTypeBoolean) { true -> 42 false -> "foo" }' => [
'match (variableOfTypeBoolean) { true -> 42 false -> "foo" }',
- UnionType::of(NumberType::get(), StringType::get())
+ UnionType::of(IntegerType::get(), StringType::get())
],
'match (variableOfTypeBoolean) { true -> variableOfTypeNumber false -> variableOfTypeString }' => [
'match (variableOfTypeBoolean) { true -> variableOfTypeNumber false -> variableOfTypeString }',
- UnionType::of(NumberType::get(), StringType::get())
+ UnionType::of(IntegerType::get(), StringType::get())
],
];
}
@@ -159,7 +153,7 @@ public function resolvesMatchToResultingType(string $matchAsString, TypeInterfac
$scope = new DummyScope([
'variableOfTypeBoolean' => BooleanType::get(),
'variableOfTypeString' => StringType::get(),
- 'variableOfTypeNumber' => NumberType::get(),
+ 'variableOfTypeNumber' => IntegerType::get(),
]);
$expressionTypeResolver = new ExpressionTypeResolver(scope: $scope);
$expressionNode = ExpressionNode::fromString($matchAsString);
@@ -195,13 +189,13 @@ public function resolvesNullLiteralToNullType(): void
* @test
* @return void
*/
- public function resolvesNumberLiteralToNumberType(): void
+ public function resolvesNumberLiteralToIntegerType(): void
{
$scope = new DummyScope();
$expressionTypeResolver = new ExpressionTypeResolver(scope: $scope);
$expressionNode = ExpressionNode::fromString('42');
- $expectedType = NumberType::get();
+ $expectedType = IntegerType::get();
$actualType = $expressionTypeResolver->resolveTypeOf($expressionNode);
$this->assertTrue(
@@ -288,9 +282,9 @@ public function resolvesTemplateLiteralToStringType(string $templateLiteralAsStr
public static function ternaryOperationExamples(): array
{
return [
- 'true ? 42 : "foo"' => ['true ? 42 : "foo"', NumberType::get()],
+ 'true ? 42 : "foo"' => ['true ? 42 : "foo"', IntegerType::get()],
'false ? 42 : "foo"' => ['false ? 42 : "foo"', StringType::get()],
- '1 < 2 ? 42 : "foo"' => ['1 < 2 ? 42 : "foo"', UnionType::of(NumberType::get(), StringType::get())]
+ '1 < 2 ? 42 : "foo"' => ['1 < 2 ? 42 : "foo"', UnionType::of(IntegerType::get(), StringType::get())]
];
}
diff --git a/test/Unit/TypeSystem/Resolver/NumberLiteral/NumberLiteralTypeResolverTest.php b/test/Unit/TypeSystem/Resolver/IntegerLiteral/IntegerLiteralTypeResolverTest.php
similarity index 63%
rename from test/Unit/TypeSystem/Resolver/NumberLiteral/NumberLiteralTypeResolverTest.php
rename to test/Unit/TypeSystem/Resolver/IntegerLiteral/IntegerLiteralTypeResolverTest.php
index 0fe6b4d8..cc1499ef 100644
--- a/test/Unit/TypeSystem/Resolver/NumberLiteral/NumberLiteralTypeResolverTest.php
+++ b/test/Unit/TypeSystem/Resolver/IntegerLiteral/IntegerLiteralTypeResolverTest.php
@@ -23,24 +23,24 @@
namespace PackageFactory\ComponentEngine\Test\Unit\TypeSystem\Resolver\NumberLiteral;
use PackageFactory\ComponentEngine\Parser\Ast\ExpressionNode;
-use PackageFactory\ComponentEngine\Parser\Ast\NumberLiteralNode;
-use PackageFactory\ComponentEngine\TypeSystem\Resolver\NumberLiteral\NumberLiteralTypeResolver;
-use PackageFactory\ComponentEngine\TypeSystem\Type\NumberType\NumberType;
+use PackageFactory\ComponentEngine\Parser\Ast\IntegerLiteralNode;
+use PackageFactory\ComponentEngine\TypeSystem\Resolver\IntegerLiteral\IntegerLiteralTypeResolver;
+use PackageFactory\ComponentEngine\TypeSystem\Type\IntegerType\IntegerType;
use PHPUnit\Framework\TestCase;
-final class NumberLiteralTypeResolverTest extends TestCase
+final class IntegerLiteralTypeResolverTest extends TestCase
{
/**
* @test
*/
- public function resolvesNumberLiteralToNumberType(): void
+ public function resolvesIntegerLiteralToIntegerType(): void
{
- $numberLiteralTypeResolver = new NumberLiteralTypeResolver();
- $numberLiteralNode = ExpressionNode::fromString('42')->root;
- assert($numberLiteralNode instanceof NumberLiteralNode);
+ $integerLiteralTypeResolver = new IntegerLiteralTypeResolver();
+ $integerLiteralNode = ExpressionNode::fromString('42')->root;
+ assert($integerLiteralNode instanceof IntegerLiteralNode);
- $expectedType = NumberType::get();
- $actualType = $numberLiteralTypeResolver->resolveTypeOf($numberLiteralNode);
+ $expectedType = IntegerType::get();
+ $actualType = $integerLiteralTypeResolver->resolveTypeOf($integerLiteralNode);
$this->assertTrue(
$expectedType->is($actualType),
diff --git a/test/Unit/TypeSystem/Resolver/Match/MatchTypeResolverTest.php b/test/Unit/TypeSystem/Resolver/Match/MatchTypeResolverTest.php
index d2f202a6..c5a97431 100644
--- a/test/Unit/TypeSystem/Resolver/Match/MatchTypeResolverTest.php
+++ b/test/Unit/TypeSystem/Resolver/Match/MatchTypeResolverTest.php
@@ -30,7 +30,7 @@
use PackageFactory\ComponentEngine\TypeSystem\Resolver\Match\MatchTypeResolver;
use PackageFactory\ComponentEngine\TypeSystem\Type\BooleanType\BooleanType;
use PackageFactory\ComponentEngine\TypeSystem\Type\EnumType\EnumStaticType;
-use PackageFactory\ComponentEngine\TypeSystem\Type\NumberType\NumberType;
+use PackageFactory\ComponentEngine\TypeSystem\Type\IntegerType\IntegerType;
use PackageFactory\ComponentEngine\TypeSystem\Type\StringType\StringType;
use PackageFactory\ComponentEngine\TypeSystem\Type\UnionType\UnionType;
use PackageFactory\ComponentEngine\TypeSystem\TypeInterface;
@@ -46,7 +46,7 @@ public static function matchExamples(): array
return [
'match (true) { true -> 42 false -> "foo" }' => [
'match (true) { true -> 42 false -> "foo" }',
- NumberType::get()
+ IntegerType::get()
],
'match (false) { true -> 42 false -> "foo" }' => [
'match (false) { true -> 42 false -> "foo" }',
@@ -54,11 +54,11 @@ public static function matchExamples(): array
],
'match (variableOfTypeBoolean) { true -> 42 false -> "foo" }' => [
'match (variableOfTypeBoolean) { true -> 42 false -> "foo" }',
- UnionType::of(NumberType::get(), StringType::get())
+ UnionType::of(IntegerType::get(), StringType::get())
],
'match (variableOfTypeBoolean) { true -> variableOfTypeNumber false -> variableOfTypeString }' => [
'match (variableOfTypeBoolean) { true -> variableOfTypeNumber false -> variableOfTypeString }',
- UnionType::of(NumberType::get(), StringType::get())
+ UnionType::of(IntegerType::get(), StringType::get())
],
'match enum with all declared members' => [
<<<'EOF'
@@ -68,7 +68,7 @@ public static function matchExamples(): array
SomeEnum.C -> variableOfTypeBoolean
}
EOF,
- UnionType::of(NumberType::get(), StringType::get(), BooleanType::get())
+ UnionType::of(IntegerType::get(), StringType::get(), BooleanType::get())
],
'match enum with some declared members and default' => [
<<<'EOF'
@@ -78,7 +78,7 @@ public static function matchExamples(): array
default -> variableOfTypeBoolean
}
EOF,
- UnionType::of(NumberType::get(), StringType::get(), BooleanType::get())
+ UnionType::of(IntegerType::get(), StringType::get(), BooleanType::get())
],
];
}
@@ -101,7 +101,7 @@ public function resolvesMatchToResultingType(string $matchAsString, TypeInterfac
$scope = new DummyScope([
'variableOfTypeBoolean' => BooleanType::get(),
'variableOfTypeString' => StringType::get(),
- 'variableOfTypeNumber' => NumberType::get(),
+ 'variableOfTypeNumber' => IntegerType::get(),
'someEnumValue' => $someStaticEnumType->toEnumInstanceType(),
'SomeEnum' => $someStaticEnumType
]);
diff --git a/test/Unit/TypeSystem/Resolver/TernaryOperation/TernaryOperationTypeResolverTest.php b/test/Unit/TypeSystem/Resolver/TernaryOperation/TernaryOperationTypeResolverTest.php
index fbce9ab6..5d27cf8c 100644
--- a/test/Unit/TypeSystem/Resolver/TernaryOperation/TernaryOperationTypeResolverTest.php
+++ b/test/Unit/TypeSystem/Resolver/TernaryOperation/TernaryOperationTypeResolverTest.php
@@ -26,7 +26,7 @@
use PackageFactory\ComponentEngine\Parser\Ast\TernaryOperationNode;
use PackageFactory\ComponentEngine\Test\Unit\TypeSystem\Scope\Fixtures\DummyScope;
use PackageFactory\ComponentEngine\TypeSystem\Resolver\TernaryOperation\TernaryOperationTypeResolver;
-use PackageFactory\ComponentEngine\TypeSystem\Type\NumberType\NumberType;
+use PackageFactory\ComponentEngine\TypeSystem\Type\IntegerType\IntegerType;
use PackageFactory\ComponentEngine\TypeSystem\Type\StringType\StringType;
use PackageFactory\ComponentEngine\TypeSystem\Type\UnionType\UnionType;
use PackageFactory\ComponentEngine\TypeSystem\TypeInterface;
@@ -40,12 +40,12 @@ final class TernaryOperationTypeResolverTest extends TestCase
public static function ternaryOperationExamples(): array
{
return [
- 'true ? 42 : "foo"' => ['true ? 42 : "foo"', NumberType::get()],
+ 'true ? 42 : "foo"' => ['true ? 42 : "foo"', IntegerType::get()],
'false ? 42 : "foo"' => ['false ? 42 : "foo"', StringType::get()],
- '1 < 2 ? 42 : "foo"' => ['1 < 2 ? 42 : "foo"', UnionType::of(NumberType::get(), StringType::get())],
+ '1 < 2 ? 42 : "foo"' => ['1 < 2 ? 42 : "foo"', UnionType::of(IntegerType::get(), StringType::get())],
'1 < 2 ? variableOfTypeString : variableOfTypeNumber' => [
'1 < 2 ? variableOfTypeString : variableOfTypeNumber',
- UnionType::of(NumberType::get(), StringType::get())
+ UnionType::of(IntegerType::get(), StringType::get())
]
];
}
@@ -61,7 +61,7 @@ public function resolvesTernaryOperationToResultingType(string $ternaryExpressio
{
$scope = new DummyScope([
'variableOfTypeString' => StringType::get(),
- 'variableOfTypeNumber' => NumberType::get(),
+ 'variableOfTypeNumber' => IntegerType::get(),
]);
$ternaryOperationTypeResolver = new TernaryOperationTypeResolver(
scope: $scope
diff --git a/test/Unit/TypeSystem/Scope/ComponentScope/ComponentScopeTest.php b/test/Unit/TypeSystem/Scope/ComponentScope/ComponentScopeTest.php
index c75e0ce7..4ccc7e31 100644
--- a/test/Unit/TypeSystem/Scope/ComponentScope/ComponentScopeTest.php
+++ b/test/Unit/TypeSystem/Scope/ComponentScope/ComponentScopeTest.php
@@ -30,7 +30,7 @@
use PackageFactory\ComponentEngine\TypeSystem\Scope\ComponentScope\ComponentScope;
use PackageFactory\ComponentEngine\TypeSystem\Scope\GlobalScope\GlobalScope;
use PackageFactory\ComponentEngine\TypeSystem\Type\EnumType\EnumStaticType;
-use PackageFactory\ComponentEngine\TypeSystem\Type\NumberType\NumberType;
+use PackageFactory\ComponentEngine\TypeSystem\Type\IntegerType\IntegerType;
use PackageFactory\ComponentEngine\TypeSystem\Type\StringType\StringType;
use PHPUnit\Framework\TestCase;
@@ -119,10 +119,10 @@ public function fallsBackToParentScope(): void
$componentDeclarationNode = ComponentDeclarationNode::fromString($componentDeclarationAsString);
$componentScope = new ComponentScope(
componentDeclarationNode: $componentDeclarationNode,
- parentScope: new DummyScope(['bar' => NumberType::get()], [])
+ parentScope: new DummyScope(['bar' => IntegerType::get()], [])
);
- $expectedType = NumberType::get();
+ $expectedType = IntegerType::get();
$actualType = $componentScope->lookupTypeFor('bar');
$this->assertNotNull($actualType);
diff --git a/test/Unit/TypeSystem/Type/NumberType/NumberTypeTest.php b/test/Unit/TypeSystem/Type/IntegerType/IntegerTypeTest.php
similarity index 68%
rename from test/Unit/TypeSystem/Type/NumberType/NumberTypeTest.php
rename to test/Unit/TypeSystem/Type/IntegerType/IntegerTypeTest.php
index b3855537..2c67e3cd 100644
--- a/test/Unit/TypeSystem/Type/NumberType/NumberTypeTest.php
+++ b/test/Unit/TypeSystem/Type/IntegerType/IntegerTypeTest.php
@@ -20,35 +20,35 @@
declare(strict_types=1);
-namespace PackageFactory\ComponentEngine\Test\Unit\TypeSystem\Type\NumberType;
+namespace PackageFactory\ComponentEngine\Test\Unit\TypeSystem\Type\IntegerType;
-use PackageFactory\ComponentEngine\TypeSystem\Type\NumberType\NumberType;
+use PackageFactory\ComponentEngine\TypeSystem\Type\IntegerType\IntegerType;
use PackageFactory\ComponentEngine\TypeSystem\Type\StringType\StringType;
use PHPUnit\Framework\TestCase;
-final class NumberTypeTest extends TestCase
+final class IntegerTypeTest extends TestCase
{
/**
* @test
*/
- public function numberTypeIsSingleton(): void
+ public function integerTypeIsSingleton(): void
{
- $this->assertSame(NumberType::get(), NumberType::get());
+ $this->assertSame(IntegerType::get(), IntegerType::get());
}
/**
* @test
*/
- public function isReturnsTrueIfGivenTypeIsNumberType(): void
+ public function isReturnsTrueIfGivenTypeIsIntegerType(): void
{
- $this->assertTrue(NumberType::get()->is(NumberType::get()));
+ $this->assertTrue(IntegerType::get()->is(IntegerType::get()));
}
/**
* @test
*/
- public function isReturnsFalseIfGivenTypeIsNotNumberType(): void
+ public function isReturnsFalseIfGivenTypeIsNotIntegerType(): void
{
- $this->assertFalse(NumberType::get()->is(StringType::get()));
+ $this->assertFalse(IntegerType::get()->is(StringType::get()));
}
-}
\ No newline at end of file
+}
diff --git a/test/Unit/TypeSystem/Type/SlotType/SlotTypeTest.php b/test/Unit/TypeSystem/Type/SlotType/SlotTypeTest.php
index c9263528..d2c7e5c7 100644
--- a/test/Unit/TypeSystem/Type/SlotType/SlotTypeTest.php
+++ b/test/Unit/TypeSystem/Type/SlotType/SlotTypeTest.php
@@ -22,7 +22,7 @@
namespace PackageFactory\ComponentEngine\Test\Unit\TypeSystem\Type\SlotType;
-use PackageFactory\ComponentEngine\TypeSystem\Type\NumberType\NumberType;
+use PackageFactory\ComponentEngine\TypeSystem\Type\IntegerType\IntegerType;
use PackageFactory\ComponentEngine\TypeSystem\Type\SlotType\SlotType;
use PHPUnit\Framework\TestCase;
@@ -49,6 +49,6 @@ public function isReturnsTrueIfGivenTypeIsSlotType(): void
*/
public function isReturnsFalseIfGivenTypeIsNotSlotType(): void
{
- $this->assertFalse(SlotType::get()->is(NumberType::get()));
+ $this->assertFalse(SlotType::get()->is(IntegerType::get()));
}
}
diff --git a/test/Unit/TypeSystem/Type/StringType/StringTypeTest.php b/test/Unit/TypeSystem/Type/StringType/StringTypeTest.php
index e7a94893..44c6e812 100644
--- a/test/Unit/TypeSystem/Type/StringType/StringTypeTest.php
+++ b/test/Unit/TypeSystem/Type/StringType/StringTypeTest.php
@@ -22,7 +22,7 @@
namespace PackageFactory\ComponentEngine\Test\Unit\TypeSystem\Type\StringType;
-use PackageFactory\ComponentEngine\TypeSystem\Type\NumberType\NumberType;
+use PackageFactory\ComponentEngine\TypeSystem\Type\IntegerType\IntegerType;
use PackageFactory\ComponentEngine\TypeSystem\Type\StringType\StringType;
use PHPUnit\Framework\TestCase;
@@ -49,6 +49,6 @@ public function isReturnsTrueIfGivenTypeIsStringType(): void
*/
public function isReturnsFalseIfGivenTypeIsNotStringType(): void
{
- $this->assertFalse(StringType::get()->is(NumberType::get()));
+ $this->assertFalse(StringType::get()->is(IntegerType::get()));
}
-}
\ No newline at end of file
+}
diff --git a/test/Unit/TypeSystem/Type/UnionType/UnionTypeTest.php b/test/Unit/TypeSystem/Type/UnionType/UnionTypeTest.php
index 81f3a307..3604ae66 100644
--- a/test/Unit/TypeSystem/Type/UnionType/UnionTypeTest.php
+++ b/test/Unit/TypeSystem/Type/UnionType/UnionTypeTest.php
@@ -23,7 +23,7 @@
namespace PackageFactory\ComponentEngine\Test\Unit\TypeSystem\Type\UnionType;
use PackageFactory\ComponentEngine\TypeSystem\Type\BooleanType\BooleanType;
-use PackageFactory\ComponentEngine\TypeSystem\Type\NumberType\NumberType;
+use PackageFactory\ComponentEngine\TypeSystem\Type\IntegerType\IntegerType;
use PackageFactory\ComponentEngine\TypeSystem\Type\StringType\StringType;
use PackageFactory\ComponentEngine\TypeSystem\Type\UnionType\UnionType;
use PHPUnit\Framework\TestCase;
@@ -39,17 +39,17 @@ public function staticOfResolvesToGivenTypeIfOnlyOneTypeIsGiven(): void
$this->assertTrue($unionType->is(StringType::get()));
$this->assertTrue(StringType::get()->is($unionType));
- $unionType = UnionType::of(NumberType::get());
- $this->assertTrue($unionType->is(NumberType::get()));
- $this->assertTrue(NumberType::get()->is($unionType));
+ $unionType = UnionType::of(IntegerType::get());
+ $this->assertTrue($unionType->is(IntegerType::get()));
+ $this->assertTrue(IntegerType::get()->is($unionType));
$unionType = UnionType::of(UnionType::of(StringType::get()));
$this->assertTrue($unionType->is(StringType::get()));
$this->assertTrue(StringType::get()->is($unionType));
- $unionType = UnionType::of(UnionType::of(NumberType::get()));
- $this->assertTrue($unionType->is(NumberType::get()));
- $this->assertTrue(NumberType::get()->is($unionType));
+ $unionType = UnionType::of(UnionType::of(IntegerType::get()));
+ $this->assertTrue($unionType->is(IntegerType::get()));
+ $this->assertTrue(IntegerType::get()->is($unionType));
}
/**
@@ -71,8 +71,8 @@ public function staticOfResolvesToGivenTypeIfAllGivenTypesAreIdentical(): void
*/
public function isReturnsTrueIfGivenTypeIsCongruentUnionType(): void
{
- $unionType = UnionType::of(StringType::get(), NumberType::get());
- $otherUnionType = UnionType::of(NumberType::get(), StringType::get());
+ $unionType = UnionType::of(StringType::get(), IntegerType::get());
+ $otherUnionType = UnionType::of(IntegerType::get(), StringType::get());
$this->assertTrue($unionType->is($otherUnionType));
}
@@ -82,8 +82,8 @@ public function isReturnsTrueIfGivenTypeIsCongruentUnionType(): void
*/
public function isReturnsTrueIfGivenTypeIsCongruentUnionTypeWithRedundantMembers(): void
{
- $unionType = UnionType::of(StringType::get(), NumberType::get());
- $otherUnionType = UnionType::of(NumberType::get(), StringType::get(), NumberType::get(), StringType::get());
+ $unionType = UnionType::of(StringType::get(), IntegerType::get());
+ $otherUnionType = UnionType::of(IntegerType::get(), StringType::get(), IntegerType::get(), StringType::get());
$this->assertTrue($unionType->is($otherUnionType));
}
@@ -93,9 +93,9 @@ public function isReturnsTrueIfGivenTypeIsCongruentUnionTypeWithRedundantMembers
*/
public function isReturnsFalseIfGivenTypeIsNotAUnionType(): void
{
- $unionType = UnionType::of(StringType::get(), NumberType::get());
+ $unionType = UnionType::of(StringType::get(), IntegerType::get());
- $this->assertFalse($unionType->is(NumberType::get()));
+ $this->assertFalse($unionType->is(IntegerType::get()));
$this->assertFalse($unionType->is(StringType::get()));
}
@@ -104,7 +104,7 @@ public function isReturnsFalseIfGivenTypeIsNotAUnionType(): void
*/
public function isReturnsFalseIfGivenTypeIsANonCongruentUnionType(): void
{
- $unionType = UnionType::of(StringType::get(), NumberType::get());
+ $unionType = UnionType::of(StringType::get(), IntegerType::get());
$otherUnionType = UnionType::of(StringType::get(), BooleanType::get());
$this->assertFalse($unionType->is($otherUnionType));