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.
Follow-up from the CFML language support work (#1118). Extraction records
extends/implementsreferences verbatim, so a dotted CFC path —component extends="coldbox.system.web.Controller"— produces a reference namedcoldbox.system.web.Controller, which exact-name matching can't connect to the class node namedController.Measured on ColdBox core (
system/): 52 files declareextends, 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.