Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 53 additions & 13 deletions packages/language/src/generated/ast.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,14 @@ export function isInternalAttributeName(item: unknown): item is InternalAttribut
return typeof item === 'string';
}

export type LiteralExpr = BooleanLiteral | NumberLiteral | StringLiteral;

export const LiteralExpr = 'LiteralExpr';

export function isLiteralExpr(item: unknown): item is LiteralExpr {
return reflection.isInstance(item, LiteralExpr);
}

export type QualifiedName = string;

export function isQualifiedName(item: unknown): item is QualifiedName {
Expand Down Expand Up @@ -187,6 +195,18 @@ export function isBinaryExpr(item: unknown): item is BinaryExpr {
return reflection.isInstance(item, BinaryExpr);
}

export interface BooleanLiteral extends AstNode {
readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FieldInitializer | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr | UnsupportedFieldType;
readonly $type: 'BooleanLiteral';
value: Boolean
}

export const BooleanLiteral = 'BooleanLiteral';

export function isBooleanLiteral(item: unknown): item is BooleanLiteral {
return reflection.isInstance(item, BooleanLiteral);
}

export interface DataModel extends AstNode {
readonly $container: Model;
readonly $type: 'DataModel';
Expand Down Expand Up @@ -426,18 +446,6 @@ export function isInvocationExpr(item: unknown): item is InvocationExpr {
return reflection.isInstance(item, InvocationExpr);
}

export interface LiteralExpr extends AstNode {
readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FieldInitializer | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr | UnsupportedFieldType;
readonly $type: 'LiteralExpr';
value: Boolean | number | string
}

export const LiteralExpr = 'LiteralExpr';

export function isLiteralExpr(item: unknown): item is LiteralExpr {
return reflection.isInstance(item, LiteralExpr);
}

export interface MemberAccessExpr extends AstNode {
readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FieldInitializer | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr | UnsupportedFieldType;
readonly $type: 'MemberAccessExpr';
Expand Down Expand Up @@ -487,6 +495,18 @@ export function isNullExpr(item: unknown): item is NullExpr {
return reflection.isInstance(item, NullExpr);
}

export interface NumberLiteral extends AstNode {
readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FieldInitializer | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr | UnsupportedFieldType;
readonly $type: 'NumberLiteral';
value: string
}

export const NumberLiteral = 'NumberLiteral';

export function isNumberLiteral(item: unknown): item is NumberLiteral {
return reflection.isInstance(item, NumberLiteral);
}

export interface ObjectExpr extends AstNode {
readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FieldInitializer | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr | UnsupportedFieldType;
readonly $type: 'ObjectExpr';
Expand Down Expand Up @@ -551,6 +571,18 @@ export function isReferenceExpr(item: unknown): item is ReferenceExpr {
return reflection.isInstance(item, ReferenceExpr);
}

export interface StringLiteral extends AstNode {
readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FieldInitializer | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr | UnsupportedFieldType;
readonly $type: 'StringLiteral';
value: string
}

export const StringLiteral = 'StringLiteral';

export function isStringLiteral(item: unknown): item is StringLiteral {
return reflection.isInstance(item, StringLiteral);
}

export interface ThisExpr extends AstNode {
readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FieldInitializer | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr | UnsupportedFieldType;
readonly $type: 'ThisExpr';
Expand Down Expand Up @@ -597,6 +629,7 @@ export type ZModelAstType = {
AttributeParam: AttributeParam
AttributeParamType: AttributeParamType
BinaryExpr: BinaryExpr
BooleanLiteral: BooleanLiteral
DataModel: DataModel
DataModelAttribute: DataModelAttribute
DataModelField: DataModelField
Expand All @@ -620,12 +653,14 @@ export type ZModelAstType = {
Model: Model
ModelImport: ModelImport
NullExpr: NullExpr
NumberLiteral: NumberLiteral
ObjectExpr: ObjectExpr
Plugin: Plugin
PluginField: PluginField
ReferenceArg: ReferenceArg
ReferenceExpr: ReferenceExpr
ReferenceTarget: ReferenceTarget
StringLiteral: StringLiteral
ThisExpr: ThisExpr
TypeDeclaration: TypeDeclaration
UnaryExpr: UnaryExpr
Expand All @@ -635,7 +670,7 @@ export type ZModelAstType = {
export class ZModelAstReflection extends AbstractAstReflection {

getAllTypes(): string[] {
return ['AbstractDeclaration', 'Argument', 'ArrayExpr', 'Attribute', 'AttributeArg', 'AttributeParam', 'AttributeParamType', 'BinaryExpr', 'DataModel', 'DataModelAttribute', 'DataModelField', 'DataModelFieldAttribute', 'DataModelFieldType', 'DataSource', 'DataSourceField', 'Enum', 'EnumField', 'Expression', 'FieldInitializer', 'FunctionDecl', 'FunctionParam', 'FunctionParamType', 'GeneratorDecl', 'GeneratorField', 'InternalAttribute', 'InvocationExpr', 'LiteralExpr', 'MemberAccessExpr', 'Model', 'ModelImport', 'NullExpr', 'ObjectExpr', 'Plugin', 'PluginField', 'ReferenceArg', 'ReferenceExpr', 'ReferenceTarget', 'ThisExpr', 'TypeDeclaration', 'UnaryExpr', 'UnsupportedFieldType'];
return ['AbstractDeclaration', 'Argument', 'ArrayExpr', 'Attribute', 'AttributeArg', 'AttributeParam', 'AttributeParamType', 'BinaryExpr', 'BooleanLiteral', 'DataModel', 'DataModelAttribute', 'DataModelField', 'DataModelFieldAttribute', 'DataModelFieldType', 'DataSource', 'DataSourceField', 'Enum', 'EnumField', 'Expression', 'FieldInitializer', 'FunctionDecl', 'FunctionParam', 'FunctionParamType', 'GeneratorDecl', 'GeneratorField', 'InternalAttribute', 'InvocationExpr', 'LiteralExpr', 'MemberAccessExpr', 'Model', 'ModelImport', 'NullExpr', 'NumberLiteral', 'ObjectExpr', 'Plugin', 'PluginField', 'ReferenceArg', 'ReferenceExpr', 'ReferenceTarget', 'StringLiteral', 'ThisExpr', 'TypeDeclaration', 'UnaryExpr', 'UnsupportedFieldType'];
}

protected override computeIsSubtype(subtype: string, supertype: string): boolean {
Expand All @@ -659,6 +694,11 @@ export class ZModelAstReflection extends AbstractAstReflection {
case Plugin: {
return this.isSubtype(AbstractDeclaration, supertype);
}
case BooleanLiteral:
case NumberLiteral:
case StringLiteral: {
return this.isSubtype(LiteralExpr, supertype);
}
case DataModel:
case Enum: {
return this.isSubtype(AbstractDeclaration, supertype) || this.isSubtype(TypeDeclaration, supertype);
Expand Down
Loading