Description
MSVC COM headers use #define interface struct to alias the COM interface keyword. When tree-sitter-cpp encounters a definition like:
interface IMyComInterface : IParentInterface {
virtual void Foo() = 0;
virtual void Bar() = 0;
};
The parser reads interface as the declaration's return type and IMyComInterface as the declarator — the whole class vanishes from the graph and IMyComInterface surfaces as a phantom function node instead of a struct:
codegraph query IMyComInterface
→ function IMyComInterface
include/sdk/com/MyInterface.h:42
We'd expected IMyComInterface is a struct kind
Description
MSVC COM headers use
#define interface structto alias the COMinterfacekeyword. When tree-sitter-cpp encounters a definition like:interface IMyComInterface : IParentInterface { virtual void Foo() = 0; virtual void Bar() = 0; };The parser reads
interfaceas the declaration's return type andIMyComInterfaceas the declarator — the whole class vanishes from the graph andIMyComInterfacesurfaces as a phantomfunctionnode instead of astruct:We'd expected IMyComInterface is a struct kind