January 27, 2007
http://dstress.kuehne.cn/nocompile/a/alias_19.d

  // $HeadURL: http://dstress.kuehne.cn/nocompile/a/alias_19.d $
  // $Date: 2005-12-03 23:19:07 +0100 (Sat, 03 Dec 2005) $
  // $Author: thomask $

  // @author@	zwang <nehzgnaw@gmail.com>
  // @date@	2005-05-01
  // @uri@	news:d5247u$28ch$2@digitaldaemon.com

  // __DSTRESS_ELINE__ 13

  module dstress.nocompile.a.alias_19;

  alias static int mInt;

The uri references bugs/3859:

==== snip ====
  <code>
  void main(char[][] args){
          alias const char[] CS;
          CS cs = "string";
          switch(args[0]){
          case cs: break;
          }
  }
  </code>

  The code above is equivalent to

  <code>
  void main(char[][] args){
          const char[] cs = "string";
          switch(args[0]){
          case cs: break;
          }
  }
  </code>
==============

I just re-read the section on aliases in the docs and I don't see anything that suggests that 'alias <storage class> <type> <newtypename>' is illegal.  The closest it comes to being direct to this point is:

    It's sometimes convenient to use an alias for a type, such as a
    shorthand for typing out a long, complex type like a pointer to a
    function.

It's strange that only the 'alias const int mInt' version fails and all the other storage classes pass:

$ grep "alias " alias_*.d
alias_18.d:alias const int mInt;
alias_19.d:alias static int mInt;
alias_20.d:alias final int mInt;
alias_21.d:alias override int mInt;
alias_22.d:alias abstract int mInt;
alias_23.d:alias auto int mInt;

$ for x in 18 19 20 21 22 23; do echo == $x ==; dmd -c alias_$x.d; done
== 18 ==
alias_18.d(13): alias dstress.nocompile.a.alias_18.mInt cannot be const
== 19 ==
== 20 ==
== 21 ==
== 22 ==
== 23 ==

Any reason that all of these tests should be turned into 'should compile successfully' tests and a bug report filed for 18 since const aliases ought to work but doesn't?

Tested with dmd 1.00

Later,
Brad