@@ -616,7 +616,6 @@ namespace ts {
616616 | CallExpression
617617 | CallSignatureDeclaration
618618 | ClassDeclaration
619- | ClassElement
620619 | ClassExpression
621620 | ClassLikeDeclaration
622621 | ConstructSignatureDeclaration
@@ -717,13 +716,14 @@ namespace ts {
717716 typeParameters ?: NodeArray < TypeParameterDeclaration > ;
718717 parameters : NodeArray < ParameterDeclaration > ;
719718 type ?: TypeNode ;
719+ questionToken ?: QuestionToken ;
720720 }
721721
722- export interface CallSignatureDeclaration extends SignatureDeclaration , TypeElement {
722+ export interface CallSignatureDeclaration extends SignatureDeclaration {
723723 kind : SyntaxKind . CallSignature ;
724724 }
725725
726- export interface ConstructSignatureDeclaration extends SignatureDeclaration , TypeElement {
726+ export interface ConstructSignatureDeclaration extends SignatureDeclaration {
727727 kind : SyntaxKind . ConstructSignature ;
728728 }
729729
@@ -762,15 +762,15 @@ namespace ts {
762762 initializer ?: Expression ; // Optional initializer
763763 }
764764
765- export interface PropertySignature extends TypeElement {
765+ export interface PropertySignature extends DeclarationBase {
766766 kind : SyntaxKind . PropertySignature | SyntaxKind . JSDocRecordMember ;
767767 name : PropertyName ; // Declared property name
768768 questionToken ?: QuestionToken ; // Present on optional property
769769 type ?: TypeNode ; // Optional type annotation
770770 initializer ?: Expression ; // Optional initializer
771771 }
772772
773- export interface PropertyDeclaration extends ClassElement {
773+ export interface PropertyDeclaration extends DeclarationBase {
774774 kind : SyntaxKind . PropertyDeclaration ;
775775 questionToken ?: QuestionToken ; // Present for use with reporting a grammar error
776776 name : PropertyName ;
@@ -876,7 +876,7 @@ namespace ts {
876876 body ?: FunctionBody ;
877877 }
878878
879- export interface MethodSignature extends SignatureDeclaration , TypeElement {
879+ export interface MethodSignature extends SignatureDeclaration {
880880 kind : SyntaxKind . MethodSignature ;
881881 name : PropertyName ;
882882 }
@@ -890,27 +890,28 @@ namespace ts {
890890 // Because of this, it may be necessary to determine what sort of MethodDeclaration you have
891891 // at later stages of the compiler pipeline. In that case, you can either check the parent kind
892892 // of the method, or use helpers like isObjectLiteralMethodDeclaration
893- export interface MethodDeclaration extends FunctionLikeDeclaration , ClassElement , ObjectLiteralElement {
893+ export interface MethodDeclaration extends FunctionLikeDeclaration , ObjectLiteralElement {
894894 kind : SyntaxKind . MethodDeclaration ;
895895 name : PropertyName ;
896896 body ?: FunctionBody ;
897897 }
898898
899- export interface ConstructorDeclaration extends FunctionLikeDeclaration , ClassElement {
899+ export interface ConstructorDeclaration extends FunctionLikeDeclaration {
900900 kind : SyntaxKind . Constructor ;
901901 parent ?: ClassDeclaration | ClassExpression ;
902902 body ?: FunctionBody ;
903903 }
904904
905905 /** For when we encounter a semicolon in a class declaration. ES6 allows these as class elements. */
906- export interface SemicolonClassElement extends ClassElement {
906+ export interface SemicolonClassElement extends DeclarationBase {
907907 kind : SyntaxKind . SemicolonClassElement ;
908908 parent ?: ClassDeclaration | ClassExpression ;
909+ name ?: PropertyName ;
909910 }
910911
911912 // See the comment on MethodDeclaration for the intuition behind GetAccessorDeclaration being a
912913 // ClassElement and an ObjectLiteralElement.
913- export interface GetAccessorDeclaration extends FunctionLikeDeclaration , ClassElement , ObjectLiteralElement {
914+ export interface GetAccessorDeclaration extends FunctionLikeDeclaration , ObjectLiteralElement {
914915 kind : SyntaxKind . GetAccessor ;
915916 parent ?: ClassDeclaration | ClassExpression | ObjectLiteralExpression ;
916917 name : PropertyName ;
@@ -919,7 +920,7 @@ namespace ts {
919920
920921 // See the comment on MethodDeclaration for the intuition behind SetAccessorDeclaration being a
921922 // ClassElement and an ObjectLiteralElement.
922- export interface SetAccessorDeclaration extends FunctionLikeDeclaration , ClassElement , ObjectLiteralElement {
923+ export interface SetAccessorDeclaration extends FunctionLikeDeclaration , ObjectLiteralElement {
923924 kind : SyntaxKind . SetAccessor ;
924925 parent ?: ClassDeclaration | ClassExpression | ObjectLiteralExpression ;
925926 name : PropertyName ;
@@ -928,7 +929,7 @@ namespace ts {
928929
929930 export type AccessorDeclaration = GetAccessorDeclaration | SetAccessorDeclaration ;
930931
931- export interface IndexSignatureDeclaration extends SignatureDeclaration , ClassElement , TypeElement {
932+ export interface IndexSignatureDeclaration extends SignatureDeclaration {
932933 kind : SyntaxKind . IndexSignature ;
933934 parent ?: ClassDeclaration | ClassExpression | InterfaceDeclaration | TypeLiteralNode ;
934935 }
@@ -1695,7 +1696,7 @@ namespace ts {
16951696 kind : SyntaxKind . DebuggerStatement ;
16961697 }
16971698
1698- export interface MissingDeclaration extends DeclarationStatement , ClassElement , ObjectLiteralElement , TypeElement {
1699+ export interface MissingDeclaration extends DeclarationStatement , ObjectLiteralElement {
16991700 kind : SyntaxKind . MissingDeclaration ;
17001701 name ?: Identifier ;
17011702 }
@@ -1863,34 +1864,26 @@ namespace ts {
18631864 kind : SyntaxKind . ClassExpression ;
18641865 }
18651866
1866- export interface ClassElement extends DeclarationBase {
1867- kind :
1868- | SyntaxKind . PropertyDeclaration
1869- | SyntaxKind . MethodDeclaration
1870- | SyntaxKind . Constructor
1871- | SyntaxKind . SemicolonClassElement
1872- | SyntaxKind . GetAccessor
1873- | SyntaxKind . SetAccessor
1874- | SyntaxKind . IndexSignature
1875- | SyntaxKind . MissingDeclaration ;
1876- _classElementBrand : any ;
1877- name ?: PropertyName ;
1878- }
1867+ export type ClassElement =
1868+ | PropertyDeclaration
1869+ | MethodDeclaration
1870+ | ConstructorDeclaration
1871+ | SemicolonClassElement
1872+ | GetAccessorDeclaration
1873+ | SetAccessorDeclaration
1874+ | IndexSignatureDeclaration
1875+ | MissingDeclaration ;
18791876
1880- export interface TypeElement extends DeclarationBase {
1881- kind :
1882- | SyntaxKind . CallSignature
1883- | SyntaxKind . ConstructSignature
1884- | SyntaxKind . PropertySignature
1885- | SyntaxKind . MethodSignature
1886- | SyntaxKind . IndexSignature
1887- | SyntaxKind . MissingDeclaration
1888- | SyntaxKind . JSDocPropertyTag
1889- | SyntaxKind . JSDocRecordMember ;
1890- _typeElementBrand : any ;
1891- name ?: PropertyName ;
1892- questionToken ?: QuestionToken ;
1893- }
1877+ export type TypeElement =
1878+ | CallSignatureDeclaration
1879+ | ConstructSignatureDeclaration
1880+ | PropertySignature
1881+ | MethodSignature
1882+ | IndexSignatureDeclaration
1883+ | MissingDeclaration
1884+ | IndexSignatureDeclaration
1885+ | JSDocPropertyTag
1886+ | JSDocRecordMember ;
18941887
18951888 export interface InterfaceDeclaration extends DeclarationStatement {
18961889 kind : SyntaxKind . InterfaceDeclaration ;
@@ -2224,7 +2217,7 @@ namespace ts {
22242217 jsDocTypeLiteral ?: JSDocTypeLiteral ;
22252218 }
22262219
2227- export interface JSDocPropertyTag extends JSDocTag , TypeElement {
2220+ export interface JSDocPropertyTag extends JSDocTag {
22282221 kind : SyntaxKind . JSDocPropertyTag ;
22292222 name : Identifier ;
22302223 typeExpression : JSDocTypeExpression ;
0 commit comments