From 2e5a4ea9837c9509e709b7fc55614995f443a3a6 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Thu, 10 Dec 2015 16:19:02 -0800 Subject: [PATCH] Adding regression test --- .../circularObjectLiteralAccessors.js | 29 ++++++++++++++ .../circularObjectLiteralAccessors.symbols | 34 +++++++++++++++++ .../circularObjectLiteralAccessors.types | 38 +++++++++++++++++++ .../circularObjectLiteralAccessors.ts | 15 ++++++++ 4 files changed, 116 insertions(+) create mode 100644 tests/baselines/reference/circularObjectLiteralAccessors.js create mode 100644 tests/baselines/reference/circularObjectLiteralAccessors.symbols create mode 100644 tests/baselines/reference/circularObjectLiteralAccessors.types create mode 100644 tests/cases/compiler/circularObjectLiteralAccessors.ts diff --git a/tests/baselines/reference/circularObjectLiteralAccessors.js b/tests/baselines/reference/circularObjectLiteralAccessors.js new file mode 100644 index 00000000000..6d99a8f25fc --- /dev/null +++ b/tests/baselines/reference/circularObjectLiteralAccessors.js @@ -0,0 +1,29 @@ +//// [circularObjectLiteralAccessors.ts] + +// Repro from #6000 + +const a = { + b: { + get foo(): string { + return a.foo; + }, + set foo(value: string) { + a.foo = value; + } + }, + foo: '' +}; + +//// [circularObjectLiteralAccessors.js] +// Repro from #6000 +var a = { + b: { + get foo() { + return a.foo; + }, + set foo(value) { + a.foo = value; + } + }, + foo: '' +}; diff --git a/tests/baselines/reference/circularObjectLiteralAccessors.symbols b/tests/baselines/reference/circularObjectLiteralAccessors.symbols new file mode 100644 index 00000000000..21e613c97fe --- /dev/null +++ b/tests/baselines/reference/circularObjectLiteralAccessors.symbols @@ -0,0 +1,34 @@ +=== tests/cases/compiler/circularObjectLiteralAccessors.ts === + +// Repro from #6000 + +const a = { +>a : Symbol(a, Decl(circularObjectLiteralAccessors.ts, 3, 5)) + + b: { +>b : Symbol(b, Decl(circularObjectLiteralAccessors.ts, 3, 11)) + + get foo(): string { +>foo : Symbol(foo, Decl(circularObjectLiteralAccessors.ts, 4, 8), Decl(circularObjectLiteralAccessors.ts, 7, 10)) + + return a.foo; +>a.foo : Symbol(foo, Decl(circularObjectLiteralAccessors.ts, 11, 6)) +>a : Symbol(a, Decl(circularObjectLiteralAccessors.ts, 3, 5)) +>foo : Symbol(foo, Decl(circularObjectLiteralAccessors.ts, 11, 6)) + + }, + set foo(value: string) { +>foo : Symbol(foo, Decl(circularObjectLiteralAccessors.ts, 4, 8), Decl(circularObjectLiteralAccessors.ts, 7, 10)) +>value : Symbol(value, Decl(circularObjectLiteralAccessors.ts, 8, 16)) + + a.foo = value; +>a.foo : Symbol(foo, Decl(circularObjectLiteralAccessors.ts, 11, 6)) +>a : Symbol(a, Decl(circularObjectLiteralAccessors.ts, 3, 5)) +>foo : Symbol(foo, Decl(circularObjectLiteralAccessors.ts, 11, 6)) +>value : Symbol(value, Decl(circularObjectLiteralAccessors.ts, 8, 16)) + } + }, + foo: '' +>foo : Symbol(foo, Decl(circularObjectLiteralAccessors.ts, 11, 6)) + +}; diff --git a/tests/baselines/reference/circularObjectLiteralAccessors.types b/tests/baselines/reference/circularObjectLiteralAccessors.types new file mode 100644 index 00000000000..1f01432db5a --- /dev/null +++ b/tests/baselines/reference/circularObjectLiteralAccessors.types @@ -0,0 +1,38 @@ +=== tests/cases/compiler/circularObjectLiteralAccessors.ts === + +// Repro from #6000 + +const a = { +>a : { b: { foo: string; }; foo: string; } +>{ b: { get foo(): string { return a.foo; }, set foo(value: string) { a.foo = value; } }, foo: ''} : { b: { foo: string; }; foo: string; } + + b: { +>b : { foo: string; } +>{ get foo(): string { return a.foo; }, set foo(value: string) { a.foo = value; } } : { foo: string; } + + get foo(): string { +>foo : string + + return a.foo; +>a.foo : string +>a : { b: { foo: string; }; foo: string; } +>foo : string + + }, + set foo(value: string) { +>foo : string +>value : string + + a.foo = value; +>a.foo = value : string +>a.foo : string +>a : { b: { foo: string; }; foo: string; } +>foo : string +>value : string + } + }, + foo: '' +>foo : string +>'' : string + +}; diff --git a/tests/cases/compiler/circularObjectLiteralAccessors.ts b/tests/cases/compiler/circularObjectLiteralAccessors.ts new file mode 100644 index 00000000000..3546ee75e6f --- /dev/null +++ b/tests/cases/compiler/circularObjectLiteralAccessors.ts @@ -0,0 +1,15 @@ +// @target: es5 + +// Repro from #6000 + +const a = { + b: { + get foo(): string { + return a.foo; + }, + set foo(value: string) { + a.foo = value; + } + }, + foo: '' +}; \ No newline at end of file