mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-06-17 00:34:47 -05:00
Add a test for emit of a computed property based on an aliased symbol (#47978)
This commit is contained in:
committed by
GitHub
parent
857889a4e6
commit
c1783b28e7
65
tests/baselines/reference/symbolProperty61.js
Normal file
65
tests/baselines/reference/symbolProperty61.js
Normal file
@@ -0,0 +1,65 @@
|
||||
//// [symbolProperty61.ts]
|
||||
declare global {
|
||||
interface SymbolConstructor {
|
||||
readonly obs: symbol
|
||||
}
|
||||
}
|
||||
|
||||
const observable: typeof Symbol.obs = Symbol.obs
|
||||
|
||||
export class MyObservable<T> {
|
||||
constructor(private _val: T) {}
|
||||
|
||||
subscribe(next: (val: T) => void) {
|
||||
next(this._val)
|
||||
}
|
||||
|
||||
[observable]() {
|
||||
return this
|
||||
}
|
||||
}
|
||||
|
||||
type InteropObservable<T> = {
|
||||
[Symbol.obs]: () => { subscribe(next: (val: T) => void): void }
|
||||
}
|
||||
|
||||
function from<T>(obs: InteropObservable<T>) {
|
||||
return obs[Symbol.obs]()
|
||||
}
|
||||
|
||||
from(new MyObservable(42))
|
||||
|
||||
|
||||
//// [symbolProperty61.js]
|
||||
const observable = Symbol.obs;
|
||||
export class MyObservable {
|
||||
constructor(_val) {
|
||||
this._val = _val;
|
||||
}
|
||||
subscribe(next) {
|
||||
next(this._val);
|
||||
}
|
||||
[observable]() {
|
||||
return this;
|
||||
}
|
||||
}
|
||||
function from(obs) {
|
||||
return obs[Symbol.obs]();
|
||||
}
|
||||
from(new MyObservable(42));
|
||||
|
||||
|
||||
//// [symbolProperty61.d.ts]
|
||||
declare global {
|
||||
interface SymbolConstructor {
|
||||
readonly obs: symbol;
|
||||
}
|
||||
}
|
||||
declare const observable: typeof Symbol.obs;
|
||||
export declare class MyObservable<T> {
|
||||
private _val;
|
||||
constructor(_val: T);
|
||||
subscribe(next: (val: T) => void): void;
|
||||
[observable](): this;
|
||||
}
|
||||
export {};
|
||||
84
tests/baselines/reference/symbolProperty61.symbols
Normal file
84
tests/baselines/reference/symbolProperty61.symbols
Normal file
@@ -0,0 +1,84 @@
|
||||
=== tests/cases/conformance/es6/Symbols/symbolProperty61.ts ===
|
||||
declare global {
|
||||
>global : Symbol(global, Decl(symbolProperty61.ts, 0, 0))
|
||||
|
||||
interface SymbolConstructor {
|
||||
>SymbolConstructor : Symbol(SymbolConstructor, Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(symbolProperty61.ts, 0, 16))
|
||||
|
||||
readonly obs: symbol
|
||||
>obs : Symbol(SymbolConstructor.obs, Decl(symbolProperty61.ts, 1, 31))
|
||||
}
|
||||
}
|
||||
|
||||
const observable: typeof Symbol.obs = Symbol.obs
|
||||
>observable : Symbol(observable, Decl(symbolProperty61.ts, 6, 5))
|
||||
>Symbol.obs : Symbol(SymbolConstructor.obs, Decl(symbolProperty61.ts, 1, 31))
|
||||
>Symbol : Symbol(Symbol, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
|
||||
>obs : Symbol(SymbolConstructor.obs, Decl(symbolProperty61.ts, 1, 31))
|
||||
>Symbol.obs : Symbol(SymbolConstructor.obs, Decl(symbolProperty61.ts, 1, 31))
|
||||
>Symbol : Symbol(Symbol, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
|
||||
>obs : Symbol(SymbolConstructor.obs, Decl(symbolProperty61.ts, 1, 31))
|
||||
|
||||
export class MyObservable<T> {
|
||||
>MyObservable : Symbol(MyObservable, Decl(symbolProperty61.ts, 6, 48))
|
||||
>T : Symbol(T, Decl(symbolProperty61.ts, 8, 26))
|
||||
|
||||
constructor(private _val: T) {}
|
||||
>_val : Symbol(MyObservable._val, Decl(symbolProperty61.ts, 9, 16))
|
||||
>T : Symbol(T, Decl(symbolProperty61.ts, 8, 26))
|
||||
|
||||
subscribe(next: (val: T) => void) {
|
||||
>subscribe : Symbol(MyObservable.subscribe, Decl(symbolProperty61.ts, 9, 35))
|
||||
>next : Symbol(next, Decl(symbolProperty61.ts, 11, 14))
|
||||
>val : Symbol(val, Decl(symbolProperty61.ts, 11, 21))
|
||||
>T : Symbol(T, Decl(symbolProperty61.ts, 8, 26))
|
||||
|
||||
next(this._val)
|
||||
>next : Symbol(next, Decl(symbolProperty61.ts, 11, 14))
|
||||
>this._val : Symbol(MyObservable._val, Decl(symbolProperty61.ts, 9, 16))
|
||||
>this : Symbol(MyObservable, Decl(symbolProperty61.ts, 6, 48))
|
||||
>_val : Symbol(MyObservable._val, Decl(symbolProperty61.ts, 9, 16))
|
||||
}
|
||||
|
||||
[observable]() {
|
||||
>[observable] : Symbol(MyObservable[observable], Decl(symbolProperty61.ts, 13, 5))
|
||||
>observable : Symbol(observable, Decl(symbolProperty61.ts, 6, 5))
|
||||
|
||||
return this
|
||||
>this : Symbol(MyObservable, Decl(symbolProperty61.ts, 6, 48))
|
||||
}
|
||||
}
|
||||
|
||||
type InteropObservable<T> = {
|
||||
>InteropObservable : Symbol(InteropObservable, Decl(symbolProperty61.ts, 18, 1))
|
||||
>T : Symbol(T, Decl(symbolProperty61.ts, 20, 23))
|
||||
|
||||
[Symbol.obs]: () => { subscribe(next: (val: T) => void): void }
|
||||
>[Symbol.obs] : Symbol([Symbol.obs], Decl(symbolProperty61.ts, 20, 29))
|
||||
>Symbol.obs : Symbol(SymbolConstructor.obs, Decl(symbolProperty61.ts, 1, 31))
|
||||
>Symbol : Symbol(Symbol, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
|
||||
>obs : Symbol(SymbolConstructor.obs, Decl(symbolProperty61.ts, 1, 31))
|
||||
>subscribe : Symbol(subscribe, Decl(symbolProperty61.ts, 21, 25))
|
||||
>next : Symbol(next, Decl(symbolProperty61.ts, 21, 36))
|
||||
>val : Symbol(val, Decl(symbolProperty61.ts, 21, 43))
|
||||
>T : Symbol(T, Decl(symbolProperty61.ts, 20, 23))
|
||||
}
|
||||
|
||||
function from<T>(obs: InteropObservable<T>) {
|
||||
>from : Symbol(from, Decl(symbolProperty61.ts, 22, 1))
|
||||
>T : Symbol(T, Decl(symbolProperty61.ts, 24, 14))
|
||||
>obs : Symbol(obs, Decl(symbolProperty61.ts, 24, 17))
|
||||
>InteropObservable : Symbol(InteropObservable, Decl(symbolProperty61.ts, 18, 1))
|
||||
>T : Symbol(T, Decl(symbolProperty61.ts, 24, 14))
|
||||
|
||||
return obs[Symbol.obs]()
|
||||
>obs : Symbol(obs, Decl(symbolProperty61.ts, 24, 17))
|
||||
>Symbol.obs : Symbol(SymbolConstructor.obs, Decl(symbolProperty61.ts, 1, 31))
|
||||
>Symbol : Symbol(Symbol, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
|
||||
>obs : Symbol(SymbolConstructor.obs, Decl(symbolProperty61.ts, 1, 31))
|
||||
}
|
||||
|
||||
from(new MyObservable(42))
|
||||
>from : Symbol(from, Decl(symbolProperty61.ts, 22, 1))
|
||||
>MyObservable : Symbol(MyObservable, Decl(symbolProperty61.ts, 6, 48))
|
||||
|
||||
80
tests/baselines/reference/symbolProperty61.types
Normal file
80
tests/baselines/reference/symbolProperty61.types
Normal file
@@ -0,0 +1,80 @@
|
||||
=== tests/cases/conformance/es6/Symbols/symbolProperty61.ts ===
|
||||
declare global {
|
||||
>global : any
|
||||
|
||||
interface SymbolConstructor {
|
||||
readonly obs: symbol
|
||||
>obs : unique symbol
|
||||
}
|
||||
}
|
||||
|
||||
const observable: typeof Symbol.obs = Symbol.obs
|
||||
>observable : unique symbol
|
||||
>Symbol.obs : unique symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>obs : unique symbol
|
||||
>Symbol.obs : unique symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>obs : unique symbol
|
||||
|
||||
export class MyObservable<T> {
|
||||
>MyObservable : MyObservable<T>
|
||||
|
||||
constructor(private _val: T) {}
|
||||
>_val : T
|
||||
|
||||
subscribe(next: (val: T) => void) {
|
||||
>subscribe : (next: (val: T) => void) => void
|
||||
>next : (val: T) => void
|
||||
>val : T
|
||||
|
||||
next(this._val)
|
||||
>next(this._val) : void
|
||||
>next : (val: T) => void
|
||||
>this._val : T
|
||||
>this : this
|
||||
>_val : T
|
||||
}
|
||||
|
||||
[observable]() {
|
||||
>[observable] : () => this
|
||||
>observable : unique symbol
|
||||
|
||||
return this
|
||||
>this : this
|
||||
}
|
||||
}
|
||||
|
||||
type InteropObservable<T> = {
|
||||
>InteropObservable : InteropObservable<T>
|
||||
|
||||
[Symbol.obs]: () => { subscribe(next: (val: T) => void): void }
|
||||
>[Symbol.obs] : () => { subscribe(next: (val: T) => void): void; }
|
||||
>Symbol.obs : unique symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>obs : unique symbol
|
||||
>subscribe : (next: (val: T) => void) => void
|
||||
>next : (val: T) => void
|
||||
>val : T
|
||||
}
|
||||
|
||||
function from<T>(obs: InteropObservable<T>) {
|
||||
>from : <T>(obs: InteropObservable<T>) => { subscribe(next: (val: T) => void): void; }
|
||||
>obs : InteropObservable<T>
|
||||
|
||||
return obs[Symbol.obs]()
|
||||
>obs[Symbol.obs]() : { subscribe(next: (val: T) => void): void; }
|
||||
>obs[Symbol.obs] : () => { subscribe(next: (val: T) => void): void; }
|
||||
>obs : InteropObservable<T>
|
||||
>Symbol.obs : unique symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>obs : unique symbol
|
||||
}
|
||||
|
||||
from(new MyObservable(42))
|
||||
>from(new MyObservable(42)) : { subscribe(next: (val: number) => void): void; }
|
||||
>from : <T>(obs: InteropObservable<T>) => { subscribe(next: (val: T) => void): void; }
|
||||
>new MyObservable(42) : MyObservable<number>
|
||||
>MyObservable : typeof MyObservable
|
||||
>42 : 42
|
||||
|
||||
32
tests/cases/conformance/es6/Symbols/symbolProperty61.ts
Normal file
32
tests/cases/conformance/es6/Symbols/symbolProperty61.ts
Normal file
@@ -0,0 +1,32 @@
|
||||
// @target: ES6
|
||||
// @declaration: true
|
||||
|
||||
declare global {
|
||||
interface SymbolConstructor {
|
||||
readonly obs: symbol
|
||||
}
|
||||
}
|
||||
|
||||
const observable: typeof Symbol.obs = Symbol.obs
|
||||
|
||||
export class MyObservable<T> {
|
||||
constructor(private _val: T) {}
|
||||
|
||||
subscribe(next: (val: T) => void) {
|
||||
next(this._val)
|
||||
}
|
||||
|
||||
[observable]() {
|
||||
return this
|
||||
}
|
||||
}
|
||||
|
||||
type InteropObservable<T> = {
|
||||
[Symbol.obs]: () => { subscribe(next: (val: T) => void): void }
|
||||
}
|
||||
|
||||
function from<T>(obs: InteropObservable<T>) {
|
||||
return obs[Symbol.obs]()
|
||||
}
|
||||
|
||||
from(new MyObservable(42))
|
||||
Reference in New Issue
Block a user