public TypeDefineNode(DeltinScriptParser.Type_defineContext context, BuildAstVisitor visitor) : base(new Location(visitor.file, DocRange.GetRange(context))) { if (context.STRUCT() != null) { TypeKind = TypeKind.Struct; } else if (context.CLASS() != null) { TypeKind = TypeKind.Class; } else { throw new Exception(); } Name = context.name.Text; DefinedVars = new InclassDefineNode[context.inclass_define().Length]; for (int i = 0; i < DefinedVars.Length; i++) { DefinedVars[i] = (InclassDefineNode)visitor.VisitInclass_define(context.inclass_define(i)); } Constructors = new ConstructorNode[context.constructor().Length]; for (int i = 0; i < Constructors.Length; i++) { Constructors[i] = (ConstructorNode)visitor.VisitConstructor(context.constructor(i)); } Methods = new UserMethodBase[context.user_method().Length + context.macro().Length]; for (int i = 0; i < context.user_method().Length; i++) { Methods[i] = (UserMethodBase)visitor.VisitUser_method(context.user_method(i)); } for (int i = 0; i < context.macro().Length; i++) { Methods[context.user_method().Length + i] = (UserMethodBase)visitor.VisitMacro(context.macro(i)); } }