Example #1
0
        public DefinedConstructor(ParseInfo parseInfo, CodeType type, DeltinScriptParser.ConstructorContext context) : base(
                type,
                new LanguageServer.Location(parseInfo.Script.Uri, DocRange.GetRange(context.name)),
                context.accessor()?.GetAccessLevel() ?? AccessLevel.Private)
        {
            this.parseInfo = parseInfo;
            this.context   = context;
            CallInfo       = new CallInfo(this, parseInfo.Script);

            ConstructorScope = type.GetObjectScope().Child();

            if (Type is DefinedType)
            {
                ((DefinedType)Type).AddLink(DefinedAt);
            }
        }
        public ConstructorNode(DeltinScriptParser.ConstructorContext context, BuildAstVisitor visitor) : base(new Location(visitor.file, Range.GetRange(context)))
        {
            Name = context.PART().GetText();

            Parameters = new ParameterDefineNode[context.setParameters().parameter_define().Length];
            for (int i = 0; i < Parameters.Length; i++)
            {
                Parameters[i] = new ParameterDefineNode(context.setParameters().parameter_define(i), visitor);
            }

            AccessLevel = AccessLevel.Private;
            if (context.accessor() != null)
            {
                AccessLevel = (AccessLevel)Enum.Parse(typeof(AccessLevel), context.accessor().GetText(), true);
            }

            BlockNode = (BlockNode)visitor.VisitBlock(context.block());
        }
        public DefinedConstructor(ParseInfo parseInfo, Scope scope, CodeType type, DeltinScriptParser.ConstructorContext context) : base(
                type,
                new LanguageServer.Location(parseInfo.Script.Uri, DocRange.GetRange(context.name)),
                context.accessor().GetAccessLevel())
        {
            this.parseInfo = parseInfo;
            this.context   = context;
            CallInfo       = new CallInfo(this, parseInfo.Script);

            ConstructorScope = scope.Child();

            if (Type is DefinedType)
            {
                ((DefinedType)Type).AddLink(DefinedAt);
            }

            parseInfo.TranslateInfo.ApplyBlock(this);
            parseInfo.TranslateInfo.AddSymbolLink(this, DefinedAt, true);
            parseInfo.Script.AddCodeLensRange(new ReferenceCodeLensRange(this, parseInfo, CodeLensSourceType.Constructor, DefinedAt.range));
        }
 public override Node VisitConstructor(DeltinScriptParser.ConstructorContext context)
 {
     return(new ConstructorNode(context, this));
 }