[fpc-pascal] Pascal Language Server
Ryan Joseph
genericptr at gmail.com
Sun Apr 26 07:11:12 CEST 2020
I'm still stuck on this problem. I can get the full proc head using CodeTool.ExtractProcHead but I can't get the name/type parameter pairs in a list (unless I do something stupid like parse the string from ExtractProcHead). I need to return the parameters in discrete pairs in text that matches the format of the header. I know ExtractProcHead finds this information but it's lost in the function before it returns.
function ExtractContext(CurContext: TCodeContextInfoItem; var ParamPairs: TStringList): String;
var
Code: String;
CurExprType: TExpressionType;
CodeNode, ChildNode: TCodeTreeNode;
CodeTool: TFindDeclarationTool;
ParamList: TCodeTreeNode;
begin
CurExprType:=CurContext.Expr;
Code:=ExpressionTypeDescNames[CurExprType.Desc];
if CurExprType.Context.Node<>nil then
begin
CodeNode:=CurExprType.Context.Node;
CodeTool:=CurExprType.Context.Tool;
case CodeNode.Desc of
ctnProcedure:
begin
Code:=CodeTool.ExtractProcHead(CodeNode,
[phpWithVarModifiers,phpWithParameterNames,phpWithDefaultValues,
phpWithResultType]);
// TODO: get param name/type pairs
ParamList:=CodeTool.GetProcParamList(CodeNode);
if ParamList <> nil then
begin
ChildNode:=ParamList.FirstChild;
while ChildNode<>nil do
begin
Code += ChildNode.DescAsString+' ';
ChildNode:=ChildNode.NextBrother;
end;
end;
end;
end;
end;
Result := Code;
end;
Regards,
Ryan Joseph
More information about the fpc-pascal
mailing list