I cannot say this error report is good. Because:

1. would print two errors for `static this() shared const {}`.
2. I think `shared static this()` is rather *special* syntax and completely different from `static this() shared`. Therefore the message "is 'shared' already" sounds misdirected to me.
   For example: `shared const static this() {}` is parsed as "static constructor"!

I think following code would be better.
```d
    if (storage_class & STC_TYPECTOR)
    {
        unsigned char mod;
        if (storage_class & STCimmutable)
            mod = MODimmutable;
        else
        {
            mod = 0;
            if (storage_class & STCconst)
                mod |= MODconst;
            else if (storage_class & STCwild)
                mod |= MODwild;
            if (storage_class & STCshared)
                mod |= MODshared;
        }
        ::error(loc, "%sstatic constructor cannot be '%s'\n",
            isSharedStaticCtorDeclaration() ? "shared " : "",
            MODtoChars(mod));
        storage_class &= ~STC_TYPECTOR; // remove qualifiers
    }
    if (!type)
        type = new TypeFunction(NULL, Type::tvoid, FALSE, LINKd, storage_class);
```