public PythonVariable GetVariable()

in src/Parsing/Impl/Ast/Parameter.cs [87:173]


        public PythonVariable GetVariable(PythonAst ast)
            => ast.TryGetAttribute(this, NodeAttributes.Variable, out var reference) ? (PythonVariable)reference : null;

        public void AddPreceedingWhiteSpace(PythonAst ast, string whiteSpace) 
            => ast.SetAttribute(this, NodeAttributes.PreceedingWhiteSpace, whiteSpace);

        internal override void AppendCodeString(StringBuilder res, PythonAst ast, CodeFormattingOptions format) 
            => AppendCodeString(res, ast, format, null);

        internal virtual void AppendParameterName(StringBuilder res, PythonAst ast, CodeFormattingOptions format, string leadingWhiteSpace) 
            => NameExpression?.AppendCodeString(res, ast, format, leadingWhiteSpace);

        internal override void AppendCodeString(StringBuilder res, PythonAst ast, CodeFormattingOptions format, string leadingWhiteSpace) {
            var kwOnlyText = this.GetExtraVerbatimText(ast);
            if (kwOnlyText != null) {
                if (leadingWhiteSpace != null) {
                    res.Append(leadingWhiteSpace);
                    res.Append(kwOnlyText.TrimStart());
                    leadingWhiteSpace = null;
                } else {
                    res.Append(kwOnlyText);
                }
            }

            var writeName = true;
            switch (Kind) {
                case ParameterKind.Dictionary:
                    res.Append(leadingWhiteSpace ?? this.GetPreceedingWhiteSpaceDefaultNull(ast) ?? string.Empty);
                    leadingWhiteSpace = null;
                    res.Append("**");
                    break;
                case ParameterKind.List:
                    res.Append(leadingWhiteSpace ?? this.GetPreceedingWhiteSpaceDefaultNull(ast) ?? string.Empty);
                    leadingWhiteSpace = null;
                    res.Append('*');
                    break;
                case ParameterKind.PositionalOnly:
                case ParameterKind.Normal:
                    if (this.IsAltForm(ast)) {
                        res.Append(leadingWhiteSpace ?? this.GetPreceedingWhiteSpaceDefaultNull(ast) ?? string.Empty);
                        leadingWhiteSpace = null;
                        res.Append('(');
                        AppendParameterName(res, ast, format, leadingWhiteSpace);
                        if (!this.IsMissingCloseGrouping(ast)) {
                            res.Append(this.GetSecondWhiteSpace(ast));
                            res.Append(')');
                        }
                        writeName = false;
                    }
                    break;
                case ParameterKind.KeywordOnly:
                    break;
                case ParameterKind.PositionalOnlyMarker:
                    res.Append(leadingWhiteSpace ?? this.GetPreceedingWhiteSpaceDefaultNull(ast) ?? string.Empty);
                    leadingWhiteSpace = null;
                    res.Append('/');
                    break;
                default: throw new InvalidOperationException();
            }

            if (writeName) {
                AppendParameterName(res, ast, format, leadingWhiteSpace);
            }

            if (Annotation != null) {
                res.Append(this.GetThirdWhiteSpaceDefaultNull(ast) ?? "");
                res.Append(':');
                Annotation.AppendCodeString(res, ast, format);
            }

            if (DefaultValue != null) {
                format.Append(
                    res,
                    format.SpaceAroundDefaultValueEquals,
                    " ",
                    string.Empty,
                    NodeAttributes.GetWhiteSpace(this, ast, WhitespacePrecedingAssign)
                );

                res.Append('=');
                if (format.SpaceAroundDefaultValueEquals != null) {
                    DefaultValue.AppendCodeString(res, ast, format, format.SpaceAroundDefaultValueEquals.Value ? " " : string.Empty);
                } else {
                    DefaultValue.AppendCodeString(res, ast, format);
                }
            }
        }