mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-05-21 08:25:43 -05:00
Fix expression checking for symbols
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(12,11): error TS2360: The left-hand side of an 'in' expression must be of types 'any', 'string' or 'number'.
|
||||
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(13,11): error TS2360: The left-hand side of an 'in' expression must be of types 'any', 'string' or 'number'.
|
||||
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(14,11): error TS2360: The left-hand side of an 'in' expression must be of types 'any', 'string' or 'number'.
|
||||
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(16,11): error TS2360: The left-hand side of an 'in' expression must be of types 'any', 'string' or 'number'.
|
||||
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(17,11): error TS2360: The left-hand side of an 'in' expression must be of types 'any', 'string' or 'number'.
|
||||
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(19,11): error TS2360: The left-hand side of an 'in' expression must be of types 'any', 'string' or 'number'.
|
||||
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(20,11): error TS2360: The left-hand side of an 'in' expression must be of types 'any', 'string' or 'number'.
|
||||
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(12,11): error TS2360: The left-hand side of an 'in' expression must be of type 'any', 'string', 'number', or 'symbol'.
|
||||
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(13,11): error TS2360: The left-hand side of an 'in' expression must be of type 'any', 'string', 'number', or 'symbol'.
|
||||
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(14,11): error TS2360: The left-hand side of an 'in' expression must be of type 'any', 'string', 'number', or 'symbol'.
|
||||
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(16,11): error TS2360: The left-hand side of an 'in' expression must be of type 'any', 'string', 'number', or 'symbol'.
|
||||
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(17,11): error TS2360: The left-hand side of an 'in' expression must be of type 'any', 'string', 'number', or 'symbol'.
|
||||
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(19,11): error TS2360: The left-hand side of an 'in' expression must be of type 'any', 'string', 'number', or 'symbol'.
|
||||
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(20,11): error TS2360: The left-hand side of an 'in' expression must be of type 'any', 'string', 'number', or 'symbol'.
|
||||
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(30,16): error TS2361: The right-hand side of an 'in' expression must be of type 'any', an object type or a type parameter
|
||||
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(31,16): error TS2361: The right-hand side of an 'in' expression must be of type 'any', an object type or a type parameter
|
||||
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(32,16): error TS2361: The right-hand side of an 'in' expression must be of type 'any', an object type or a type parameter
|
||||
@@ -15,7 +15,7 @@ tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInv
|
||||
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(37,16): error TS2361: The right-hand side of an 'in' expression must be of type 'any', an object type or a type parameter
|
||||
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(38,16): error TS2361: The right-hand side of an 'in' expression must be of type 'any', an object type or a type parameter
|
||||
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(39,17): error TS2361: The right-hand side of an 'in' expression must be of type 'any', an object type or a type parameter
|
||||
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(43,11): error TS2360: The left-hand side of an 'in' expression must be of types 'any', 'string' or 'number'.
|
||||
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(43,11): error TS2360: The left-hand side of an 'in' expression must be of type 'any', 'string', 'number', or 'symbol'.
|
||||
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(43,17): error TS2361: The right-hand side of an 'in' expression must be of type 'any', an object type or a type parameter
|
||||
|
||||
|
||||
@@ -33,27 +33,27 @@ tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInv
|
||||
|
||||
var ra1 = a1 in x;
|
||||
~~
|
||||
!!! error TS2360: The left-hand side of an 'in' expression must be of types 'any', 'string' or 'number'.
|
||||
!!! error TS2360: The left-hand side of an 'in' expression must be of type 'any', 'string', 'number', or 'symbol'.
|
||||
var ra2 = a2 in x;
|
||||
~~
|
||||
!!! error TS2360: The left-hand side of an 'in' expression must be of types 'any', 'string' or 'number'.
|
||||
!!! error TS2360: The left-hand side of an 'in' expression must be of type 'any', 'string', 'number', or 'symbol'.
|
||||
var ra3 = a3 in x;
|
||||
~~
|
||||
!!! error TS2360: The left-hand side of an 'in' expression must be of types 'any', 'string' or 'number'.
|
||||
!!! error TS2360: The left-hand side of an 'in' expression must be of type 'any', 'string', 'number', or 'symbol'.
|
||||
var ra4 = a4 in x;
|
||||
var ra5 = null in x;
|
||||
~~~~
|
||||
!!! error TS2360: The left-hand side of an 'in' expression must be of types 'any', 'string' or 'number'.
|
||||
!!! error TS2360: The left-hand side of an 'in' expression must be of type 'any', 'string', 'number', or 'symbol'.
|
||||
var ra6 = undefined in x;
|
||||
~~~~~~~~~
|
||||
!!! error TS2360: The left-hand side of an 'in' expression must be of types 'any', 'string' or 'number'.
|
||||
!!! error TS2360: The left-hand side of an 'in' expression must be of type 'any', 'string', 'number', or 'symbol'.
|
||||
var ra7 = E.a in x;
|
||||
var ra8 = false in x;
|
||||
~~~~~
|
||||
!!! error TS2360: The left-hand side of an 'in' expression must be of types 'any', 'string' or 'number'.
|
||||
!!! error TS2360: The left-hand side of an 'in' expression must be of type 'any', 'string', 'number', or 'symbol'.
|
||||
var ra9 = {} in x;
|
||||
~~
|
||||
!!! error TS2360: The left-hand side of an 'in' expression must be of types 'any', 'string' or 'number'.
|
||||
!!! error TS2360: The left-hand side of an 'in' expression must be of type 'any', 'string', 'number', or 'symbol'.
|
||||
|
||||
// invalid right operands
|
||||
// the right operand is required to be of type Any, an object type, or a type parameter type
|
||||
@@ -98,6 +98,6 @@ tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInv
|
||||
// both operands are invalid
|
||||
var rc1 = {} in '';
|
||||
~~
|
||||
!!! error TS2360: The left-hand side of an 'in' expression must be of types 'any', 'string' or 'number'.
|
||||
!!! error TS2360: The left-hand side of an 'in' expression must be of type 'any', 'string', 'number', or 'symbol'.
|
||||
~~
|
||||
!!! error TS2361: The right-hand side of an 'in' expression must be of type 'any', an object type or a type parameter
|
||||
9
tests/baselines/reference/symbolProperty54.errors.txt
Normal file
9
tests/baselines/reference/symbolProperty54.errors.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
tests/cases/conformance/es6/Symbols/symbolProperty54.ts(2,5): error TS2464: A computed property name must be of type 'string', 'number', 'symbol', or 'any'.
|
||||
|
||||
|
||||
==== tests/cases/conformance/es6/Symbols/symbolProperty54.ts (1 errors) ====
|
||||
var obj = {
|
||||
[Symbol.prototype]: 0
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
!!! error TS2464: A computed property name must be of type 'string', 'number', 'symbol', or 'any'.
|
||||
};
|
||||
@@ -1,11 +1,16 @@
|
||||
tests/cases/conformance/es6/Symbols/symbolType1.ts(1,1): error TS2358: The left-hand side of an 'instanceof' expression must be of type 'any', an object type or a type parameter.
|
||||
tests/cases/conformance/es6/Symbols/symbolType1.ts(2,19): error TS2359: The right-hand side of an 'instanceof' expression must be of type 'any' or of a type assignable to the 'Function' interface type.
|
||||
tests/cases/conformance/es6/Symbols/symbolType1.ts(4,19): error TS2359: The right-hand side of an 'instanceof' expression must be of type 'any' or of a type assignable to the 'Function' interface type.
|
||||
|
||||
|
||||
==== tests/cases/conformance/es6/Symbols/symbolType1.ts (2 errors) ====
|
||||
==== tests/cases/conformance/es6/Symbols/symbolType1.ts (3 errors) ====
|
||||
Symbol() instanceof Symbol;
|
||||
~~~~~~~~
|
||||
!!! error TS2358: The left-hand side of an 'instanceof' expression must be of type 'any', an object type or a type parameter.
|
||||
Symbol instanceof Symbol();
|
||||
~~~~~~~~
|
||||
!!! error TS2359: The right-hand side of an 'instanceof' expression must be of type 'any' or of a type assignable to the 'Function' interface type.
|
||||
(Symbol() || {}) instanceof Object; // This one should be okay, it's a valid way of distinguishing types
|
||||
Symbol instanceof (Symbol() || {});
|
||||
~~~~~~~~~~~~~~~~
|
||||
!!! error TS2359: The right-hand side of an 'instanceof' expression must be of type 'any' or of a type assignable to the 'Function' interface type.
|
||||
@@ -1,7 +1,11 @@
|
||||
//// [symbolType1.ts]
|
||||
Symbol() instanceof Symbol;
|
||||
Symbol instanceof Symbol();
|
||||
Symbol instanceof Symbol();
|
||||
(Symbol() || {}) instanceof Object; // This one should be okay, it's a valid way of distinguishing types
|
||||
Symbol instanceof (Symbol() || {});
|
||||
|
||||
//// [symbolType1.js]
|
||||
Symbol() instanceof Symbol;
|
||||
Symbol instanceof Symbol();
|
||||
(Symbol() || {}) instanceof Object; // This one should be okay, it's a valid way of distinguishing types
|
||||
Symbol instanceof (Symbol() || {});
|
||||
|
||||
37
tests/baselines/reference/symbolType11.types
Normal file
37
tests/baselines/reference/symbolType11.types
Normal file
@@ -0,0 +1,37 @@
|
||||
=== tests/cases/conformance/es6/Symbols/symbolType11.ts ===
|
||||
var s = Symbol.for("logical");
|
||||
>s : symbol
|
||||
>Symbol.for("logical") : symbol
|
||||
>Symbol.for : (key: string) => symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>for : (key: string) => symbol
|
||||
|
||||
s && s;
|
||||
>s && s : symbol
|
||||
>s : symbol
|
||||
>s : symbol
|
||||
|
||||
s && [];
|
||||
>s && [] : undefined[]
|
||||
>s : symbol
|
||||
>[] : undefined[]
|
||||
|
||||
0 && s;
|
||||
>0 && s : symbol
|
||||
>s : symbol
|
||||
|
||||
s || s;
|
||||
>s || s : symbol
|
||||
>s : symbol
|
||||
>s : symbol
|
||||
|
||||
s || 1;
|
||||
>s || 1 : number | symbol
|
||||
>s : symbol
|
||||
|
||||
({}) || s;
|
||||
>({}) || s : symbol | {}
|
||||
>({}) : {}
|
||||
>{} : {}
|
||||
>s : symbol
|
||||
|
||||
136
tests/baselines/reference/symbolType12.errors.txt
Normal file
136
tests/baselines/reference/symbolType12.errors.txt
Normal file
@@ -0,0 +1,136 @@
|
||||
tests/cases/conformance/es6/Symbols/symbolType12.ts(3,1): error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
tests/cases/conformance/es6/Symbols/symbolType12.ts(3,6): error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
tests/cases/conformance/es6/Symbols/symbolType12.ts(4,1): error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
tests/cases/conformance/es6/Symbols/symbolType12.ts(5,1): error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
tests/cases/conformance/es6/Symbols/symbolType12.ts(5,6): error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
tests/cases/conformance/es6/Symbols/symbolType12.ts(6,1): error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
tests/cases/conformance/es6/Symbols/symbolType12.ts(7,1): error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
tests/cases/conformance/es6/Symbols/symbolType12.ts(7,6): error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
tests/cases/conformance/es6/Symbols/symbolType12.ts(8,1): error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
tests/cases/conformance/es6/Symbols/symbolType12.ts(9,1): error TS2365: Operator '+=' cannot be applied to types 'symbol' and 'symbol'.
|
||||
tests/cases/conformance/es6/Symbols/symbolType12.ts(10,1): error TS2365: Operator '+=' cannot be applied to types 'symbol' and 'number'.
|
||||
tests/cases/conformance/es6/Symbols/symbolType12.ts(11,1): error TS2469: The '+=' operator cannot be applied to a value of type 'symbol'.
|
||||
tests/cases/conformance/es6/Symbols/symbolType12.ts(12,8): error TS2469: The '+=' operator cannot be applied to a value of type 'symbol'.
|
||||
tests/cases/conformance/es6/Symbols/symbolType12.ts(13,1): error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
tests/cases/conformance/es6/Symbols/symbolType12.ts(13,6): error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
tests/cases/conformance/es6/Symbols/symbolType12.ts(14,1): error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
tests/cases/conformance/es6/Symbols/symbolType12.ts(15,1): error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
tests/cases/conformance/es6/Symbols/symbolType12.ts(15,7): error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
tests/cases/conformance/es6/Symbols/symbolType12.ts(16,1): error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
tests/cases/conformance/es6/Symbols/symbolType12.ts(17,1): error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
tests/cases/conformance/es6/Symbols/symbolType12.ts(17,7): error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
tests/cases/conformance/es6/Symbols/symbolType12.ts(18,1): error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
tests/cases/conformance/es6/Symbols/symbolType12.ts(19,1): error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
tests/cases/conformance/es6/Symbols/symbolType12.ts(19,8): error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
tests/cases/conformance/es6/Symbols/symbolType12.ts(20,1): error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
tests/cases/conformance/es6/Symbols/symbolType12.ts(21,1): error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
tests/cases/conformance/es6/Symbols/symbolType12.ts(21,6): error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
tests/cases/conformance/es6/Symbols/symbolType12.ts(22,1): error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
tests/cases/conformance/es6/Symbols/symbolType12.ts(23,1): error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
tests/cases/conformance/es6/Symbols/symbolType12.ts(23,6): error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
tests/cases/conformance/es6/Symbols/symbolType12.ts(24,1): error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
tests/cases/conformance/es6/Symbols/symbolType12.ts(25,1): error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
tests/cases/conformance/es6/Symbols/symbolType12.ts(25,6): error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
tests/cases/conformance/es6/Symbols/symbolType12.ts(26,1): error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
tests/cases/conformance/es6/Symbols/symbolType12.ts(28,8): error TS2469: The '+=' operator cannot be applied to a value of type 'symbol'.
|
||||
|
||||
|
||||
==== tests/cases/conformance/es6/Symbols/symbolType12.ts (35 errors) ====
|
||||
var s = Symbol.for("assign");
|
||||
var str = "";
|
||||
s *= s;
|
||||
~
|
||||
!!! error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
~
|
||||
!!! error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
s *= 0;
|
||||
~
|
||||
!!! error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
s /= s;
|
||||
~
|
||||
!!! error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
~
|
||||
!!! error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
s /= 0;
|
||||
~
|
||||
!!! error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
s %= s;
|
||||
~
|
||||
!!! error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
~
|
||||
!!! error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
s %= 0;
|
||||
~
|
||||
!!! error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
s += s;
|
||||
~~~~~~
|
||||
!!! error TS2365: Operator '+=' cannot be applied to types 'symbol' and 'symbol'.
|
||||
s += 0;
|
||||
~~~~~~
|
||||
!!! error TS2365: Operator '+=' cannot be applied to types 'symbol' and 'number'.
|
||||
s += "";
|
||||
~
|
||||
!!! error TS2469: The '+=' operator cannot be applied to a value of type 'symbol'.
|
||||
str += s;
|
||||
~
|
||||
!!! error TS2469: The '+=' operator cannot be applied to a value of type 'symbol'.
|
||||
s -= s;
|
||||
~
|
||||
!!! error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
~
|
||||
!!! error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
s -= 0;
|
||||
~
|
||||
!!! error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
s <<= s;
|
||||
~
|
||||
!!! error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
~
|
||||
!!! error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
s <<= 0;
|
||||
~
|
||||
!!! error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
s >>= s;
|
||||
~
|
||||
!!! error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
~
|
||||
!!! error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
s >>= 0;
|
||||
~
|
||||
!!! error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
s >>>= s;
|
||||
~
|
||||
!!! error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
~
|
||||
!!! error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
s >>>= 0;
|
||||
~
|
||||
!!! error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
s &= s;
|
||||
~
|
||||
!!! error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
~
|
||||
!!! error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
s &= 0;
|
||||
~
|
||||
!!! error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
s ^= s;
|
||||
~
|
||||
!!! error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
~
|
||||
!!! error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
s ^= 0;
|
||||
~
|
||||
!!! error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
s |= s;
|
||||
~
|
||||
!!! error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
~
|
||||
!!! error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
s |= 0;
|
||||
~
|
||||
!!! error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
|
||||
str += (s || str);
|
||||
~~~~~~~~~~
|
||||
!!! error TS2469: The '+=' operator cannot be applied to a value of type 'symbol'.
|
||||
@@ -24,7 +24,9 @@ s &= 0;
|
||||
s ^= s;
|
||||
s ^= 0;
|
||||
s |= s;
|
||||
s |= 0;
|
||||
s |= 0;
|
||||
|
||||
str += (s || str);
|
||||
|
||||
//// [symbolType12.js]
|
||||
var s = Symbol.for("assign");
|
||||
@@ -53,3 +55,4 @@ s ^= s;
|
||||
s ^= 0;
|
||||
s |= s;
|
||||
s |= 0;
|
||||
str += (s || str);
|
||||
|
||||
18
tests/baselines/reference/symbolType13.errors.txt
Normal file
18
tests/baselines/reference/symbolType13.errors.txt
Normal file
@@ -0,0 +1,18 @@
|
||||
tests/cases/conformance/es6/Symbols/symbolType13.ts(4,6): error TS2405: The left-hand side of a 'for...in' statement must be of type 'string' or 'any'.
|
||||
tests/cases/conformance/es6/Symbols/symbolType13.ts(5,11): error TS2407: The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter.
|
||||
tests/cases/conformance/es6/Symbols/symbolType13.ts(6,15): error TS2407: The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter.
|
||||
|
||||
|
||||
==== tests/cases/conformance/es6/Symbols/symbolType13.ts (3 errors) ====
|
||||
var s = Symbol();
|
||||
var x: any;
|
||||
|
||||
for (s in {}) { }
|
||||
~
|
||||
!!! error TS2405: The left-hand side of a 'for...in' statement must be of type 'string' or 'any'.
|
||||
for (x in s) { }
|
||||
~
|
||||
!!! error TS2407: The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter.
|
||||
for (var y in s) { }
|
||||
~
|
||||
!!! error TS2407: The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter.
|
||||
8
tests/baselines/reference/symbolType2.errors.txt
Normal file
8
tests/baselines/reference/symbolType2.errors.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
tests/cases/conformance/es6/Symbols/symbolType2.ts(2,7): error TS2361: The right-hand side of an 'in' expression must be of type 'any', an object type or a type parameter
|
||||
|
||||
|
||||
==== tests/cases/conformance/es6/Symbols/symbolType2.ts (1 errors) ====
|
||||
Symbol.isConcatSpreadable in {};
|
||||
"" in Symbol.toPrimitive;
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
!!! error TS2361: The right-hand side of an 'in' expression must be of type 'any', an object type or a type parameter
|
||||
33
tests/baselines/reference/symbolType3.errors.txt
Normal file
33
tests/baselines/reference/symbolType3.errors.txt
Normal file
@@ -0,0 +1,33 @@
|
||||
tests/cases/conformance/es6/Symbols/symbolType3.ts(5,3): error TS2356: An arithmetic operand must be of type 'any', 'number' or an enum type.
|
||||
tests/cases/conformance/es6/Symbols/symbolType3.ts(6,3): error TS2356: An arithmetic operand must be of type 'any', 'number' or an enum type.
|
||||
tests/cases/conformance/es6/Symbols/symbolType3.ts(7,3): error TS2469: The '+' operator cannot be applied to a value of type 'symbol'.
|
||||
tests/cases/conformance/es6/Symbols/symbolType3.ts(8,3): error TS2469: The '-' operator cannot be applied to a value of type 'symbol'.
|
||||
tests/cases/conformance/es6/Symbols/symbolType3.ts(9,3): error TS2469: The '~' operator cannot be applied to a value of type 'symbol'.
|
||||
tests/cases/conformance/es6/Symbols/symbolType3.ts(12,2): error TS2469: The '+' operator cannot be applied to a value of type 'symbol'.
|
||||
|
||||
|
||||
==== tests/cases/conformance/es6/Symbols/symbolType3.ts (6 errors) ====
|
||||
var s = Symbol();
|
||||
delete Symbol.iterator;
|
||||
void Symbol.toPrimitive;
|
||||
typeof Symbol.toStringTag;
|
||||
++s;
|
||||
~
|
||||
!!! error TS2356: An arithmetic operand must be of type 'any', 'number' or an enum type.
|
||||
--s;
|
||||
~
|
||||
!!! error TS2356: An arithmetic operand must be of type 'any', 'number' or an enum type.
|
||||
+ Symbol();
|
||||
~~~~~~~~
|
||||
!!! error TS2469: The '+' operator cannot be applied to a value of type 'symbol'.
|
||||
- Symbol();
|
||||
~~~~~~~~
|
||||
!!! error TS2469: The '-' operator cannot be applied to a value of type 'symbol'.
|
||||
~ Symbol();
|
||||
~~~~~~~~
|
||||
!!! error TS2469: The '~' operator cannot be applied to a value of type 'symbol'.
|
||||
! Symbol();
|
||||
|
||||
+(Symbol() || 0);
|
||||
~~~~~~~~~~~~~~~
|
||||
!!! error TS2469: The '+' operator cannot be applied to a value of type 'symbol'.
|
||||
@@ -8,7 +8,9 @@ typeof Symbol.toStringTag;
|
||||
+ Symbol();
|
||||
- Symbol();
|
||||
~ Symbol();
|
||||
! Symbol();
|
||||
! Symbol();
|
||||
|
||||
+(Symbol() || 0);
|
||||
|
||||
//// [symbolType3.js]
|
||||
var s = Symbol();
|
||||
@@ -21,3 +23,4 @@ typeof Symbol.toStringTag;
|
||||
-Symbol();
|
||||
~Symbol();
|
||||
!Symbol();
|
||||
+(Symbol() || 0);
|
||||
|
||||
57
tests/baselines/reference/symbolType6.errors.txt
Normal file
57
tests/baselines/reference/symbolType6.errors.txt
Normal file
@@ -0,0 +1,57 @@
|
||||
tests/cases/conformance/es6/Symbols/symbolType6.ts(3,1): error TS2365: Operator '+' cannot be applied to types 'symbol' and 'symbol'.
|
||||
tests/cases/conformance/es6/Symbols/symbolType6.ts(4,1): error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
tests/cases/conformance/es6/Symbols/symbolType6.ts(4,5): error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
tests/cases/conformance/es6/Symbols/symbolType6.ts(5,1): error TS2469: The '+' operator cannot be applied to a value of type 'symbol'.
|
||||
tests/cases/conformance/es6/Symbols/symbolType6.ts(6,1): error TS2469: The '+' operator cannot be applied to a value of type 'symbol'.
|
||||
tests/cases/conformance/es6/Symbols/symbolType6.ts(7,1): error TS2365: Operator '+' cannot be applied to types 'symbol' and 'number'.
|
||||
tests/cases/conformance/es6/Symbols/symbolType6.ts(8,6): error TS2469: The '+' operator cannot be applied to a value of type 'symbol'.
|
||||
tests/cases/conformance/es6/Symbols/symbolType6.ts(9,5): error TS2469: The '+' operator cannot be applied to a value of type 'symbol'.
|
||||
tests/cases/conformance/es6/Symbols/symbolType6.ts(10,1): error TS2365: Operator '+' cannot be applied to types 'number' and 'symbol'.
|
||||
tests/cases/conformance/es6/Symbols/symbolType6.ts(11,1): error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
tests/cases/conformance/es6/Symbols/symbolType6.ts(12,5): error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
tests/cases/conformance/es6/Symbols/symbolType6.ts(14,1): error TS2469: The '+' operator cannot be applied to a value of type 'symbol'.
|
||||
tests/cases/conformance/es6/Symbols/symbolType6.ts(15,6): error TS2469: The '+' operator cannot be applied to a value of type 'symbol'.
|
||||
|
||||
|
||||
==== tests/cases/conformance/es6/Symbols/symbolType6.ts (13 errors) ====
|
||||
var s = Symbol.for("add");
|
||||
var a: any;
|
||||
s + s;
|
||||
~~~~~
|
||||
!!! error TS2365: Operator '+' cannot be applied to types 'symbol' and 'symbol'.
|
||||
s - s;
|
||||
~
|
||||
!!! error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
~
|
||||
!!! error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
s + "";
|
||||
~
|
||||
!!! error TS2469: The '+' operator cannot be applied to a value of type 'symbol'.
|
||||
s + a;
|
||||
~
|
||||
!!! error TS2469: The '+' operator cannot be applied to a value of type 'symbol'.
|
||||
s + 0;
|
||||
~~~~~
|
||||
!!! error TS2365: Operator '+' cannot be applied to types 'symbol' and 'number'.
|
||||
"" + s;
|
||||
~
|
||||
!!! error TS2469: The '+' operator cannot be applied to a value of type 'symbol'.
|
||||
a + s;
|
||||
~
|
||||
!!! error TS2469: The '+' operator cannot be applied to a value of type 'symbol'.
|
||||
0 + s;
|
||||
~~~~~
|
||||
!!! error TS2365: Operator '+' cannot be applied to types 'number' and 'symbol'.
|
||||
s - 0;
|
||||
~
|
||||
!!! error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
0 - s;
|
||||
~
|
||||
!!! error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
|
||||
|
||||
(s || "") + "";
|
||||
~~~~~~~~~
|
||||
!!! error TS2469: The '+' operator cannot be applied to a value of type 'symbol'.
|
||||
"" + (s || "");
|
||||
~~~~~~~~~
|
||||
!!! error TS2469: The '+' operator cannot be applied to a value of type 'symbol'.
|
||||
@@ -1,21 +1,32 @@
|
||||
//// [symbolType6.ts]
|
||||
var s = Symbol.for("add");
|
||||
var a: any;
|
||||
s + s;
|
||||
s - s;
|
||||
s + "";
|
||||
s + a;
|
||||
s + 0;
|
||||
"" + s;
|
||||
a + s;
|
||||
0 + s;
|
||||
s - 0;
|
||||
0 - s;
|
||||
0 - s;
|
||||
|
||||
(s || "") + "";
|
||||
"" + (s || "");
|
||||
|
||||
//// [symbolType6.js]
|
||||
var s = Symbol.for("add");
|
||||
var a;
|
||||
s + s;
|
||||
s - s;
|
||||
s + "";
|
||||
s + a;
|
||||
s + 0;
|
||||
"" + s;
|
||||
a + s;
|
||||
0 + s;
|
||||
s - 0;
|
||||
0 - s;
|
||||
(s || "") + "";
|
||||
"" + (s || "");
|
||||
|
||||
45
tests/baselines/reference/symbolType8.errors.txt
Normal file
45
tests/baselines/reference/symbolType8.errors.txt
Normal file
@@ -0,0 +1,45 @@
|
||||
tests/cases/conformance/es6/Symbols/symbolType8.ts(2,1): error TS2469: The '<' operator cannot be applied to a value of type 'symbol'.
|
||||
tests/cases/conformance/es6/Symbols/symbolType8.ts(3,1): error TS2469: The '<' operator cannot be applied to a value of type 'symbol'.
|
||||
tests/cases/conformance/es6/Symbols/symbolType8.ts(4,1): error TS2469: The '>' operator cannot be applied to a value of type 'symbol'.
|
||||
tests/cases/conformance/es6/Symbols/symbolType8.ts(5,1): error TS2469: The '>' operator cannot be applied to a value of type 'symbol'.
|
||||
tests/cases/conformance/es6/Symbols/symbolType8.ts(6,1): error TS2469: The '<=' operator cannot be applied to a value of type 'symbol'.
|
||||
tests/cases/conformance/es6/Symbols/symbolType8.ts(7,1): error TS2469: The '<=' operator cannot be applied to a value of type 'symbol'.
|
||||
tests/cases/conformance/es6/Symbols/symbolType8.ts(8,1): error TS2469: The '>=' operator cannot be applied to a value of type 'symbol'.
|
||||
tests/cases/conformance/es6/Symbols/symbolType8.ts(9,1): error TS2469: The '>=' operator cannot be applied to a value of type 'symbol'.
|
||||
tests/cases/conformance/es6/Symbols/symbolType8.ts(11,6): error TS2469: The '>=' operator cannot be applied to a value of type 'symbol'.
|
||||
tests/cases/conformance/es6/Symbols/symbolType8.ts(12,1): error TS2469: The '>=' operator cannot be applied to a value of type 'symbol'.
|
||||
|
||||
|
||||
==== tests/cases/conformance/es6/Symbols/symbolType8.ts (10 errors) ====
|
||||
var s = Symbol.for("compare");
|
||||
s < s;
|
||||
~
|
||||
!!! error TS2469: The '<' operator cannot be applied to a value of type 'symbol'.
|
||||
s < 0;
|
||||
~
|
||||
!!! error TS2469: The '<' operator cannot be applied to a value of type 'symbol'.
|
||||
s > s;
|
||||
~
|
||||
!!! error TS2469: The '>' operator cannot be applied to a value of type 'symbol'.
|
||||
s > 0;
|
||||
~
|
||||
!!! error TS2469: The '>' operator cannot be applied to a value of type 'symbol'.
|
||||
s <= s;
|
||||
~
|
||||
!!! error TS2469: The '<=' operator cannot be applied to a value of type 'symbol'.
|
||||
s <= 0;
|
||||
~
|
||||
!!! error TS2469: The '<=' operator cannot be applied to a value of type 'symbol'.
|
||||
s >= s;
|
||||
~
|
||||
!!! error TS2469: The '>=' operator cannot be applied to a value of type 'symbol'.
|
||||
s >= 0;
|
||||
~
|
||||
!!! error TS2469: The '>=' operator cannot be applied to a value of type 'symbol'.
|
||||
|
||||
0 >= (s || 0);
|
||||
~~~~~~~~
|
||||
!!! error TS2469: The '>=' operator cannot be applied to a value of type 'symbol'.
|
||||
(s || 0) >= s;
|
||||
~~~~~~~~
|
||||
!!! error TS2469: The '>=' operator cannot be applied to a value of type 'symbol'.
|
||||
@@ -7,7 +7,10 @@ s > 0;
|
||||
s <= s;
|
||||
s <= 0;
|
||||
s >= s;
|
||||
s >= 0;
|
||||
s >= 0;
|
||||
|
||||
0 >= (s || 0);
|
||||
(s || 0) >= s;
|
||||
|
||||
//// [symbolType8.js]
|
||||
var s = Symbol.for("compare");
|
||||
@@ -19,3 +22,5 @@ s <= s;
|
||||
s <= 0;
|
||||
s >= s;
|
||||
s >= 0;
|
||||
0 >= (s || 0);
|
||||
(s || 0) >= s;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
tests/cases/compiler/widenedTypes.ts(2,1): error TS2358: The left-hand side of an 'instanceof' expression must be of type 'any', an object type or a type parameter.
|
||||
tests/cases/compiler/widenedTypes.ts(5,1): error TS2360: The left-hand side of an 'in' expression must be of types 'any', 'string' or 'number'.
|
||||
tests/cases/compiler/widenedTypes.ts(5,1): error TS2360: The left-hand side of an 'in' expression must be of type 'any', 'string', 'number', or 'symbol'.
|
||||
tests/cases/compiler/widenedTypes.ts(6,7): error TS2361: The right-hand side of an 'in' expression must be of type 'any', an object type or a type parameter
|
||||
tests/cases/compiler/widenedTypes.ts(8,15): error TS2407: The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter.
|
||||
tests/cases/compiler/widenedTypes.ts(11,1): error TS2322: Type 'string' is not assignable to type 'number'.
|
||||
@@ -20,7 +20,7 @@ tests/cases/compiler/widenedTypes.ts(24,5): error TS2322: Type '{ [x: string]: n
|
||||
|
||||
null in {};
|
||||
~~~~
|
||||
!!! error TS2360: The left-hand side of an 'in' expression must be of types 'any', 'string' or 'number'.
|
||||
!!! error TS2360: The left-hand side of an 'in' expression must be of type 'any', 'string', 'number', or 'symbol'.
|
||||
"" in null;
|
||||
~~~~
|
||||
!!! error TS2361: The right-hand side of an 'in' expression must be of type 'any', an object type or a type parameter
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//@target: ES6
|
||||
Symbol() instanceof Symbol;
|
||||
Symbol instanceof Symbol();
|
||||
Symbol instanceof Symbol();
|
||||
(Symbol() || {}) instanceof Object; // This one should be okay, it's a valid way of distinguishing types
|
||||
Symbol instanceof (Symbol() || {});
|
||||
@@ -24,4 +24,6 @@ s &= 0;
|
||||
s ^= s;
|
||||
s ^= 0;
|
||||
s |= s;
|
||||
s |= 0;
|
||||
s |= 0;
|
||||
|
||||
str += (s || str);
|
||||
@@ -8,4 +8,6 @@ typeof Symbol.toStringTag;
|
||||
+ Symbol();
|
||||
- Symbol();
|
||||
~ Symbol();
|
||||
! Symbol();
|
||||
! Symbol();
|
||||
|
||||
+(Symbol() || 0);
|
||||
@@ -1,10 +1,16 @@
|
||||
//@target: ES6
|
||||
var s = Symbol.for("add");
|
||||
var a: any;
|
||||
s + s;
|
||||
s - s;
|
||||
s + "";
|
||||
s + a;
|
||||
s + 0;
|
||||
"" + s;
|
||||
a + s;
|
||||
0 + s;
|
||||
s - 0;
|
||||
0 - s;
|
||||
0 - s;
|
||||
|
||||
(s || "") + "";
|
||||
"" + (s || "");
|
||||
@@ -7,4 +7,7 @@ s > 0;
|
||||
s <= s;
|
||||
s <= 0;
|
||||
s >= s;
|
||||
s >= 0;
|
||||
s >= 0;
|
||||
|
||||
0 >= (s || 0);
|
||||
(s || 0) >= s;
|
||||
Reference in New Issue
Block a user