Skip to content

Commit

Permalink
feat: #588 - Move ChildOrderableNode to Statement.
Browse files Browse the repository at this point in the history
  • Loading branch information
dsherret committed Mar 30, 2019
1 parent 2b4b6fd commit b5ff9ad
Show file tree
Hide file tree
Showing 21 changed files with 77 additions and 91 deletions.
56 changes: 22 additions & 34 deletions lib/ts-morph.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3893,7 +3893,7 @@ declare type ClassLikeDeclarationBaseExtensionType = Node<ts.ClassLikeDeclaratio

declare type ClassLikeDeclarationBaseSpecificExtensionType = Node<ts.ClassLikeDeclarationBase> & HeritageClauseableNode & ModifierableNode & NameableNode;

declare const ClassDeclarationBase: Constructor<ChildOrderableNode> & Constructor<NamespaceChildableNode> & Constructor<AmbientableNode> & Constructor<ExportableNode> & Constructor<ClassLikeDeclarationBase> & typeof Statement;
declare const ClassDeclarationBase: Constructor<NamespaceChildableNode> & Constructor<AmbientableNode> & Constructor<ExportableNode> & Constructor<ClassLikeDeclarationBase> & typeof Statement;

export declare class ClassDeclaration extends ClassDeclarationBase<ts.ClassDeclaration> {
/**
Expand Down Expand Up @@ -5125,7 +5125,7 @@ export declare class JSDocTypeExpression extends TypeNode<ts.JSDocTypeExpression
getTypeNode(): TypeNode<ts.TypeNode>;
}

declare const EnumDeclarationBase: Constructor<ChildOrderableNode> & Constructor<TextInsertableNode> & Constructor<NamespaceChildableNode> & Constructor<JSDocableNode> & Constructor<AmbientableNode> & Constructor<ExportableNode> & Constructor<ModifierableNode> & Constructor<NamedNode> & typeof Statement;
declare const EnumDeclarationBase: Constructor<TextInsertableNode> & Constructor<NamespaceChildableNode> & Constructor<JSDocableNode> & Constructor<AmbientableNode> & Constructor<ExportableNode> & Constructor<ModifierableNode> & Constructor<NamedNode> & typeof Statement;

export declare class EnumDeclaration extends EnumDeclarationBase<ts.EnumDeclaration> {
/**
Expand Down Expand Up @@ -5878,9 +5878,9 @@ export declare class ArrowFunction extends ArrowFunctionBase<ts.ArrowFunction> {
getEqualsGreaterThan(): Node<ts.Token<SyntaxKind.EqualsGreaterThanToken>>;
}

declare const FunctionDeclarationBase: Constructor<ChildOrderableNode> & Constructor<UnwrappableNode> & Constructor<TextInsertableNode> & Constructor<OverloadableNode> & Constructor<BodyableNode> & Constructor<AsyncableNode> & Constructor<GeneratorableNode> & Constructor<AmbientableNode> & Constructor<ExportableNode> & Constructor<FunctionLikeDeclaration> & Constructor<NamespaceChildableNode> & Constructor<NameableNode> & typeof Node;
declare const FunctionDeclarationBase: Constructor<UnwrappableNode> & Constructor<TextInsertableNode> & Constructor<OverloadableNode> & Constructor<BodyableNode> & Constructor<AsyncableNode> & Constructor<GeneratorableNode> & Constructor<AmbientableNode> & Constructor<ExportableNode> & Constructor<FunctionLikeDeclaration> & Constructor<NamespaceChildableNode> & Constructor<NameableNode> & typeof Statement;

declare const FunctionDeclarationOverloadBase: Constructor<ChildOrderableNode> & Constructor<UnwrappableNode> & Constructor<TextInsertableNode> & Constructor<AsyncableNode> & Constructor<GeneratorableNode> & Constructor<ModifierableNode> & Constructor<SignaturedDeclaration> & Constructor<AmbientableNode> & Constructor<NamespaceChildableNode> & Constructor<JSDocableNode> & Constructor<TypeParameteredNode> & Constructor<ExportableNode> & typeof Node;
declare const FunctionDeclarationOverloadBase: Constructor<UnwrappableNode> & Constructor<TextInsertableNode> & Constructor<AsyncableNode> & Constructor<GeneratorableNode> & Constructor<ModifierableNode> & Constructor<SignaturedDeclaration> & Constructor<AmbientableNode> & Constructor<NamespaceChildableNode> & Constructor<JSDocableNode> & Constructor<TypeParameteredNode> & Constructor<ExportableNode> & typeof Statement;

export declare class FunctionDeclaration extends FunctionDeclarationBase<ts.FunctionDeclaration> {
/**
Expand Down Expand Up @@ -6117,7 +6117,7 @@ export declare class IndexSignatureDeclaration extends IndexSignatureDeclaration
getStructure(): IndexSignatureDeclarationStructure;
}

declare const InterfaceDeclarationBase: Constructor<TypeElementMemberedNode> & Constructor<ChildOrderableNode> & Constructor<TextInsertableNode> & Constructor<ExtendsClauseableNode> & Constructor<HeritageClauseableNode> & Constructor<TypeParameteredNode> & Constructor<JSDocableNode> & Constructor<AmbientableNode> & Constructor<NamespaceChildableNode> & Constructor<ExportableNode> & Constructor<ModifierableNode> & Constructor<NamedNode> & typeof Statement;
declare const InterfaceDeclarationBase: Constructor<TypeElementMemberedNode> & Constructor<TextInsertableNode> & Constructor<ExtendsClauseableNode> & Constructor<HeritageClauseableNode> & Constructor<TypeParameteredNode> & Constructor<JSDocableNode> & Constructor<AmbientableNode> & Constructor<NamespaceChildableNode> & Constructor<ExportableNode> & Constructor<ModifierableNode> & Constructor<NamedNode> & typeof Statement;

export declare class InterfaceDeclaration extends InterfaceDeclarationBase<ts.InterfaceDeclaration> {
/**
Expand Down Expand Up @@ -7323,7 +7323,7 @@ export interface NamespaceChildableNode {

declare type NamespaceChildableNodeExtensionType = Node;

declare const NamespaceDeclarationBase: Constructor<ModuledNode> & Constructor<ChildOrderableNode> & Constructor<UnwrappableNode> & Constructor<TextInsertableNode> & Constructor<BodiedNode> & Constructor<NamespaceChildableNode> & Constructor<StatementedNode> & Constructor<JSDocableNode> & Constructor<AmbientableNode> & Constructor<ExportableNode> & Constructor<ModifierableNode> & Constructor<NamedNode> & typeof Statement;
declare const NamespaceDeclarationBase: Constructor<ModuledNode> & Constructor<UnwrappableNode> & Constructor<TextInsertableNode> & Constructor<BodiedNode> & Constructor<NamespaceChildableNode> & Constructor<StatementedNode> & Constructor<JSDocableNode> & Constructor<AmbientableNode> & Constructor<ExportableNode> & Constructor<ModifierableNode> & Constructor<NamedNode> & typeof Statement;

export declare class NamespaceDeclaration extends NamespaceDeclarationBase<ts.NamespaceDeclaration> {
/**
Expand Down Expand Up @@ -7711,9 +7711,7 @@ declare const BlockBase: Constructor<TextInsertableNode> & Constructor<Statement
export declare class Block extends BlockBase<ts.Block> {
}

declare const BreakStatementBase: Constructor<ChildOrderableNode> & typeof Statement;

export declare class BreakStatement extends BreakStatementBase<ts.BreakStatement> {
export declare class BreakStatement extends Statement<ts.BreakStatement> {
/**
* Gets this break statement's label or undefined if it does not exist.
*/
Expand Down Expand Up @@ -7743,7 +7741,7 @@ export declare class CaseBlock extends CaseBlockBase<ts.CaseBlock> {
removeClauses(indexRange: [number, number]): this;
}

declare const CaseClauseBase: Constructor<ChildOrderableNode> & Constructor<TextInsertableNode> & Constructor<StatementedNode> & typeof Node;
declare const CaseClauseBase: Constructor<TextInsertableNode> & Constructor<StatementedNode> & typeof Node;

export declare class CaseClause extends CaseClauseBase<ts.CaseClause> {
/**
Expand Down Expand Up @@ -7773,9 +7771,7 @@ export declare class CatchClause extends CatchClauseBase<ts.CatchClause> {
getVariableDeclarationOrThrow(): VariableDeclaration;
}

declare const ContinueStatementBase: Constructor<ChildOrderableNode> & typeof Statement;

export declare class ContinueStatement extends ContinueStatementBase<ts.ContinueStatement> {
export declare class ContinueStatement extends Statement<ts.ContinueStatement> {
/**
* Gets this continue statement's label or undefined if it does not exist.
*/
Expand All @@ -7791,7 +7787,7 @@ declare const DebuggerStatementBase: typeof Statement;
export declare class DebuggerStatement extends DebuggerStatementBase<ts.DebuggerStatement> {
}

declare const DefaultClauseBase: Constructor<ChildOrderableNode> & Constructor<TextInsertableNode> & Constructor<StatementedNode> & typeof Node;
declare const DefaultClauseBase: Constructor<TextInsertableNode> & Constructor<StatementedNode> & typeof Node;

export declare class DefaultClause extends DefaultClauseBase<ts.DefaultClause> {
/**
Expand All @@ -7814,7 +7810,7 @@ declare const EmptyStatementBase: typeof Statement;
export declare class EmptyStatement extends EmptyStatementBase<ts.EmptyStatement> {
}

declare const ExpressionStatementBase: Constructor<JSDocableNode> & Constructor<ChildOrderableNode> & typeof Statement;
declare const ExpressionStatementBase: Constructor<JSDocableNode> & typeof Statement;

export declare class ExpressionStatement extends ExpressionStatementBase<ts.ExpressionStatement> {
/**
Expand Down Expand Up @@ -7878,9 +7874,7 @@ export declare class ForStatement extends ForStatementBase<ts.ForStatement> {
getIncrementorOrThrow(): Expression<ts.Expression>;
}

declare const IfStatementBase: Constructor<ChildOrderableNode> & typeof Statement;

export declare class IfStatement extends IfStatementBase<ts.IfStatement> {
export declare class IfStatement extends Statement<ts.IfStatement> {
/**
* Gets this if statement's expression.
*/
Expand All @@ -7895,16 +7889,14 @@ export declare class IfStatement extends IfStatementBase<ts.IfStatement> {
getElseStatement(): Statement | undefined;
}

declare const IterationStatementBase: Constructor<ChildOrderableNode> & typeof Statement;

export declare class IterationStatement<T extends ts.IterationStatement = ts.IterationStatement> extends IterationStatementBase<T> {
export declare class IterationStatement<T extends ts.IterationStatement = ts.IterationStatement> extends Statement<T> {
/**
* Gets this iteration statement's statement.
*/
getStatement(): Statement;
}

declare const LabeledStatementBase: Constructor<JSDocableNode> & Constructor<ChildOrderableNode> & typeof Statement;
declare const LabeledStatementBase: Constructor<JSDocableNode> & typeof Statement;

export declare class LabeledStatement extends LabeledStatementBase<ts.LabeledStatement> {
/**
Expand All @@ -7922,9 +7914,7 @@ declare const NotEmittedStatementBase: typeof Statement;
export declare class NotEmittedStatement extends NotEmittedStatementBase<ts.NotEmittedStatement> {
}

declare const ReturnStatementBase: Constructor<ChildOrderableNode> & typeof Statement;

export declare class ReturnStatement extends ReturnStatementBase<ts.ReturnStatement> {
export declare class ReturnStatement extends Statement<ts.ReturnStatement> {
/**
* Gets this return statement's expression if it exists or throws.
*/
Expand All @@ -7935,7 +7925,9 @@ export declare class ReturnStatement extends ReturnStatementBase<ts.ReturnStatem
getExpression(): Expression | undefined;
}

export declare class Statement<T extends ts.Statement = ts.Statement> extends Node<T> {
declare const StatementBase: Constructor<ChildOrderableNode> & typeof Node;

export declare class Statement<T extends ts.Statement = ts.Statement> extends StatementBase<T> {
/**
* Removes the statement.
*/
Expand Down Expand Up @@ -8340,9 +8332,7 @@ export interface StatementedNode {

declare type StatementedNodeExtensionType = Node<ts.SourceFile | ts.FunctionDeclaration | ts.ModuleDeclaration | ts.FunctionLikeDeclaration | ts.CaseClause | ts.DefaultClause | ts.ModuleBlock>;

declare const SwitchStatementBase: Constructor<ChildOrderableNode> & typeof Statement;

export declare class SwitchStatement extends SwitchStatementBase<ts.SwitchStatement> {
export declare class SwitchStatement extends Statement<ts.SwitchStatement> {
/**
* Gets this switch statement's expression.
*/
Expand Down Expand Up @@ -8405,7 +8395,7 @@ export declare class TryStatement extends TryStatementBase<ts.TryStatement> {
getFinallyBlockOrThrow(): Block;
}

declare const VariableStatementBase: Constructor<ChildOrderableNode> & Constructor<NamespaceChildableNode> & Constructor<JSDocableNode> & Constructor<AmbientableNode> & Constructor<ExportableNode> & Constructor<ModifierableNode> & typeof Statement;
declare const VariableStatementBase: Constructor<NamespaceChildableNode> & Constructor<JSDocableNode> & Constructor<AmbientableNode> & Constructor<ExportableNode> & Constructor<ModifierableNode> & typeof Statement;

export declare class VariableStatement extends VariableStatementBase<ts.VariableStatement> {
/**
Expand Down Expand Up @@ -8471,9 +8461,7 @@ export declare class WhileStatement extends WhileStatementBase<ts.WhileStatement
getExpression(): Expression;
}

declare const WithStatementBase: Constructor<ChildOrderableNode> & typeof Statement;

export declare class WithStatement extends WithStatementBase<ts.WithStatement> {
export declare class WithStatement extends Statement<ts.WithStatement> {
/**
* Gets this with statement's expression.
*/
Expand Down Expand Up @@ -8588,7 +8576,7 @@ export declare class TupleTypeNode extends TypeNode<ts.TupleTypeNode> {
getElementTypeNodes(): TypeNode[];
}

declare const TypeAliasDeclarationBase: Constructor<ChildOrderableNode> & Constructor<TypeParameteredNode> & Constructor<TypedNode> & Constructor<JSDocableNode> & Constructor<AmbientableNode> & Constructor<ExportableNode> & Constructor<ModifierableNode> & Constructor<NamedNode> & typeof Statement;
declare const TypeAliasDeclarationBase: Constructor<TypeParameteredNode> & Constructor<TypedNode> & Constructor<JSDocableNode> & Constructor<AmbientableNode> & Constructor<ExportableNode> & Constructor<ModifierableNode> & Constructor<NamedNode> & typeof Statement;

export declare class TypeAliasDeclaration extends TypeAliasDeclarationBase<ts.TypeAliasDeclaration> {
/**
Expand Down
4 changes: 2 additions & 2 deletions src/compiler/ast/class/ClassDeclaration.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { ClassDeclarationStructure, ConstructorDeclarationStructure, MethodDecla
ParameterDeclarationStructure, StructureKind } from "../../../structures";
import { ts } from "../../../typescript";
import { ArrayUtils, StringUtils, TypeGuards, KeyValueCache } from "../../../utils";
import { ChildOrderableNode, ExportableNode, AmbientableNode } from "../base";
import { ExportableNode, AmbientableNode } from "../base";
import { callBaseSet } from "../callBaseSet";
import { NamespaceChildableNode } from "../module";
import { Statement } from "../statement";
Expand All @@ -17,7 +17,7 @@ import { GetAccessorDeclaration } from "./GetAccessorDeclaration";
import { MethodDeclaration } from "./MethodDeclaration";
import { SetAccessorDeclaration } from "./SetAccessorDeclaration";

export const ClassDeclarationBase = ChildOrderableNode(NamespaceChildableNode(AmbientableNode(ExportableNode(ClassLikeDeclarationBase(Statement)))));
export const ClassDeclarationBase = NamespaceChildableNode(AmbientableNode(ExportableNode(ClassLikeDeclarationBase(Statement))));
export class ClassDeclaration extends ClassDeclarationBase<ts.ClassDeclaration> {
/**
* Sets the node from a structure.
Expand Down
6 changes: 3 additions & 3 deletions src/compiler/ast/enum/EnumDeclaration.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,16 @@ import { getNodesToReturn, insertIntoCommaSeparatedNodes, verifyAndGetIndex } fr
import { EnumDeclarationStructure, EnumMemberStructure, EnumDeclarationSpecificStructure, StructureKind } from "../../../structures";
import { SyntaxKind, ts } from "../../../typescript";
import { getNodeByNameOrFindFunction, getNotFoundErrorMessageForNameOrFindFunction } from "../../../utils";
import { AmbientableNode, ChildOrderableNode, ExportableNode, JSDocableNode, ModifierableNode, NamedNode, TextInsertableNode } from "../base";
import { AmbientableNode, ExportableNode, JSDocableNode, ModifierableNode, NamedNode, TextInsertableNode } from "../base";
import { callBaseSet } from "../callBaseSet";
import { NamespaceChildableNode } from "../module";
import { Statement } from "../statement";
import { EnumMember } from "./EnumMember";
import { callBaseGetStructure } from "../callBaseGetStructure";

export const EnumDeclarationBase = ChildOrderableNode(TextInsertableNode(NamespaceChildableNode(JSDocableNode(AmbientableNode(ExportableNode(
export const EnumDeclarationBase = TextInsertableNode(NamespaceChildableNode(JSDocableNode(AmbientableNode(ExportableNode(
ModifierableNode(NamedNode(Statement))
))))));
)))));
export class EnumDeclaration extends EnumDeclarationBase<ts.EnumDeclaration> {
/**
* Sets the node from a structure.
Expand Down
16 changes: 8 additions & 8 deletions src/compiler/ast/function/FunctionDeclaration.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,21 @@ import { removeOverloadableStatementedNodeChild } from "../../../manipulation";
import * as getStructureFuncs from "../../../manipulation/helpers/getStructureFunctions";
import { FunctionDeclarationOverloadStructure, FunctionDeclarationStructure, FunctionDeclarationSpecificStructure, StructureKind } from "../../../structures";
import { SyntaxKind, ts } from "../../../typescript";
import { AmbientableNode, AsyncableNode, BodyableNode, ChildOrderableNode, ExportableNode, GeneratorableNode, ModifierableNode, NameableNode,
TextInsertableNode, UnwrappableNode, SignaturedDeclaration, TypeParameteredNode, JSDocableNode } from "../base";
import { AmbientableNode, AsyncableNode, BodyableNode, ExportableNode, GeneratorableNode, ModifierableNode, NameableNode, TextInsertableNode,
UnwrappableNode, SignaturedDeclaration, TypeParameteredNode, JSDocableNode } from "../base";
import { callBaseSet } from "../callBaseSet";
import { Node } from "../common";
import { Statement } from "../statement";
import { NamespaceChildableNode } from "../module";
import { FunctionLikeDeclaration } from "./FunctionLikeDeclaration";
import { insertOverloads, OverloadableNode } from "./OverloadableNode";
import { callBaseGetStructure } from "../callBaseGetStructure";

export const FunctionDeclarationBase = ChildOrderableNode(UnwrappableNode(TextInsertableNode(OverloadableNode(BodyableNode(AsyncableNode(GeneratorableNode(
AmbientableNode(ExportableNode(FunctionLikeDeclaration(NamespaceChildableNode(NameableNode(Node)))))
)))))));
export const FunctionDeclarationOverloadBase = ChildOrderableNode(UnwrappableNode(TextInsertableNode(AsyncableNode(GeneratorableNode(ModifierableNode(
SignaturedDeclaration(AmbientableNode(NamespaceChildableNode(JSDocableNode(TypeParameteredNode(ExportableNode(ModifierableNode(Node)))))))
export const FunctionDeclarationBase = UnwrappableNode(TextInsertableNode(OverloadableNode(BodyableNode(AsyncableNode(GeneratorableNode(
AmbientableNode(ExportableNode(FunctionLikeDeclaration(NamespaceChildableNode(NameableNode(Statement)))))
))))));
export const FunctionDeclarationOverloadBase = UnwrappableNode(TextInsertableNode(AsyncableNode(GeneratorableNode(ModifierableNode(
SignaturedDeclaration(AmbientableNode(NamespaceChildableNode(JSDocableNode(TypeParameteredNode(ExportableNode(ModifierableNode(Statement)))))))
)))));

export class FunctionDeclaration extends FunctionDeclarationBase<ts.FunctionDeclaration> {
/**
Expand Down
6 changes: 3 additions & 3 deletions src/compiler/ast/interface/InterfaceDeclaration.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { InterfaceDeclarationStructure, InterfaceDeclarationSpecificStructure, StructureKind } from "../../../structures";
import { ts } from "../../../typescript";
import { ArrayUtils } from "../../../utils";
import { AmbientableNode, ChildOrderableNode, ExportableNode, ExtendsClauseableNode, HeritageClauseableNode, JSDocableNode, ModifierableNode, NamedNode,
import { AmbientableNode, ExportableNode, ExtendsClauseableNode, HeritageClauseableNode, JSDocableNode, ModifierableNode, NamedNode,
TextInsertableNode, TypeElementMemberedNode, TypeParameteredNode } from "../base";
import { Type } from "../../types";
import { callBaseSet } from "../callBaseSet";
Expand All @@ -12,9 +12,9 @@ import { ImplementationLocation } from "../../tools";
import { TypeAliasDeclaration } from "../type";
import { callBaseGetStructure } from "../callBaseGetStructure";

export const InterfaceDeclarationBase = TypeElementMemberedNode(ChildOrderableNode(TextInsertableNode(ExtendsClauseableNode(HeritageClauseableNode(
export const InterfaceDeclarationBase = TypeElementMemberedNode(TextInsertableNode(ExtendsClauseableNode(HeritageClauseableNode(
TypeParameteredNode(JSDocableNode(AmbientableNode(NamespaceChildableNode(ExportableNode(ModifierableNode(NamedNode(Statement)))))))
)))));
))));
export class InterfaceDeclaration extends InterfaceDeclarationBase<ts.InterfaceDeclaration> {
/**
* Gets the base types.
Expand Down

0 comments on commit b5ff9ad

Please sign in to comment.