Browse Source

Added documentation to CompOp

pull/293/head
HalidOdat 4 years ago
parent
commit
9b1c508da1
  1. 139
      boa/src/syntax/ast/op.rs

139
boa/src/syntax/ast/op.rs

@ -123,7 +123,7 @@ impl Display for NumOp {
pub enum UnaryOp { pub enum UnaryOp {
/// The increment operator increments (adds one to) its operand and returns a value. /// The increment operator increments (adds one to) its operand and returns a value.
/// ///
/// Syntax: `++expression` /// Syntax: `++x`
/// ///
/// This operator increments and returns the value after incrementing. /// This operator increments and returns the value after incrementing.
/// ///
@ -135,7 +135,7 @@ pub enum UnaryOp {
/// The increment operator increments (adds one to) its operand and returns a value. /// The increment operator increments (adds one to) its operand and returns a value.
/// ///
/// Syntax: `expression++` /// Syntax: `x++`
/// ///
/// This operator increments and returns the value before incrementing. /// This operator increments and returns the value before incrementing.
/// ///
@ -147,7 +147,7 @@ pub enum UnaryOp {
/// The decrement operator decrements (subtracts one from) its operand and returns a value. /// The decrement operator decrements (subtracts one from) its operand and returns a value.
/// ///
/// Syntax: `--expression` /// Syntax: `--x`
/// ///
/// This operator decrements and returns the value before decrementing. /// This operator decrements and returns the value before decrementing.
/// ///
@ -159,7 +159,7 @@ pub enum UnaryOp {
/// The decrement operator decrements (subtracts one from) its operand and returns a value. /// The decrement operator decrements (subtracts one from) its operand and returns a value.
/// ///
/// Syntax: `expression--` /// Syntax: `x--`
/// ///
/// This operator decrements the operand and returns the value after decrementing. /// This operator decrements the operand and returns the value after decrementing.
/// ///
@ -171,7 +171,7 @@ pub enum UnaryOp {
/// The unary negation operator precedes its operand and negates it. /// The unary negation operator precedes its operand and negates it.
/// ///
/// Syntax: `-expression` /// Syntax: `-x`
/// ///
/// Converts non-numbers data types to numbers like unary plus, /// Converts non-numbers data types to numbers like unary plus,
/// however, it performs an additional operation, negation. /// however, it performs an additional operation, negation.
@ -184,7 +184,7 @@ pub enum UnaryOp {
/// The unary plus operator attempts to convert the operand into a number, if it isn't already. /// The unary plus operator attempts to convert the operand into a number, if it isn't already.
/// ///
/// Syntax: `+expression` /// Syntax: `+x`
/// ///
/// Although unary negation (`-`) also can convert non-numbers, unary plus is the fastest and preferred /// Although unary negation (`-`) also can convert non-numbers, unary plus is the fastest and preferred
/// way of converting something into a number, because it does not perform any other operations on the number. /// way of converting something into a number, because it does not perform any other operations on the number.
@ -198,7 +198,7 @@ pub enum UnaryOp {
/// Returns `false` if its single operand can be converted to `true`; otherwise, returns `true`. /// Returns `false` if its single operand can be converted to `true`; otherwise, returns `true`.
/// ///
/// Syntax: `!expression` /// Syntax: `!x`
/// ///
/// Boolean values simply get inverted: `!true === false` and `!false === true`. /// Boolean values simply get inverted: `!true === false` and `!false === true`.
/// Non-boolean values get converted to boolean values first, then are negated. /// Non-boolean values get converted to boolean values first, then are negated.
@ -213,7 +213,7 @@ pub enum UnaryOp {
/// Performs the NOT operator on each bit. /// Performs the NOT operator on each bit.
/// ///
/// Syntax: `~expression` /// Syntax: `~x`
/// ///
/// NOT `a` yields the inverted value (or one's complement) of `a`. /// NOT `a` yields the inverted value (or one's complement) of `a`.
/// Bitwise NOTing any number x yields -(x + 1). For example, ~-5 yields 4. /// Bitwise NOTing any number x yields -(x + 1). For example, ~-5 yields 4.
@ -307,7 +307,7 @@ impl Display for UnaryOp {
pub enum BitOp { pub enum BitOp {
/// Performs the AND operation on each pair of bits. a AND b yields 1 only if both a and b are 1. /// Performs the AND operation on each pair of bits. a AND b yields 1 only if both a and b are 1.
/// ///
/// Syntax: `expression & expression` /// Syntax: `x & y`
/// ///
/// More information: /// More information:
/// - ECMAScript reference: <https://tc39.es/ecma262/#prod-BitwiseANDExpression>. /// - ECMAScript reference: <https://tc39.es/ecma262/#prod-BitwiseANDExpression>.
@ -317,7 +317,7 @@ pub enum BitOp {
/// Performs the OR operation on each pair of bits. a OR b yields 1 if either a or b is 1. /// Performs the OR operation on each pair of bits. a OR b yields 1 if either a or b is 1.
/// ///
/// Syntax: `expression | expression` /// Syntax: `x | y`
/// ///
/// More information: /// More information:
/// - ECMAScript reference: <https://tc39.es/ecma262/#prod-BitwiseORExpression>. /// - ECMAScript reference: <https://tc39.es/ecma262/#prod-BitwiseORExpression>.
@ -327,7 +327,7 @@ pub enum BitOp {
/// Performs the XOR operation on each pair of bits. a XOR b yields 1 if a and b are different. /// Performs the XOR operation on each pair of bits. a XOR b yields 1 if a and b are different.
/// ///
/// Syntax: `expression ^ expression` /// Syntax: `x ^ y`
/// ///
/// More information: /// More information:
/// - ECMAScript reference: <https://tc39.es/ecma262/#prod-BitwiseXORExpression>. /// - ECMAScript reference: <https://tc39.es/ecma262/#prod-BitwiseXORExpression>.
@ -337,7 +337,7 @@ pub enum BitOp {
/// This operator shifts the first operand the specified number of bits to the left. /// This operator shifts the first operand the specified number of bits to the left.
/// ///
/// Syntax: `expression << expression` /// Syntax: `x << y`
/// ///
/// Excess bits shifted off to the left are discarded. Zero bits are shifted in from the right. /// Excess bits shifted off to the left are discarded. Zero bits are shifted in from the right.
/// ///
@ -349,7 +349,7 @@ pub enum BitOp {
/// This operator shifts the first operand the specified number of bits to the right. /// This operator shifts the first operand the specified number of bits to the right.
/// ///
/// Syntax: `expression >> expression` /// Syntax: `x >> y`
/// ///
/// Excess bits shifted off to the right are discarded. Copies of the leftmost bit /// Excess bits shifted off to the right are discarded. Copies of the leftmost bit
/// are shifted in from the left. Since the new leftmost bit has the same value as /// are shifted in from the left. Since the new leftmost bit has the same value as
@ -364,7 +364,7 @@ pub enum BitOp {
/// This operator shifts the first operand the specified number of bits to the right. /// This operator shifts the first operand the specified number of bits to the right.
/// ///
/// Syntax: `expression >>> expression` /// Syntax: `x >>> y`
/// ///
/// Excess bits shifted off to the right are discarded. Zero bits are shifted in /// Excess bits shifted off to the right are discarded. Zero bits are shifted in
/// from the left. The sign bit becomes 0, so the result is always non-negative. /// from the left. The sign bit becomes 0, so the result is always non-negative.
@ -394,25 +394,118 @@ impl Display for BitOp {
} }
} }
/// A comparitive operation between 2 values /// A comparison operator compares its operands and returns a logical value based on whether the comparison is true.
///
/// The operands can be numerical, string, logical, or object values. Strings are compared based on standard
/// lexicographical ordering, using Unicode values. In most cases, if the two operands are not of the same type,
/// JavaScript attempts to convert them to an appropriate type for the comparison. This behavior generally results in
/// comparing the operands numerically. The sole exceptions to type conversion within comparisons involve the `===` and `!==`
/// operators, which perform strict equality and inequality comparisons. These operators do not attempt to convert the operands
/// to compatible types before checking equality.
///
/// More information:
/// - MDN documentation:
/// <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#Comparison>
#[cfg_attr(feature = "serde-ast", derive(Serialize, Deserialize))] #[cfg_attr(feature = "serde-ast", derive(Serialize, Deserialize))]
#[derive(Clone, Debug, Trace, Finalize, PartialEq)] #[derive(Clone, Debug, Trace, Finalize, PartialEq)]
pub enum CompOp { pub enum CompOp {
/// `a == b` - Equality /// The equality operator converts the operands if they are not of the same type, then applies strict comparison.
///
/// Syntax: `y == y`
///
/// If both operands are objects, then JavaScript compares internal references which are equal when operands
/// refer to the same object in memory.
///
/// More information:
/// - ECMAScript reference: <https://tc39.es/ecma262/#sec-abstract-equality-comparison>.
/// - MDN documentation:
/// <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Equality>
Equal, Equal,
/// `a != b` - Unequality
/// The inequality operator returns true if the operands are not equal.
///
/// Syntax: `x != y`
///
/// If the two operands are not of the same type, JavaScript attempts to convert the operands to
/// an appropriate type for the comparison. If both operands are objects, then JavaScript compares
/// internal references which are not equal when operands refer to different objects in memory.
///
/// More information:
/// - ECMAScript reference: <https://tc39.es/ecma262/#prod-EqualityExpression>.
/// - MDN documentation:
/// <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Inequality>
NotEqual, NotEqual,
/// `a === b` - Strict equality
/// The identity operator returns true if the operands are strictly equal **with no type conversion**.
///
/// Syntax: `x === y`
///
/// Returns `true` if the operands are equal and of the same type.
///
/// More information:
/// - ECMAScript reference: <https://tc39.es/ecma262/#sec-strict-equality-comparison>.
/// - MDN documentation:
/// <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Identity>
StrictEqual, StrictEqual,
/// `a !== b` - Strict unequality
/// The non-identity operator returns true if the operands **are not equal and/or not of the same type**.
///
/// Syntax: `x !== y`
///
/// Returns `true` if the operands are of the same type but not equal, or are of different type.
///
/// More information:
/// - ECMAScript reference: <https://tc39.es/ecma262/#prod-EqualityExpression>.
/// - MDN documentation:
/// <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Nonidentity>
StrictNotEqual, StrictNotEqual,
/// `a > b` - If `a` is greater than `b`
/// The greater than operator returns true if the left operand is greater than the right operand.
///
/// Syntax: `x > y`
///
/// Returns `true` if the left operand is greater than the right operand.
///
/// More information:
/// - ECMAScript reference: <https://tc39.es/ecma262/#prod-RelationalExpression>.
/// - MDN documentation:
/// <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Greater_than_operator>
GreaterThan, GreaterThan,
/// `a >= b` - If `a` is greater than or equal to `b`
/// The greater than or equal operator returns true if the left operand is greater than or equal to the right operand.
///
/// Syntax: `x >= y`
///
/// Returns `true` if the left operand is greater than the right operand.
///
/// More information:
/// - ECMAScript reference: <https://tc39.es/ecma262/#prod-RelationalExpression>.
/// - MDN documentation:
/// <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Greater_than_operator>
GreaterThanOrEqual, GreaterThanOrEqual,
/// `a < b` - If `a` is less than `b`
/// The less than operator returns true if the left operand is less than the right operand.
///
/// Syntax: `x < y`
///
/// Returns `true` if the left operand is less than the right operand.
///
/// More information:
/// - ECMAScript reference: <https://tc39.es/ecma262/#prod-RelationalExpression>.
/// - MDN documentation:
/// <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Less_than_operator>
LessThan, LessThan,
/// `a <= b` - If `a` is less than or equal to `b`
/// The less than or equal operator returns true if the left operand is less than or equal to the right operand.
///
/// Syntax: `x <= y`
///
/// Returns `true` if the left operand is less than or equal to the right operand.
///
/// More information:
/// - ECMAScript reference: <https://tc39.es/ecma262/#prod-RelationalExpression>.
/// - MDN documentation:
/// <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Less_than_or_equal_operator>
LessThanOrEqual, LessThanOrEqual,
} }

Loading…
Cancel
Save