2020-11-09 20:34:41 +01:00
|
|
|
=== tests/cases/compiler/truthinessCallExpressionCoercion2.ts ===
|
2020-11-17 18:42:27 +01:00
|
|
|
declare class A {
|
|
|
|
>A : Symbol(A, Decl(truthinessCallExpressionCoercion2.ts, 0, 0))
|
|
|
|
|
|
|
|
static from(): string;
|
|
|
|
>from : Symbol(A.from, Decl(truthinessCallExpressionCoercion2.ts, 0, 17))
|
|
|
|
}
|
|
|
|
|
|
|
|
declare class B {
|
|
|
|
>B : Symbol(B, Decl(truthinessCallExpressionCoercion2.ts, 2, 1))
|
|
|
|
|
|
|
|
static from(): string;
|
|
|
|
>from : Symbol(B.from, Decl(truthinessCallExpressionCoercion2.ts, 4, 17))
|
|
|
|
}
|
|
|
|
|
2020-11-30 23:27:19 +01:00
|
|
|
function test(required1: () => boolean, required2: () => boolean, b: boolean, optional?: () => boolean) {
|
2020-11-17 18:42:27 +01:00
|
|
|
>test : Symbol(test, Decl(truthinessCallExpressionCoercion2.ts, 6, 1))
|
|
|
|
>required1 : Symbol(required1, Decl(truthinessCallExpressionCoercion2.ts, 8, 14))
|
|
|
|
>required2 : Symbol(required2, Decl(truthinessCallExpressionCoercion2.ts, 8, 39))
|
2020-11-30 23:27:19 +01:00
|
|
|
>b : Symbol(b, Decl(truthinessCallExpressionCoercion2.ts, 8, 65))
|
|
|
|
>optional : Symbol(optional, Decl(truthinessCallExpressionCoercion2.ts, 8, 77))
|
2020-11-09 20:34:41 +01:00
|
|
|
|
|
|
|
// error
|
|
|
|
required1 && console.log('required');
|
2020-11-17 18:42:27 +01:00
|
|
|
>required1 : Symbol(required1, Decl(truthinessCallExpressionCoercion2.ts, 8, 14))
|
2020-11-09 20:34:41 +01:00
|
|
|
>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>console : Symbol(console, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
|
|
|
|
|
|
|
|
// error
|
|
|
|
1 && required1 && console.log('required');
|
2020-11-17 18:42:27 +01:00
|
|
|
>required1 : Symbol(required1, Decl(truthinessCallExpressionCoercion2.ts, 8, 14))
|
2020-11-09 20:34:41 +01:00
|
|
|
>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>console : Symbol(console, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
|
|
|
|
|
|
|
|
// ok
|
|
|
|
required1 && required1();
|
2020-11-17 18:42:27 +01:00
|
|
|
>required1 : Symbol(required1, Decl(truthinessCallExpressionCoercion2.ts, 8, 14))
|
|
|
|
>required1 : Symbol(required1, Decl(truthinessCallExpressionCoercion2.ts, 8, 14))
|
2020-11-09 20:34:41 +01:00
|
|
|
|
|
|
|
// ok
|
|
|
|
required1 && 1 && required1();
|
2020-11-17 18:42:27 +01:00
|
|
|
>required1 : Symbol(required1, Decl(truthinessCallExpressionCoercion2.ts, 8, 14))
|
|
|
|
>required1 : Symbol(required1, Decl(truthinessCallExpressionCoercion2.ts, 8, 14))
|
2020-11-09 20:34:41 +01:00
|
|
|
|
|
|
|
// ok
|
|
|
|
optional && console.log('optional');
|
2020-11-30 23:27:19 +01:00
|
|
|
>optional : Symbol(optional, Decl(truthinessCallExpressionCoercion2.ts, 8, 77))
|
2020-11-09 20:34:41 +01:00
|
|
|
>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>console : Symbol(console, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
|
|
|
|
|
|
|
|
// ok
|
|
|
|
1 && optional && console.log('optional');
|
2020-11-30 23:27:19 +01:00
|
|
|
>optional : Symbol(optional, Decl(truthinessCallExpressionCoercion2.ts, 8, 77))
|
2020-11-09 20:34:41 +01:00
|
|
|
>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>console : Symbol(console, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
|
|
|
|
|
|
|
|
// ok
|
|
|
|
!!required1 && console.log('not required');
|
2020-11-17 18:42:27 +01:00
|
|
|
>required1 : Symbol(required1, Decl(truthinessCallExpressionCoercion2.ts, 8, 14))
|
2020-11-09 20:34:41 +01:00
|
|
|
>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>console : Symbol(console, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
|
|
|
|
|
|
|
|
// ok
|
|
|
|
required1() && console.log('required call');
|
2020-11-17 18:42:27 +01:00
|
|
|
>required1 : Symbol(required1, Decl(truthinessCallExpressionCoercion2.ts, 8, 14))
|
2020-11-09 20:34:41 +01:00
|
|
|
>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>console : Symbol(console, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
|
|
|
|
|
|
|
|
// ok
|
|
|
|
required1 && required2 && required1() && required2();
|
2020-11-17 18:42:27 +01:00
|
|
|
>required1 : Symbol(required1, Decl(truthinessCallExpressionCoercion2.ts, 8, 14))
|
|
|
|
>required2 : Symbol(required2, Decl(truthinessCallExpressionCoercion2.ts, 8, 39))
|
|
|
|
>required1 : Symbol(required1, Decl(truthinessCallExpressionCoercion2.ts, 8, 14))
|
|
|
|
>required2 : Symbol(required2, Decl(truthinessCallExpressionCoercion2.ts, 8, 39))
|
|
|
|
|
|
|
|
// ok
|
|
|
|
[].forEach((f: () => void) => f && f.apply(parent, []));
|
|
|
|
>[].forEach : Symbol(Array.forEach, Decl(lib.es5.d.ts, --, --))
|
|
|
|
>forEach : Symbol(Array.forEach, Decl(lib.es5.d.ts, --, --))
|
|
|
|
>f : Symbol(f, Decl(truthinessCallExpressionCoercion2.ts, 37, 16))
|
|
|
|
>f : Symbol(f, Decl(truthinessCallExpressionCoercion2.ts, 37, 16))
|
|
|
|
>f.apply : Symbol(Function.apply, Decl(lib.es5.d.ts, --, --))
|
|
|
|
>f : Symbol(f, Decl(truthinessCallExpressionCoercion2.ts, 37, 16))
|
|
|
|
>apply : Symbol(Function.apply, Decl(lib.es5.d.ts, --, --))
|
|
|
|
>parent : Symbol(parent, Decl(lib.dom.d.ts, --, --))
|
2020-11-09 20:34:41 +01:00
|
|
|
|
|
|
|
// error
|
|
|
|
required1 && required2 && required1() && console.log('foo');
|
2020-11-17 18:42:27 +01:00
|
|
|
>required1 : Symbol(required1, Decl(truthinessCallExpressionCoercion2.ts, 8, 14))
|
|
|
|
>required2 : Symbol(required2, Decl(truthinessCallExpressionCoercion2.ts, 8, 39))
|
|
|
|
>required1 : Symbol(required1, Decl(truthinessCallExpressionCoercion2.ts, 8, 14))
|
2020-11-09 20:34:41 +01:00
|
|
|
>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>console : Symbol(console, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
|
2020-11-30 23:27:19 +01:00
|
|
|
|
|
|
|
// error
|
|
|
|
if (required1 && b) {
|
|
|
|
>required1 : Symbol(required1, Decl(truthinessCallExpressionCoercion2.ts, 8, 14))
|
|
|
|
>b : Symbol(b, Decl(truthinessCallExpressionCoercion2.ts, 8, 65))
|
|
|
|
}
|
2020-12-05 01:20:14 +01:00
|
|
|
|
|
|
|
// error
|
|
|
|
if (((required1 && b))) {
|
|
|
|
>required1 : Symbol(required1, Decl(truthinessCallExpressionCoercion2.ts, 8, 14))
|
|
|
|
>b : Symbol(b, Decl(truthinessCallExpressionCoercion2.ts, 8, 65))
|
|
|
|
}
|
|
|
|
|
2020-11-30 23:27:19 +01:00
|
|
|
// ok
|
|
|
|
if (required1 && b) {
|
|
|
|
>required1 : Symbol(required1, Decl(truthinessCallExpressionCoercion2.ts, 8, 14))
|
|
|
|
>b : Symbol(b, Decl(truthinessCallExpressionCoercion2.ts, 8, 65))
|
|
|
|
|
2020-12-05 01:20:14 +01:00
|
|
|
required1();
|
|
|
|
>required1 : Symbol(required1, Decl(truthinessCallExpressionCoercion2.ts, 8, 14))
|
|
|
|
}
|
|
|
|
|
|
|
|
// ok
|
|
|
|
if (((required1 && b))) {
|
|
|
|
>required1 : Symbol(required1, Decl(truthinessCallExpressionCoercion2.ts, 8, 14))
|
|
|
|
>b : Symbol(b, Decl(truthinessCallExpressionCoercion2.ts, 8, 65))
|
|
|
|
|
|
|
|
required1();
|
2020-11-30 23:27:19 +01:00
|
|
|
>required1 : Symbol(required1, Decl(truthinessCallExpressionCoercion2.ts, 8, 14))
|
|
|
|
}
|
2020-11-09 20:34:41 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
function checksConsole() {
|
2020-12-05 01:20:14 +01:00
|
|
|
>checksConsole : Symbol(checksConsole, Decl(truthinessCallExpressionCoercion2.ts, 59, 1))
|
2020-11-09 20:34:41 +01:00
|
|
|
|
|
|
|
// error
|
|
|
|
typeof window !== 'undefined' && window.console &&
|
|
|
|
>window : Symbol(window, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>window.console : Symbol(console, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>window : Symbol(window, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>console : Symbol(console, Decl(lib.dom.d.ts, --, --))
|
|
|
|
|
|
|
|
((window.console as any).firebug || (window.console.exception && window.console.table));
|
|
|
|
>window.console : Symbol(console, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>window : Symbol(window, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>console : Symbol(console, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>window.console.exception : Symbol(Console.exception, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>window.console : Symbol(console, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>window : Symbol(window, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>console : Symbol(console, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>exception : Symbol(Console.exception, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>window.console.table : Symbol(Console.table, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>window.console : Symbol(console, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>window : Symbol(window, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>console : Symbol(console, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>table : Symbol(Console.table, Decl(lib.dom.d.ts, --, --))
|
|
|
|
}
|
|
|
|
|
|
|
|
function checksPropertyAccess() {
|
2020-12-05 01:20:14 +01:00
|
|
|
>checksPropertyAccess : Symbol(checksPropertyAccess, Decl(truthinessCallExpressionCoercion2.ts, 65, 1))
|
2020-11-09 20:34:41 +01:00
|
|
|
|
|
|
|
const x = {
|
2020-12-05 01:20:14 +01:00
|
|
|
>x : Symbol(x, Decl(truthinessCallExpressionCoercion2.ts, 68, 9))
|
2020-11-09 20:34:41 +01:00
|
|
|
|
|
|
|
foo: {
|
2020-12-05 01:20:14 +01:00
|
|
|
>foo : Symbol(foo, Decl(truthinessCallExpressionCoercion2.ts, 68, 15))
|
2020-11-09 20:34:41 +01:00
|
|
|
|
|
|
|
bar() { return true; }
|
2020-12-05 01:20:14 +01:00
|
|
|
>bar : Symbol(bar, Decl(truthinessCallExpressionCoercion2.ts, 69, 14))
|
2020-11-09 20:34:41 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// error
|
|
|
|
x.foo.bar && console.log('x.foo.bar');
|
2020-12-05 01:20:14 +01:00
|
|
|
>x.foo.bar : Symbol(bar, Decl(truthinessCallExpressionCoercion2.ts, 69, 14))
|
|
|
|
>x.foo : Symbol(foo, Decl(truthinessCallExpressionCoercion2.ts, 68, 15))
|
|
|
|
>x : Symbol(x, Decl(truthinessCallExpressionCoercion2.ts, 68, 9))
|
|
|
|
>foo : Symbol(foo, Decl(truthinessCallExpressionCoercion2.ts, 68, 15))
|
|
|
|
>bar : Symbol(bar, Decl(truthinessCallExpressionCoercion2.ts, 69, 14))
|
2020-11-09 20:34:41 +01:00
|
|
|
>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>console : Symbol(console, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
|
|
|
|
|
|
|
|
// error
|
|
|
|
1 && x.foo.bar && console.log('x.foo.bar');
|
2020-12-05 01:20:14 +01:00
|
|
|
>x.foo.bar : Symbol(bar, Decl(truthinessCallExpressionCoercion2.ts, 69, 14))
|
|
|
|
>x.foo : Symbol(foo, Decl(truthinessCallExpressionCoercion2.ts, 68, 15))
|
|
|
|
>x : Symbol(x, Decl(truthinessCallExpressionCoercion2.ts, 68, 9))
|
|
|
|
>foo : Symbol(foo, Decl(truthinessCallExpressionCoercion2.ts, 68, 15))
|
|
|
|
>bar : Symbol(bar, Decl(truthinessCallExpressionCoercion2.ts, 69, 14))
|
2020-11-09 20:34:41 +01:00
|
|
|
>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>console : Symbol(console, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
|
|
|
|
|
|
|
|
// ok
|
|
|
|
x.foo.bar && x.foo.bar();
|
2020-12-05 01:20:14 +01:00
|
|
|
>x.foo.bar : Symbol(bar, Decl(truthinessCallExpressionCoercion2.ts, 69, 14))
|
|
|
|
>x.foo : Symbol(foo, Decl(truthinessCallExpressionCoercion2.ts, 68, 15))
|
|
|
|
>x : Symbol(x, Decl(truthinessCallExpressionCoercion2.ts, 68, 9))
|
|
|
|
>foo : Symbol(foo, Decl(truthinessCallExpressionCoercion2.ts, 68, 15))
|
|
|
|
>bar : Symbol(bar, Decl(truthinessCallExpressionCoercion2.ts, 69, 14))
|
|
|
|
>x.foo.bar : Symbol(bar, Decl(truthinessCallExpressionCoercion2.ts, 69, 14))
|
|
|
|
>x.foo : Symbol(foo, Decl(truthinessCallExpressionCoercion2.ts, 68, 15))
|
|
|
|
>x : Symbol(x, Decl(truthinessCallExpressionCoercion2.ts, 68, 9))
|
|
|
|
>foo : Symbol(foo, Decl(truthinessCallExpressionCoercion2.ts, 68, 15))
|
|
|
|
>bar : Symbol(bar, Decl(truthinessCallExpressionCoercion2.ts, 69, 14))
|
2020-11-09 20:34:41 +01:00
|
|
|
|
|
|
|
// ok
|
|
|
|
x.foo.bar && 1 && x.foo.bar();
|
2020-12-05 01:20:14 +01:00
|
|
|
>x.foo.bar : Symbol(bar, Decl(truthinessCallExpressionCoercion2.ts, 69, 14))
|
|
|
|
>x.foo : Symbol(foo, Decl(truthinessCallExpressionCoercion2.ts, 68, 15))
|
|
|
|
>x : Symbol(x, Decl(truthinessCallExpressionCoercion2.ts, 68, 9))
|
|
|
|
>foo : Symbol(foo, Decl(truthinessCallExpressionCoercion2.ts, 68, 15))
|
|
|
|
>bar : Symbol(bar, Decl(truthinessCallExpressionCoercion2.ts, 69, 14))
|
|
|
|
>x.foo.bar : Symbol(bar, Decl(truthinessCallExpressionCoercion2.ts, 69, 14))
|
|
|
|
>x.foo : Symbol(foo, Decl(truthinessCallExpressionCoercion2.ts, 68, 15))
|
|
|
|
>x : Symbol(x, Decl(truthinessCallExpressionCoercion2.ts, 68, 9))
|
|
|
|
>foo : Symbol(foo, Decl(truthinessCallExpressionCoercion2.ts, 68, 15))
|
|
|
|
>bar : Symbol(bar, Decl(truthinessCallExpressionCoercion2.ts, 69, 14))
|
2020-11-17 18:42:27 +01:00
|
|
|
|
|
|
|
// ok
|
|
|
|
const y = A.from && (A.from as Function) !== B.from ? true : false;
|
2020-12-05 01:20:14 +01:00
|
|
|
>y : Symbol(y, Decl(truthinessCallExpressionCoercion2.ts, 87, 9))
|
2020-11-17 18:42:27 +01:00
|
|
|
>A.from : Symbol(A.from, Decl(truthinessCallExpressionCoercion2.ts, 0, 17))
|
|
|
|
>A : Symbol(A, Decl(truthinessCallExpressionCoercion2.ts, 0, 0))
|
|
|
|
>from : Symbol(A.from, Decl(truthinessCallExpressionCoercion2.ts, 0, 17))
|
|
|
|
>A.from : Symbol(A.from, Decl(truthinessCallExpressionCoercion2.ts, 0, 17))
|
|
|
|
>A : Symbol(A, Decl(truthinessCallExpressionCoercion2.ts, 0, 0))
|
|
|
|
>from : Symbol(A.from, Decl(truthinessCallExpressionCoercion2.ts, 0, 17))
|
|
|
|
>Function : Symbol(Function, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
|
|
|
|
>B.from : Symbol(B.from, Decl(truthinessCallExpressionCoercion2.ts, 4, 17))
|
|
|
|
>B : Symbol(B, Decl(truthinessCallExpressionCoercion2.ts, 2, 1))
|
|
|
|
>from : Symbol(B.from, Decl(truthinessCallExpressionCoercion2.ts, 4, 17))
|
|
|
|
|
|
|
|
y;
|
2020-12-05 01:20:14 +01:00
|
|
|
>y : Symbol(y, Decl(truthinessCallExpressionCoercion2.ts, 87, 9))
|
2020-11-17 18:42:27 +01:00
|
|
|
|
|
|
|
const x1 = {
|
2020-12-05 01:20:14 +01:00
|
|
|
>x1 : Symbol(x1, Decl(truthinessCallExpressionCoercion2.ts, 90, 9))
|
2020-11-17 18:42:27 +01:00
|
|
|
|
|
|
|
a: { b: { c: () => {} } }
|
2020-12-05 01:20:14 +01:00
|
|
|
>a : Symbol(a, Decl(truthinessCallExpressionCoercion2.ts, 90, 16))
|
|
|
|
>b : Symbol(b, Decl(truthinessCallExpressionCoercion2.ts, 91, 12))
|
|
|
|
>c : Symbol(c, Decl(truthinessCallExpressionCoercion2.ts, 91, 17))
|
2020-11-17 18:42:27 +01:00
|
|
|
}
|
|
|
|
const x2 = {
|
2020-12-05 01:20:14 +01:00
|
|
|
>x2 : Symbol(x2, Decl(truthinessCallExpressionCoercion2.ts, 93, 9))
|
2020-11-17 18:42:27 +01:00
|
|
|
|
|
|
|
a: { b: { c: () => {} } }
|
2020-12-05 01:20:14 +01:00
|
|
|
>a : Symbol(a, Decl(truthinessCallExpressionCoercion2.ts, 93, 16))
|
|
|
|
>b : Symbol(b, Decl(truthinessCallExpressionCoercion2.ts, 94, 12))
|
|
|
|
>c : Symbol(c, Decl(truthinessCallExpressionCoercion2.ts, 94, 17))
|
2020-11-17 18:42:27 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
// error
|
|
|
|
x1.a.b.c && x2.a.b.c();
|
2020-12-05 01:20:14 +01:00
|
|
|
>x1.a.b.c : Symbol(c, Decl(truthinessCallExpressionCoercion2.ts, 91, 17))
|
|
|
|
>x1.a.b : Symbol(b, Decl(truthinessCallExpressionCoercion2.ts, 91, 12))
|
|
|
|
>x1.a : Symbol(a, Decl(truthinessCallExpressionCoercion2.ts, 90, 16))
|
|
|
|
>x1 : Symbol(x1, Decl(truthinessCallExpressionCoercion2.ts, 90, 9))
|
|
|
|
>a : Symbol(a, Decl(truthinessCallExpressionCoercion2.ts, 90, 16))
|
|
|
|
>b : Symbol(b, Decl(truthinessCallExpressionCoercion2.ts, 91, 12))
|
|
|
|
>c : Symbol(c, Decl(truthinessCallExpressionCoercion2.ts, 91, 17))
|
|
|
|
>x2.a.b.c : Symbol(c, Decl(truthinessCallExpressionCoercion2.ts, 94, 17))
|
|
|
|
>x2.a.b : Symbol(b, Decl(truthinessCallExpressionCoercion2.ts, 94, 12))
|
|
|
|
>x2.a : Symbol(a, Decl(truthinessCallExpressionCoercion2.ts, 93, 16))
|
|
|
|
>x2 : Symbol(x2, Decl(truthinessCallExpressionCoercion2.ts, 93, 9))
|
|
|
|
>a : Symbol(a, Decl(truthinessCallExpressionCoercion2.ts, 93, 16))
|
|
|
|
>b : Symbol(b, Decl(truthinessCallExpressionCoercion2.ts, 94, 12))
|
|
|
|
>c : Symbol(c, Decl(truthinessCallExpressionCoercion2.ts, 94, 17))
|
2020-11-09 20:34:41 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
class Foo {
|
2020-12-05 01:20:14 +01:00
|
|
|
>Foo : Symbol(Foo, Decl(truthinessCallExpressionCoercion2.ts, 99, 1))
|
2020-11-09 20:34:41 +01:00
|
|
|
|
|
|
|
optional?: () => boolean;
|
2020-12-05 01:20:14 +01:00
|
|
|
>optional : Symbol(Foo.optional, Decl(truthinessCallExpressionCoercion2.ts, 101, 11))
|
2020-11-09 20:34:41 +01:00
|
|
|
|
|
|
|
required() {
|
2020-12-05 01:20:14 +01:00
|
|
|
>required : Symbol(Foo.required, Decl(truthinessCallExpressionCoercion2.ts, 102, 29))
|
2020-11-09 20:34:41 +01:00
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
test() {
|
2020-12-05 01:20:14 +01:00
|
|
|
>test : Symbol(Foo.test, Decl(truthinessCallExpressionCoercion2.ts, 105, 5))
|
2020-11-09 20:34:41 +01:00
|
|
|
|
|
|
|
// error
|
|
|
|
this.required && console.log('required');
|
2020-12-05 01:20:14 +01:00
|
|
|
>this.required : Symbol(Foo.required, Decl(truthinessCallExpressionCoercion2.ts, 102, 29))
|
|
|
|
>this : Symbol(Foo, Decl(truthinessCallExpressionCoercion2.ts, 99, 1))
|
|
|
|
>required : Symbol(Foo.required, Decl(truthinessCallExpressionCoercion2.ts, 102, 29))
|
2020-11-09 20:34:41 +01:00
|
|
|
>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>console : Symbol(console, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
|
|
|
|
|
|
|
|
// error
|
|
|
|
1 && this.required && console.log('required');
|
2020-12-05 01:20:14 +01:00
|
|
|
>this.required : Symbol(Foo.required, Decl(truthinessCallExpressionCoercion2.ts, 102, 29))
|
|
|
|
>this : Symbol(Foo, Decl(truthinessCallExpressionCoercion2.ts, 99, 1))
|
|
|
|
>required : Symbol(Foo.required, Decl(truthinessCallExpressionCoercion2.ts, 102, 29))
|
2020-11-09 20:34:41 +01:00
|
|
|
>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>console : Symbol(console, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
|
|
|
|
|
|
|
|
// ok
|
|
|
|
this.required && this.required();
|
2020-12-05 01:20:14 +01:00
|
|
|
>this.required : Symbol(Foo.required, Decl(truthinessCallExpressionCoercion2.ts, 102, 29))
|
|
|
|
>this : Symbol(Foo, Decl(truthinessCallExpressionCoercion2.ts, 99, 1))
|
|
|
|
>required : Symbol(Foo.required, Decl(truthinessCallExpressionCoercion2.ts, 102, 29))
|
|
|
|
>this.required : Symbol(Foo.required, Decl(truthinessCallExpressionCoercion2.ts, 102, 29))
|
|
|
|
>this : Symbol(Foo, Decl(truthinessCallExpressionCoercion2.ts, 99, 1))
|
|
|
|
>required : Symbol(Foo.required, Decl(truthinessCallExpressionCoercion2.ts, 102, 29))
|
2020-11-09 20:34:41 +01:00
|
|
|
|
|
|
|
// ok
|
|
|
|
this.required && 1 && this.required();
|
2020-12-05 01:20:14 +01:00
|
|
|
>this.required : Symbol(Foo.required, Decl(truthinessCallExpressionCoercion2.ts, 102, 29))
|
|
|
|
>this : Symbol(Foo, Decl(truthinessCallExpressionCoercion2.ts, 99, 1))
|
|
|
|
>required : Symbol(Foo.required, Decl(truthinessCallExpressionCoercion2.ts, 102, 29))
|
|
|
|
>this.required : Symbol(Foo.required, Decl(truthinessCallExpressionCoercion2.ts, 102, 29))
|
|
|
|
>this : Symbol(Foo, Decl(truthinessCallExpressionCoercion2.ts, 99, 1))
|
|
|
|
>required : Symbol(Foo.required, Decl(truthinessCallExpressionCoercion2.ts, 102, 29))
|
2020-11-09 20:34:41 +01:00
|
|
|
|
|
|
|
// ok
|
|
|
|
1 && this.optional && console.log('optional');
|
2020-12-05 01:20:14 +01:00
|
|
|
>this.optional : Symbol(Foo.optional, Decl(truthinessCallExpressionCoercion2.ts, 101, 11))
|
|
|
|
>this : Symbol(Foo, Decl(truthinessCallExpressionCoercion2.ts, 99, 1))
|
|
|
|
>optional : Symbol(Foo.optional, Decl(truthinessCallExpressionCoercion2.ts, 101, 11))
|
2020-11-09 20:34:41 +01:00
|
|
|
>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>console : Symbol(console, Decl(lib.dom.d.ts, --, --))
|
|
|
|
>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|