@@ -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