Skip to main content

LSP.pmod/Intelligence.pmod/TypeAnalysis.pike

Overview

TypeAnalysis.pike - Type inheritance and AutoDoc parsing handlers

This file provides handlers for type inheritance traversal and AutoDoc

documentation parsing using Pike's native Tools.AutoDoc.DocParser.

Design pattern:

  • create(object ctx) constructor for context injection

  • Handlers wrap errors in catch blocks with LSPError responses

  • Uses LSP.Compat.trim_whites() for string operations

  • Uses helper functions from module.pmod (process_inline_markup) for markdown conversion

Create a new TypeAnalysis instance

@param ctx Optional context object (reserved for future use)

Get inherited members from a class

Retrieves inherited members from parent classes using Program.inherit_list().

@param params Mapping with "class" key (fully qualified class name)

@returns Mapping with "result" containing inherited members

Per CONTEXT.md decision:

  • Errors in class resolution return empty result (not crash)

  • Handles both object and program resolutions

Note: Basic inheritance traversal (no cycle detection yet)

  • Current implementation handles typical shallow inheritance chains

  • Cycle detection can be added in future enhancement

Parse autodoc documentation string into structured format

Uses Pike's native Tools.AutoDoc.DocParser.splitDocBlock for tokenization.

Processes AutoDoc markup tags (@param, @returns, @throws, etc.) into

structured documentation.

@param doc The raw autodoc documentation string

@returns Mapping with structured documentation fields

Token type constants (Pitfall 3 from RESEARCH.md):

1 = METAKEYWORD, 3 = DELIMITERKEYWORD, 4 = BEGINGROUP,

6 = ENDGROUP, 7 = ENDCONTAINER, 8 = TEXTTOKEN, 9 = EOF

Internal implementation of parse_autodoc

Save accumulated text buffer to the appropriate result section

Format a group (array/mapping/multiset) as markdown-formatted text

Symbols

SymbolTypeLine
createfunction15
handle_get_inheritedfunction33
parse_autodocfunction125
parse_autodoc_implfunction138
save_text_bufferfunction748
format_group_as_textfunction868