Skip to content

CFML: resolve dotted-path extends/implements (extends="coldbox.system.web.Controller") #1152

Description

@colbymchenry

Follow-up from the CFML language support work (#1118). Extraction records extends/implements references verbatim, so a dotted CFC path — component extends="coldbox.system.web.Controller" — produces a reference named coldbox.system.web.Controller, which exact-name matching can't connect to the class node named Controller.

Measured on ColdBox core (system/): 52 files declare extends, 49 of them with a dotted path, and only 3 inheritance edges resolve — ~94% of core inheritance is invisible, so impact/blast-radius through supertypes is broken on exactly the framework-heavy apps that dominate CFML. Same-name (extends="Controller") and same-file cases resolve fine today.

Sketch: a CFML-aware resolution step that, for a dotted reference, matches the final segment against class/interface nodes and verifies the candidate's file path ends with the dotted path mapped to a directory path (coldbox/system/web/Controller.cfc), preferring the longest suffix match. CFML mappings (this.mappings, Application.cfc) make full fidelity impossible without config, but path-suffix verification should land the overwhelming majority. Conservative rule as everywhere in resolution: ambiguous → no edge rather than a wrong one.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions