private void BuildSelParameterSymbol( InvocableSymbol containingSymbol, ISelfParameterSyntax param, DataType type) { var symbol = new SelfParameterSymbol(containingSymbol, type); param.Symbol.Fulfill(symbol); symbolTree.Add(symbol); }
private static ObjectType ResolveSelfParameterType( ISelfParameterSyntax selfParameter, IClassDeclarationSyntax declaringClass) { var selfType = declaringClass.Symbol.Result.DeclaresDataType; if (selfParameter.MutableSelf) { selfType = selfType.ToConstructorSelf(); } return(selfType); }
public AbstractMethodDeclarationSyntax( IClassDeclarationSyntax declaringClass, TextSpan span, CodeFile file, IAccessModifierToken?accessModifier, TextSpan nameSpan, Name name, ISelfParameterSyntax selfParameter, FixedList <INamedParameterSyntax> parameters, ITypeSyntax?returnType, IReachabilityAnnotationsSyntax reachabilityAnnotations) : base(declaringClass, span, file, accessModifier, nameSpan, name, selfParameter, parameters, returnType, reachabilityAnnotations) { }
public ConstructorDeclarationSyntax( IClassDeclarationSyntax declaringType, TextSpan span, CodeFile file, IAccessModifierToken?accessModifier, TextSpan nameSpan, Name?name, ISelfParameterSyntax implicitSelfParameter, FixedList <IConstructorParameterSyntax> parameters, IReachabilityAnnotationsSyntax reachabilityAnnotations, IBodySyntax body) : base(span, file, accessModifier, nameSpan, name, parameters, reachabilityAnnotations, new AcyclicPromise <ConstructorSymbol>()) { DeclaringClass = declaringType; ImplicitSelfParameter = implicitSelfParameter; Parameters = parameters; Body = body; Symbol = (AcyclicPromise <ConstructorSymbol>)base.Symbol; }
protected MethodDeclarationSyntax( IClassDeclarationSyntax declaringClass, TextSpan span, CodeFile file, IAccessModifierToken?accessModifier, TextSpan nameSpan, Name name, ISelfParameterSyntax selfParameter, FixedList <INamedParameterSyntax> parameters, ITypeSyntax?returnType, IReachabilityAnnotationsSyntax reachabilityAnnotations) : base(span, file, accessModifier, nameSpan, name, parameters, reachabilityAnnotations, new AcyclicPromise <MethodSymbol>()) { DeclaringClass = declaringClass; Name = name; SelfParameter = selfParameter; Parameters = parameters; ReturnType = returnType; Symbol = (AcyclicPromise <MethodSymbol>)base.Symbol; }