I am not sure if this has been pitched before - a quick search shows something similar, but 3+ years old (from what I understand I should not resurrect old topics) and are focused on modules rather than what I have in mind.
With more complex implementations, I usually tend to break up the implementation into multiple files (rather then scrolling through several thousand lines of code) and usually implement a fair amount of helper structs/classes/enums that help with the complexity of the code, but usually are not needed in the entire project/module, so it's always convenient to declare them under the core class. Example:
File A:
class MyIncrediblyComplexManager {
// Various functionality.
}
To me this seems that it would be less like a new feature rather than more consistence in the language.
I fully understand that introducing submodules and namespaces could solve this in a way, I don't think that will be any time soon and IMHO focuses on something else - splitting a project into namespaces and submodules is a bit different than allowing full qualifiers in struct/class/enum declarations...
Just for comparison, the Lean programming language allows this as well: a declaration with name A.B declares B in namespace A. And AFAIK this hasn't caused any conceptual problems.
If to do it for types & functions maybe also do it for all other things that are allowed in extensions, like variables with getters / setters & static variables?
var MyIncrediblyComplexManager.DataSortingHelper.foo: String {
"Hello, World"
}
static var MyIncrediblyComplexManager.DataSortingHelper.foo: Int = 123
This is a very simple change, but a very useful one: namespacing is an important part of concise code, and this should encourage names that take advantage of it.