No, it was a
simple oversight. Also, you can (and probably should) instead extend whatever type of control you are actually creating. You can't create a control of type "Control" or "List".
I assume you intend to create a control and assign
gui_control_ex.Prototype as its base. Technically, according to the documentation that should throw an exception:
If assigning the new base would change the native type of the object, an exception is thrown. An object's native type is decided by the nearest prototype object belonging to a built-in class, such as Object.Prototype or Array.Prototype. For example, an instance of Array must always derive from Array.Prototype, either directly or indirectly.
Source: Object - Methods & Properties | AutoHotkey v2
Currently only prototype objects that contain native methods (or property getters/setters) are marked as native. For instance, Gui.List, Gui.Control and Gui.ListView have their own native methods, while Gui.Button and Gui.Edit do not. An Edit can be based on Gui.Button.Prototype, but a ListView must be based on Gui.ListView.Prototype (or derived).
Changing the base of a control only affects what script-accessible properties (including methods) it has.
GuiCtrl.Type is implemented by Gui.Control (unless you override it); it just returns a string based on an internal variable (the same one AutoHotkey has used since v1 to recognize the type of the control), so changing the control's base doesn't affect it.
Type(GuiCtrl) looks for a __Class own property, so it is affected, as are type checks with
is and
HasBase.