@@ -24,15 +24,15 @@ export type DataModelAttributeName = string;
2424
2525export type DataModelFieldAttributeName = string ;
2626
27- export type Expression = ArrayExpr | BinaryExpr | InvocationExpr | LiteralExpr | MemberAccessExpr | NullExpr | ReferenceExpr | ThisExpr | UnaryExpr ;
27+ export type Expression = ArrayExpr | BinaryExpr | InvocationExpr | LiteralExpr | MemberAccessExpr | NullExpr | ObjectExpr | ReferenceExpr | ThisExpr | UnaryExpr ;
2828
2929export const Expression = 'Expression' ;
3030
3131export function isExpression ( item : unknown ) : item is Expression {
3232 return reflection . isInstance ( item , Expression ) ;
3333}
3434
35- export type ExpressionType = 'Any' | 'Boolean' | 'DateTime' | 'Float' | 'Int' | 'Null' | 'String' ;
35+ export type ExpressionType = 'Any' | 'Boolean' | 'DateTime' | 'Float' | 'Int' | 'Null' | 'Object' | ' String';
3636
3737export type QualifiedName = string ;
3838
@@ -66,7 +66,7 @@ export function isArgument(item: unknown): item is Argument {
6666}
6767
6868export interface ArrayExpr extends AstNode {
69- readonly $container : Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr ;
69+ readonly $container : Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FieldInitializer | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr ;
7070 readonly $type : 'ArrayExpr' ;
7171 items : Array < Expression >
7272}
@@ -147,7 +147,7 @@ export function isAttributeParamType(item: unknown): item is AttributeParamType
147147}
148148
149149export interface BinaryExpr extends AstNode {
150- readonly $container : Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr ;
150+ readonly $container : Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FieldInitializer | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr ;
151151 readonly $type : 'BinaryExpr' ;
152152 left : Expression
153153 operator : '!' | '!=' | '&&' | '<' | '<=' | '==' | '>' | '>=' | '?' | '^' | '||'
@@ -286,6 +286,19 @@ export function isEnumField(item: unknown): item is EnumField {
286286 return reflection . isInstance ( item , EnumField ) ;
287287}
288288
289+ export interface FieldInitializer extends AstNode {
290+ readonly $container : ObjectExpr ;
291+ readonly $type : 'FieldInitializer' ;
292+ name : string
293+ value : Expression
294+ }
295+
296+ export const FieldInitializer = 'FieldInitializer' ;
297+
298+ export function isFieldInitializer ( item : unknown ) : item is FieldInitializer {
299+ return reflection . isInstance ( item , FieldInitializer ) ;
300+ }
301+
289302export interface FunctionDecl extends AstNode {
290303 readonly $container : Model ;
291304 readonly $type : 'FunctionDecl' ;
@@ -355,7 +368,7 @@ export function isGeneratorField(item: unknown): item is GeneratorField {
355368}
356369
357370export interface InvocationExpr extends AstNode {
358- readonly $container : Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr ;
371+ readonly $container : Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FieldInitializer | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr ;
359372 readonly $type : 'InvocationExpr' ;
360373 args : Array < Argument >
361374 function : Reference < FunctionDecl >
@@ -368,7 +381,7 @@ export function isInvocationExpr(item: unknown): item is InvocationExpr {
368381}
369382
370383export interface LiteralExpr extends AstNode {
371- readonly $container : Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr ;
384+ readonly $container : Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FieldInitializer | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr ;
372385 readonly $type : 'LiteralExpr' ;
373386 value : boolean | number | string
374387}
@@ -380,7 +393,7 @@ export function isLiteralExpr(item: unknown): item is LiteralExpr {
380393}
381394
382395export interface MemberAccessExpr extends AstNode {
383- readonly $container : Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr ;
396+ readonly $container : Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FieldInitializer | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr ;
384397 readonly $type : 'MemberAccessExpr' ;
385398 member : Reference < DataModelField >
386399 operand : Expression
@@ -404,7 +417,7 @@ export function isModel(item: unknown): item is Model {
404417}
405418
406419export interface NullExpr extends AstNode {
407- readonly $container : Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr ;
420+ readonly $container : Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FieldInitializer | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr ;
408421 readonly $type : 'NullExpr' ;
409422 value : string
410423}
@@ -415,6 +428,18 @@ export function isNullExpr(item: unknown): item is NullExpr {
415428 return reflection . isInstance ( item , NullExpr ) ;
416429}
417430
431+ export interface ObjectExpr extends AstNode {
432+ readonly $container : Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FieldInitializer | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr ;
433+ readonly $type : 'ObjectExpr' ;
434+ fields : Array < FieldInitializer >
435+ }
436+
437+ export const ObjectExpr = 'ObjectExpr' ;
438+
439+ export function isObjectExpr ( item : unknown ) : item is ObjectExpr {
440+ return reflection . isInstance ( item , ObjectExpr ) ;
441+ }
442+
418443export interface Plugin extends AstNode {
419444 readonly $container : Model ;
420445 readonly $type : 'Plugin' ;
@@ -455,7 +480,7 @@ export function isReferenceArg(item: unknown): item is ReferenceArg {
455480}
456481
457482export interface ReferenceExpr extends AstNode {
458- readonly $container : Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr ;
483+ readonly $container : Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FieldInitializer | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr ;
459484 readonly $type : 'ReferenceExpr' ;
460485 args : Array < ReferenceArg >
461486 target : Reference < ReferenceTarget >
@@ -468,7 +493,7 @@ export function isReferenceExpr(item: unknown): item is ReferenceExpr {
468493}
469494
470495export interface ThisExpr extends AstNode {
471- readonly $container : Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr ;
496+ readonly $container : Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FieldInitializer | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr ;
472497 readonly $type : 'ThisExpr' ;
473498 value : string
474499}
@@ -480,7 +505,7 @@ export function isThisExpr(item: unknown): item is ThisExpr {
480505}
481506
482507export interface UnaryExpr extends AstNode {
483- readonly $container : Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr ;
508+ readonly $container : Argument | ArrayExpr | AttributeArg | BinaryExpr | DataSourceField | FieldInitializer | FunctionDecl | GeneratorField | MemberAccessExpr | PluginField | UnaryExpr ;
484509 readonly $type : 'UnaryExpr' ;
485510 operand : Expression
486511 operator : '!'
@@ -512,6 +537,7 @@ export interface ZModelAstType {
512537 Enum : Enum
513538 EnumField : EnumField
514539 Expression : Expression
540+ FieldInitializer : FieldInitializer
515541 FunctionDecl : FunctionDecl
516542 FunctionParam : FunctionParam
517543 FunctionParamType : FunctionParamType
@@ -522,6 +548,7 @@ export interface ZModelAstType {
522548 MemberAccessExpr : MemberAccessExpr
523549 Model : Model
524550 NullExpr : NullExpr
551+ ObjectExpr : ObjectExpr
525552 Plugin : Plugin
526553 PluginField : PluginField
527554 ReferenceArg : ReferenceArg
@@ -535,7 +562,7 @@ export interface ZModelAstType {
535562export class ZModelAstReflection extends AbstractAstReflection {
536563
537564 getAllTypes ( ) : string [ ] {
538- return [ 'AbstractDeclaration' , 'Argument' , 'ArrayExpr' , 'Attribute' , 'AttributeArg' , 'AttributeAttribute' , 'AttributeParam' , 'AttributeParamType' , 'BinaryExpr' , 'DataModel' , 'DataModelAttribute' , 'DataModelField' , 'DataModelFieldAttribute' , 'DataModelFieldType' , 'DataSource' , 'DataSourceField' , 'Enum' , 'EnumField' , 'Expression' , 'FunctionDecl' , 'FunctionParam' , 'FunctionParamType' , 'GeneratorDecl' , 'GeneratorField' , 'InvocationExpr' , 'LiteralExpr' , 'MemberAccessExpr' , 'Model' , 'NullExpr' , 'Plugin' , 'PluginField' , 'ReferenceArg' , 'ReferenceExpr' , 'ReferenceTarget' , 'ThisExpr' , 'TypeDeclaration' , 'UnaryExpr' ] ;
565+ return [ 'AbstractDeclaration' , 'Argument' , 'ArrayExpr' , 'Attribute' , 'AttributeArg' , 'AttributeAttribute' , 'AttributeParam' , 'AttributeParamType' , 'BinaryExpr' , 'DataModel' , 'DataModelAttribute' , 'DataModelField' , 'DataModelFieldAttribute' , 'DataModelFieldType' , 'DataSource' , 'DataSourceField' , 'Enum' , 'EnumField' , 'Expression' , 'FieldInitializer' , ' FunctionDecl', 'FunctionParam' , 'FunctionParamType' , 'GeneratorDecl' , 'GeneratorField' , 'InvocationExpr' , 'LiteralExpr' , 'MemberAccessExpr' , 'Model' , 'NullExpr' , 'ObjectExpr ', 'Plugin' , 'PluginField' , 'ReferenceArg' , 'ReferenceExpr' , 'ReferenceTarget' , 'ThisExpr' , 'TypeDeclaration' , 'UnaryExpr' ] ;
539566 }
540567
541568 protected override computeIsSubtype ( subtype : string , supertype : string ) : boolean {
@@ -546,6 +573,7 @@ export class ZModelAstReflection extends AbstractAstReflection {
546573 case LiteralExpr :
547574 case MemberAccessExpr :
548575 case NullExpr :
576+ case ObjectExpr :
549577 case ReferenceExpr :
550578 case ThisExpr :
551579 case UnaryExpr : {
@@ -756,6 +784,14 @@ export class ZModelAstReflection extends AbstractAstReflection {
756784 ]
757785 } ;
758786 }
787+ case 'ObjectExpr' : {
788+ return {
789+ name : 'ObjectExpr' ,
790+ mandatory : [
791+ { name : 'fields' , type : 'array' }
792+ ]
793+ } ;
794+ }
759795 case 'Plugin' : {
760796 return {
761797 name : 'Plugin' ,
0 commit comments