The current implementation of extension pragma is not conformant to the spec as it does not disable anything and therefore enabling non-disabled logic has no meaning.
The implementation doesn't respect the following requirement from OpenCL Extension spec s1.2:
disable Behave (including issuing errors and warnings) as if the extension extension_name is not part of the language definition.
This means that extension functionality should not be exposed by default and if extension identifiers are not reserved they should not be recognized by the compiler.
Fixing the behavior doesn't seem easy in C/C++-based parsing as it requires dynamic loading and unloading functionality. In C/C++-based languages, this has never been considered and they provide dedicated language features for loading i.e. include files, namespaces, etc. I don't know languages that actually support such a feature. In GLSL from where the initial idea came from the loading and unloading of extension functionality is constrained to be only available before parsing of the shading sourcing is done.
Considering the severe limitations I would like to drop maintaining this code now especially because of its interference with OpenCL 3.0. If we decide to implement this behavior (although it doesn't seem likely) we should provide the complete fully functional implementation.
The desired logic for exposing extension functionality conditionally can be easily achieved by using the extension macros definition/guards and header files.