TypeScript/tests/baselines/reference/overrideInterfaceProperty.types
Nathan Shively-Sanders 500a0df6f3
Add useDefineForClassFields flag for Set -> Define property declaration (#33509)
* Disallow property/accessor overrides

Unless the base property or accessor is abstract

* Disallow uninitialised property overrides

This causes quite a few test breaks. We'll probably want to revert many
of them by switching to the upcoming `declare x: number` syntax.

* Updates from design review + fix ancient bug

1. Don't error when overriding properties from interfaces.
2. Fix error when overriding methods with other things. This had no
tests so I assume that the code was always dead and never worked.

* Need to add a couple of errors and squash one

Will update after checking out other branch for a minute

* Everything works so far

Need to test properties initialised in constructor

* Check for constructor initialisation

* change error wording

* Improve error wording

* Add codefix to add missing 'declare'

* Always emit accessors in .d.ts files

* Allow 'declare' on any uninitialised property decl

* Undo code moves

* Let sleeping dogs lie

* Correctly set NodeFlags.Ambient

And simplify redundant parts of check.

* Remove more unneeded code

* Update baselines

* Update baselines

* Update baselines

* Ignore this-property assignments

* Fix base-in-interface check

* Do not error when base parent is interface

* Fix base interface check

* Add missed baselines

* Fix check

* Fix new errors in services

* Fix new errors in services

* Fix errors in testRunner

* Add flag and turn off errors when on

* Structure of new emit is correct, fake content

It is 'hi'.

* Basically right emit

* Fix one last unitialised property declaration

* Haha no I missed another one

* Fix whitespace back to CRLF

* Minor fix and code cleanup

* New test case

* Fix bug in isInitializedProperty

* Updates from design meeting.

1. Change flag name to useDefineForClassFields (and flip polarity).
2. Forbid ES3 + useDefineForClassFields (since there is no
defineProperty).
3. Forbid overriding an abstract property-with-initializer with an
accessor.

* Update baselines

* Object.defineProperty for methods too

Using code from Ron from his upcoming refactor of the factory functions.

* Update slow baselines

* Improve error message

* Update src/compiler/transformers/utilities.ts

Co-Authored-By: Andrew Branch <andrewbranch@users.noreply.github.com>

* Add test of computed properties

* Remove done TODO
2019-09-26 13:25:05 -07:00

37 lines
767 B
Plaintext

=== tests/cases/conformance/classes/propertyMemberDeclarations/overrideInterfaceProperty.ts ===
interface Mup<K, V> {
readonly size: number;
>size : number
}
interface MupConstructor {
new(): Mup<any, any>;
new<K, V>(entries?: readonly (readonly [K, V])[] | null): Mup<K, V>;
>entries : readonly (readonly [K, V])[]
>null : null
readonly prototype: Mup<any, any>;
>prototype : Mup<any, any>
}
declare var Mup: MupConstructor;
>Mup : MupConstructor
class Sizz extends Mup {
>Sizz : Sizz
>Mup : Mup<any, any>
// ok, because Mup is an interface
get size() { return 0 }
>size : number
>0 : 0
}
class Kasizz extends Mup {
>Kasizz : Kasizz
>Mup : Mup<any, any>
size = -1
>size : number
>-1 : -1
>1 : 1
}